月亮代表我的心

个人博客,跟月亮无关,跟代表无关,无关谁的心

Sql Server 复习笔记(1)

设计数据库

收集信息
标识对象
设计数据模型
标识每个对象的信息类型
标识对象之间的关系

规范化

规范化:从关系型数据库中除去冗余数据的过程。

第一范式:表中没有重复组(即行与列的交叉点上只有一个值,而不是一组值),定义了关键字、所有非关键属性都依赖于关键字。

第二范式:没有任何属性只依赖于关键字的一部分,即不包含部分依赖性。

第三范式:不包含传递依赖性,没有一个非关键属性依赖于另一个非关键属性。

T-SQL批处理定义

将多条 Transact-SQL 语句作为一个批处理发给 SQL Server 去执行。
当前批处理语句是自上一 GO 命令后至下一GO命令中的所有语句。
注意:GO不是T-SQL语句。
注释:单行注释:–,多行注释:/* …… */

T-SQL控制语句

控制关键字——目的
BEGIN…END——创建语句块。
GOTO label——-将流程转到指定标签。
IF…ELSE———-根据指定条件执行不同的几组语句。
WHILE————-当指定条件为 TRUE 时重复执行语句。
BREAK————-中止执行流并跳出当前的 WHILE 循环。
CONTINUE——–重新执行 WHILE 循环。
WAITFOR———设置语句执行延迟的时间。

—————————

语法
WAITFOR { DELAY ‘time’ | TIME ‘time’ }

参数
DELAY

指示 Microsoft® SQL Server™ 一直等到指定的时间过去,最长可达 24 小时。

‘time’

要等待的时间。可以按 datetime 数据可接受的格式指定 time,也可以用局部变量指定此参数。不能指定日期。因此,在 datetime 值中不允许有日期部分。

TIME

指示 SQL Server 等待到指定时间。

—————————

RETURN———–无条件退出,可以设置返回值。

CASE————–计算条件列表并返回多个可能结果表达式之一。

CASE 具有两种格式:

简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果。

CASE 搜索函数计算一组布尔表达式以确定结果。
两种格式都支持可选的 ELSE 参数。

—————————

语法
简单 CASE 函数:

CASE input_expression
WHEN when_expression THEN result_expression
[ …n ]
[
ELSE else_result_expression
END

CASE 搜索函数:

CASE
WHEN Boolean_expression THEN result_expression
[ …n ]
[
ELSE else_result_expression
END

—————————

变量

全局变量(系统)
@@ 标记作为前缀
select @@FETCH_STATUS

局部变量
@ 标记作为前缀
声明:DECLARE @变量 数据类型
赋值:SET @变量 = 值 select @变量1= 值,@变量2= 值
读取:select @变量

函数

转换函数
cast 和 CONVERT
将某种数据类型的表达式显式转换为另一种数据类型。cast 和 CONVERT 提供相似的功能。

—————————

语法
使用 cast:

cast ( expression AS data_type )

使用 CONVERT:

CONVERT (data_type[(length)], expression [, style])

—————————

示例:每个示例都将检索书名(这些图书的截止当前销售额的第一位数字为 3),并将这些图书的 ytd_sales 转换为 char(20)。

— Use cast.
USE pubs
GO
select SUBSTRING(title, 1, 30) AS Title, ytd_sales
FROM titles
where cast(ytd_sales AS char(20)) like ‘3%’
GO

— Use CONVERT.
USE pubs
GO
select SUBSTRING(title, 1, 30) AS Title, ytd_sales
FROM titles
where CONVERT(char(20), ytd_sales) like ‘3%’
GO

日期函数
GETDATE()
按 datetime 值的 Microsoft® SQL Server™ 标准内部格式返回当前系统日期和时间。

DATEADD (datepart , number, date)
在向指定日期加上一段时间的基础上,返回新的 datetime 值。

DATEDIFF (datepart , startdate , enddate )
返回跨两个指定日期的日期和时间边界数。 返回类型integer

DATENAME ( datepart , date )
返回代表指定日期的指定日期部分的字符串。

DATEPART ( datepart , date )
返回代表指定日期的指定日期部分的整数。

日期部分——–缩写
year—————yy, yyyy
quarter————qq, q
Month————-mm, m
dayofyear——–dy, y
Day—————-dd, d
Week————–wk, ww
Hour—————hh
minute————-mi, n
second————ss, s
millisecond——–ms

聚合函数
SUM(),AVG() , COUNT(),MAX(),MIN()

数学函数
ABS(numeric_expr) 求绝对值
CEILING ( numeric_expression ) 返回大于或等于所给数字表达式的最小整数。
FLOOR ( numeric_expression )返回小于或等于所给数字表达式的最大整数。
PI() 3.1415926………
POWER(numeric_expr,power) 返回power次方
RAND([int_expr]) 随机数产生器
SQRT(float_expr) 平方根

字符串函数
SUBSTRING ( expression , start , length ) 返回字符、binary、text 或 image 表达式的一部分。
LEFT ( character_expression , integer_expression )
RIGHT ( character_expression , integer_expression )
返回字符串中从右边开始指定个数的 integer_expression 字符。
STUFF ( character_expression , start , length , character_expression )
删除指定长度的字符并在指定的起始点插入另一组字符。

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注