| 
                         //  function:SQL MSSQL TECHNOLOGY ARTICLE  file :SQL-MSSQL.TXT  author :chinayaosir QQ:44633197  Tools :MSSQL QUERY ANALYSIS  date :4/01/2010  blog :http://blog.csdn.net/chinayaosir  note :禁止其它网站转载此文章  //  目录清单CONTEXT LIST  //  1.数据库DataBase  1.1数据库建立/删除create/drop database  1.2数据库备份与恢复backup/restore database  //  2.数据查询DATA QUERY LANGUAGE  2.1选择查询Select Query  2.2聚集查询Aggregate Query  2.3子查询 Sub Query  2.4连接查询Table Joins  2.5汇总查询Group Query  //  3.数据修改DATA MODIFY LANGUAGE  3.1插入数据Insert  3.2修改数据Update  3.3删除数据Delete  //  4.数据定义DATA DEFINE LANGUAGE  4.1表Table  4.2列Column  4.3序列Identity  4.4约束Constraints  4.5索引Index  4.6视图view  4.7权限Privilege  //  5.数据库函数Functions  5.1转换函数Data Convert Functions  5.2聚集函数Aggregate Functions  5.3字符函数char Functions  5.4日期函数Date Functions  5.5数学函数Math Functions  5.6分析函数Analytical Functions  //  6.数据库脚本Script  6.1数据类型Data Types  6.2脚本语法Statements  6.3脚本游标Cursor  6.4存储过程Procedure  6.5存储函数Function  6.6触发器Trigger  6.7事务Transaction  6.8其它Other  /*/ SQL明细 SQL DETAIL  /**/  1.数据库DataBase  1.1数据库建立/删除create/drop database  1.2备份与恢复backup/restore database  /**/  1.1数据库建立/删除create/drop database  1.1.1.建立数据库  语法:create database <数据库名> [其它参数]  代码:  //建立数据库 hr  create database hr 1.1.2.删除数据库。  语法:drop database <数据库名>  代码:  //删除数据库hr  drop database hr  //如果存在hr数据库,则删除数据库hr  IF DB_ID('hr') IS NOT NULL  DROP DATABASE TestDB  -----------------------------------------------------------  1.2备份与恢复backup/restore database  1.2.1.添加备份设备  语法:sp_addumpdevice    代码:  //添加备份设备为本地硬盘  sp_addumpdevice 'disk','localbackup','e:databasebackuplocalbak.bak'  //备份到网络硬盘  sp_addumpdevice 'disk','netbackup','computer1databasebackupnetbak.bak'  //备份到磁带  sp_addumpdevice 'tape','tapebackup','.tape1bak'  //备份到命名管道  sp_addumpdevice 'pipe','pipebackup','e:databasebackuppipebak' 1.2.2.备份数据库  语法:backup database  to | disk= 代码:  //备份数据库到备份设备  backup database pubs to localbackup  //备份数据库到指定路径下面的指定文件  backup database pubs to disk='e:databasebackuppubsbak.bak' 1.2.3.恢复数据库  语法:restore database  from | disk=  代码:  //从备份设备中恢复数据库  restore database pubs from localbackup  //从备份文件中恢复数据库 /**/  2.数据查询DATA QUERY LANGUAGE  2.1选择查询Select Query  2.2子查询 Sub Query  2.3连接查询Table Joins  2.4汇总查询Group Query  -----------------------------------------------------------  2.1选择查询Select Query  语法:  select [top n][/all]/[distinct] [] / [columnlist...] [<columnlist as alias...] [const/sql/function expression]  from (<tablelist,>...) [as alias]  [where search expression...]  [group by groupnamelist ....]  [having search-expression...]  [order by sort-expression...] //select选项说明:  top n:只显示第一条到n条记录  //重复与不重复记录  all:表示包含重复的记录  distinct:表示去掉重复的记录  //所有字段与选中字段和字段别名  :表示所有的列名  columnlist:表示字段列表  columnlist as alias:表示字段的别名 //其它字段  const-expression:常量表达式(如数字/字符串/日期/时间常量)  sql-expression:常见的sql语句的加减乘除表达式运算字段  function expression:数据库函数和自定义函数字段 //测试条件  比较测试条件(=,<>,>,<,>=,<=)  范围测试条件(betweeen 下限值 and 上限值)  成员测试条件(in,not in)  存在测试条件(exists,not exists)  匹配测试条件(like)  限定测试条件(any,all)  空值测试条件(is null) //复合搜索条件(and,or,not,())  and:逻辑与运算  and:逻辑或运算  not:逻辑非运算  ():可改变优先级的运算符 //子句说明  select子句:指出检索的数据项  from 子句:指出检索的数据表  where 子句:指出检索的数据条件  group by子句:指出检索的数据进行汇总  having子句:指出检索的数据进行汇总之前的条件  order by子句:指出检索的数据条件进行排序  代码:  //所有字段方式显示orders全部记录  select  from orders  //按字段显示全部记录  select order_num,order_date,amount from orders  //按字段显示全部记录,但除掉重复的记录  select order_num,amount from orders  //用sql-expression乘运算计算列  select amount,amount0.08 as discount_amt from orders  //用自定义函数计算指定列  select order_num,amount,f_amt_to_chn(amount) as 金额 from orders select选项太多,代码例子就省略...  -----------------------------------------------------------  2.2子查询 Sub Query  语法:select ...  from   where / having column 测试条件 (Sub Query)  //测试条件  比较测试条件(=,all)  空值测试条件(is null) 代码:  //列出没有完成销售目标10%的销售人员清单[<测试]  select name from salesreps where quota < (0.1  select sum(target) from offices))  //列出公司的销售目标超过各个销售人员定额总和的销售点[>测试]  select city from offices where target > (select sum(quota) from salesreps where rep_office=office)  //列出超过销售目标的销售点的业务人员[in测试]  select name from salesreps where office in (select office from offies where sales > target)  //列出订单大于2500元的产品名称[exists测试]  select description from products where exists (  select  from orders where product=prodct_id and amount > 2500.00  )  //列出完成销售目标10%的销售人员清单[any测试]  select name from salesreps where (0.1 quota) < any(select amount from orders where rep=empl_num) -----------------------------------------------------------  2.3连接查询Table Joins  多表连接类型可分为三类(内/外/交叉连接)  主从表或者父子表进行多表连接多以主键和外键进行关联  Outer joins(LEFT OUTER,RIGHT OUTER,and FULL OUTER joins)  left outer join:查询的结果以左边表行数为准  right outer join:查询的结果以右边表行数为准 2.3.1.内连接inner join  功能:  语法:  SELECT select_list  FROM table_1  [INNER] JOIN table_2  ON join_condition_1  [[INNER] JOIN table_3  ON join_condition_2]...  代码:  //没有where子句的内连接  SELECT   FROM Products  INNER JOIN Suppliers  ON Products.SupplierID = Suppliers.SupplierID //有where子句的内连接  SELECT p.ProductID,s.SupplierID,p.ProductName,s.CompanyName  FROM Products p  INNER JOIN Suppliers s  ON p.SupplierID = s.SupplierID  WHERE p.ProductID < 4 -----------------------------------------------------------  2.3.2.外连接outer join  功能:包括三种连接LEFT OUTER,and FULL OUTER joins  left outer :查询的结果以左边表行数为准  right outer :查询的结果以右边表行数为准  语法:select ... from table1 [left/right/full outer join ]table2 where ...  代码:  //以Customers表行数为标准去连接Orders表  SELECT c.CustomerID,CompanyName  FROM Customers c  LEFT OUTER JOIN Orders o  ON c.CustomerID = o.CustomerID  WHERE o.CustomerID IS NULL -----------------------------------------------------------  2.3.3.交叉连接cross join  功能:以主从表或者父子表之间的主键进行连接,最终以笛卡尔乘积运算的结果  语法:select ... from table1 cross join table2 where ... 代码:  //显示结果以表1行数表2行数  假设Departments为4行记录  假设Jobs为3行记录  下面的显示结果为43=12行记录  SELECT deptname,jobdesc FROM Departments CROSS JOIN Jobs  //用关键字匹配的交叉连接  oc_head/oc_detail是主从表  oc_head(主键oc_number)  oc_detail(主键oc_number,item_number,ship_date) SELECT h.customerid,d.item_number,d.ship_date  from oc_head as h CROSS JOIN oc_detail as d  where h.oc_number=d.oc_number  -----------------------------------------------------------  2.4汇总查询Group Query  //汇总查询相当于会计报表中的小计汇总的功能 语法: select ...  from   group by   [having search expression] 代码:  //求出每名销售人员的销售金额  select rep,sum(amount) from orders group by rep  //每个销售点分配了多少销售人员  select rep_office,count(*) from salesreps group by rep_office  //计算每名销售人员的每个客户和订单金额  select cust,rep,sum(amount) from orders group by cust,rep  //Having子句应用  select rep,avg(amount) from orders having sum(quota) > 3000.00 /**/  3.数据修改DATA MODIFY LANGUAGE  3.1插入数据Insert  3.2修改数据Update  3.3删除数据Delete  -----------------------------------------------------------  3.1插入数据Insert  3.1.1.单行插入  语法:insert into [<columnlist,>...] values(<valuelist,>...); 代码:  //不省略字段清单  insert into salesreps(name,age,empl_no,sales,title,hire_date,rep_office)  values('jack toms',36,111,0.00,'sales mgr','10-05-2010',13)  //省略字段清单  insert into salesreps  values('jack toms',13)  3.1.2.多行插入  语法:insert into [(<columnlist,>...)] values(<valuelist,>...)   |