Transact_SQL 小手册

--语句功能 --数据操作 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的值

本文由快3平台发布于快3正规平台数据库,转载请注明出处:Transact_SQL 小手册

相关阅读