SQL语句精妙集合

 1 一、基础
  2
  3 1 、说明:创建数据库
  4 Create   DATABASE   database - name
  5
  6 2 、说明:删除数据库
  7 drop   database  dbname
  8
  9 3 、说明:备份sql server
 10 -- - 创建 备份数据的 device
 11 USE  master
 12 EXEC  sp_addumpdevice  disk , testBack, c:\mssql7backup\MyNwind_1.dat
 13 -- - 开始 备份
 14 BACKUP   DATABASE  pubs  TO  testBack
 15
 16 4 、说明:创建新表
 17 create   table  tabname(col1 type1  [ not null ]   [ primary key ] ,col2 type2  [ not null ] ,..)
 18 根据已有的表创建新表:
 19 A: create   table  tab_new  like  tab_old (使用旧表创建新表)
 20 B: create   table  tab_new  as   select  col1,col2…  from  tab_old definition  only
 21
 22 5 、说明:删除新表
 23 drop   table  tabname
 24
 25 6 、说明:增加一个列
 26 Alter   table  tabname  add   column  col type
 27 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
 28
 29 7 、说明:添加主键:  Alter   table  tabname  add   primary   key (col)
 30 说明:删除主键:  Alter   table  tabname  drop   primary   key (col)
 31
 32 8 、说明:创建索引: create   [ unique ]   index  idxname  on  tabname(col….)
 33 删除索引: drop   index  idxname
 34 注:索引是不可更改的,想更改必须删除重新建。
 35
 36 9 、说明:创建视图: create   view  viewname  as   select  statement
 37 删除视图: drop   view  viewname
 38
 39 10 、说明:几个简单的基本的sql语句
 40 选择: select   *   from  table1  where  范围
 41 插入: insert   into  table1(field1,field2)  values (value1,value2)
 42 删除: delete   from  table1  where  范围
 43 更新: update  table1  set  field1 = value1  where  范围
 44 查找: select   *   from  table1  where  field1  like  ’ % value1 % ’  -- -like的语法很精妙,查资料!
 45 排序: select   *   from  table1  order   by  field1,field2  [ desc ]
 46 总数: select   count   as  totalcount  from  table1
 47 求和: select   sum (field1)  as  sumvalue  from  table1
 48 平均: select   avg (field1)  as  avgvalue  from  table1
 49 最大: select   max (field1)  as  maxvalue  from  table1
 50 最小: select   min (field1)  as  minvalue  from  table1
 51
 52 11 、说明:几个高级查询运算词
 53 A:  UNION  运算符
 54 UNION  运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当  ALL  随  UNION  一起使用时(即  UNION   ALL ),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。
 55 B:  EXCEPT  运算符
 56 EXCEPT  运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当  ALL  随  EXCEPT  一起使用时 ( EXCEPT   ALL ),不消除重复行。
 57 C:  INTERSECT  运算符
 58 INTERSECT  运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当  ALL  随  INTERSECT  一起使用时 ( INTERSECT   ALL ),不消除重复行。
 59 注:使用运算词的几个查询结果行必须是一致的。
 60
 61 12 、说明:使用外连接
 62 A、 left   outer   join
 63 左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。
 64 SQL:  select  a.a, a.b, a.c, b.c, b.d, b.f  from  a  LEFT  OUT  JOIN  b  ON  a.a  =  b.c
 65 B: right   outer   join :
 66 右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
 67 C: full   outer   join
 68 全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
 69
 70 二、提升
 71
 72 1 、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)
 73 法一: select   *   into  b  from  a  where   1 <> 1
 74 法二: select   top   0   *   into  b  from  a
 75
 76 2 、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用)
 77 insert   into  b(a, b, c)  select  d,e,f  from  b;
 78
 79 3 、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)
 80 insert   into  b(a, b, c)  select  d,e,f  from  b  in  ‘具体数据库’  where  条件
 81 例子:.. from  b  in   & Server.MapPath(.) & \data.mdb  &   where ..
 82
 83 4 、说明:子查询(表名1:a 表名2:b)
 84 select  a,b,c  from  a  where  a  IN  ( select  d  from  b ) 或者:  select  a,b,c  from  a  where  a  IN  ( 1 , 2 , 3 )
 85
 86 5 、说明:显示文章、提交人和最后回复时间
 87 select  a.title,a.username,b.adddate  from   table  a,( select   max (adddate) adddate  from   table   where   table .title = a.title) b
 88
 89 6 、说明:外连接查询(表名1:a 表名2:b)
 90 select  a.a, a.b, a.c, b.c, b.d, b.f  from  a  LEFT  OUT  JOIN  b  ON  a.a  =  b.c
 91
 92 7 、说明:在线视图查询(表名1:a )
 93 select   *   from  ( Select  a,b,c  FROM  a) T  where  t.a  >   1 ;
 94
 95 8 、说明:between的用法,between限制查询数据范围时包括了边界值, not  between不包括
 96 select   *   from  table1  where  time  between  time1  and  time2
 97 select  a,b,c,  from  table1  where  a  not   between  数值1  and  数值2
 98
 99 9 、说明: in  的使用方法
100 select   *   from  table1  where  a  [ not ]   in  (‘值1’,’值2’,’值4’,’值6’)
101
102 10 、说明:两张关联表,删除主表中已经在副表中没有的信息
103 delete   from  table1  where   not   exists  (  select   *   from  table2  where  table1.field1 = table2.field1 )
104
105 11 、说明:四表联查问题:
106 select   *   from  a  left   inner   join  b  on  a.a = b.b  right   inner   join  c  on  a.a = c.c  inner   join  d  on  a.a = d.d  where  ..
107
108 12 、说明:日程安排提前五分钟提醒
109 SQL:  select   *   from  日程安排  where   datediff (minute,f开始时间, getdate ()) > 5
110
111 13 、说明:一条sql 语句搞定数据库分页
112 select   top   10  b. *   from  ( select   top   20  主键字段,排序字段  from  表名  order   by  排序字段  desc ) a,表名 b  where  b.主键字段  =  a.主键字段  order   by  a.排序字段
113
114 14 、说明:前10条记录
115 select   top   10   *  form table1  where  范围
116
117 15 、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)
118 select  a,b,c  from  tablename ta  where  a = ( select   max (a)  from  tablename tb  where  tb.b = ta.b)
119
120 16 、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表
121 ( select  a  from  tableA )  except  ( select  a  from  tableB)  except  ( select  a  from  tableC)
122
123 17 、说明:随机取出10条数据
124 select   top   10   *   from  tablename  order   by   newid ()
125
126 18 、说明:随机选择记录
127 select   newid ()
128
129 19 、说明:删除重复记录
130 Delete   from  tablename  where  id  not   in  ( select   max (id)  from  tablename  group   by  col1,col2,)
131
132 20 、说明:列出数据库里所有的表名
133 select  name  from  sysobjects  where  type = U
134
135 21 、说明:列出表里的所有的
136 select  name  from  syscolumns  where  id = object_id (TableName)
137
138 22 、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select 中的case。
139 select  type, sum ( case  vender  when  A  then  pcs  else   0   end ), sum ( case  vender  when  C  then  pcs  else   0   end ), sum ( case  vender  when  B  then  pcs  else   0   end FROM  tablename  group   by  type
140 显示结果:
141 type vender pcs
142 电脑 A  1
143 电脑 A  1
144 光盘 B  2
145 光盘 A 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值