关系数据库标准语言SQL基础2

来源:互联网 发布:网络大屏广告机 编辑:程序博客网 时间:2024/05/22 07:00

若一个查询同时涉及两个以上的表,则称之为连接查询。包括等值连接查询、自然连接查询、非等值连接查询、自身连接查询、外连接查询和符合条件连接查询等。
1. 连接查询
例1. SELECT Student.* , SC.*
FROM Student,SC
WHERE Student.Sno = SC.Sno;
2. 嵌套查询
一个SELECT-FROM-WHERE语句称为一个查询块。将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询(nested query)。
例1. SELECT Sname
FROM Student
WHERE Sno IN
(SELECT Sno
FROM SC
WHERE Cno=’2’);
SQL语言允许多层嵌套查询,即一个子查询中还可以嵌套其他子查询。但是,子查询的SELECT语句中不能使用ORDER BY 子句,ORDER BY子句只能对最终查询结果排序
3. 集合查询
SELECT语句的查询结果是元组的集合,所以多个SELECT语句的结果可进行集合操作。包括并操作UNION、交操作INTERSECT和差操作EXCEPT。查询操作的各查询结果的列数必须相同,对应项的数据类型也必须相同。
SELECT *
FROM Student
WHERE Sdept = ‘CS’
UNION
SELECT *
FROM Student
WHERE Sage <= 19;
4. 数据更新
数据更新有3中操作:添加数据、修改数据和删除数据
a.插入元组
INSERT
INTO <表名> [(<属性列1>,…)]
VALUES (<常量1>,…);
INTO子句中没有出现的属性列,新元组在这些列上将去空值。但如果在表定义时说明了NOT NULL的属性列不能取空值,否则会出错。
如果INTO子句中没有指明任何属性列名,则新插入的元组必须在每个属性列上均有值。
b.插入子查询结果
子查询不仅可以嵌套在SELECT语句中,用以构造父查询的条件,还可以嵌套在INSERT语句中,用以生成要插入的批量数据。
INSERT
INTO <表名> [(<属性列>…)]
子查询;
c.修改数据
UPDATE <表名>
SET <列名>=<表达式>…
[WHERE<条件>];
其功能是修改指定表中满足WHERE子句条件的元组。如果省略了WHERE子句,则表示要修改表中的所有元组。
d.删除数据
DELETE
FROM <表名>
[WHERE <条件>];
其功能是从指定表中删除满足WHERE子句条件的所有元组。如果省略WHERE子句,表示删除表中全部元组,但表的定义仍在字典中。即DELETE删除的是表中的数据,而不是关于表的定义。

     ## **视图** ##

视图是从一个或几个基本表(或视图)导出的表。他与基本表不同,是一个虚表。数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍然存放在原来的基本表中。所以基本表中的数据发生变化,从视图中查询出的数据就发生了变化。
1. 定义视图
a、建立视图:
CREATE VIEW <视图名> [(<列名1>)…]
AS <子查询>
[WITH CHECK OPTION];
子查询可以是任意复杂的SELECT语句,但通常不允许含有ORDER BY子句和DISTINCT短语。
WITH CHECK OPTION 表示对视图进行UPDATE,INSERT 和DELETE操作时要保证更新、插入或删除的行满足视图定义中的谓词条件(即子查询中的条件表达式)。
组成视图的属性列名或者全部省略或者全部指定,没有第三种情况。下列三种情况下必须明确指定组成视图的所有列名:
1)某个目标列不是单纯的属性名,而是聚集函数或列表达式;
2)多表连接时选出了几个同名列作为视图的字段;
3)需要在视图中为某个列启用新的更合适的名字。
RDBMS执行CREATE VIEW 语句的结果只是把视图的定义存入数据字典,并不执行其中的SELECT语句。
b、删除视图
DROP VIEW <视图名> [CASCADE];
视图删除后视图的定义将从数据字典中删除。
基本表删除后,由该基本表导出的所有视图(定义)没有被删除,但均以无法使用了。
c、查询视图
定义视图后,就可以像基本表一样进行查询了。
d、更新视图
通过视图来插入(INSERT)、删除(DELETE)和修改(UPDATE)数据。
视图是不实际存储数据的虚表,因此对视图的更新,最终要转换为对基本表的更新。
为了防止用户通过视图对数据进行增加、删除、修改时,有意无意地对不属于视图范围内的基本表进行操作,可在定义视图时加上WITH CHECK OPTION子句。
2、视图的作用
视图最终是定义在基本表至上的,对视图的一切操作最终也要转换为对基本表的操作。
1)视图能够简化用户的操作
2)视图使用户能以多种角度看待同一数据
3)视图对重构数据库提供了一定程度的逻辑独立性
4)视图能够对机密数据提供安全保护
5)适当的利用视图可以更清晰的表达查询

0 0
原创粉丝点击