Geiling();--向上取整
Floor();--向下取整
Round(,)--四舍五入(数,小数点后位数)
abs();--绝对值
sign();--测试正负与0,正返回1.0,负返回-1.0,0返回0
PI();--π:3.1415926······
Rand();--随机数
Lower();--全部转换成小写
Upper();--全部转换成大写
Str();--把数值类型转换为字符型
Ltrim();--把字符串头部的空格去掉
Rtrim();--把字符串尾部的空格去掉
left(,),right(,),substring(,);--返回字符串指定位置,指定位数的字符串
charindex(1,2);--返回1字符串在2字符串中第一次出现的位置
patindex('%1%',2);--返回1字符串在2字符串中第一次出现的位置
quotename();--返回被特定字符括起来的字符串
replicate(1,2);--返回一个重复1字符串2次的新字符串
replace(1,2,3);--返回1字符串中的2子字符串被3子字符串替代
getdate();--获取系统时间
convert(char(10),GETDATE(),20);--获取当前时间,显示年月日
select convert(char(8),GETDATE(),108);--获取当前时间,显示时分秒
执行顺序:
from -> where -> group by -> having -> select -> order by
但当有top时,top选取的是经过order by排序好的
union(联合结果集):合并两个或多个select语句的结果集
DDL(Data Define Language):数据定义语言:
create();创建
drop();删除
alter();修改
DML(Data Management Language):数据操作语言:
insert();增
update();更新
delete();删除
select();查
DCL(Data Control Language):数据控制语言:
Grant insert,select,update On 数据库 To 用户;--用户权限的搜于或修改
revoke all On 数据库 To 用户;--用户权限的撤销
主键约束(primary key constraint):要求主键列数据唯一,并且不允许为空
唯一约束(unique constraint):要求该列唯一,允许为空,但只能出现一个空值
检查约束(check constraint):某列取值范围、格式限制等,如有关年龄的约束
默认约束(default constraint):某列的默认值
外键约束(foregin key constraint):用于两表间建立关系,需要制定引用主表的那列,哪个表是外键表,就修改哪个表
district 去重
局部变量:用户自定义的变量,变量名以@开头
set @变量名=数值
以查询结果为值
全部变量:系统提供,以@@开头,只读的,也就是由系统赋值,我们取值
select @@VERSION;--返回 Microsoft? SQL Server? 当前安装的日期、版本和处理器类型
select @@identity;--得到上一次插入记录时自动产生的ID
select @@error;--当没有发生错误时返回0,如果发生错误时@@error<>0,并返回错误号,每个SQL语句执行完,@@error值都会变
select @@language;--返回当前所用语言的名称
select @@rowcount;--返回受上一语句影响的行数
select @@servername;--返回运行 SQL Server 的本地服务器的名称
select @@trancount;--返回当前连接的活动事务数
select @@max_connections;--返回 SQL Server 实例允许同时进行的最大用户连接数。返回的数值不一定是当前配置的数值
流程控制语句:把平常的{}换成begin,end
/*视图创建*/
create view stu1
as select stu_id as id, stu_name as name, stu_gender as sex, stu_age as age
from student
go
select * from stu1
事务:同时执行多个insert,update,delete等sql语句时使用
特点:原子性(Atomicity):事务是一个完整的操作。事务的各步操作是不可分的(原子的),要么都执行,要么都不执行
一致性(Consistency):当事务完成时,数据必须处于一致状态
隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事物
永久性(Duraility):事务完成后,它对数据库的修改被永久保存,事务日志能够保持事务的永久性
开始事务:begin transation
提交事务:commit transation
回滚事务:rollback transation
一旦事务提交或者回滚,则事务结束
显示事务:用begin transation明确指定事务的开始,这是最常用的事务类型
隐性事务:通过设置set implicit_stransation语句,讲隐性事务模式设置为打开,下一个语句自动启动一个新事务。当该事务完成时,再下一个T-SQL语句又将启动一个新事务
自动提交事务:这是SQL Server的默认模式,它将每条单独的T-SQL语句视为一个事务,如果成功执行,则自动提交;如果错误,则自动回滚
索引:SQL Server编排数据的内部方法,它为SQL Server提供一种方法来编排查询的数据
索引页:数据库存放的数据页,索引页类似于汉语字典中按平阴或笔画排序的目录页
索引的作用:通过使用索引,可以大大提高数据库的检索速度,改善数据库性能
类型:
唯一索引(Unique):不允许两行具有相同的索引值
主键索引:为表定义一个主键将自动创建主键索引,主键索引是唯一的特殊类型,主键索引要求主键中的每个值是唯一的,并且不能为空
聚焦索引(clustered):表中各行的物理顺序与键值的逻辑(索引)顺序相同,每个表只能有一个
非聚焦索引(non-clustered):非聚焦索引指定表的逻辑顺序,数据存储在一个位置,索引存储在另一个位置,索引中包含指向数据存储位置的指针,可以有多个,小于249个
优点:加快访问速度
加强行的唯一性
缺点:带索引的表在数据库中需要更多地存储空间
操纵数据的命令需要更长的处理时间,因为它们需要对索引进行更新
存储过程(Procedure)可以包含数据操纵语句、变量、逻辑、控制语句等
优点:执行速度更快
允许模块化程序设计
提高系统安全性
减少网络流量
触发器(Trigger)是在对表进行插入、更新或删除操作时自动执行的存储过程
在触发器触发时:系统自动在内存中创建两张临时表,deleted表或insert表
这两张表为只读,不允许修改,触发器执行完成后,自动删除
inserted表:
临时保存了插入或更新后的记录行,可以从inserted表中检查插入的数据是否满足业务需求,如果不满足,则向用户报告错误,并回滚插入操作
deleted表:
临时保存了删除或更新前的记录行,可以从表中检查被删除的数据是否满足业务需求,如果不满足,则向用户报告错误,并回滚插入操作