SQL语言的特点
- 一体化
- 高度非过程化
- 简洁
- 使用方式多样
SQL语言功能概述
- 数据查询: select
- 数据定义: create、drop、alter
- 数据操纵: insert、update、delete
- 数据控制: grant、revoke、deny
系统提供数据类型
数据类型 | 存储空间 | 说明 |
---|---|---|
bigint | 8字节 | |
int | 4字节 | |
smallint | 2字节 | |
tinyint | 1字节 | 0-255的整数 |
bit | 1字节 | |
numeric(p,s)----decimal(p,s) | 最多17字节 | 带固定精度和小数位数的数字类型 |
float[(n)] | 4或8字节 | n在1-24之间使用24,占4字节、n在25-53之间使用53.占8字节 |
real | 4字节 | 浮点型数 |
char(n) | n个字节 | 固定长度,长度范围1-8000 |
varchar | 字符数+2字节 | 可变长度,长度范围1-8000 |
text | 每个字符1个字节 | |
nchar(n) | 2n字节 | 固定长度的统一编码字符串类型,n表示字符串的最大长度,取值范围为1~4000 |
nvarchar(n) | 2*字符数+2字节额外开销 | 可变长度的统一编码字符串类型,n表示字符串的最大长度,取值范围为1-4000 |
ntext | 每个字符2个字节 | |
binary(n) | n字节 | 固定长度的二进制数据,n的取值范围为1~8000 |
varbinary (n) | 字符数+2字节 | 可变长度的二进制数据,n的取值范围为1~8000 |
image | 每个字符1个字节 | 可变长度的二进制数据,最多为231-1 (2,147,483,647)个十六进制数字 |
date | 3字节 | 默认格式为:YYYY-MM-DD |
time[(n)] | 3-5字节 | 定义一天中的某个时间,该时间基于24小时制 |
datetime | 8字节 | 定义一个采用24小时制并带有秒的小数部分的日期和时间,默认格式为:YYYY-MM-DD hh:mm:ss.nnn |
smalldatetime | 4字节 | 定义一个采用24小时制并且秒始终为零(:00)的日期和时间,范围为到。默认格式为:YYYY-MM-DD hh:mm:00。精确到1分钟 |
datetime2 | 6-8字节 | 可将该类型看成是datetime类型的扩展,其数据范围更大,默认的小数精度更高,并具有可选的用户定义的精度 |
datetimeoffset | 8-10字节 | 定义一个与采用 24 小时制并与可识别时区的一日内时间相组合的日期,该数据类型使用户存储的日期和时间(24小时制)是时区一致的。语法格式为:datetimeoffset [(n)],n为秒的精度,最大为7。默认格式为:YYYY-MM-DD hh:mm:ss[.nnnnnnn] [{+ |
money | 8字节 | |
smallmoney | 4字节 |
注意点:
- 如果一个表中有8个或8个以下的bit列,则这些列用1字节存储
- 为了节省数据库空间,尽可能使用包含所有可能值的最小数据类型,例如,年龄用tinyint就够了
- 如果列数据项的大小一致,则使用char,如果列数据项的大小差异很大,则使用varchar
用户定义数据类型
create type 数据类型架构名 from char(8) not null
--定义一个cahr(8)数据类型且不允许空值
T-SQL基础知识
语句批:
- 一组SQL语句集合
- 作为一个执行单元
- 结束标记:GO
脚本:
- 存储在文件中的SQL语句集合
注释:
- 单行注释符:–
- 多行注释符:/* */
变量
变量是被赋予一定值的语言元素。
局部变量: 必须先声明才能使用。
@变量名:用户使用
全局变量:
@@变量名:系统提供且预先声明的变量,系统用于记录信息,用户一般只能查看不能修改
变量赋值:
SET { @local_variable = expression }
| { @local_variable
{ += | -= | *= | /= | %= | &=
| ^= | |= } expression }
SELECT @local_variable = expression
例子:
--计算两个变量的和值,然后显示其结果
DECLARE @x int = 10
DECLARE @y int = 20
DECLARE @z int
SET @z = @x + @y
Print @z
流程控制语句