数据库复试—关系数据库标准语言SQL
SQL:结构化查询语言 以教材中的学生-课程数据库为例进行SQL基础语法的复习 数据库实验环境选择SQLServer 11
关系模式
学生表Student(Sno,Sname,Ssex,Sage,Sdept)
课程表Course(Cno,Cname,Cpno,Ccredit)
学生选课表SC(Sno,Cno,Grade)
数据建立
学生表数据
学号Sno | 姓名 Sname | 性别 Ssex | 年龄 Sage | 所在系 Sdept |
---|---|---|---|---|
201215121 | 李勇 | 男 | 20 | CS |
201215122 | 刘晨 | 女 | 19 | CS |
201215123 | 王敏 | 女 | 18 | MA |
201215125 | 李勇 | 男 | 20 | IS |
课程表数据(其中先行课既是主键又是外键)
课程号Cno | 课程名Cname | 先行课Cpno | 学分Ccredit |
---|---|---|---|
1 | 数据库 | 5 | 4 |
2 | 数学 | 2 | |
3 | 信息系统 | 1 | 4 |
4 | 操作系统 | 6 | 3 |
5 | 数据结构 | 7 | 4 |
6 | 数据处理 | 2 | |
7 | PASCAL语言 | 6 | 4 |
选课表SC中间表(联系表)
学号Sno | 课程号Cno | 成绩Grade |
---|---|---|
201215121 | 1 | 92 |
201215121 | 2 | 85 |
201215121 | 3 | 88 |
201215121 | 2 | 90 |
201215121 | 3 | 80 |
实验说明
在建表的过程中使用数据库管理员进行登录,在SQL定义与查询实验中忽略用户授权与相应的视图机制
在实验贱建表的过程中对常用的数据类型的说明进行省略
数据类型参考说明
实验工具Sqlserver自带工具
数据定义语言DDL—基本表建立
前期加主键约束与列级完整性约束条件
CREATE TABLE Student(Sno CHAR(9) PRIMARY KEY, /*主键约束*/Sname CHAR(20) UNIQUE, /*唯一值*/Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20)
);
外键引用自身
-- 选课表CREATE TABLE Course(Cno CHAR(4) PRIMARY KEY,Cname CHAR(40) NOT NULL,Cpno CHAR(4),Ccredit SMALLINT,FOREIGN KEY(Cpno) REFERENCES Course(Cno)
);
中间表的部分主键由两个外键联合组成,外键分别引用另外两个表的主键
CREATE TABLE SC(Sno CHAR(9),Cno CHAR(4),Grade SMALLINT,PRIMARY KEY(Sno,Cno),FOREIGN KEY(Sno) REFERENCES Student(Sno),FOREIGN KEY(Cno) REFERENCES Course(Cno),
);
完成数据库系统表的建立
数据操作语言DML-表结构的修改
语法关键字
- ALTER TABLE
- DROP TABLE
- ADD TABLE
列名:COLUMN(column)
实验举例
- 向学生表中添加入学时间列数据类型为日期型
ALTER TABLE Student ADD S_entrance DATE;
ALTER TABLE Student DROP COLUMN S_entrance;
删除表中一列时携带关键字
- 删除学生表实验(级联删除和非级联删除)
带有外键约束的无法直接进行删除
级联删除语法存在问题
查询后发现是因为SQL2012不支持使用"cascade"和"destrict”
先删除对应的关系在删除学生表