额 进来看看有会的吗SQL

数据库Student中表的结构如下: (1)学生信息表T_studnet(stu_no,stu_name,stu_sex,stu_age) 字段含义及要求:stu_no:学号,不能为空,主键;stu_name:姓名,不能为空;stu_sex:性别,不能为空;stu_age:年龄,不能为空。 (2)课程信息表T_course(cou_no,cou_name) 字段含义及要求:cou_no:课程号,不能为空,主键;cou_name:课程名,不能为空。 (3)成绩表:T_achievement(stu_no,cou_no,achievement) 字段含义及要求:stu_no:学号,不能为空,cou_no:课程号,学号和课程号一起为主键,achievement:成绩,可以为空。 利用Transact-SQl语言完成下列操作 (1)创建学生成绩视图v_studnet(stu_name,cou_name, achievement) (2)创建统计视图V_count,功能是实现统计出各科的不及格的人数。 (3)创建一个存储过程P_find,实现通过学生的学号来查询对应这个学生的姓名。要求有一个输入参数和一个输出参数。 (4)为t_ achievement表创建一个触发器tr_delete,当对表t_achievement进行删除数据时,提示“你无权删除数据”,并取消删除的操作。

MySQL?

 自己选择数据库文件保存目录,目前保存在[D:\Student]

表结构创建

USE [master]
GO

CREATE DATABASE [Student]
 CONTAINMENT = NONE
 ON  PRIMARY 
( NAME = N'Student', FILENAME = N'D:\Student\Student.mdf' , SIZE = 5120KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N'Student_log', FILENAME = N'D:\Student\Student_log.ldf' , SIZE = 2048KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO
ALTER DATABASE [Student] SET COMPATIBILITY_LEVEL = 110
GO
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC [Student].[dbo].[sp_fulltext_database] @action = 'enable'
end
GO
ALTER DATABASE [Student] SET ANSI_NULL_DEFAULT OFF 
GO
ALTER DATABASE [Student] SET ANSI_NULLS OFF 
GO
ALTER DATABASE [Student] SET ANSI_PADDING OFF 
GO
ALTER DATABASE [Student] SET ANSI_WARNINGS OFF 
GO
ALTER DATABASE [Student] SET ARITHABORT OFF 
GO
ALTER DATABASE [Student] SET AUTO_CLOSE OFF 
GO
ALTER DATABASE [Student] SET AUTO_CREATE_STATISTICS ON 
GO
ALTER DATABASE [Student] SET AUTO_SHRINK OFF 
GO
ALTER DATABASE [Student] SET AUTO_UPDATE_STATISTICS ON 
GO
ALTER DATABASE [Student] SET CURSOR_CLOSE_ON_COMMIT OFF 
GO
ALTER DATABASE [Student] SET CURSOR_DEFAULT  GLOBAL 
GO
ALTER DATABASE [Student] SET CONCAT_NULL_YIELDS_NULL OFF 
GO
ALTER DATABASE [Student] SET NUMERIC_ROUNDABORT OFF 
GO
ALTER DATABASE [Student] SET QUOTED_IDENTIFIER OFF 
GO
ALTER DATABASE [Student] SET RECURSIVE_TRIGGERS OFF 
GO
ALTER DATABASE [Student] SET  DISABLE_BROKER 
GO
ALTER DATABASE [Student] SET AUTO_UPDATE_STATISTICS_ASYNC OFF 
GO
ALTER DATABASE [Student] SET DATE_CORRELATION_OPTIMIZATION OFF 
GO
ALTER DATABASE [Student] SET TRUSTWORTHY OFF 
GO
ALTER DATABASE [Student] SET ALLOW_SNAPSHOT_ISOLATION OFF 
GO
ALTER DATABASE [Student] SET PARAMETERIZATION SIMPLE 
GO
ALTER DATABASE [Student] SET READ_COMMITTED_SNAPSHOT OFF 
GO
ALTER DATABASE [Student] SET HONOR_BROKER_PRIORITY OFF 
GO
ALTER DATABASE [Student] SET RECOVERY FULL 
GO
ALTER DATABASE [Student] SET  MULTI_USER 
GO
ALTER DATABASE [Student] SET PAGE_VERIFY CHECKSUM  
GO
ALTER DATABASE [Student] SET DB_CHAINING OFF 
GO
ALTER DATABASE [Student] SET FILESTREAM( NON_TRANSACTED_ACCESS = OFF ) 
GO
ALTER DATABASE [Student] SET TARGET_RECOVERY_TIME = 0 SECONDS 
GO
USE [Student]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[T_Achievement](
	[Stu_no] [int] NOT NULL,
	[Cou_no] [int] NOT NULL,
	[Achievement] [decimal](18, 2) NULL,
 CONSTRAINT [PK_T_Achievement] PRIMARY KEY CLUSTERED 
(
	[Stu_no] ASC,
	[Cou_no] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[T_Course](
	[Cou_no] [int] IDENTITY(1,1) NOT NULL,
	[Cou_name] [nvarchar](200) NOT NULL,
 CONSTRAINT [PK_T_Course] PRIMARY KEY CLUSTERED 
(
	[Cou_no] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[T_Studnet](
	[Stu_no] [int] IDENTITY(1,1) NOT NULL,
	[Stu_name] [nvarchar](50) NOT NULL,
	[Stu_sex] [nvarchar](10) NOT NULL,
	[Stu_age] [int] NOT NULL,
 CONSTRAINT [PK_T_Studnet] PRIMARY KEY CLUSTERED 
(
	[Stu_no] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
INSERT [dbo].[T_Achievement] ([Stu_no], [Cou_no], [Achievement]) VALUES (1, 1, CAST(95.50 AS Decimal(18, 2)))
INSERT [dbo].[T_Achievement] ([Stu_no], [Cou_no], [Achievement]) VALUES (1, 2, CAST(100.00 AS Decimal(18, 2)))
INSERT [dbo].[T_Achievement] ([Stu_no], [Cou_no], [Achievement]) VALUES (2, 1, CAST(78.00 AS Decimal(18, 2)))
INSERT [dbo].[T_Achievement] ([Stu_no], [Cou_no], [Achievement]) VALUES (2, 2, CAST(59.50 AS Decimal(18, 2)))
SET IDENTITY_INSERT [dbo].[T_Course] ON 

INSERT [dbo].[T_Course] ([Cou_no], [Cou_name]) VALUES (1, N'语文')
INSERT [dbo].[T_Course] ([Cou_no], [Cou_name]) VALUES (2, N'数学')
SET IDENTITY_INSERT [dbo].[T_Course] OFF
SET IDENTITY_INSERT [dbo].[T_Studnet] ON 

INSERT [dbo].[T_Studnet] ([Stu_no], [Stu_name], [Stu_sex], [Stu_age]) VALUES (1, N'张三', N'男', 19)
INSERT [dbo].[T_Studnet] ([Stu_no], [Stu_name], [Stu_sex], [Stu_age]) VALUES (2, N'李四', N'女', 18)
SET IDENTITY_INSERT [dbo].[T_Studnet] OFF
ALTER TABLE [dbo].[T_Achievement]  WITH CHECK ADD  CONSTRAINT [FK_T_Achievement_T_Course] FOREIGN KEY([Cou_no])
REFERENCES [dbo].[T_Course] ([Cou_no])
GO
ALTER TABLE [dbo].[T_Achievement] CHECK CONSTRAINT [FK_T_Achievement_T_Course]
GO
ALTER TABLE [dbo].[T_Achievement]  WITH CHECK ADD  CONSTRAINT [FK_T_Achievement_T_Studnet] FOREIGN KEY([Stu_no])
REFERENCES [dbo].[T_Studnet] ([Stu_no])
GO
ALTER TABLE [dbo].[T_Achievement] CHECK CONSTRAINT [FK_T_Achievement_T_Studnet]
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'学号' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_Achievement', @level2type=N'COLUMN',@level2name=N'Stu_no'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'课程号' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_Achievement', @level2type=N'COLUMN',@level2name=N'Cou_no'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'成绩' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_Achievement', @level2type=N'COLUMN',@level2name=N'Achievement'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'成绩表' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_Achievement'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'课程号' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_Course', @level2type=N'COLUMN',@level2name=N'Cou_no'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'课程名' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_Course', @level2type=N'COLUMN',@level2name=N'Cou_name'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'课程信息表' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_Course'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'学号' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_Studnet', @level2type=N'COLUMN',@level2name=N'Stu_no'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'姓名' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_Studnet', @level2type=N'COLUMN',@level2name=N'Stu_name'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'性别' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_Studnet', @level2type=N'COLUMN',@level2name=N'Stu_sex'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'年龄' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_Studnet', @level2type=N'COLUMN',@level2name=N'Stu_age'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'学生信息表' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_Studnet'
GO
USE [master]
GO
ALTER DATABASE [Student] SET  READ_WRITE 
GO

创建学生成绩视图

USE [Student]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO


CREATE VIEW [dbo].[V_Studnet]
AS
SELECT s.Stu_name, c.Cou_name, a.Achievement
FROM T_Achievement a
INNER JOIN T_Course c ON c.Cou_no = a.Cou_no 
INNER JOIN T_Studnet s ON s.Stu_no = a.Stu_no


GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'学生成绩视图' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'VIEW',@level1name=N'V_Studnet'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_DiagramPane1', @value=N'[0E232FF0-B466-11cf-A24F-00AA00A3EFFF, 1.00]
Begin DesignProperties = 
   Begin PaneConfigurations = 
      Begin PaneConfiguration = 0
         NumPanes = 4
         Configuration = "(H (1[40] 4[20] 2[20] 3) )"
      End
      Begin PaneConfiguration = 1
         NumPanes = 3
         Configuration = "(H (1 [50] 4 [25] 3))"
      End
      Begin PaneConfiguration = 2
         NumPanes = 3
         Configuration = "(H (1 [50] 2 [25] 3))"
      End
      Begin PaneConfiguration = 3
         NumPanes = 3
         Configuration = "(H (4 [30] 2 [40] 3))"
      End
      Begin PaneConfiguration = 4
         NumPanes = 2
         Configuration = "(H (1 [56] 3))"
      End
      Begin PaneConfiguration = 5
         NumPanes = 2
         Configuration = "(H (2 [66] 3))"
      End
      Begin PaneConfiguration = 6
         NumPanes = 2
         Configuration = "(H (4 [50] 3))"
      End
      Begin PaneConfiguration = 7
         NumPanes = 1
         Configuration = "(V (3))"
      End
      Begin PaneConfiguration = 8
         NumPanes = 3
         Configuration = "(H (1[56] 4[18] 2) )"
      End
      Begin PaneConfiguration = 9
         NumPanes = 2
         Configuration = "(H (1 [75] 4))"
      End
      Begin PaneConfiguration = 10
         NumPanes = 2
         Configuration = "(H (1[66] 2) )"
      End
      Begin PaneConfiguration = 11
         NumPanes = 2
         Configuration = "(H (4 [60] 2))"
      End
      Begin PaneConfiguration = 12
         NumPanes = 1
         Configuration = "(H (1) )"
      End
      Begin PaneConfiguration = 13
         NumPanes = 1
         Configuration = "(V (4))"
      End
      Begin PaneConfiguration = 14
         NumPanes = 1
         Configuration = "(V (2))"
      End
      ActivePaneConfig = 0
   End
   Begin DiagramPane = 
      Begin Origin = 
         Top = 0
         Left = 0
      End
      Begin Tables = 
         Begin Table = "T_Achievement"
            Begin Extent = 
               Top = 6
               Left = 38
               Bottom = 127
               Right = 200
            End
            DisplayFlags = 280
            TopColumn = 0
         End
         Begin Table = "T_Course"
            Begin Extent = 
               Top = 6
               Left = 238
               Bottom = 108
               Right = 387
            End
            DisplayFlags = 280
            TopColumn = 0
         End
         Begin Table = "T_Studnet"
            Begin Extent = 
               Top = 6
               Left = 425
               Bottom = 146
               Right = 569
            End
            DisplayFlags = 280
            TopColumn = 0
         End
      End
   End
   Begin SQLPane = 
   End
   Begin DataPane = 
      Begin ParameterDefaults = ""
      End
   End
   Begin CriteriaPane = 
      Begin ColumnWidths = 11
         Column = 1440
         Alias = 900
         Table = 1170
         Output = 720
         Append = 1400
         NewValue = 1170
         SortType = 1350
         SortOrder = 1410
         GroupBy = 1350
         Filter = 1350
         Or = 1350
         Or = 1350
         Or = 1350
      End
   End
End
' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'VIEW',@level1name=N'V_Studnet'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_DiagramPaneCount', @value=1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'VIEW',@level1name=N'V_Studnet'
GO


 

统计出各科的不及格的人数

USE [Student]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO




CREATE VIEW [dbo].[V_Count]
AS
SELECT  c.Cou_name, COUNT(a.Achievement) AS FlunkCount
FROM T_Achievement a
INNER JOIN T_Course c ON c.Cou_no = a.Cou_no 
GROUP BY c.Cou_name, a.Achievement
HAVING a.Achievement < 60


GO


 

通过学生的学号来查询对应这个学生的姓名

USE [Student]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[P_Find]
(
	@Stu_no INT,
	@Stu_name NVARCHAR(50) OUTPUT
)
AS
SELECT @Stu_name = Stu_name FROM T_Studnet WHERE Stu_no=@Stu_no
GO


 

为t_ achievement表创建一个触发器tr_delete

USE [Student]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[Tr_Delete]
ON [dbo].[T_Achievement]
Instead of DELETE
AS 
PRINT '你无权删除数据'