服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Sql Server - Transact_SQL 小手册

Transact_SQL 小手册

2019-10-24 17:17mssql教程网 Sql Server

Transact_SQL 小手册,学习mssql数据库的朋友可以参考下.

--语句功能

--数据操作

SELECT--从数据库表中检索数据行和列

INSERT--向数据库表添加新数据行

DELETE--从数据库表中删除数据行

UPDATE--更新数据库表中的数据

--数据定义

CREATETABLE--创建一个数据库表

DROPTABLE--从数据库中删除表

ALTERTABLE--修改数据库表结构

CREATEVIEW--创建一个视图

DROPVIEW--从数据库中删除视图

CREATEINDEX--为数据库表创建一个索引

DROPINDEX--从数据库中删除索引

CREATEPROCEDURE--创建一个存储过程

DROPPROCEDURE--从数据库中删除存储过程

CREATETRIGGER--创建一个触发器

DROPTRIGGER--从数据库中删除触发器

CREATESCHEMA--向数据库添加一个新模式

DROPSCHEMA--从数据库中删除一个模式

CREATEDOMAIN--创建一个数据值域

ALTERDOMAIN--改变域定义

DROPDOMAIN--从数据库中删除一个域

--数据控制

GRANT--授予用户访问权限

DENY--拒绝用户访问

REVOKE--解除用户访问权限

--事务控制

COMMIT--结束当前事务

ROLLBACK--中止当前事务

SETTRANSACTION--定义当前事务数据访问特征

--程序化SQL

DECLARE--为查询设定游标

EXPLAN--为查询描述数据访问计划

OPEN--检索查询结果打开一个游标

FETCH--检索一行查询结果

CLOSE--关闭游标

PREPARE--为动态执行准备SQL语句

EXECUTE--动态地执行SQL语句

DESCRIBE--描述准备好的查询

---局部变量

declare@idchar(10)

--set@id='10010001'

select@id='10010001'

---全局变量

---必须以@@开头

--IFELSE

declare@xint@yint@zint

select@x=1@y=2@z=3

if@x〉@y

print'x〉y'--打印字符串'x〉y'

elseif@y〉@z

print'y〉z'

elseprint'z〉y'

--CASE

usepangu

updateemployee

sete_wage=

case

whenjob_level='1'thene_wage*1.08

whenjob_level='2'thene_wage*1.07

whenjob_level='3'thene_wage*1.06

elsee_wage*1.05

end

--WHILECONTINUEBREAK

declare@xint@yint@cint

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

--WAITFOR

--例等待1小时2分零3秒后才执行SELECT语句

waitfordelay'01:02:03'

select*fromemployee

--例等到晚上11点零8分后才执行SELECT语句

waitfortime'23:08:00'

select*fromemployee

***SELECT***

select*(列名)fromtable_name(表名)wherecolumn_nameoperatorvalue

ex:(宿主)

select*fromstock_informationwherestockid=str(nid)

stockname='str_name'

stocknamelike'%findthis%'

stocknamelike'[a-zA-Z]%'---------([]指定值的范围)

stocknamelike'[^F-M]%'---------(^排除指定范围)

---------只能在使用like关键字的where子句中使用通配符)

orstockpath='stock_path'

orstocknumber〈1000

andstockindex=24

notstocksex='man'

stocknumberbetween20and100

stocknumberin(10,20,30)

orderbystockiddesc(asc)---------排序,desc-降序,asc-升序

orderby1,2---------by列号

stockname=(selectstocknamefromstock_informationwherestockid=4)

---------子查询

---------除非能确保内层select只返回一个行的值,

---------否则应在外层where子句中用一个in限定符

selectdistinctcolumn_nameformtable_name---------distinct指定检索独有的列值,不重复

selectstocknumber,“stocknumber+10“=stocknumber+10fromtable_name

selectstockname,“stocknumber“=count(*)fromtable_namegroupbystockname

---------groupby将表按行分组,指定列中有相同的值

havingcount(*)=2---------having选定指定的组

select*

fromtable1,table2

wheretable1.id*=table2.id--------左外部连接,table1中有的而table2中没有得以null表示

table1.id=*table2.id--------右外部连接

selectstocknamefromtable1

union[all]-----union合并查询结果集,all-保留重复行

selectstocknamefromtable2

***insert***

insertintotable_name(Stock_name,Stock_number)value(“xxx“,“xxxx“)

value(selectStockname,StocknumberfromStock_table2)---value为select语句

***update***

updatetable_namesetStockname=“xxx“[whereStockid=3]

Stockname=default

Stockname=null

Stocknumber=Stockname+4

***delete***

deletefromtable_namewhereStockid=3

truncatetable_name-----------删除表中所有行,仍保持表的完整性

droptabletable_name---------------完全删除表

***altertable***---修改数据库表结构

altertabledatabase.owner.table_nameaddcolumn_namechar(2)null.....

sp_helptable_name----显示表已有特征

createtabletable_name(namechar(20),agesmallint,lnamevarchar(30))

insertintotable_nameselect.........-----实现删除列的方法(创建新表)

altertabletable_namedropconstraintStockname_default----删除Stockname的default约束

***function(/*常用函数*/)***

----统计函数----

AVG--求平均值

COUNT--统计数目

MAX--求最大值

MIN--求最小值

SUM--求和

--AVG

usepangu

selectavg(e_wage)asdept_avgWage

fromemployee

groupbydept_id

--MAX

--求工资最高的员工姓名

usepangu

selecte_name

fromemployee

wheree_wage=

(selectmax(e_wage)

fromemployee)

--STDEV()

--STDEV()函数返回表达式中所有数据的标准差

--STDEVP()

--STDEVP()函数返回总体标准差

--VAR()

--VAR()函数返回表达式中所有值的统计变异数

--VARP()

--VARP()函数返回总体变异数

----算术函数----

/***三角函数***/

SIN(float_expression)--返回以弧度表示的角的正弦

COS(float_expression)--返回以弧度表示的角的余弦

TAN(float_expression)--返回以弧度表示的角的正切

COT(float_expression)--返回以弧度表示的角的余切

/***反三角函数***/

ASIN(float_expression)--返回正弦是FLOAT值的以弧度表示的角

ACOS(float_expression)--返回余弦是FLOAT值的以弧度表示的角

ATAN(float_expression)--返回正切是FLOAT值的以弧度表示的角

ATAN2(float_expression1,float_expression2)

--返回正切是float_expression1/float_expres-sion2的以弧度表示的角

DEGREES(numeric_expression)

--把弧度转换为角度返回与表达式相同的数据类型可为

--INTEGER/MONEY/REAL/FLOAT类型

RADIANS(numeric_expression)--把角度转换为弧度返回与表达式相同的数据类型可为

--INTEGER/MONEY/REAL/FLOAT类型

EXP(float_expression)--返回表达式的指数值

LOG(float_expression)--返回表达式的自然对数值

LOG10(float_expression)--返回表达式的以10为底的对数值

SQRT(float_expression)--返回表达式的平方根

/***取近似值函数***/

CEILING(numeric_expression)--返回〉=表达式的最小整数返回的数据类型与表达式相同可为

--INTEGER/MONEY/REAL/FLOAT类型

FLOOR(numeric_expression)--返回〈=表达式的最小整数返回的数据类型与表达式相同可为

--INTEGER/MONEY/REAL/FLOAT类型

ROUND(numeric_expression)--返回以integer_expression为精度的四舍五入值返回的数据

--类型与表达式相同可为INTEGER/MONEY/REAL/FLOAT类型

ABS(numeric_expression)--返回表达式的绝对值返回的数据类型与表达式相同可为

--INTEGER/MONEY/REAL/FLOAT类型

SIGN(numeric_expression)--测试参数的正负号返回0零值1正数或-1负数返回的数据类型

--与表达式相同可为INTEGER/MONEY/REAL/FLOAT类型

PI()--返回值为π即3.1415926535897936

RAND([integer_expression])--用任选的[integer_expression]做种子值得出0-1间的随机浮点数

----字符串函数----

ASCII()--函数返回字符表达式最左端字符的ASCII码值

CHAR()--函数用于将ASCII码转换为字符

--如果没有输入0~255之间的ASCII码值CHAR函数会返回一个NULL值

LOWER()--函数把字符串全部转换为小写

UPPER()--函数把字符串全部转换为大写

STR()--函数把数值型数据转换为字符型数据

LTRIM()--函数把字符串头部的空格去掉

RTRIM()--函数把字符串尾部的空格去掉

LEFT(),RIGHT(),SUBSTRING()--函数返回部分字符串

CHARINDEX(),PATINDEX()--函数返回字符串中某个指定的子串出现的开始位置

SOUNDEX()--函数返回一个四位字符码

--SOUNDEX函数可用来查找声音相似的字符串但SOUNDEX函数对数字和汉字均只返回0值

DIFFERENCE()--函数返回由SOUNDEX函数返回的两个字符表达式的值的差异

--0两个SOUNDEX函数返回值的第一个字符不同

--1两个SOUNDEX函数返回值的第一个字符相同

--2两个SOUNDEX函数返回值的第一二个字符相同

--3两个SOUNDEX函数返回值的第一二三个字符相同

--4两个SOUNDEX函数返回值完全相同

QUOTENAME()--函数返回被特定字符括起来的字符串

/*selectquotename('abc','{')quotename('abc')

运行结果如下

----------------------------------{

{abc}[abc]*/

REPLICATE()--函数返回一个重复character_expression指定次数的字符串

/*selectreplicate('abc',3)replicate('abc',-2)

运行结果如下

----------------------

abcabcabcNULL*/

REVERSE()--函数将指定的字符串的字符排列顺序颠倒

REPLACE()--函数返回被替换了指定子串的字符串

/*selectreplace('abc123g','123','def')

运行结果如下

----------------------

abcdefg*/

SPACE()--函数返回一个有指定长度的空白字符串

STUFF()--函数用另一子串替换字符串指定位置长度的子串

----数据类型转换函数----

CAST()函数语法如下

CAST()(〈expression〉AS〈data_type〉[length])

CONVERT()函数语法如下

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

selectcast(100+99aschar)convert(varchar(12),getdate())

运行结果如下

------------------------------------------

199Jan152000

----日期函数----

DAY()--函数返回date_expression中的日期值

MONTH()--函数返回date_expression中的月份值

YEAR()--函数返回date_expression中的年份值

DATEADD(〈datepart〉,〈number〉,〈date〉)

--函数返回指定日期date加上指定的额外日期间隔number产生的新日期

DATEDIFF(〈datepart〉,〈number〉,〈date〉)

--函数返回两个指定日期在datepart方面的不同之处

DATENAME(〈datepart〉,〈date〉)--函数以字符串的形式返回日期的指定部分

DATEPART(〈datepart〉,〈date〉)--函数以整数值的形式返回日期的指定部分

GETDATE()--函数以DATETIME的缺省格式返回系统当前的日期和时间

----系统函数----

APP_NAME()--函数返回当前执行的应用程序的名称

COALESCE()--函数返回众多表达式中第一个非NULL表达式的值

COL_LENGTH(〈'table_name'〉,〈'column_name'〉)--函数返回表中指定字段的长度值

COL_NAME(〈table_id〉,〈column_id〉)--函数返回表中指定字段的名称即列名

DATALENGTH()--函数返回数据表达式的数据的实际长度

DB_ID(['database_name'])--函数返回数据库的编号

DB_NAME(database_id)--函数返回数据库的名称

HOST_ID()--函数返回服务器端计算机的名称

HOST_NAME()--函数返回服务器端计算机的名称

IDENTITY(〈data_type〉[,seedincrement])[AScolumn_name])

--IDENTITY()函数只在SELECTINTO语句中使用用于插入一个identitycolumn列到新表中

/*selectidentity(int,1,1)ascolumn_name

intonewtable

fromoldtable*/

ISDATE()--函数判断所给定的表达式是否为合理日期

ISNULL(〈check_expression〉,〈replacement_value〉)--函数将表达式中的NULL值用指定值替换

ISNUMERIC()--函数判断所给定的表达式是否为合理的数值

NEWID()--函数返回一个UNIQUEIDENTIFIER类型的数值

NULLIF(〈expression1〉,〈expression2〉)

--NULLIF函数在expression1与expression2相等时返回NULL值若不相等时则返回expression1的值

延伸 · 阅读

精彩推荐