用EXISTS/NOT EXISTS实现全称量词
SQL语言中没有全称量词" (For all)
可以把带有全称量词的谓词转换为等价的带有存在量词的谓词:
查询学生S没有选修的课程
查询选修了全部课程的学生姓名。
等价于:查询这样的学生,没有一门课程是他没选修的。
branch (branch-name, branch-city, assets)
account (account-number, branch-name, balance)
depositor (customer-name, account-number)
找出在Brooklyn的所有分行中有存款账户的客户
数据定义
定义一个学生-课程模式S-T
CREATE SCHEMA S-T AUTHORIZATION WANG;
为用户WANG定义了一个模式S-T
删除模式
DROP SCHEMA <模式名> <CASCADE | RESTRICT>
CASCADE(级联)
删除模式的同时把该模式中所有的数据库对象全部删除
RESTRICT(限制)
如果该模式中定义了下属的数据库对象(如表、视图等),则拒绝该删除语句的执行。
当该模式中没有任何下属的对象时才能执行。
例DROP SCHEMA ZHANG CASCADE;
删除模式ZHANG
同时该模式中定义的表TAB1也被删除
基本表的定义、删除与修改
一、定义基本表
CREATE TABLE <表名> (<列名> <数据类型>[ <列级完整性约束条件> ] [,<列名> <数据类型>[ <列级完整性约束条件>] ] [,<表级完整性约束条件> ] );
二、数据类型
- 模式与表
每一个基本表都属于某一个模式
一个模式包含多个基本表
定义基本表所属模式
方法一:在表名中明显地给出模式名
Create table “S-T”.Student(......); /*模式名为 S-T*/
Create table “S-T”.Cource(......);
Create table “S-T”.SC(......);
方法二:在创建模式语句中同时创建表
方法三:设置所属的模式,在创建表时表名中不必给出模式名。
四、修改基本表
ALTER TABLE <表名>
[ ADD <新列名> <数据类型> [ 完整性约束 ] ]
[ DROP <完整性约束名> ]
[ ALTER COLUMN<列名> <数据类型> ];
五、删除基本表
DROP TABLE <表名>[RESTRICT| CASCADE];
RESTRICT:删除表是有限制的。
欲删除的基本表不能被其他表的约束所引用
如果存在依赖该表的对象,则此表不能被删除
CASCADE:删除该表没有限制。
在删除基本表的同时,相关的依赖对象一起删除
数 据 更 新
一、插入元组
语句格式
INSERT
INTO <表名> [(<属性列1>[,<属性列2 >…)]
VALUES (<常量1> [,<常量2>] … )
功能
将新元组插入指定表中
- 插入子查询结果
语句格式
INSERT
INTO <表名> [(<属性列1> [,<属性列2>… )]
子查询;
功能
将子查询结果插入指定表中
修改数据
语句格式
UPDATE <表名>
SET <列名>=<表达式>[,<列名>=<表达式>]…
[WHERE <条件>];
功能
修改指定表中满足WHERE子句条件的元组的指定列值
删除数据
语句格式
DELETE
FROM <表名>
[WHERE <条件>];
功能
删除指定表中满足WHERE子句条件的元组
WHERE子句
指定要删除的元组
缺省表示要删除表中的全部元组,表的定义仍在字典中
视 图
视图的特点
虚表,是从一个或几个基本表(或视图)导出的表
只存放视图的定义,不存放视图对应的数据
基表中的数据发生变化,从视图中查询出的数据也随之改变
基于视图的操作
查询
删除
受限更新
定义基于该视图的新视图
一、建立视图
语句格式
CREATE VIEW
<视图名> [(<列名> [,<列名>]…)]
AS <子查询>