序:
其实接触SQL SERVER时间并不短,几年前就接触7.0版本,但一直未真正深入学习,基础知识也不够扎实,导致在做CRM项目时设计后台数据库时遇到很多问题,因此拿起资料重新系统进行学习。
视图(View)
视图看上去同表似乎一模一样具有一组命名的字段和数据项,但它其实是一个虚拟
的表,在数据库中并不实际存在。视图是由查询数据库表产生的,它限制了用户能看到和
修改的数据,由此可见视图可以用来控制用户对数据的访问,并能简化数据的显示,即
通过视图只显示那些需要的数据信息。
图表(Diagram)
在SQL Server 中图表其实就是数据库表之间的关系示意图利用它可以编辑表与表
之间的关系
触发器(Trigger)
触发器是一个用户定义的SQL 事务命令的集合,当对一个表进行插入更改删除
时这组命令就会自动执行。
存储过程(Stored Procedure)
存储过程是为完成特定的功能而汇集在一起的一组SQL 程序语句,经编译后存储在
数据库中的SQL 程序。
范 式
构造数据库必须遵循一定的规则,在关系数据库中这种规则就是范式范式。是符合
某一种级别的关系模式的集合,关系数据库中的关系必须满足一定的要求,即满足不同的
范式。目前关系数据库有六种范式:第一范式1NF、 第二范式2NF 、第三范式3NF
、第四范式4NF、 第五范式5NF 和第六范式6NF 。满足最低要求的范式是第一
范式1NF, 在第一范式的基础上进一步满足更多要求的称为第二范式2NF, 其余
范式以此类推,一般说来数据库只需满足第三范式3NF 就行。
1NF:简而言之就是无重复的列
2NF:就是非主属性非部分依赖于主关键字
3NF:就是属性不依赖于其它非主属性
NCHAR类型
NCHAR 类型采用UNICODE 标准字符集(Character Set UNICODE ),标准规定每个字符占用两个字节的存储空间,所以它比非UNICODE 标准的数据类型多占用一倍的存储空间。使用UNICODE 标准的好处是因其使用两个字节做存储单位,其一个存储单位的容纳量就大大增加了,可以将全世界的语言文字都囊括在内。在一个数据列中就可以同时出现中文、英文、法文、德文等而不会出现编码冲突。
TIMESTAMP类型
TIMESTAMP数据类型提供数据库范围内的惟一值,此类型相当于BINARY 8 或VARBINARY 8, 但当它所定义的列在更新或插入数据行时此列的值会被自动更新,一个计数值将自动地添加到此TIMESTAMP数据列中。每个数据库表中只能有一个TIMESTAMP数据列,如果建立一个名为TIMESTAMP 的列,则该列的类型将被自动设为TIMESTAMP数据类型。
局部变量
局部变量必须以@ 开头,而且必须先用DECLARE 命令说明后才可使用。其说明形式如下:
DECLARE @变量名 变量类型 [ @变量名 变量类型]
注意:如果变量为字符型,那么必须指定变量的长度,否则系统默认其长度为1
其中变量类型可以是SQL Server 2000 支持的所有数据类型,也可以是用户自定义的数据类型。在Transact-SQL 中不能像在一般的程序语言中一样使用变量=变量值来给变量赋,值必须使用SELECT 或SET 命令来设定变量的值其语法如下:
SELECT @局部变量 = 变量值
SET @局部变量= 变量值
例如声明一个长度为10 个字符的变量id 并赋值
declare @id char 10
select @id = ’10010001’
全局变量
全局变量不是由用户程序定义的,必须在服务器级定义引用全局变量时必须以@ @开头,且局部变量的名称不能与全局变量名相同。
Transact-SQL 的通配符
通配符 功 能 实 例
% 代表零个或多个字符 ‘ab%’ ’ab’后可接任意字符串
_ 代表一个字符 ‘ a_b’ ’a’与’b’之间可以有一个字符
[ ] 表示在某一范围的字符 [0-9] 0 到9 之间的字符
[^ ] 表示不在某一范围的字符 [^0~9] 不在0 到9 之间的字符
CASE语法
CASE 命令有两种语句格式
1、
CASE <运算式>
WHEN <运算式> THEN <运算式>
WHEN <运算式> THEN <运算式>
[ELSE <运算式>]
END
2、
CASE
WHEN <条件表达式> THEN <运算式>
WHEN <条件表达式> THEN <运算式>
[ELSE <运算式>]
END
CASE 命令可以嵌套到SQL 命令中
例如调整员工工资,工作级别为1 的上调8%, 工作级别为2 的上调7%,工作级别为3 的上调6%, 其它上调5%
use pangu
update employee
set e_wage =
case
when job_level = ’1’ then e_wage*1.08
when job_level = ’2’ then e_wage*1.07
when job_level = ’3’ then e_wage*1.06
else e_wage*1.05
end
WHILE 语法
WHILE <条件表达式>
BEGIN
<命令行或程序块>
[BREAK]
[CONTINUE]
[命令行或程序块]
END
WHILE 命令在设定的条件成立时会重复执行命令行或程序块,CONTINUE 命令可以
让程序跳过CONTINUE 命令之后的语句回到WHILE 循环的第一行命令,BREAK 命令
则让程序完全跳出循环结束WHILE 命令的执行,WHILE 语句也可以嵌套
例如:
declare @x int @y int @c int
select @x = 1 @y=1
while @x < 3
begin
print @x --打印变量x 的值
while @y < 3
begin
select @c =100 * @x+ @y
print @c --打印变量c 的值
select @y = @y + 1
end
select @x = @x + 1
select @y = 1
end
运行结果如下
1
101
102
2
201
202
WAITFOR语句
其语法如下
WAITFOR {DELAY <‘时间’> | TIME <‘时间’>
| ERROREXIT | PROCESSEXIT | MIRROREXIT}
WAITFOR 命令用来暂时停止程序执行,直到所设定的等待时间已过或所设定的时间已到才继续往下执行,其中时间必须为DATETIME 类型的数据如11:15:27,但不能包括日期各关键字,含义如下:
其实接触SQL SERVER时间并不短,几年前就接触7.0版本,但一直未真正深入学习,基础知识也不够扎实,导致在做CRM项目时设计后台数据库时遇到很多问题,因此拿起资料重新系统进行学习。
视图(View)
视图看上去同表似乎一模一样具有一组命名的字段和数据项,但它其实是一个虚拟
的表,在数据库中并不实际存在。视图是由查询数据库表产生的,它限制了用户能看到和
修改的数据,由此可见视图可以用来控制用户对数据的访问,并能简化数据的显示,即
通过视图只显示那些需要的数据信息。
图表(Diagram)
在SQL Server 中图表其实就是数据库表之间的关系示意图利用它可以编辑表与表
之间的关系
触发器(Trigger)
触发器是一个用户定义的SQL 事务命令的集合,当对一个表进行插入更改删除
时这组命令就会自动执行。
存储过程(Stored Procedure)
存储过程是为完成特定的功能而汇集在一起的一组SQL 程序语句,经编译后存储在
数据库中的SQL 程序。
范 式
构造数据库必须遵循一定的规则,在关系数据库中这种规则就是范式范式。是符合
某一种级别的关系模式的集合,关系数据库中的关系必须满足一定的要求,即满足不同的
范式。目前关系数据库有六种范式:第一范式1NF、 第二范式2NF 、第三范式3NF
、第四范式4NF、 第五范式5NF 和第六范式6NF 。满足最低要求的范式是第一
范式1NF, 在第一范式的基础上进一步满足更多要求的称为第二范式2NF, 其余
范式以此类推,一般说来数据库只需满足第三范式3NF 就行。
1NF:简而言之就是无重复的列
2NF:就是非主属性非部分依赖于主关键字
3NF:就是属性不依赖于其它非主属性
NCHAR类型
NCHAR 类型采用UNICODE 标准字符集(Character Set UNICODE ),标准规定每个字符占用两个字节的存储空间,所以它比非UNICODE 标准的数据类型多占用一倍的存储空间。使用UNICODE 标准的好处是因其使用两个字节做存储单位,其一个存储单位的容纳量就大大增加了,可以将全世界的语言文字都囊括在内。在一个数据列中就可以同时出现中文、英文、法文、德文等而不会出现编码冲突。
TIMESTAMP类型
TIMESTAMP数据类型提供数据库范围内的惟一值,此类型相当于BINARY 8 或VARBINARY 8, 但当它所定义的列在更新或插入数据行时此列的值会被自动更新,一个计数值将自动地添加到此TIMESTAMP数据列中。每个数据库表中只能有一个TIMESTAMP数据列,如果建立一个名为TIMESTAMP 的列,则该列的类型将被自动设为TIMESTAMP数据类型。
局部变量
局部变量必须以@ 开头,而且必须先用DECLARE 命令说明后才可使用。其说明形式如下:
DECLARE @变量名 变量类型 [ @变量名 变量类型]
注意:如果变量为字符型,那么必须指定变量的长度,否则系统默认其长度为1
其中变量类型可以是SQL Server 2000 支持的所有数据类型,也可以是用户自定义的数据类型。在Transact-SQL 中不能像在一般的程序语言中一样使用变量=变量值来给变量赋,值必须使用SELECT 或SET 命令来设定变量的值其语法如下:
SELECT @局部变量 = 变量值
SET @局部变量= 变量值
例如声明一个长度为10 个字符的变量id 并赋值
全局变量
全局变量不是由用户程序定义的,必须在服务器级定义引用全局变量时必须以@ @开头,且局部变量的名称不能与全局变量名相同。
Transact-SQL 的通配符
通配符 功 能 实 例
% 代表零个或多个字符 ‘ab%’ ’ab’后可接任意字符串
_ 代表一个字符 ‘ a_b’ ’a’与’b’之间可以有一个字符
[ ] 表示在某一范围的字符 [0-9] 0 到9 之间的字符
[^ ] 表示不在某一范围的字符 [^0~9] 不在0 到9 之间的字符
CASE语法
CASE 命令有两种语句格式
1、
CASE <运算式>
WHEN <运算式> THEN <运算式>
WHEN <运算式> THEN <运算式>
[ELSE <运算式>]
END
2、
CASE
WHEN <条件表达式> THEN <运算式>
WHEN <条件表达式> THEN <运算式>
[ELSE <运算式>]
END
CASE 命令可以嵌套到SQL 命令中
例如调整员工工资,工作级别为1 的上调8%, 工作级别为2 的上调7%,工作级别为3 的上调6%, 其它上调5%
WHILE 语法
WHILE <条件表达式>
BEGIN
<命令行或程序块>
[BREAK]
[CONTINUE]
[命令行或程序块]
END
WHILE 命令在设定的条件成立时会重复执行命令行或程序块,CONTINUE 命令可以
让程序跳过CONTINUE 命令之后的语句回到WHILE 循环的第一行命令,BREAK 命令
则让程序完全跳出循环结束WHILE 命令的执行,WHILE 语句也可以嵌套
例如:
WAITFOR语句
其语法如下
WAITFOR {DELAY <‘时间’> | TIME <‘时间’>
| ERROREXIT | PROCESSEXIT | MIRROREXIT}
WAITFOR 命令用来暂时停止程序执行,直到所设定的等待时间已过或所设定的时间已到才继续往下执行,其中时间必须为DATETIME 类型的数据如11:15:27,但不能包括日期各关键字,含义如下: