发新话题
打印

[转载]Transact SQL 常用语句以及函数

[转载]Transact SQL 常用语句以及函数

信息来源: CSDN

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=1thene_wage*1.08
      
whenjob_level=2thene_wage*1.07
      
whenjob_level=3thene_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  

  
select*(列名)fromtable_name(表名)wherecolumn_nameoperatorvalueex宿主)
    
select*fromstock_informationwherestockid=str(nid)
    stockname
='str_name'
    stockname
like'%findthis%'
    stockname
like'[a-zA-Z]%'---------([]指定值的范围)
    stocknamelike'[^F-M]%'---------(^排除指定范围)
    ---------只能在使用like关键字的where子句中使用通配符)
    orstockpath='stock_path'
    
orstocknumber<1000
    
andstockindex=24
    
notstocksex='man'
    stocknumber
between20and100
    stocknumber
in(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)  

转换函数

convert(数据类型,值,格式)

  统计函数

  
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()(AS[length])
  
CONVERT()函数语法如下
  
CONVERT()([length],[,style])
  
selectcast(100+99aschar)convert(varchar(12),getdate())

  运行结果如下
  
199Jan152000 

  日期函数

  
DAY()------函数返回date_expression中的日期值
  MONTH()------函数返回date_expression中的月份值
  YEAR()------函数返回date_expression中的年份值
  DATEADD(,,)
  
-----函数返回指定日期date加上指定的额外日期间隔number产生的新日期
  DATEDIFF(,,)
  
-----函数返回两个指定日期在datepart方面的不同之处

  
DATENAME(,------函数以字符串的形式返回日期的指定部分
  DATEPART(,------函数以整数值的形式返回日期的指定部分
  GETDATE()------函数以DATETIME的缺省格式返回系统当前的日期和时间  

  系统函数

  
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_name
  intonewtable
  fromoldtable
*/


  
ISDATE()----函数判断所给定的表达式是否为合理日期
  ISNULL(,--函数将表达式中的NULL值用指定值替换
  ISNUMERIC()----函数判断所给定的表达式是否为合理的数值
  NEWID()----函数返回一个UNIQUEIDENTIFIER类型的数值
  NULLIF(,
  
----NULLIF函数在expression1与expression2相等时返回NULL值若不相等时则返回xpression1的值

TOP

发新话题