SQL
一. SQL概述
集DDL,DML,DCL于一体得数据库语言
1. DDL语句引导词
- Create(建立)
- Alter(修改)
- Drop(撤销)
模式的定义和删除,包括定义 Database,Table,View,Index,完整性约束条件等,也包括定义对象(RowType 行对象,Type 列对象)
2. DML语句引导词
- Insert
- Delete
- Update
- Select
- 各种方式的更新和检索操作,如直接输入记录,从其他 Table (由SubQuery建立)输入
- 各种复杂条件的检索,如连接查找,模糊查找,分组查找,嵌套查找等
- 各种聚集操作,如平均,求和等,分组聚集,分组过滤等
3. DCL语句引导词
- Grant(授权)
- Revoke(收回授权)
安全性控制:授权和撤销授权
二. SQL语句
包括两件事:
- 定义数据库和表(使用DDL)
- 向表中追加元组(使用DML)
1. DDL(Data Definition Language)
DDL 通常由 DBA 来使用,也有经 DBA 授权后由应用程序员来使用
DDL基本语句
- 创建数据库:
Create Database - 创建 DB 中的 Table(定义关系模式):
Create Table - 定义 Table 及其各个属性的约束条件(定义完整性约束)
- 定义 View (定义外模式及 E-C 映像)
- 定义 Index,Tablespace…等(定义物理存储参数)
- 上述各种定义的撤销和修正
DDL示例
创建 DB
Create Database 数据库名;创建 Table
Create Table 表名(列名 数据类型[Primary key | Unique][Not null][,列名 数据类型[Not null],...]);Primary key:主键约束。每个表只能创建一个主键约束
Unique:唯一性约束(即候选键)。可以有多个唯一性约束
Not null:非空约束。是指该列不允许有空值出现
2. DML(Data Manipulation Language)
DML通常由用户或者应用程序员使用,访问经授权的数据库
DML基本语句
- 向 Table 中追加新的元组:
Insert - 修改 Table 某些元组中的某些属性:
Update - 删除 Table 中的某些元组:
Delete - 对 Table 中的数据进行各种条件的检索:
Select
DML示例
向表中追加元组,如果列名省略,则需与定义或存储的列名顺序一致,若列名未省略,需与语句中的列明顺序一致
Insert into 表名[(列名[,列名]...)]
Values(值[, 值],...);三. 数据库定义的修正与撤销SQL语句
1. 修正基本表
Alter Table 表名
[Add [[列名 数据类型],...]]
[Drop 完整性约束名]
[Modify [[列名 数据类型],...]];-
Add:增加新列 -
Drop:删除完整性约束 -
Modify:修改列定义
例子:删除学生姓名必须唯一的约束
Alter Table Student
Drop Unique(Sname);2. 删除表
Drop Table 表名;3. 删除数据库
Drop Database 数据库名;4. 指定/关闭当前使用数据库
use|close 数据库名;四. 基本查询SQL语句
1. 简单查询
相当于 ,检索条件注意运算符优先级以及
Select 列名[[, 列名]...]
From 表名
[Where 检索条件];2. 查询结果使用 Distincet 去重复记录
Select Distinct 列名[[, 列名]...]
From 表名
[Where 检索条件];3. 查询结果使用 Order By 排序
按照指定列名进行排序,asc 或者省略不写为升序,desc 为降序
Select 列名[[, 列名]...]
From 表名
[Where 检索条件]
Order By 列名 [asc|desc];4. 模糊查询
使用 Like 或者 Not Like 关键字
Select 列名[[, 列名]...]
From 表名
Where [Not] Like "匹配字符串";匹配规则:
-
%:匹配0个或多个字符 -
_:匹配任意单个字符 -
\:转义字符,将一些特殊字符当作普通字符来看待
5. 连接查询
相当于
Select 列名[[, 列名]...]
From 表名1, 表名2,...
Where 检索条件;多表连接时,两个表中的属性名相同,则需要采用 表名.属性名 方式来限定该属性是属于哪个表
6. as 重名处理
Select 列名 as 列别名 [[, 列名 as 列别名]...]
From 表名1 as 表别名1, 表名2 as 表别名2,...
Where 检索条件;as 可以省略
7. 与 Insert , Delete 和 Update 结合的嵌套子查询
批数据插入操作
Insert into 表名[(列名[, 列名]...)]
子查询;删除一定查询条件数据
Delete From 表名
Where 属性名 in
(子查询);更新指定要求的数据
Update 表名
Set 列名 = 表达式|(子查询)
[[, 列名 = 表达式|(子查询)]...]
[Where 条件表达式];
















