搜索
您的当前位置:首页SQL Server查询语句大全

SQL Server查询语句大全

时间:2020-02-06 来源:乌哈旅游
SQLServer查询语句大全语句1、数据操作SelectInsertDeleteUpdate

--从数据库表中检索数据行和列--向数据库表添加新数据行--从数据库表中删除数据行--更新数据库表中的数据

功能

2、数据定义CreateTABLEDropTABLEAlterTABLECreateVIEWDropVIEWCreateINDEXDropINDEX

--创建一个数据库表--从数据库中删除表--修改数据库表结构--创建一个视图--从数据库中删除视图--为数据库表创建一个索引--从数据库中删除索引

--创建一个存储过程--从数据库中删除存储过程--创建一个触发器--从数据库中删除触发器--向数据库添加一个新模式--从数据库中删除一个模式

CreatePROCEDUREDropPROCEDURECreateTRIGGERDropTRIGGERCreateSCHEMADropSCHEMA

CreateDOMAINAlterDOMAINDropDOMAIN

--创建一个数据值域--改变域定义

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

3、数据控制GRANTDENYREVOKE4、事务控制COMMITROLLBACK

--结束当前事务--中止当前事务

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

--授予用户访问权限--拒绝用户访问--解除用户访问权限

SETTRANSACTION

5、程序化SQLDECLAREEXPLANOPENFETCHCLOSEPREPAREEXECUTEDESCRIBE

--为查询设定游标--为查询描述数据访问计划--检索查询结果打开一个游标--检索一行查询结果--关闭游标

--为动态执行准备SQL语句--动态地执行SQL语句--描述准备好的查询

6、局部变量

declare@idchar(10)--set@id='10010001'select@id='10010001'

7、全局变量---必须以@@开头

8、IF语句

declare@xint@yint@zintselect@x=1@y=2@z=3if@x>@y

print'x>y'--打印字符串'x>y'elseif@y>@zprint'y>z'elseprint'z>y'

9、CASE语句usepanguupdateemployeesete_wage=case

whenjob_level=’1’thene_wage*1.08whenjob_level=’2’thene_wage*1.07whenjob_level=’3’thene_wage*1.06elsee_wage*1.05end

10、WHILECONTINUEBREAK语句declare@xint@yint@cintselect@x=1@y=1while@x<3begin

print@x--打印变量x的值while@y<3begin

select@c=100*@x+@yprint@c--打印变量c的值select@y=@y+1end

select@x=@x+1select@y=1end

11、WAITFOR语句

--例等待1小时2分零3秒后才执行Select语句waitfordelay’01:02:03’select*fromemployee

--例等到晚上11点零8分后才执行Select语句waitfortime’23:08:00’select*fromemployee

12、Select语句

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

ex:(宿主)

select*fromstock_informationwherestockidstr(nid)

stockname='str_name'stocknamelike'%findthis%'

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

stocknamelike'[^F-M]%'定范围)

---------(^排除指

=

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

orstockpath='stock_path'orstocknumber<1000andstockindex=24notstocksex='man'

stocknumberbetween20and100stocknumberin(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

13、insert语句

insertintotable_name(Stock_name,Stock_number)value(\"xxx\

value(selectStockname,Stocknumber

fromStock_table2)---value为select语句

14、update语句

updatetable_namesetStockname=\"xxx\"[whereStockid=3]

Stockname=defaultStockname=null

Stocknumber=Stockname+4

15、delete语句

deletefromtable_namewhereStockid=3<,/P>truncatetable_name-----------删除表中所有行,仍保持表的完整性

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

16、altertable***---修改数据库表结构altertabledatabase.owner.table_nameaddcolumn_namechar(2)null.....

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

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

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

altertabletable_namedropconstraint

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

17、常用函数

----统计函数----AVGCOUNTMAXMINSUM--AVGusepangu

selectavg(e_wage)asdept_avgWagefromemployeegroupbydept_id--MAX

--求工资最高的员工姓名usepanguselecte_namefromemployeewheree_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间的随机浮点数18、字符串函数ASCII()值CHAR()

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

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

--如果没有输入0~255之间的ASCII码值CHAR函数会返回一个NULL值LOWER()UPPER()STR()LTRIM()RTRIM()

--函数把字符串全部转换为小写--函数把字符串全部转换为大写--函数把数值型数据转换为字符型数据--函数把字符串头部的空格去掉--函数把字符串尾部的空格去掉

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

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

--SOUNDEX函数可用来查找声音相似的字符串但SOUNDEX函数对数字和汉字均只返回0值DIFFERENCE()符表达式的值的差异

--0两个SOUNDEX函数返回值的第一个字符不同--1两个SOUNDEX函数返回值的第一个字符相同--2两个SOUNDEX函数返回值的第一二个字符相同--3两个SOUNDEX函数返回值的第一二三个字符相同--4两个SOUNDEX函数返回值完全相同QUOTENAME()--函数返回被特定字符括起来的字符串/*selectquotename('abc','{')quotename('abc')

--函数返回由SOUNDEX函数返回的两个字

运行结果如下

----------------------------------{{abc}[abc]*/REPLICATE()

--函数返回一个重复

character_expression指定次数的字符串

/*selectreplicate('abc',3)replicate('abc',-2)运行结果如下

----------------------abcabcabcNULL*/REVERSE()REPLACE()

--函数将指定的字符串的字符排列顺序颠倒--函数返回被替换了指定子串的字符串

/*selectreplace('abc123g','123','def')运行结果如下

----------------------abcdefg*/SPACE()STUFF()

--函数返回一个有指定长度的空白字符串--函数用另一子串替换字符串指定位置长度的子串

19、数据类型转换函数----CAST()函数语法如下

CAST()(AS[length])CONVERT()函数语法如下

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

selectcast(100+99aschar)convert(varchar(12),getdate())运行结果如下

------------------------------------------199

Jan152000

20、日期函数----DAY()

--函数返回date_expression中的日期值

--函数返回date_expression中的月份值--函数返回date_expression中的年份值

MONTH()YEAR()

DATEADD(,,)

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

DATEDIFF(,,)

--函数返回两个指定日期在datepart方面的不同之处DATENAME(,)--函数以字符串的形式返回日期的指定部分

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

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

21、系统函数----APP_NAME()

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

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

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

COL_NAME(,)指定字段的名称即列名

DATALENGTH()--函数返回数据表达式的数据的实际长度DB_ID(['database_name'])--函数返回数据库的编号DB_NAME(database_id)--函数返回数据库的名称HOST_ID()HOST_NAME()

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

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

--函数返回表中

IDENTITY([,seedincrement])[AScolumn_name])

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

/*selectidentity(int,1,1)ascolumn_nameintonewtable

fromoldtable*/

ISDATE()--函数判断所给定的表达式是否为合理日期ISNULL(,)--函数将表达式中的NULL值用指定值替换

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

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

NULLIF(,)

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

22、数学函数

1.绝对值

S:selectabs(-1)value

O:selectabs(-1)valuefromdual2.取整(大)

S:selectceiling(-1.001)valueO:selectceil(-1.001)valuefromdual3.取整(小)

S:selectfloor(-1.001)value

O:selectfloor(-1.001)valuefromdual4.取整(截取)

S:selectcast(-1.002asint)value

O:selecttrunc(-1.002)valuefromdual5.四舍五入

S:selectround(1.23456,4)value1.23460

O:selectround(1.23456,4)valuefromdual1.23466.e为底的幂

S:selectExp(1)value2.7182818284590451O:selectExp(1)valuefromdual2.718281827.取e为底的对数

S:selectlog(2.7182818284590451)value1

O:selectln(2.7182818284590451)valuefromdual;18.取10为底对数

S:selectlog10(10)value1

O:selectlog(10,10)valuefromdual;19.取平方

S:selectSQUARE(4)value16

O:selectpower(4,2)valuefromdual1610.取平方根

S:selectSQRT(4)value2

O:selectSQRT(4)valuefromdual211.求任意数为底的幂

S:selectpower(3,4)value81

O:selectpower(3,4)valuefromdual81

12.取随机数

S:selectrand()value

O:selectsys.dbms_random.value(0,1)valuefromdual;

13.取符号

S:selectsign(-8)value-1

O:selectsign(-8)valuefromdual-1----------数学函数14.圆周率

S:SelectPI()value3.1415926535897931O:不知道

15.sin,cos,tan参数都以弧度为单位

例如:selectsin(PI()/2)value得到1(SQLServer)16.Asin,Acos,Atan,Atan2返回弧度

17.弧度角度互换(SQLServer,Oracle不知道)DEGREES:弧度-〉角度RADIANS:角度-〉弧度---------数值间比较18.求集合最大值

S:selectmax(value)valuefrom(select1valueunion

select-2valueunion

select4valueunion

select3value)a

O:selectgreatest(1,-2,4,3)valuefromdual19.求集合最小值

S:selectmin(value)valuefrom(select1valueunion

select-2valueunion

select4valueunion

select3value)a

O:selectleast(1,-2,4,3)valuefromdual20.如何处理null值(F2中的null以10代替)S:selectF1,IsNull(F2,10)valuefromTblO:selectF1,nvl(F2,10)valuefromTbl--------数值间比较21.求字符序号

S:selectascii('a')value

O:selectascii('a')valuefromdual22.从序号求字符

S:selectchar(97)value

O:selectchr(97)valuefromdual23.连接

S:select'11'+'22'+'33'value

O:selectCONCAT('11','22')||33valuefromdual23.子串位置--返回3

S:selectCHARINDEX('s','sdsq',2)valueO:selectINSTR('sdsq','s',2)valuefromdual23.模糊子串的位置--返回2,参数去掉中间%则返回7S:selectpatindex('%d%q%','sdsfasdqe')valueO:oracle没发现,但是instr可以通过第四霾问刂瞥鱿执问?BR>

selectINSTR('sdsfasdqe','sd',1,2)valuefrom

dual返回6

24.求子串

S:selectsubstring('abcd',2,2)valueO:selectsubstr('abcd',2,2)valuefromdual25.子串代替返回aijklmnef

S:SelectSTUFF('abcdef',2,3,'ijklmn')valueO:SelectReplace('abcdef','bcd','ijklmn')valuefromdual

26.子串全部替换S:没发现

O:selectTranslate('fasdbfasegas','fa','我')valuefromdual

27.长度

S:len,datalengthO:length

28.大小写转换lower,upper29.单词首字母大写S:没发现

O:selectINITCAP('abcddsafdf')valuefromdual30.左补空格(LPAD的第一个参数为空格则同space函数)S:selectspace(10)+'abcd'value

O:selectLPAD('abcd',14)valuefromdual

31.右补空格(RPAD的第一个参数为空格则同space函数)S:select'abcd'+space(10)value

O:selectRPAD('abcd',14)valuefromdual32.删除空格S:ltrim,rtrimO:ltrim,rtrim,trim33.重复字符串

S:selectREPLICATE('abcd',2)value

O:没发现

34.发音相似性比较(这两个单词返回值一样,发音相同)S:SelectSOUNDEX('Smith'),SOUNDEX('Smythe')O:SelectSOUNDEX('Smith'),SOUNDEX('Smythe')fromdual

SQLServer中用SelectDIFFERENCE('Smithers','Smythers')比较soundex的差

返回0-4,4为同音,1最高23、日期函数

35.系统时间

S:selectgetdate()value

O:selectsysdatevaluefromdual36.前后几日直接与整数相加减37.求日期

S:selectconvert(char(10),getdate(),20)valueO:selecttrunc(sysdate)valuefromdual

selectto_char(sysdate,'yyyy-mm-dd')valuefromdual

38.求时间

S:selectconvert(char(8),getdate(),108)value

O:selectto_char(sysdate,'hh24:mm:ss')valuefromdual

39.取日期时间的其他部分

S:DATEPART和DATENAME函数(第一个参数决定)O:to_char函数第二个参数决定参数

---------------------------------下表需要补充

yearyy,yyyyquarterqq,q(季度)monthmm,m(mO无效)dayofyeardy,y(O表星期)daydd,d(dO无效)weekwk,ww(wkO无效)weekdaydw(O不清楚)

Hourhh,hh12,hh24(hh12,hh24S无效)minutemi,n(nO无效)secondss,s(sO无效)millisecondms(O无效)

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

40.当月最后一天S:不知道

O:selectLAST_DAY(sysdate)valuefromdual41.本星期的某一天(比如星期日)S:不知道

O:SelectNext_day(sysdate,7)vauleFROMDUAL;42.字符串转时间

S:可以直接转或者selectcast('2004-09-08'asdatetime)value

O:SelectTo_date('2004-01-05

22:09:38','yyyy-mm-ddhh24-mi-ss')vauleFROMDUAL;

43.求两日期某一部分的差(比如秒)

S:selectdatediff(ss,getdate(),getdate()+12.3)value

O:直接用两个日期相减(比如d1-d2=12.3)Select(d1-d2)*24*60*60vauleFROMDUAL;44.根据差值求新的日期(比如分钟)

S:selectdateadd(mi,8,getdate())valueO:Selectsysdate+8/60/24vauleFROMDUAL;45.求不同时区时间S:不知道

O:SelectNew_time(sysdate,'ydt','gmt')vauleFROMDUAL;

-----时区参数,北京在东8区应该是Ydt-------ASTADT大西洋标准时间BSTBDT白令海标准时间CSTCDT中部标准时间ESTEDT东部标准时间GMT格林尼治标准时间

HSTHDT阿拉斯加—夏威夷标准时间MSTMDT山区标准时间NST纽芬兰标准时间PSTPDT太平洋标准时间YSTYDTYUKON标准时间

因篇幅问题不能全部显示,请点此查看更多更全内容

Top