目录

  • 第1单元    数据库系统导论
    • ● 任务1.1  数据库基本概念
    • ● 任务1.2  设计E—R 图
    • ● 任务1.3   将E-R图转换成关系模型
    • ● 任务1.4   练习与作业
    • ● 教与学参考资源
  • 第2单元   认识SQL SERVER数据库
    • ● 任务2.1 数据库应用场景
    • ● 任务2.3  SQL  Server 数据库安装
    • ● 任务2.4 SQL Server 的管理
    • ● 任务2.5  使用SSMS连接数据库
    • ● 教与学参考资源
  • 第3单元  创建和管理数据库
    • ● 任务3.1 创建数据库
    • ● 任务3.1(2)  命令创建数据库
    • ● 任务3.2 管理数据库
    • ● 任务3.2(2) 查看、收缩数据库
    • ● 教与学参考资源
  • 第4单元 创建和管理数据库表
    • ● 任务4.1 SQL Server常用数据类型
    • ● 任务4.2  创建数据表
    • ● 任务4.3  命令创建表
    • ● 任务4.4 实施完整性约束
    • ● 教与学参考资源
  • 第 5 单元   查询数据表
    • ● 任务5.1 单表数据查询
    • ● 任务5.2 多表数据查询
    • ● 任务5.3 嵌套查询
    • ● 任务5.4 合并查询结果
    • ● 教与学参考资源
  • 第6单元  管理表中数据
    • ● 任务6.1   添加数据
    • ● 任务6.2  修改数据
    • ● 任务6.3  删除数据
    • ● 习题与训练
    • ● 教与学参考资源
  • 第7单元  使用索引和视图
    • ● 任务7.1  使用索引
    • ● 使用T-SQL创建索引
    • ● 任务7.2  使用视图
    • ● 使用T-SQL语句创建视图
    • ● 教与学参考资源
  • 第8单元 Transact-SQL语言编程
    • ● 任务8.1   声明和使用变量
    • ● 任务8.2   流控语句
    • ● 任务8.3   常用系统函数
    • ● 任务8.4   创建自定义函数
    • ● 教与学参考资源
  • 第9单元  事务和锁
    • ● 任务   9.1     事务
    • ● 事务的基本操作
    • ● 任务9.2    锁
    • ● 死锁及避免方法(例)
    • ● 教与学参考资源
  • 第10单元  创建和管理存储过程
    • ● 任务10.1 存储过程及优点
    • ● 任务10.2 创建和执行存储过程
    • ● 任务10.3   存储过程参数和返回值
    • ● 任务10.4 修改、删除、 重新编译存储过程
    • ● 教与学参考资源
  • 第11单元 创建和管理触发器
    • ● 任务1 触发器的作用和分类
    • ● 任务2 触 发器的创建与执行
    • ● 任务3 创建级联触发器
    • ● 任务4 修改、删除触发器
  • 第12单元 创建和使用游标
    • ● 任务1  游标的作用及使用步骤
    • ● 任务2  创建基本游标
    • ● 任务3  使用变量保存游标数据
    • ● 任务4  使用循环环提取游标数据
  • 第13单元 SQL Server用户管理
    • ● 任务1数据库安全管理概述
    • ● 任务2SQL Server 安全机制
    • ● 任务3 账号、角色及权限管理
    • ● 任务4数据库完整性管理
    • ● 任务5 数据库的备份与还原
    • ● 任务6   数据的导入与导出
  • 第14单元  综合应用案例
    • ● 概述
    • ● 需求分析
    • ● 概述设计-逻辑设计- 物理设计
    • ● 编写数据库设计说明书
  • 学生做项目成果展示
    • ● 项目一  设计《我班同学数据库》
    • ● 项目二  设计《(Teaching)教学数据库》
    • ● 项目三  数据库应用系统设计开发项目
    • ● 项目四 《华夏-宿舍管理系统》设计开发
    • ● 项目五   综合实训大作业
    • ● 综合实训团队项目大作业
    • ● 学生完成项目摘录展示
  • 总复习与综合训练
    • ● 总复习
    • ● 综合训练一
    • ● 综合训练二
    • ● 综合训练三
    • ● 综合训练四
    • ● 综合训练五
    • ● 简答综合训练
  • 在线专题测验
    • ● 自检自测一
    • ● 自检自测二
  • 拓展   数据库管理工具平台  Navicat
    • ● 关于Navica
    • ● Navicat 的系统需求
    • ● Navicat 的用户界面
    • ● Navicat 创建数据库对象
    • ● 在Navicat创建的SQL 程序脚本
    • ● 在Navicat创建的SQL  server 脚本(2)
    • ● 综合实训(1)
    • ● 综合实训(2)
  • 技术拓展   (MYSQL)数据库技术与应用
    • ● MYSQL技术
  • 教与学图片剪影
    • ● 教学团队
    • ● 学生学习实训
    • ● 活动与交流
项目二  设计《(Teaching)教学数据库》

设计《Teaching 教学数据库》

--一、创建数据库Teaching

SET NOCOUNT ON

SET DATEFORMAT YMD

GO

USE MASTER

GO

IF EXISTS(SELECT * FROM SYSDATABASES WHERE NAME='Teaching')--如果存在则删除

DROP DATABASE Teaching

GO

CREATE DATABASE Teaching

ON

(NAME=Teaching_data1,                         

FILENAME='D:\Teaching_data1.mdf',        

SIZE=5MB,                                     

MAXSIZE=50MB,                                

FILEGROWTH=1MB                              

)

LOG ON

(NAME=Teaching_log1, 

FILENAME='D:\Teaching_log1.ldf',  

SIZE=2MB,                                      

MAXSIZE=100MB, 

FILEGROWTH=10% ) 

GO

--二、创建S(学生表)

IF EXISTS(SELECT * FROM SYSOBJECTS WHERE NAME='S')--如果S表存在则删除

DROP TABLE dbo.S

GO

USE Teaching

GO

CREATE TABLE S

(SNO char(6) NOT NULL,

SNAME varchar(8) NOT NULL,

SSEX char(2) NOT NULL,

SDEPT varchar(10) NOT NULL,

SBIRTHDAY date NOT NULL)

GO

--三、创建C(课程表)

IF EXISTS(SELECT * FROM SYSOBJECTS WHERE NAME='C')

DROP TABLE dbo.C

GO

CREATE TABLE C

(CNO CHAR (6) NOT NULL,

CNAME VARCHAR(20) NOT NULL,

CT SMALLINT NULL,

TNO CHAR(6) NULL)

GO

--四、创建SC(选课表)

IF EXISTS(SELECT * FROM SYSOBJECTS WHERE NAME='SC')

DROP TABLE dbo.SC

GO

CREATE TABLE SC

(SNO CHAR(6) NOT NULL,

CNO CHAR(6) NOT NULL,

SCORE SMALLINT NULL

)

GO

--五、创建T(教师表)

IF EXISTS(SELECT * FROM SYSOBJECTS WHERE NAME='T')

DROP TABLE dbo.T

GO

CREATE TABLE T

(TNO CHAR(6) NOT NULL,

TNAME VARCHAR(8) NOT NULL,

TSEX CHAR(2) NOT NULL,

TITLE VARCHAR(10) NULL

)

GO

--六、给表添加主键约束

USE Teaching

GO

IF EXISTS(SELECT * FROM SYSOBJECTS WHERE NAME='S_PK')

ALTER TABLE S DROP CONSTRAINT S_PK

GO

ALTER TABLE S ADD CONSTRAINT S_PK PRIMARY KEY(SNO)

GO

IF EXISTS(SELECT * FROM SYSOBJECTS WHERE NAME='C_PK')

ALTER TABLE S DROP CONSTRAINT C_PK

GO

ALTER TABLE C ADD CONSTRAINT C_PK PRIMARY KEY(CNO)

GO

IF EXISTS(SELECT * FROM SYSOBJECTS WHERE NAME='SC_PK')

ALTER TABLE S DROP CONSTRAINT SC_PK

GO

ALTER TABLE SC ADD CONSTRAINT SC_PK PRIMARY KEY(SNO,CNO)

GO

IF EXISTS(SELECT * FROM SYSOBJECTS WHERE NAME='T_PK')

ALTER TABLE S DROP CONSTRAINT T_PK

GO

ALTER TABLE T ADD CONSTRAINT T_PK PRIMARY KEY(TNO)

GO

--七给表添加外键约束

USE Teaching

GO

IF EXISTS(SELECT * FROM SYSOBJECTS WHERE NAME='C_FK')

ALTER TABLE S DROP CONSTRAINT C_FK

GO

ALTER TABLE C ADD CONSTRAINT C_FK FOREIGN KEY(TNO) REFERENCES T(TNO)

GO

IF EXISTS(SELECT * FROM SYSOBJECTS WHERE NAME='SC_FK_SNO')

ALTER TABLE S DROP CONSTRAINT SC_FK_SNO

GO

ALTER TABLE SC ADD CONSTRAINT SC_FK_SNO FOREIGN KEY(SNO) REFERENCES S(SNO)

GO

IF EXISTS(SELECT * FROM SYSOBJECTS WHERE NAME='SC_FK_CNO')

ALTER TABLE S DROP CONSTRAINT SC_FK_CNO

GO

ALTER TABLE SC ADD CONSTRAINT SC_FK_CNO FOREIGN KEY(CNO) REFERENCES C(CNO)

GO

--八、给表添加检查约束

USE Teaching

GO

IF EXISTS(SELECT * FROM SYSOBJECTS WHERE NAME='S_CK')

ALTER TABLE S DROP CONSTRAINT S_CK

ALTER TABLE S ADD CONSTRAINT S_CK CHECK(SSEX='男' OR SSEX='女')

GO

IF EXISTS(SELECT * FROM SYSOBJECTS WHERE NAME='SC_CK')

ALTER TABLE S DROP CONSTRAINT SC_CK

ALTER TABLE SC ADD CONSTRAINT SC_CK CHECK(SCORE>=0 AND SCORE<=100)

GO

IF EXISTS(SELECT * FROM SYSOBJECTS WHERE NAME='T_SEX')

ALTER TABLE S DROP CONSTRAINT T_SEX

ALTER TABLE T ADD CONSTRAINT T_SEX CHECK(TSEX='男' OR TSEX='女')

GO

--九、给表添加默认约束

USE Teaching

GO

IF EXISTS(SELECT * FROM SYSOBJECTS WHERE NAME='T_DK')

ALTER TABLE S DROP CONSTRAINT T_DK

ALTER TABLE T ADD CONSTRAINT T_DK DEFAULT '助教' FOR TITLE

GO


--十、输入测试数据

INSERT T VALUES('T1','李力','男','教授')

INSERT T VALUES('T2','王平','女','讲师')

INSERT T VALUES('T3','刘伟','男','讲师')

INSERT T VALUES('T4','张雪','女','教授')

INSERT T VALUES('T5','张兰','女','副教授')

INSERT T VALUES('T6','王一','男','助教')

INSERT T VALUES('T7','李明','男','助教')

GO

INSERT S VALUES('95001','李勇','男','数学','1978-03-05')

INSERT S VALUES('95002','刘晨','女','信息','1977-10-03')

INSERT S VALUES('95003','王敏','女','数学','1978-05-10')

INSERT S VALUES('95004','张立','男','信息','1979-04-07')

INSERT S VALUES('95005','欧阳锋','男','信息','1980-07-30')

INSERT S VALUES('95006','欧阳正华','男','数学','1981-06-09')

INSERT S VALUES('95007','刘秋明','女','计算机','1980-08-10')

INSERT S VALUES('95008','李岩','女','计算机','1983-05-23')

GO

INSERT C VALUES('C1','数据库',50,'T1')    

INSERT C VALUES('C2','数学',80,'T5')

INSERT C VALUES('C3','信息系统',30,'T3')    

INSERT C VALUES('C4','操作系统',60,'T2')    

INSERT C VALUES('C5','数据结构',80,'T1')    

INSERT C VALUES('C6','计算机网络',50,'T3')   

INSERT C VALUES('C7','C语言',60,'T4')    

INSERT C VALUES('C8','DB_Design',50,'T4')   

GO

INSERT SC VALUES('95001','C1',92)

INSERT SC VALUES('95001','C2',85)

INSERT SC VALUES('95001','C3',NULL)

INSERT SC VALUES('95001','C4',NULL)

INSERT SC VALUES('95001','C5',NULL)

INSERT SC VALUES('95002','C2',90)

INSERT SC VALUES('95002','C3',80)

INSERT SC VALUES('95003','C5',50)

INSERT SC VALUES('95004','C2',66)

INSERT SC VALUES('95004','C3',NULL)

INSERT SC VALUES('95007','C1',80)

GO


--十一、创建学生选课视图

CREATE VIEW S_SCORE(学号,姓名,系部,课程号,课程名,学时,授课教师号,授课教师名,成绩)

AS

SELECT S.SNO,SNAME,SDEPT,C.CNO,CNAME,CT,T.TNO,TNAME,SCORE

FROM S LEFT JOIN SC

ON S.SNO=SC.SNO

LEFT JOIN C

ON SC.CNO=C.CNO

LEFT JOIN T

ON C.TNO=T.TNO

GO

--十二、创建C(课程表)索引

CREATE INDEX IX_CNO ON C(CNAME)

GO


--十三、创建触发器,限定学生选课门数不超过5门

CREATE TRIGGER TR_SC_COU 

ON SC

FOR INSERT

AS

DECLARE @COUNT INT

SELECT @COUNT=COUNT(CNO) FROM SC WHERE SNO=(SELECT SNO FROM INSERTED)

IF @COUNT>=5

BEGIN

 ROLLBACK

 RAISERROR('最多选修5门课程!',16,1)

END


--十四、]创建存储过程,根据给定的课程号,打印该课程的成绩清单

CREATE PROC PrintScore

@COUNO VARCHAR(6)

AS

DECLARE @CNO VARCHAR(5),@COUNAME VARCHAR(20),@SNO VARCHAR(6),@SNAME VARCHAR(8),@SCORE SMALLINT

DECLARE Cr1 CURSOR  FOR

SELECT C.CNO,CNAME,S.SNO,SNAME,SCORE

FROM S,C,SC

WHERE S.SNO=SC.SNO AND C.CNO=SC.CNO AND SC.CNO=@COUNO

OPEN Cr1

PRINT '--------------------成绩清单-----------------'

PRINT  '课程号    课程名     学号     姓名      成绩'

FETCH NEXT FROM Cr1 INTO @CNO,@COUNAME,@SNO,@SNAME,@SCORE

WHILE @@FETCH_STATUS=0

BEGIN

PRINT @CNO++SPACE(5)+CONVERT(CHAR(6),@COUNAME)+SPACE(5)+@SNO+SPACE(3)+CONVERT(CHAR(8),@SNAME)+SPACE(3)+CONVERT(CHAR(3),@SCORE)

FETCH NEXT  FROM Cr1 INTO @CNO,@COUNAME,@SNO,@SNAME,@SCORE

END

CLOSE Cr1

DEALLOCATE Cr1