数据库笔记第三章
三:SQL语言
1:定义模式(定义数据库):CREATE SCHEMA 模式名(数据库名) AUTHORIZATION 用户名
2:删除模式(删除数据库):DROP SCHEMA 模式名[CASCADE|RESTRICT] 级联删除或限制不能删除
3:创建表:CREATE TABLE 表名 (列名 数据类型 约束条件,…);
4:修改表:ALTER TABLE 表名
ADD 列名 数据类型 约束条件
DROP 列名[CASCADE|RESTRICT]
ALTER COLUMN 列名 数据类型
5:删除表:DROP TABLE 表名[CASCADE|RESTRICT]
6:数据查询:SELECT[ALL|DISTINCT] 表达式 FROM 表名 WHERE 表达式 GROUP BY 列名 HAVING 表达式 ORDER BY 列名[ASC|DESC];
去除重复属性 对groupby结果进一步筛选 升序|降序
WHERE 表达式常用条件
比较:=,>,<,<=,>=,!=…
范围:between…and.
归属:in、not in
模糊查询:like 、not like (%作通配符表示模糊内容)
7:插入数据:INSERT INTO 表名 属性列名 VALUES(属性值,…,…)
8:修改数据:UPDATE 表名 SET 列名=修改值 where 条件
9:删除数据:DELETE FROM 表名 where 条件
四:视图
视图不是一个具体的表,它只不过是一个“窗户”,透过它可以看到某个表中某些特定的数据以及变化。
建立视图
create view <视图名> [(<列名> [,<列名>]…)]AS <子查询>[WITH CHECK OPTION];
eg.建立信息系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有信息系的学生
CREATE VIEW IS_StudentASSELECT Sno,Sname,SageFROM StudentWHERE Sdept= 'IS’WITH CHECK OPTION;
基于视图的视图 (建立信息系选修了1号课程且成绩在90分以上的学生的视图)
CREATE VIEW IS_S2ASSELECT Sno,Sname,GradeFROM IS_S1WHERE Grade>=90;
删除视图
DROP VIEW <视图名>[CASCADE];
该语句从数据字典中删除指定的视图定义,如果该视图上还导出了其他视图,使用CASCADE级联删除语句,把该视图和由它导出的所有视图一起删除
删除基表时,由该基表导出的所有视图定义都必须显式地使用DROP VIEW语句删除视图查询:
视图查询
更新视图
限制:
一些视图是不可更新的,因为对这些视图的更新不能唯一地有意义地转换成对相应基本表的更新
允许对行列子集视图进行更新
对其他类型视图的更新不同系统有不同限制
若视图是由两个以上基本表导出的,则此视图不允许更新
若视图的字段来自字段表达式或常数,则不允许对此视图执行INSERT和UPDATE操作,但是允许执行DELETE操作,
若视图的字段来自聚集函数,则此视图不允许更新
若视图定义中含有GROUP BY子句,则此视图不允许更新