1. SQL语言的组成
数据定义语言
(data definition language,DDL )主要用于定义数据库的逻辑构包括数据库、基本表视图和索引等,扩展DDL还支持存储过程,函数、对象、触发器等定义。DDL包括3类语言,即定义、修改和删除。
2)据操纵语( data manipulation language ,DML):主要用干对数据库的数据进行检索和更新,其中更新操作包括插入、删除和修改数据。
(3)数据控制语言 data control language, DCL):主要用于对数据库的对象进行授权、用户维护(包括创建、修改和删除)完整性规则定义和事务定义等。
(4)其他:主要是嵌入式SQL语言和动态SQL语言的定义,规定了SQL语言在宿主语言中使用的规则。扩展SQL还包括数据库数据的重新组织、备份与恢复等功能。
2. SQL 特点
(1)综合统一
(2) 高度非过程化
(3) 面向集合的操作方式
(4) 同一种语法结构提供两种使用方式
(自含式语言、嵌入式语言)
(5) 语言简单,易学易用。数据查询:SELECT
数据定义:CREATE、DROP、ALTER
数据操作:INSERT、UPDATE、DELETE
数据控制:GRANT、REVOKE
3. SQL查询的基本概念
外模式->视图和部分基本表
模式-> 基本表
内模式-> 存储文件
基本表
:数据库中独立存在的表称为基本表。在SQL中一个关系对应一个基本表,一个或多个基本表对应一个存储文件。一个表可以带若干个索引,索引也存放在存储文件中。
视图
:从一个或多个基本表中导出的表,是虚表,只存放视图的定义不存放对应数据。
查询表
:查询结果对应的表。
存储文件:
存储文件是指存放关系的物理文件,起逻辑结构组成关系数据库的内模式,起物理结构对用户是透明的。
4.简单查询
(1) 投影运算
消除重复元组
:DISTINCT
取别名
AS
(2) 选择运算
比较运算
:>,>=,<,<=,<>(或!=)
范围查询
:[NOT] BETWEEN ... ADN
集合查询
:[NOT]IN
空值查询
:Is [not] null
字符匹配查询
:LIKE
符号% 表示任意长度的字符串。
符号(下滑线)表示任意一个字符。
如果用户的查询字符串中本身要包含通配符% 和,必须使用ESCAPE<换码字符>,对通配符进行处理。
逻辑查询
:AND,OR,NOT。
在逻辑运算中不可以对同一属性进行逻辑“与”的等值运算。例如在选课score表中查询同时选修了001和002课程的同学的选课信息。得不到结果。
(3) 排序运算
升序(ASC)、降序(DESC)
ORDER BY <表达式1> [ASC|DESC][,<表达式2> [ASC|DESC]]
(4)查询表
SQL 语句中FROM子句后面可以是基本表、视图还可以是查询表。
FROM子句后是一个查询表,表示对该查询的查询结果(查询表)进行查询,
必须为查询表取一个名称
。
5. 连接查询
等值与非等值连接运算
在WHERE子句中加入连接多个关系的连接条件,其格式
WHERE [表1.]<属性名 1><比较运算符>[表2.]<属性名 2> [<逻辑运算符>[表3.]<属性名 3><比较运算符>[表4.]<属性名 4>]
比较运算符包括:>,>=,<,<=,=,<>(或!=)。
当比较运算符为=时,表示等值连接,其他运算符为非等值连接。
自表连接
:若某个表与自己进行连接,称为自表连接。
外连接
:
(1)左外连接:结果中包含左关系中的所有元组,对于左关系中没有连接上的元组,其右关系中相应的属性用空值替代。
FROM class a LEFT OUTER JOIN Student b ON a.classNo = b.classNo
(2)右外连接
(3)全外连接:包含左右关系中的所有元组。
FROM class a FULL OUTER JOIN Student b ON a.classNo = b.classNo