《关系数据库与 SQL 语言》复习资料(4)

2019-09-01 18:29

Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20) );

[例2] 建立一个“课程”表Course CREATE TABLE Course

( Cno CHAR(4) PRIMARY KEY, Cname CHAR(40),

Cpno CHAR(4) , Ccredit SMALLINT,

FOREIGN KEY (Cpno) REFERENCES Course(Cno) );

[例3] 建立一个“学生选课”表SC

CREATE TABLE SC

(Sno CHAR(9), Cno CHAR(4), Grade SMALLINT, PRIMARY KEY (Sno,Cno),

/* 主码由两个属性构成,必须作为表级完整性进行定义*/ FOREIGN KEY (Sno) REFERENCES Student(Sno),

/* 表级完整性约束条件,Sno是外码,被参照表是Student */ FOREIGN KEY (Cno) REFERENCES Course(Cno)

/* 表级完整性约束条件, Cno是外码,被参照表是Course*/

);

表结构的修改 ALTER TABLE <表名>

[ ADD <新列名> <数据类型> [ 完整性约束 ] ] [ DROP <完整性约束名> ]

[ ALTER COLUMN<列名> <数据类型> ];

[例1]向Student表增加“入学时间”列,其数据类型为日期型。 ALTER TABLE Student ADD S_entrance DATE;

[例2]将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数。

16

ALTER TABLE Student ALTER COLUMN Sage INT;

[例3]增加课程名称必须取唯一值的约束条件。

ALTER TABLE Course ADD UNIQUE(Cname);

基本表的删除

DROP TABLE <表名>[RESTRICT| CASCADE]; RESTRICT:删除表是有限制的。

欲删除的基本表不能被其他表的约束所引用 如果存在依赖该表的对象,则此表不能被删除 CASCADE:删除该表没有限制。

在删除基本表的同时,相关的依赖对象一起删除 [例1] 删除Student表

DROP TABLE Student CASCADE ; 基本表定义被删除,数据被删除

表上建立的索引、视图、触发器等一般也将被删除 [例2]若表上建有视图,选择RESTRICT时表不能删除 CREATE VIEW IS_Student

AS

SELECT Sno,Sname,Sage FROM Student

WHERE Sdept='IS';

DROP TABLE Student RESTRICT;

--ERROR: cannot drop table Student because other objects depend on it [例3]如果选择CASCADE时可以删除表,视图也自动被删除 DROP TABLE Student CASCADE;

--NOTICE: drop cascades to view IS_Student SELECT * FROM IS_Student;

--ERROR: relation \索引的建立与删除。

CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]?)

17

例 1 CREATE CLUSTER INDEX Stusname ON Student(Sname);

例 2 CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC); DROP INDEX <索引名>; DROP INDEX Stusname;

3 掌握数据查询命令: SELECT 语句,要求: SELECT [ALL|DISTINCT] <目标列表达式> [,<目标列表达式>] ? FROM <表名或视图名>[, <表名或视图名> ] ? [ WHERE <条件表达式> ]

[ GROUP BY <列名1> [ HAVING <条件表达式> ] ] [ ORDER BY <列名2> [ ASC|DESC ] ];

1 )简单查询(单表查询),包括正确书写选择条件、排序输出、聚合运算以及分组处理; [例1] 查询全体学生的学号与姓名。

SELECT Sno,Sname FROM Student;

[例2] 查询全体学生的姓名、学号、所在系。

SELECT Sname,Sno,Sdept FROM Student;

[例3] 查询计算机科学系全体学生的名单。 SELECT Sname FROM Student WHERE Sdept=?CS?;

[例4] 查询所有年龄在20岁以下的学生姓名及其年龄。 SELECT Sname,Sage FROM Student WHERE Sage < 20;

[例5] 查询考试成绩有不及格的学生的学号。 SELECT DISTINCT Sno FROM SC

WHERE Grade<60;

[例6] 查询年龄在20~23岁(包括20岁和23岁)之间的学生的

18

姓名、系别和年龄 SELECT Sname,Sdept,Sage FROM Student

WHERE Sage BETWEEN 20 AND 23;

[例7] 查询年龄不在20~23岁之间的学生姓名、系别和年龄

SELECT Sname,Sdept,Sage FROM Student

WHERE Sage NOT BETWEEN 20 AND 23;

[例8]查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别。

SELECT Sname,Ssex FROM Student

WHERE Sdept IN ( 'IS','MA','CS' );

[例9]查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别。 SELECT Sname,Ssex FROM Student

WHERE Sdept NOT IN ( 'IS','MA','CS' );

[例10] 查询学号为200215121的学生的详细情况。 SELECT * FROM Student

WHERE Sno LIKE ?200215121';

[例11] 查询姓\欧阳\且全名为三个汉字的学生的姓名。 SELECT Sname FROM Student

WHERE Sname LIKE '欧阳__';

[例12] 某些学生选修课程后没有参加考试,所以有选课记录,但没 有考试成绩。查询缺少成绩的学生的学号和相应的课程号。

SELECT Sno,Cno

FROM SC

WHERE Grade IS NULL

[例13] 查所有有成绩的学生学号和课程号。 SELECT Sno,Cno FROM SC

19

[例14] 查询计算机系年龄在20岁以下的学生姓名。 SELECT Sname FROM Student

WHERE Sdept= 'CS' AND Sage<20; WHERE Grade IS NOT NULL; 排序输出

[例15] 查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。 SELECT Sno,Grade FROM SC

WHERE Cno= ' 3 ' ORDER BY Grade DESC;

[例16] 查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列。

SELECT * FROM Student

ORDER BY Sdept,Sage DESC; 聚合运算 聚集函数: 计数

COUNT([DISTINCT|ALL] *) COUNT([DISTINCT|ALL] <列名>) 计算总和

SUM([DISTINCT|ALL] <列名>) 计算平均值

AVG([DISTINCT|ALL] <列名>) 最大最小值

MAX([DISTINCT|ALL] <列名>)

MIN([DISTINCT|ALL] <列名>)

[例17] 查询学生总人数。 SELECT COUNT(*) FROM Student;

[例18] 查询选修了课程的学生人数。

20


《关系数据库与 SQL 语言》复习资料(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:福建省泉州市洛江区中考数学模拟试卷(含解析)[含解析]

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: