第三章:关系数据库标准语言SQL
-
SQL的语言动词
数据定义:CREATE、DROP、ALTER
数据查询:SELECT
数据操纵:INSERT、UPDATE、DELETE
数据控制:CRANT、REVOKE -
常用的完整性约束
主码约束:PRIMARY KEY
唯一性约束:UNIQUE
非空值约束:NOT NULL -
%代表任意长度的字符串
_代表单个字符 -
只有满足HAVING短语指定条件的组才输出
HAVING和WHERE子句的区别:作用对象不同
WHERE子句作用于基表或视图
HAVING是满足条件之后输出,在后面 -
-
建立一个"学生"表Student,它由学号Sno,姓名Sname,性别Ssex,年龄Sage,所在系Sdept五个属性组成,其中学号不能为空,值是唯一的,并且姓名取值也唯一。
CREATE TABLE Student
(Sno CHAR(5) NOT NULL UNIQUE,
Sname CHAR(20) UNIQUE,
Ssex CHAR(1),
Sage INT,
Sdept CHAR(15)); -
建立一个“学生学课”表SC,它由学号Sno,课程号Cno,修课成绩Grade组成,其中(Sno,Cno)为主码。
CREATE TABLE SC(
Sno CHAR(5),
Cno CHAR(3),
Grade int,
Primary key(Sno,Cno)); -
向Student表增加“入学时间”列,其数据类型为日期型
ALTER TABLE Student ADD Scome DATE;
新加列为空
如要删除:
ALTER TABLE Student DROP Scome -
将年龄的数据类型改为半字长整数
ALTER TABLE Student MODIFY Sage SMALLINT -
删除学生姓名必须取唯一值的约束
ALTER TABLE Student DROP UNIQUE(Sname); -
用DROP删除基本表
-
为学生一课程数据库中的Student、Course、SC三个表建立索引,其中Student表按学号升序建唯一索引,Course表按课程号升序建唯一索引,SC表按学号升序和课程号降序建唯一索引。
CREATE UNIQUE INDEX Stusno ON Student(Sno);
CREATE UNIQUE INDEX Coucno ON Course(Cno);
CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC); -
查询全体学生的姓名,出生年份和所有系,用小写字母表示所有系名。
SELECT Sname,‘YEAR OF BIRTH’,Sage,ISLOWER(Sdept) FROM Student; -
查询了选修了课程的学生学号
SELECT Sno FROM SC; -
查询所有年龄在20岁以下的学生姓名及其年龄
SELECT Sname,Sage
FROM Student WHERE Sage<20 -
查询年龄在20-23岁之间的学生的姓名、系别和年龄
SELECT Sname,Sdept,Sage FROM Student WHERE Sage BETWEEN 20 AND 23 -
查询信息系(IS),数学系(MA)、计算机科学系(CS)学生的姓名和性别
SELECT Sname,Ssex FROM Student WHERE Sdept IN(‘IS’,‘MA’,‘CS’); -
查询学号为95001