Download presentation
Presentation is loading. Please wait.
1
SQL Server数据库设计基础 ——基于SQL Server 2000 陈志煌 集美大学教务处
2
第三课 T-SQL 语言概述 一、T-SQL语言基础 二、数据类型 三、变量 四、运算符 五、函数 六、流程控制语句
3
二、数据类型 整型 :bigint、int、smallint、tinyint 浮点型 :float、real、decimal、numeric
字符型 :char、varchar、text、nchar、nvarchar、ntext 日期时间型 :datetime、smalldatetime 逻辑型 :bit 二进制类型 :binary、varbinary、image
4
二、数据类型 其他类型 用户自定义类型 cursor-游标类型 sql-variant-可变类型 table-表类型
uniqueidentifer-全局唯一标识符 timestamp-时间戳类型 用户自定义类型 sp_addtype 类型名称,’系统类型’,’处理空值方式’,’所有者’
5
整型 tinyint smallint int 存储大小:1字节 范围:0到255 存储大小:2字节
范围:-2^15 (-32,768)到2^15-1(32,767 ) int 存储大小:4字节 范围:-2^31 (-2,147,483,648)到2^31-1(2,147,483,647) SQL Server 中主要的整数数据类型
6
整型 bigint 存储大小:8字节 范围:-2^63 到2^63-1
只有当参数表达式是 bigint 数据类型时,函数才返回 bigint SQL Server 不会自动将其它整数数据类型(tinyint、smallint 和 int)提升为 bigint SELECT SELECT CAST( AS BIGINT)+1
7
浮点型 float 和 real 用于表示浮点数据的科学记数法 表示的数据为近似值 在其数据类型范围内,并非所有的数据都能精确地表示
8
float(n) real 范围:- 1.79E + 308 到 1.79E + 308 n为从 1 到 53 之间的值
存储大小为 4 字节
9
decimal 和 numeric decimal (p,s) numeric (p,s) - 10^38 +1 到 10^38 - 1
s-小数位数,值需在 0 到 p 之间 存储大小取决于p的值 在 1- 9 之间,需 5 字节 在 10-19 之间,需 9 字节 在 20-28 之间,需 13 字节 在 29-38 之间,需 17 字节
10
字符型 char 、 varchar 和 text char(n) n介于1到8000之间 存储大小为n字节,固定长度 varchar(n)
存储大小为实际输入的数据长度 text 最多可存储2^31-1个字符 存储大小为字符个数
11
char 、 varchar 和 text 用于存储非 Unicode 的字符数据 char与varchar
则默认长度为 1 如果没有使用 CAST 函数指定 n, 则默认长度为 30
12
字符型 nchar 、 nvarchar 和 ntext nchar(n) n介于1到4000之间 存储大小为n的两倍字节,固定长度
存储大小为实际输入数据长度的两倍 ntext 最多可存储2^30-1个字符 存储大小为字符个数的两倍
13
nchar 、 nvarchar 和 ntext
用于存储 Unicode 的字符数据 nchar与nvarchar 在数据定义或变量声明语句中,没有指定 n, 则默认长度为 1 如果没有使用 CAST 函数指定 n, 则默认长度为 30
14
日期时间型 datetime smalldatetime 从 1753 年 1 月 1 日到 9999 年 12 月 31 日
精确度为百分之三秒 .000、001调整为.000 .002、.003、.004调整为.003 .005、.006、.007、.008调整为.007 .009调整为.010 smalldatetime 从 1900 年 1 月 1 日到 2079 年 6 月 6 日 精确到分钟 , 秒向下舍, 秒向上进
15
逻辑型 bit 整型数据 1、0 或 NULL 不能对 bit 类型的列使用索引 存储优化
依此类推
16
二进制类型 binary 和 varbinary binary(n) varbinary(n)
存储空间大小为实际输入数据长度 +4 个字节 如果在数据定义或变量声明语句中没有指定 n,默认长度为 1 如果没有用 CAST 函数指定 n,默认长度为 30
17
image 可存储 0 到 2^31-1 字节 二进制数据 存储文件用image类型
18
其他类型 cursor-游标类型 table-表类型 uniqueidentifer-全局唯一标识符 timestamp-时间戳类型
用在变量或存储过程 OUTPUT 参数 table-表类型 只能用于定义 table 类型的局部变量或用户定义函数的返回值 uniqueidentifer-全局唯一标识符 以一个 16 位的十六进制数表示全局唯一标识符 timestamp-时间戳类型 用于表示 SQL Server 在一行上的活动顺序,按二进制格式以递增的数字来表示
19
sql-variant-可变类型 可存储除text、ntext、image、timestamp 和 sql_variant 外,各种数据类型值 sql_variant 类型的列可以包含不同数据类型的行 最大长度可达 8016 字节 必须先将 sql_variant 数据类型投影为其基本数据类型值,才能使其参与加和减这类运算
20
用户自定义类型 sp_addtype 类型名称,’系统类型’,’处理空值方式’,’所有者’
21
五、函数 数学函数 日期/时间函数 聚合函数 字符串函数
22
数学函数 ABS() 返回给定数字表达式的绝对值 CEILING() 返回大于或等于所给数字表达式的最小整数
FLOOR() 返回小于或等于所给数字表达式的最大整数 RAND() 返回 0 到1 之间的随机值 ROUND() 四舍五入
23
例: USE pubs GO SELECT RAND() FROM titles
24
日期/时间函数 GETDATE() 返回当前系统日期和时间 DATEADD()
格式:DATEADD ( datepart , number, date ) 参数datepart Year (yy,yyyy)、quarter (qq,q)、Month (mm,m) Day (dd,d)、Week (wk,ww)、Hour (hh) minute (mi,n)、second (ss,s)、millisecond (ms) 参数number 若指定不是整数值,则将废弃此值的小数部分
25
例: USE pubs GO SELECT pubdate ,
DATEADD(day, 1, pubdate) AS timeframe FROM titles
26
DATEDIFF() 返回两个指定日期和时间之间的间隔
语法:DATEDIFF ( datepart , startdate , enddate ) 参数datepart 参数startdate计算的开始日期 用 smalldatetime 值时,计算秒和毫秒总是 0 参数enddate是计算的终止日期 返回整型值
27
DATENAME() 返回代表指定日期指定部分的字符串 语法:DATENAME ( datepart , date ) 参数datepart
weekday(dw)返回星期几 返回类型:nvarchar
28
DATEPART() 返回代表指定日期的指定部分的整数 语法:DATEPART ( datepart , date ) 参数datepart
默认:任何一年的 1 月 1 日定义了 week 日期部分的开始数字 weekday (dw) 日期部分返回对应于星期中的某天的数 。默认:Sunday = 1、Saturday = 7 返回类型:int
29
聚合函数 AVG() SUM() COUNT() MAX() MIN()
AVG ( [ ALL | DISTINCT ] expression ) SUM() SUM ( [ ALL | DISTINCT ] expression ) COUNT() COUNT ([ ALL | DISTINCT ] expression ] | * ) MAX() MIN()
30
聚合函数 USE pubs GO SELECT COUNT(*),COUNT (city), COUNT(DISTINCT city) FROM authors
31
聚合函数 USE pubs GO SELECT COUNT(*), AVG(price) , MAX(price), MIN(price) FROM titles WHERE advance > $1000
32
字符串函数 ASCII和CHAR CHARINDEX CHAR(n)中n应在0-255之间的整数, 否则返回值为NULL
返回字符串中指定表达式的起始位置 CHARINDEX (字符串1 ,字符串2 , 起始位置 ) 字符串1或2为NULL时,返回NULL 在字符串2中没找到字符串1,返回0
33
LEFT与RIGHT LTRIM与RTRIM LEN LOWER与OPPER STR LEFT(字符串,n) RIGHT(字符串,n)
LOWER(字符串) UPPER(字符串) STR
34
REPLACE与STUFF SPACE与REPLICATE REVERSE SUBSTRING
35
六、流程控制语句 BEGIN … END语句 格式: BEGIN <语句1> <语句2> … END
36
IF … ELSE语句 格式: IF <条件表达式> <语句1> ELSE <语句2>
37
CASE语句 格式1: CASE <测试表达式> WHEN <表达式1> THEN <结果表达式1>
… ELSE <结果表达式N> END
38
CASE语句 格式2: CASE WHEN <布尔表达式1> THEN <结果表达式1>
… ELSE <结果表达式N> END
39
WHILE语句 格式: WHILE <布尔表达式> BEGIN <语句1> [BREAK] <语句2>
[CONTINUE] <语句3> … END
40
GOTO语句 格式: lable: <语句> … GOTO lable
41
RETURN语句 无条件退出 不执行位于之后的语句
42
WAITFOR语句 格式: WAITFOR DELAY 时间 WAITFOR TIME 时间
43
PRINT语句 格式: PRINT 字符串 | 局部变量 | 函数 | 字符串表达式
Similar presentations