SQL

一. SQL概述

集DDL,DML,DCL于一体得数据库语言

1. DDL语句引导词

  • Create(建立)
  • Alter(修改)
  • Drop(撤销)

模式的定义和删除,包括定义 Database,Table,View,Index,完整性约束条件等,也包括定义对象(RowType 行对象,Type 列对象)

2. DML语句引导词

  • Insert
  • Delete
  • Update
  • Select
  1. 各种方式的更新和检索操作,如直接输入记录,从其他 Table (由SubQuery建立)输入
  2. 各种复杂条件的检索,如连接查找,模糊查找,分组查找,嵌套查找等
  3. 各种聚集操作,如平均,求和等,分组聚集,分组过滤等

3. DCL语句引导词

  • Grant(授权)
  • Revoke(收回授权)

安全性控制:授权和撤销授权

二. SQL语句

包括两件事:

  1. 定义数据库和表(使用DDL)
  2. 向表中追加元组(使用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. 简单查询

相当于 SQL SERVER 撤销 restore sql数据库撤销语句_数据库,检索条件注意运算符优先级以及 SQL SERVER 撤销 restore sql数据库撤销语句_数据库_02

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. 连接查询

相当于 SQL SERVER 撤销 restore sql数据库撤销语句_表名_03

Select 列名[[, 列名]...] 
From 表名1, 表名2,...
Where 检索条件;

多表连接时,两个表中的属性名相同,则需要采用 表名.属性名 方式来限定该属性是属于哪个表

6. as 重名处理

Select 列名 as 列别名 [[, 列名 as 列别名]...] 
From 表名1 as 表别名1, 表名2 as 表别名2,...
Where 检索条件;

as 可以省略

7. 与 Insert , DeleteUpdate 结合的嵌套子查询

批数据插入操作

Insert into 表名[(列名[, 列名]...)]
子查询;

删除一定查询条件数据

Delete From 表名 
Where 属性名 in 
(子查询);

更新指定要求的数据

Update 表名
Set 列名 = 表达式|(子查询)
	[[, 列名 = 表达式|(子查询)]...]
[Where 条件表达式];