SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。
1. 数据查询语言DQL
- 数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块:
SELECT <字段名表>
FROM <表或视图名>
WHERE <查询条件>
2 .数据操纵语言DML
数据操纵语言DML主要有三种形式:
- 1) 插入:INSERT
- 2) 更新:UPDATE
- 3) 删除:DELETE
3. 数据定义语言DDL
- 数据定义语言DDL用来创建数据库中的各种对象—–表、视图、
索引、同义词、聚簇等如:
CREATE TABLE/VIEW/INDEX/SYN/CLUSTER
表 视图 索引 同义词 簇
DDL操作是隐性提交的!不能rollback
4. 数据控制语言DCL
数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制
数据库操纵事务发生的时间及效果,对数据库实行监视等。如:1) GRANT:授权。
2) ROLLBACK [WORK] TO [SAVEPOINT]:回退到某一点。
回滚—ROLLBACK
回滚命令使数据库状态回到上次最后提交的状态。其格式为:
SQL>ROLLBACK;3) COMMIT [WORK]:提交。
Three Level Architecture
1. 外部层(External Level)
用户使用语言的混合:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL
用户的视图(view)是一个外部视图,可以包括许多外部事件的记录
每一个视图展示用户所感兴趣的成分而隐藏其他信息
视图被DBA创建,可以使用使用DDL语言定义这种外部结构,如
CREATE VIEW
指令
XXX
2. 概念层(Conceptual Level)
概念层描述整个database
隐藏了数据存储的细节,描述了数据间的关系和数据的存储位置(理解为归类)
与view有或多或少的相似,如二者都有join语句
原样的展示数据结构:在一个记录中包含多个事件(理解为实体,关系)多种类型
概念模式(Conceptual Schema)
- 被DBA创建,可以使用使用DDL语言定义
- 包括为保持安全和完整性的一些约束条件(constraints)
- 被DBA编译并存储在数据字典(data dictionary), 也就是一个,包含对表(table)与域(field)(即列名或其描述)的数据库里 参考
只不过是一个独立的外部模式的集合(a union of individual external schemas),并添加了安全与完整性因素
3. 内部层(Internal Level)
描述数据库的物理存储
具体被操作系统管理,并有DBMS控制
定义数据记录怎样被存储,如变量类型和索引(It defines the types of the stored records, indices, how fields
are stored)它被DDL定义,如DDL的子集(CREATE INDEX
in SQL)程序员进入这一层操作是危险的,因为这将打破安全和完整性检测
以上3层存在映射关系,而DBA需要维持这些关系
内部层的改变不需要影响概念层,只需要改变这两层之间的映射关系,比如index change
概念层的改变直接映射到外部层的view
对于不同的DBMS, 对sql语句的执行方式也不同。如果使用了一个比较费时的查询,DBMS将会判断他并执行等价的省时的查询
DBA与database designer不同。后者分析客人需求,区分要被存储的数据,并选择一个适当的结构,DBA并不是数据库设计者