数据库复试—关系数据库标准语言SQL

时间:2024-01-24 08:33:04

数据库复试—关系数据库标准语言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)

实验举例

  1. 向学生表中添加入学时间列数据类型为日期型

ALTER TABLE Student ADD S_entrance DATE;

在这里插入图片描述


ALTER TABLE Student DROP COLUMN S_entrance;

删除表中一列时携带关键字

  1. 删除学生表实验(级联删除和非级联删除)

带有外键约束的无法直接进行删除
在这里插入图片描述

级联删除语法存在问题
在这里插入图片描述

查询后发现是因为SQL2012不支持使用"cascade"和"destrict”

先删除对应的关系在删除学生表

实验拓展