SQL语句知识总结(四)

2014-11-24 11:12:58 · 作者: · 浏览: 1
v 子查询
n SELECT子句目标列必须与INTO子句匹配
值的个数
值的类型
RDBMS在执行插入语句时会检查所插元组是
否破坏表上已定义的完整性规则
§ 实体完整性
§ 参照完整性
§ 用户定义的完整性
NOT NULL约束
UNIQUE约束
值域约束
3、 修改数据
v 语句格式
UPDATE <表名>
SET <列名>=<表达式>[,<列名>=<表达式>]…
[WHERE <条件>];
v 功能
n 修改指定表中满足WHERE子句条件的元组
n SET子句
v 指定修改方式
v 要修改的列
v 修改后取值
n WHERE子句
v 指定要修改的元组
v 缺省表示要修改表中的所有元组
v 三种修改方式
1. 修改某一个元组的值
2. 修改多个元组的值
3. 带子查询的修改语句
例:将所有学生的年龄增加1岁
UPDATE Student
SET Sage= Sage+1;
例:将计算机科学系全体学生的成绩置零。
UPDATE SC
SET Grade=0
WHERE 'CS'=
(SELETE Sdept
FROM Student
WHERE Student.Sno = SC.Sno);
4、 删除数据
v 语句格式
DELETE
FROM <表名>
[WHERE <条件>];
v 功能
n 删除指定表中满足WHERE子句条件的元组
v WHERE子句
n 指定要删除的元组
n 缺省表示要删除表中的全部元组,表的定义仍在字典中
v 三种删除方式
1. 删除某一个元组的值
2. 删除多个元组的值
3. 带子查询的删除语句
九、视图的定义
1、建立视图
v 语句格式
CREATE VIEW
<视图名> [(<列名> [,<列名>]…)]
AS <子查询>
[WITH CHECK OPTION];
v WITH CHECK OPTON表示对视图进行UPDATE、INSERT、DELETE操作时要保证更新、插入或删除的行满足视图定义中的谓词条件(即子查询中的条件表达式)
v 组成视图的属性列名:全部省略或全部指定
若省略了视图的各个属性列名,则隐含该视图由子查询中SELECT子句目标列中的诸字段组成。
但是,下列3种情况必须明确指定组成该视图的所有列名
§ 某个目标列不是单纯的属性名、而是聚集函数或列表达式
§ 多表连接时选出几个同名列作为试图的字段
§ 需要在视图中为某个列启用新的更合适的名字
v 子查询不允许含有ORDER BY子句和DISTINCT短语
2、删除视图
v 语句的格式:
DROP VIEW <视图名>;
§ 该语句从数据字典中删除指定的视图定义
§ 如果该视图上还导出了其他视图,使用CASCADE级联删除语句,把该视图和由它导出的所有视图一起删除
§ 删除基表时,由该基表导出的所有视图定义都必须显式地使用DROP VIEW语句删除
3、查询视图
例:查询选修了1号课程的信息系学生
SELECT IS_Student.Sno,Sname
FROM IS_Student,SC
WHERE IS_Student.Sno =SC.Sno AND SC.Cno= '1';
综合题:
v 供应商表: Suppliers(SID, SName, City)
v 零件表: Parts(PID , PName,Colour,Weight,City)
v 项目表: Project(PrjNo , PrjName,City,PrjDate)
v 货物供应表:
Shipment (SID,PID,PrjNo,Qty,ShDate)
Suppliers Table
SID
SName
City
S1
Smith
London
S2
Jones
Paris
S3
Blake
Paris
S4
Clark
London
S5
Adams
Athens
S6
Smith
Melbourne
Parts Table
PID
PName
Colour
Weight
City
P1
Nut
Red
12
London
P2
Bolt
Green
17
Paris
P3
Screw
Red
14
London
P4
Cam
Blue
12
Paris
P5
Cog
Red
19
London
Project table
PrjNo
PrjName
City
PrjDate
J1
Sorter
Paris
01-Aug-02
J2
Punch
Rome
04-Jan-00
J3
Reader
Athens
01-Apr-02
J4
Console
Athens
01-Dec-01
J5
Collator
London
05-Dec-01
J6
Terminal
Oslo
01-Feb-01
J7
Tape
Rome