1.SQL的特点:
- 高度非过程化
- 面向集合的操作方式
- 结构统一
- 同一语言结构提供了多种使用方式
- 结构简单,易学
2.数据的定义
2.1:模式
create schema <模式名> authorization <用户名> drop shcema <模式名> <CASCADE | RESTRICT> CASCADE 是级联,若删除模式,则把该模式下的所有数据库对象删除,RESTRICT表示限制,若该模式下定义了数据库对象(表、视图)则拒绝删除。
2.2:表
create table <表名> (<列名> <数据类型>[ 列级完整性约束],....); alter table <表名> [add [column] <新列名> <数据类型> [完整性约束]] [add <表级完整性约束>] [drop [column] <列名> [CASCADE | RESTRICT] ] [drop constraint<完整性约束名> [CASCADE | RESTRICT] ] [alter column <列名> <数据类型>] drop table <表名> [RESTRICT | CASCADE]
2.3:索引
create [unique][cluster] index <索引名> on <表名> (<列名> [次序],<列名> [次序] ....); alter index <旧索引名> rename to <新索引名> drop index <索引名>
3.数据字典
数据字典是关系数据库管理系统中的一组系统表,它记录了数据库中所有的定义信息,
包括关系模式定义、视图定义、索引定义等。在执行SQL语句的数据定义语句时,实际上就是在更新数据字典中的相应信息。
4.数据查询
select [all | distinct] <目标列表达式> [,<目标列表达式>] ... from <表名或视图名> [,<表名或视图名>] | [(< select 语句>) as <别名>] where <条件表达式> [group by <列名> [HAVING 表达式]] [order by <列名> [ASC | DESC]]
4.1:单表查询
select * from table_name , “*”表示所以列,也可选择部分列
4.2:连接查询
select A.a,B.b from A,B where A.id = B.id
4.3:嵌套查询
select A.nam from A where A.id in (select B.id from B where B.id = 1)
4.4:集合查询
集合操作包括 union( 并 ) 、intersect(交)、 except (差) select * from A where A.ID = 1 union select * from B where B.ID = 2
4.5:基于派生表的查询
select id,name from A , (select id,name from B) as tmp where A.id = tmp.id;
5.数据更新
5.1:插入数据
insert into <表名> [<属性列1> [,属性列2] ...] values (<常量1> [,常量2] ...)
5.2:修改数据
update <表名> set <列名> = <表达式> [,<列名>=<表达式>] ... [wherec<条件>];
5.3:删除数据
delete from <表名> [where <条件>];
6:视图
create view <视图名> [<列名> [...]] as <子查询> [with check option] with check option表示对视图进行更新、插入、删除时要满足视图中定义的谓语条件
6.1:视图查询
视图的查询与基本表查询一致
6.2:视图更新
- 视图由两个基本表导出的话,此视图不允许更新。
- 视图字段来自表达式或常熟,则不允许对视图执行插入和update。
- 视图中有字段来自聚集函数,不允许更新。
- 视图定义中有group by 或distinct , 不允许更新。
6.3:视图的删除
drop view <视图名> [CASCADE]
6.4:视图的优点
- 视图可以简化用户操作,不必关心视图是哪些表连接查询而得。
- 对重构数据库提供了一定程度的逻辑独立:有时候数据库的逻辑结构发生改变,使用视图可以让应用程序不发生改变,只要视图导出的字段还存在于对于的基本表中。
- 视图可以对机密数据提供保护:视图可以将一张表的不敏感字段数据选择查询出来给用户,而选择性的将敏感字段数据屏蔽,视图不查询敏感字段,这样就起到了隔离用户的作用。
- 适当使用视图可以让查询表达更清晰。