一、SQL语言概述
1.SQL语言的功能
SQL语言按其功能可分为4大部分:数据定义、数据查询、数据操纵和数据控制。
SQL功能 | 谓词 |
数据定义 | CREATE、DROP、ALTER |
数据查询 | SELECT |
数据操纵 | INSERT、UPDATE、DELETE |
数据控制 | GRANT、REVOKE、DENY |
二、SQL支持的数据类型
1.数值型
(1)精确数字
(2)近似数字
2.日期时间型
3.字符串型
(1)普通字符编码串
(2)统一字符编码串
(3)二进制串
4.其他类型
三、数据定义功能
1.数据库的定义
(1)数据库创建
create database <数据库名>
(2)数据库修改
alter database <数据库名>
(3)数据库删除
drop database <数据库名>
2.表的定义
(1)表的创建
create table 表名(列名 数据类型 [primary key|unique][not null][,列名 数据类型 [not null ,... ]);
“[]”表示其中的内容是可选的,“|”表示在多个选项中选择一个。
primary key :主键约束。每个表只能创建一个主键约束。
unique:唯一性约束(即候选键)。可以有多个唯一性约束。
not null:非空约束。是指该列不允许有空值出现,如选择了 not null 表名该列不允许有空值出 现。
[ forenign key (<列名>)] references <外表名> (<外表列名>):外键约束。定义本列为引用其 他表的外键。
deffault :默认值约束。指定列的默认值。
check(逻辑表达式):列取值范围约束。限制列的取值范围。
(2)表的修改
alter table <表名>
{
alter column <列名> <新数据类型>|
add <列名> <新数据类型> [约束] |
add 约束定义|
drop <约束名>
}
四、数据查询功能
1.表单查询
(1)查询语句的基本结构:
select <目标列名序列>
from <表名>
[where <行选择条件>]
[group by <分组依据列>]
[having <组选择条件>]
[order by <排序依据列>]
其中:
select子句用于指定输出的字段。
from子句英语指定数据的来源。
where子句用于指定数据的行选择条件。
group by 子句用于对检索到的记录进行分组。
having 子句用于指定对分组后结果的选择条件。
order by 子句用于对查询的结果进行排序。
(2)选择表中若干列
查询指定的列:可以在 select <目标列名序列>中指定要查询的列来实现。
查询全部列:在 select 的<目标列名序列>中写星号“*”。
查询表中没有的列:select子句 的<目标列名序列>可以是表中存在的属性列,也可以是表达式、常量或者函数。例如:求年龄。
(3)指定别名的语法格式:
列名|表达式 [as] 列别名
其中:列别名=列名|表达式
(4)选择表中若干行(需要添加where子句)
查询满足条件的元组:
比较大小:=、>、>=、<、<=、<>、!=。
确定范围:between and
确定集合:列名[not ] in (常量1,常量2,....,常量n)
字符串匹配:列名 [not] Like <匹配穿>
通配符:_:匹配任意一个字符。
%:匹配0到多个字符。
[ ]:匹配[ ]中的任意一个字符。
[^]:不匹配[ ]中的任意一个字符。
涉及空值的查询:列名 is [not] null
多重条件查询:在where子句中使用逻辑运算符and 和or 来组成多条件查询。
(5)消除取值相同的行。
2.对查询结果进行排序。
排序子句的语法格式:
order by <列名> [ASC|DESC] [,...n]
其中:ASC:升序 DESC:降序
如果没有指定排序方式,则默认的排序方式为ASC.
3.使用聚合函数进行统计
(1)COUNT(*):统计表中元组的个数。
(2)SUM(<列名>):计算列值的和值。
(3)AVG(<列名>):计算列值的平均值。
(4)MAX (<列名>):计算列值的最大值。
(5)MIN(<列名>):计算列值的最小值。
4.对数据进行分组
GROUP BY <分组依据列> [,.....n]
[having <组提取条件>]
其中:having子句用于对分组后的统计结果再进行筛选,它一般和group by 子句一起使用。
5.多表连接查询
(1)内连接: from 表1 [inner] join 表2 on <连接条件>
(2)自连接: from 表1 AS T1 join 表1 AS T2 on T1.列名= T2.列名
(3)外连接: from 表1 LEFT|RIGHT [OUTER] JOIN 表2 On <连接条件>
6.TOP的使用
(1)格式:TOP n [percent] [WITH TIES]
其中:n为非负整数。
TOP n:取查询结果的前n行数据。
TOP n percent:取查询结果的前n%行数据。
WITH TIES:包括并列的结果。
7.CASE表达式
(1)CASE的语法格式:
CASE 测试表达式
WHEN 简单表达式 1 THEN 结果表达式 1
WHEN 简单表达式 2 THEN 结果表达式 2
....
WHEN 简单表达式 n THEN 结果表达式 n
[ELSE 结果表达式 n+1]
END
其中:测试表达式可以是一个变量名、字段名、函数或子查询。
简单表达式中不能包含比较运算符,他们给出被比较的表达式或值,其数据类型必须与 测试表达式的数据类型相同,或者可以隐式转换为测试表达式的数据类型。
8.将查询结果保存到表中
(1)语法格式:select 查询列表序列 into <新表名>
from 数据源
.....————其他条件子句、分组子句等
其中:<新表名>是用于存放查询结果的表名。
9.子查询
(1)写在where子句中的子查询通常有如下几种形式:
where <列名> [Not ] in (子查询)
where <列名> 比较运算符 (子查询)
where exists (子查询)
(2)使用子查询进行基于集合的测试
格式:where <列名> [Not ] in (子查询)
其中:是先执行子查询,然后利用子查询返回的结果再执行外层查询(先内后外)。
(3)使用子查询进行行比较测试
格式:where <列名> 比较运算符 (子查询)
其中:使用子查询进行比较测试时,要求子查询语句必须是返回单值的查询语句。
10.带EXISTS谓词的子查询
(1)格式:where [not ] exists (子查询)
其中:带exists 谓词的子查询不返回查询的数据,只产生逻辑真值或假值。
11.查询的集合运算
(1)SQL提供了与关系代数中集合运算并、交、和差对应的谓词,它们分别是:UNION、INTERSECT和EXCEPT。
五、视图
1.视图的概述:
视图是基于SQL语句的结果集的可视化的表。
2.视图的定义及使用
(1)格式:create view <视图名> [(列名[,...n])]
as
select 语句
其中, 在定义视图时注意以下几点:
select语句中通常不包含order by 和 distinct 子句。
在定义视图时要么指定视图的全部列名,要么全部省略不写,不能只写视图的部分列 名。
(2)视图的修改与删除
修改格式: alter view <视图名> [(列名[,...n])]
as
select 语句
删除格式:drop view <视图名>
六、数据更改功能
1.数据插入
(1)单行插入:insert [into ] <表名> [(列名表)] values (值列表)
(2)多行插入:insert [into ] <表名> [(列名表)] select 语句
2.数据更新
(1)格式:update <表名> set <列名> ={ 表达式|default|null}[,...n]
[from <条件表名> [,...n]]
[where <更新条件>]
其中:<表名> :指定需要更新数据的表的名称。
set <列名> :指定要更改的列,表达式指定修改后的新值。
表达式:返回单个值的常量值或表达式或嵌套的select语句。
from <条件表名>:指定用于为更新操作提供条件的表源。
(2)更新语句可分为:无条件更新和有条件更新。
3.数据删除
(1)格式:delete [from ] <表名>
[from <条件表达式>[,...n]]
[where <删除条件>]
<表名>:说明了要删除哪个表中的数据。
from <条件表达式>:指定用于为更新操作提供条件的表源。
where子句:说明值删除表中满足where子句条件的记录。如果省略where子句,则表示要无条 件删除表中的全部记录。
(2)删除语句可分为:无条件删除和有条件删除。