SQL实用语句大全.docx
- 文档编号:9862521
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:28
- 大小:23.39KB
SQL实用语句大全.docx
《SQL实用语句大全.docx》由会员分享,可在线阅读,更多相关《SQL实用语句大全.docx(28页珍藏版)》请在冰豆网上搜索。
SQL实用语句大全
SQL语句大全
语句
功能描述
语法
数据库操作
SELECT
检索数据行和列
SELECT列名称FROM表名称
WHERE
筛选条件
SELECT列名称FROM表名称WHERE列运算符值
GROUPBY
对数据进行分组
SELECT列1,SUM(列2)AS名称
FROM表名称
GROUPBY列1
GroupBy与聚合函数
函数
作用
sum(列名)
求和
max(列名)
最大值
min(列名)
最小值
AVG(列名)
平均值
count(列名)
统计记录数
HAVING
筛选条件组
having子句限制的是组,而不是行。
where子句中不能使用聚集函数,而having子句中可以。
COMPUTE
合计数据
(1)不能将distinct与行统计函数一起使用
(2)compute列名称by子句中列名称必须出现在选择列表中
(3)不能在含有computeby子句的语句中使用selectinto子句,因为包括compute子句的语句会产生不规则的行。
(4)如果使用了computeby子句,则必须使用orderby子句,而且computeby子句中的列必须包含在orderby子句中,并且对列的前后顺序和起始项都要一致(说白了computeby子句中的列必须是orderby子句中列表的全部,或者前边的连续几个)。
(5)如果compute省略了by,则orderby也可以省略
(6)如果computeby子句包含多列时,会将一个组(第一个列分的组)分成若干个子组(利用后面的列),并对每层子组进行统计。
(7)使用多个computeby子句时,会分别按不同的组统计出结果。
详细信息还是按照正常的第一个分组方式显示。
(8)computeby子句中可以使用多个统计函数,他们互不影响
(9)computeby子句中可以不包含by,而只用compute此时不对前面信息分组,而只对全部信息进行统计。
DISTINCT
唯一值
SELECTDISTINCT列名称FROM表名称
ORDERBY
排序
SELECT列名称FROM表名称[WHERE"条件"]ORDERBY列名称[ASC,DESC];
TOP
选择几行
SELECTTOP列名称FROM表名称
INSERT
添加新数据行
INSERTINTO表名称(列1,列2,...)VALUES(值1,值2,....)
DELETE
删除数据行
DELETEFROM表名称WHERE列名称=值
UPDATE
更新内容
UPDATE表名称SET列名称=新值WHERE列名称=某值
SELECTINTO
语句从一个表中选取数据,然后把数据插入另一个表中
SELECT列名称INTO新表名称[IN数据库名称]FROM表名称
PERCENT
百分比
SELECTTOP50PERCENT列名称FROM表名称
数据库操作
CREATE
创建
CREATEDATABASE数据库名称
约束
CREATETABLE表名称(
列名称1数据类型,
列名称2数据类型,
列名称3数据类型
)
NOTNULL
UNIQUE
PRIMARYKEY
FOREIGNKEY
CHECK
DEFAULT
NOTNULL
约束强制列不接受NULL值
列名称varchar(255)NOTNULL,
UNIQUE
约束唯一标识数据库表中的每条记录
列名称varchar(255)NOTNULLUNIQUE,
或者
列名称INTNOTNULL,
UNIQUE(列名称)
PRIMARYKEY
主键必须包含唯一的值。
主键列不能包含NULL值。
每个表都应该有一个主键,并且每个表只能有一个主键。
列名称varchar(255)NOTNULLPRIMARYKEY
或者
列名称INTNOTNULL,
PRIMARYKEY(列名称)
FOREIGNKEY
一个表中的FOREIGNKEY指向另一个表中的PRIMARYKEY
列名称varchar(255)NOTNULL
FOREIGNKEY(列名称)REFERENCES表名称2(列名称)
CHECK
约束用于限制列中的值的范围
CHECK(列名称>0)
DEFAULT
约束用于向列中插入默认值
列名称dateDEFAULTGETDATE()
列名称VRACHAR(255)DEFAULT‘1222233’
AUTOINCREMENT
自动地创建主键字段的值
列名称varchar(255)NOTNULLAUTO_INCREMENT
PRIMARYKEY(列名称)
DROP
删除
DROPDATABASE数据库名称、DROPTABLE表名称WHERE条件
ALTER
修改
ALTERTABLE表名称列名称修改类型
ADD
添加
ALTERTABLE表名称ADD列名称数据类型
DATABASE
数据库
VIEW
视图
CREATEVIEW视图名称AS
SELECT列名称FROM表名称WHERE条件
INDEX
索引
CREATEINDEX引索名称ON表名称(列名称)非唯一
CREATEUNIQUEINDEX引索名称ON表名称(列名称)唯一
PROCEDURE
存储过程
CREATEPROCEDURE存储过程名
@参数1参数类型1=缺省值[OUTPUT],
@参数2参数类型2=缺省值[OUTPUT]
AS
SQL语句(组,如果是语句组时用BEGIN...END括起来)
存储过程的执行:
EXEC存储过程名@参数1=值1,@参数2=值2
TRIGGER
触发器
CREATETRIGGER触发器名称
ON表名称
FORDELETE,INSERT,UPDATE
--
AS
BEGIN
SETNOCOUNTON
END
insteadof触发器表示并不执行其定义的操作(insert、update、delete)而仅是执行触发器本身的内容。
disable--禁用触发器
enable--启用触发器
操作
Inserted
Deleted
insert
存放增加的记录
无
delete
无
存放被删除的记录
update
存放更新后的记录
存放更新前的记录
连接表
INNERJOIN
如果表中有至少一个匹配,则返回行
SELECT列名称FROM表名称1INNERJOIN表名称2
ON表1.列=表2.列
LEFTJOIN
即使右表中没有匹配,也从左表返回所有的行
SELECT列名称FROM表名称1LEFTJOIN表名称2
ON表1.列=表2.列
RIGHTJOIN
即使左表中没有匹配,也从右表返回所有的行
SELECT列名称FROM表名称1RIGHTJOIN表名称2
ON表1.列=表2.列
FULLJOIN
只要其中一个表中存在匹配,就返回行
SELECT列名称FROM表名称1FULLJOIN表名称2
ON表1.列=表2.列
UNION
操作符用于合并两个或多个SELECT语句的结果集
SELECT列名称FROM表名称1
UNION
SELECT列名称FROM表名称2
流程控制
BEGIN……END
语句块
BEGIN语句END
EXISTS
只要返回非null结果就为真
EXISTS(语句)
IF
如果
IF(条件)BEGIN……END条件为真执行下面的语句
IF……ELSE
如果……或者
IF(条件)BEGIN……END--条件为真执行IF后面的语句
ELSEBEGIN……END--条件为假执行ELSE后面的语句
CASE……WHEN……ELSE
多分支语句
case<单值表达式>
when<表达式值>then
when<表达式值>then
when<表达式值>then
ELSEthen
end
WHILE
循环语句任何条件为真的
WHILE<条件BOOL表达式>BEGINT-SQL语句END
WHILE……
CONTINUE……
BREAK
设置重复执行SQL语句或语句块的条件。
只要指定的条件为真,就重复执行语句。
可以使用BREAK和CONTINUE关键字在循环内部控制WHILE循环中语句的执行。
WHILE
T-SQL语句
BREAK
T-SQL语句
CONTINUE
BREAK
导致从最内层的WHILE循环中退出。
将执行出现在END关键字后面的任何语句,END关键字为循环结束标记。
CONTINUE
使WHILE循环重新开始执行,忽略CONTINUE关键字后的任何语句。
RETURN
返回的整数值。
除非另外说明,否则所有系统存储过程都将返回一个0值。
此值表示成功,非0值表示失败。
GOTO
跳转到指定标签位置;
ERR:
GOTOERR
使用GOTO语句会使程序的可读性变差,能不使用时建议不要使用。
GOTO语句只能从While循环或If判断的内部往外跳,不能从外部往内部跳。
GOTO语句只能在当前批中跳转,不能跳转到其他批中。
WAITFOR
定时器
WAITFOR{DELAY'time'|TIME'time'}
DELAY:
指示一直等到指定的时间过去,最长可达24小时。
‘time’:
要等待的时间。
可以按datetime数据可接受的格式指定time,也可以用局部变量指定此参数。
不能指定日期。
TIME:
指示SQLServer等待到指定时间
运算符
AND
与
SELECT列名称FROM表名称WHERE"简单条件"{[AND|OR]"简单条件"};
OR
或
SELECT列名称FROM表名称WHERE"简单条件"{[AND|OR]"简单条件"};
IN
知道的值都放入IN这个子句
SELECT列名称FROM表名称WHERE列名称IN('值1','值2',...);
SELECT列名称FROM表名称WHERE列名称IN(SELECT列1FROM表名称);
BETWEEN
两个值中间的所有行
SELECT列名称FROM表名称WHERE列名称BETWEEN'值1'AND'值2';
SOME、ANY
有一个条件满足
SELECT列名称FROM表名称WHERE列名称ANY('值1','值2')
ALL
所条件满足
SELECT列名称FROM表名称WHERE列名称ALL('值1','值2')
LIKE
搜索列中的指定模式。
SELECT列名称FROM表名称WHERE列名称LIKE{模式};
%代替一个或多个字符:
'%条件’查找所有条件结尾的数据、‘条件%’查找条件开头的数据、‘%条件%’查找包含条件的数据
WHEREXMLIKE'[赵钱孙]%'查找赵、钱、孙开头的数据
WHEREXMLIKE'[^赵钱孙]%'查找不是赵、钱、孙开头的数据
_代替一个字符WHEREXMLIKE'_设’查找第一个字符之后是"设"的数据
=(等于)
等于
>(大于)
大于
<(小于)
小于
>=(大于等于)
大于等于
<=(小于等于)
小于等于
<>(不等于)
不等于
声明变量
输出
PRINT‘要输出的内容,可以为变量’
DECLARE@XX
局部变量
DECLARE@@xx
全局变量
函数
AVG()
求平均值
SELECTAVG(列名称)FROM表名称;
COUNT()
统计数目
SELECTCOUNT(列名称)FROM表名称;
MAX()
求最大值
SELECTMAX(列名称)FROM表名称;
MIN()
求最小值
SELECTMIN(列名称)FROM表名称;
SUM()
求和
SELECTSUM(列名称)FROM表名称;
CEILING()
返回>=表达式的最大整数
PRINTCEILING(111.91)--112
FLOOR()
返回<=表达式的最小整数
PRINTFLOOR(111.91)--111
ROUND()
四舍五入值
PRINTROUND(111.915,0)--112.000
PRINTROUND(111.915,1)--111.900
PRINTROUND(111.915,2)--111.920
ABS()
返回表达式的绝对值返回
PRINTABS(0.0)--0.0
PRINTABS(-111.915)--111.915
PRINTABS(111.915)--111.915
SIGN()
测试参数的正负号返回
0零值、1正数、-1负数
PRINTSIGN(0.0)--0.0
PRINTSIGN(-111.915)---1.000
PRINTSIGN(111.915)--1.000
PI()
值为π即3.1415926535897936
PRINTPI()-–3.14
RAND()
0-1间的随机浮点数
PRINTRAND()–-0.3999
PRINTROUND(RAND()*121,0)—随机取一个小于121的整数
字符串函数
ASCII()
返回字符表达式最左端字符的ASCII码值
PRINTASCII('ABC')---65
PRINTASCII('BCA')---66
CHAR()
用于将ASCII码转换为字符
PRINTCHAR(65)---A
PRINTCHAR(66)---B
LOWER()
字符串全部转换为小写
PRINTLOWER('ABCdef')---abcdef
UPPER()
字符串全部转换为大写
PRINTUPPER('ABCdef')---ABCDEF
STR()
数值型数据转换为字符型数据
PRINTSTR(123456)---123456
LTRIM()
字符串头部的空格去掉
PRINTLTRIM('12345611')---12345611
RTRIM()
字符串尾部的空格去掉
PRINTRTRIM('12345611')---12345611
LEFT()
函数返回左部分字符串
PRINTLEFT('ABC_123',1)---A
PRINTLEFT('ABC_123',2)---AB
PRINTLEFT('ABC_123',5)---ABC_1
RIGHT()
函数返回右部分字符串
PRINTRIGHT('ABC_123',1)---3
PRINTRIGHT('ABC_123',2)---23
PRINTRIGHT('ABC_123',5)---C_123
SUBSTRING()
函数返回指定位置(第几个开始,取几个)的字符串
SUBSTRING(被查找的字符串,开始位置,查找数量)
PRINTSUBSTRING('ABC_123',1,1)---A
PRINTSUBSTRING('ABC_123',2,2)---BC
PRINTSUBSTRING('ABC_123',2,5)---BC_12
CHARINDEX()
函数返回字符串中某个指定的子串出现的开始位置
CHARINDEX(对比字符串,被查找的字符串,开始位置)
PRINTCHARINDEX('A','ABC_123',1)---1
PRINTCHARINDEX('B','ABC_123',2)---2
PRINTCHARINDEX('1','ABC_123',5)---5
PRINTCHARINDEX('1','ABC_123',6)---0
PATINDEX()
函数返回字符串中某个指定的子串出现的开始位置
PRINTPATINDEX('B','ABC_123')---0
PRINTPATINDEX('%B','ABC_123')---0
PRINTPATINDEX('B%','ABC_123')---0
PRINTPATINDEX('%b%','ABC_123')---2
PRINTPATINDEX('ABC_123','ABC_123')---1
SOUNDEX()
函数返回一个四位字符码
SOUNDEX函数可用来查找声音相似的字符串但SOUNDEX函数对数字和汉字均只返回0值
PRINTSOUNDEX('keng')---K620
PRINTSOUNDEX('ken')---K600
PRINTSOUNDEX('ke')---K000
PRINTSOUNDEX('to')---T000
PRINTSOUNDEX('two')---T000
DIFFERENCE()
函数返回由SOUNDEX函数返回的两个字符表达式的值的差异
--0两个SOUNDEX函数返回值的第一个字符不同
--1两个SOUNDEX函数返回值的第一个字符相同
--2两个SOUNDEX函数返回值的第一二个字符相同
--3两个SOUNDEX函数返回值的第一二三个字符相同
--4两个SOUNDEX函数返回值完全相同
QUOTENAME()
函数返回被特定字符括起来的字符串
PRINTQUOTENAME('aa')--[aa]
PRINTQUOTENAME('aa','')--[aa]
PRINTQUOTENAME('aa','''')--'aa'
REPLICATE()
返回参数指定次数的字符串
REPLICATE('需要重复的值',重复次数)
PRINTREPLICATE('222',3)---222222222
PRINTREPLICATE('AAA',3)---AAAAAAAAA
PRINTREPLICATE('+3+',3)---+3++3++3+
REVERSE()
函数将指定的字符串的字符排列顺序颠倒
PRINTREVERSE('ABC')---CBA
PRINTREVERSE('321')---123
REPLACE()
函数返回被替换了指定子串的字符串
REPLACE('源字符串','需要替换的字符串','替换成')
PRINTREPLACE('ABC','A','XXX')---XXXBC
PRINTREPLACE('ABC','b','XXX')---AXXXC
PRINTREPLACE('ABC','c','XXX')---ABXXX
SPACE()
返回指定长度的空白字符串
PRINTSPACE(9)+'ABB'---ABB
STUFF()
函数用另一子串替换字符串指定位置长度的子串
STUFF('源',开始,数量,'替换成')
PRINTSTUFF('ABCD',1,1,'XX')---XXBCD
PRINTSTUFF('ABCD',1,2,'XX')---XXCD
PRINTSTUFF('ABCD',1,3,'XX')---XXD
PRINTSTUFF('ABCD',2,1,'XX')---AXXCD
PRINTSTUFF('ABCD',2,2,'XX')---AXXD
PRINTSTUFF('ABCD',2,3,'XX')---AXX
PRINTSTUFF('ABCD',1,5,'XX')---XX
数据类型转换函数
CAST()
将某种数据类型的表达式显式转换为另一种数据类型。
CAST('表达式'AS类型)
PRINTCAST('123'ASINT)---123
PRINTCAST('123'ASVARCHAR)---123
PRINTCAST('A123'ASVARCHAR)---A123
CONVERT()
将某种数据类型的表达式显式转换为另一种数据类型。
CONVERT(类型,'表达式')
PRINTCONVERT(INT,'123')---123
PRINTCONVERT(VARCHAR,'123')---123
PRINTCONVERT(VARCHAR,'A123')---A123
日期函数
DAY()
函数返回DATETIME中的日期值
PRINTDAY(GETDATE())、DAY('2016-12-13')
MONTH()
函数返回DATETIME中的月份值
PRINTMONTH(GETDATE())、MONTH('2016-12-13')
YEAR()
函数返回DATETIME中的年份值
PRINTYEAR(GETDATE())、YEAR('2016-12-13')
DATEADD()
函数在日期中添加或减去指定的时间间隔。
PRINTCONVERT(VARCHAR,DATEADD(YY,8,'2000-1-100:
00:
00'),120)--2008-01-0100:
00:
00
PRINTCONVERT(VARCHAR,DATEADD(MM,8,'2000-1-100:
00:
00'),120)--2000-09-0100:
00:
00
PRINTCONVERT(VARCHAR,DATEADD(DD,8,'2000-1-100:
00:
00'),120)--2000-01-0900:
00:
00
PRINTCONVERT(VARCHAR,DATEADD(HH,8,'2000-1-100:
00:
00'),120)--2000-01-0108:
00:
00
PRINTCONVERT(VARCHAR,DATEADD(MI,8,'2000-1-100:
00:
00'),120)--2000-01-0900:
08:
00
PRINTCONVERT(VARCHAR,DATEADD(SS,8,'2000-1-100:
00:
00'),120)--2000-01-0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 实用 语句 大全