SQL 语言
SQL语言的特点
- 一体化。SQL语言风格统一,可以完成数据库活动中的全部工作,包括创建数据库、定义模式、更改和查询数据以及安全控制和维护数据库等。
- 高度非过程化。在使用SQL语句访问数据库时,用户没有必要告诉计算机如何一步步完成任务,只需要用SQL语言描述要做什么就行了,数据库管理系统会自动完成全部工作。
- 面向集合的操作方式。SQL语言采用集合操作方式,不仅查询结果是记录的集合,而且插入、删除和更新操作也是记录的集合。
- 提供多种方式使用。SQL既是自含式语言,又是嵌入式语言。自含式语言可以独立地联机交互,即用户可以直接以命令的方式交互使用。嵌入式语言是指SQL可以嵌入到向Java、C#等高级程序设计语言中使用。
- 语言简洁。SQL语法简单,易学易用。
SQL语言的功能
SQL语言按其功能可分为4大部分:数据定义、数据查询、数据操作、数据控制。相关谓词为:
SQL功能 | 谓词 |
---|
数据定义(DDL) | CREATE、DROP、ALTER |
数据查询(DQL) | SELECT |
数据操纵(DML) | INSERT、UPDATE、DELETE |
数据控制(DCL) | GRANT、REVOKE、DENY |
- 数据定义功能用于定义、删除和修改数据库中的对象,数据库、关系表、视图、索引等都是数据库对象。
- 数据查询功能用于实现查询数据的功能,数据查询是数据库中使用最多的操作。
- 数据操作功能用于添加、删除和修改数据库。
- 数据控制功能用于控制用户对数据的操作权限。
SQL支持的数据类型
主要是 Microsoft SQL Server 中的类型
数值型
精确数字
数据类型 | 描述 | 存储 |
---|
tinyint | 允许从0到255的所有数字 | 1字节 |
smallint | 允许从-32 768到32 767的所有数字 | 2字节 |
int | 允许从-2 147 483 648 到 2 147 483 647 的所有数字 | 4字节 |
bigint | 允许从 -9 233 372 036 854 775 808 到 9 233 372 036 854 775 807 的所以数字 | 8字节 |
decimal(p,s) 或 numeric(p,s) | 固定精度和比例的数字,允许从 -10^38+1 到 10^38-1 之间的数字,p表示可以存储的最大位数(小数点左侧和右侧),p必须是 1~38 之间的值。默认是18;s表示小数点右侧存储的最大位数,s必须是0到p之间的值,默认是0 | 5-17字节 |
smallmoney | 介于 -214 748. 364 8 和 214 748. 364 7 之间的货币数据 | 4字节 |
money | 介于 -922 337 203 685 477. 850 8和 922 337 206 685 477. 580之间的货币数据 | 8字节 |
近似数据
数据类型 | 描述 | 存储 |
---|
float(n) | 从 -1.79E+308 到 1.79E+308 的浮动精度数字数据;参数n表示该字段保留4字节还是8字节,float(24)保存4字节,float(53)保存8字节,n的默认值为53 | 4或8字节 |
real | 从 -3.40E+38 到 3.40E+38 的浮动精度数字数据 | 4字节 |
日期类型
数据类型 | 描述 | 存储 |
---|
datetime | 从1753年1月1日到9999年12月31日,精度为3.33ms | 8字节 |
datetime2 | 从1753年1月1日到9999年12月31日,精度为100ns | 6~8字节 |
smalldatetime | 从1900年1月1日到2079年6月6日,精度为1min | 4字节 |
date | 仅存储日期,从0001年1月1日到9999年12月31日 | 3字节 |
datetimeoffset | 与datetime2相同,外加时区偏移 | 8~10字节 |
timestamp | 存储唯一的数字,每当创建或修改某行时,该数字会更新。timestamp基于内部时钟,不对应真实时间,每个表只能有一个timestamp变量 | |
字符串型
普通字符编码串
数据类型 | 描述 | 存储 |
---|
char(n) | 固定长度的字符串,最多8000个字符 | n字节 |
varchar(n) | 可变长度的字符串,最多8000个字符 | 由实际长度决定 |
varchar(max) | 可变长度的字符串,最多1073741824个字符 | 由实际长度决定 |
text | 可变长度的字符串,最多2GB字符数据 | 由实际长度决定 |
统一字符编码串
数据类型 | 描述 | 存储 |
---|
nchar(n) | 固定长度的Unicode数据,最多4000个字符 | n字节 |
nvarchar(n) | 可变长度的Unicode数据,最多4000个字符 | 由实际长度决定 |
nvarchar(max) | 可便长度的Unicode数据,最多536870912个字符 | 由实际长度决定 |
ntext | 可变长度的Unicode数据,最多2GB字符数据 | 由实际长度决定 |
二进制串
数据类型 | 描述 | 存储 |
---|
bit | 允许0,1或NULL | |
binary(n) | 固定长度的二进制数据,最多8000B | n B |
varbinary(n) | 可变长度的二进制数据,最多8000B | 由实际长度决定 |
varbinary(max) | 可变长度的二进制数据,最多2GB | 由实际长度决定 |
image | 可变长度的二进制数据,最多2GB | 由实际长度决定 |
其他类型
数据类型 | 描述 |
---|
sql_variant | 存储最多8000字节不同数据类型的数据,除了text、ntext、timestamp |
uniqueidentifier | 存储全局标识符(GUID) |
xml | 存储XML格式化数据,最多2GB |
cursor | 存储对用于数据库操作的指针的引用 |
table | 存储结果集,供稍后处理 |