`
商志亮
  • 浏览: 14546 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

sql 经典语句收集

阅读更多
Xml代码
  1. SQL 语句先前写的时候,很容易把一些特殊的用法忘记,我特此整理了一下SQL语句操作。  
  2. 一、 基础  
  3. 1、说明:创建数据库  
  4. CREATE DATABASE database-name  
  5. 2、 说明:删除数据库  
  6. drop database dbname  
  7. 3、 说明:备份sql server  
  8. --- 创建 备份数据的 device  
  9. USE master  
  10. EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'  
  11. --- 开 始 备份  
  12. BACKUP DATABASE pubs TO testBack  
  13. 4、 说明:创建新表  
  14. create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)  
  15. 根 据已有的表创建新表:  
  16. A:create table tab_new like tab_old (使 用旧表创建新表)  
  17. B:create table tab_new as select col1,col2... from tab_old definition only  
  18. 5、 说明:删除新表  
  19. drop table tabname  
  20. 6、 说明:增加一个列  
  21. Alter table tabname add column col type  
  22. 注: 列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。  
  23. 7、 说明:添加主键: Alter table tabname add primary key(col)  
  24. 说 明:删除主键: Alter table tabname drop primary key(col)  
  25. 8、 说明:创建索引:create [unique] index idxname on tabname(col....)  
  26. 删 除索引:drop index idxname  
  27. 注:索引是不可更改的,想更改必须删除重新建。  
  28. 9、 说明:创建视图:create view viewname as select statement  
  29. 删 除视图:drop view viewname  
  30. 10、说明:几个简单的基本的sql语句  
  31. 选 择:select * from table1 where 范围  
  32. 插 入:insert into table1(field1,field2) values(value1,value2)  
  33. 删 除:delete from table1 where 范围  
  34. 更 新:update table1 set field1 = value1  where 范围  
  35. 查 找:select * from table1 where field1 like '%value1%' ---like的语法很精妙,查资料!  
  36. 排 序:select * from table1 order by field1,field2 [desc]  
  37. 总 数:select count as totalcount from table1  
  38. 求 和:select sum(field1) as sumvalue from table1  
  39. 平 均:select avg(field1) as avgvalue from table1  
  40. 最 大:select max(field1) as maxvalue from table1  
  41. 最 小:select min(field1) as minvalue from table1  
  42. 11、说 明:几个高级查询运算词  
  43. A: UNION 运算符  
  44. UNION 运 算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时 (即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。  
  45. B: EXCEPT 运 算符  
  46. EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重 复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。  
  47. C: INTERSECT 运 算符  
  48. INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重 复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。  
  49. 注: 使用运算词的几个查询结果行必须是一致的。  
  50. 12、说明:使用外连接  
  51. A、 left outer join:  
  52. 左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的 所有行。  
  53. 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  
  54. B:right outer join:  
  55. 右 外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。  
  56. C:full outer join:  
  57. 全 外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。  
  58. 二、提升  
  59. 1、 说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)  
  60. 法 一:select * into b from a where 1< > 1  
  61. 法 二:select top 0 * into b from a  
  62. 2、说明:拷贝表(拷贝数据,源表 名:a 目标表名:b) (Access可用)  
  63. insert into b(a, b, c) select d,e,f from b;  
  64. 3、 说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)  
  65. insert into b(a, b, c) select d,e,f from b in ' 具体数据库' where 条件  
  66. 例 子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where..  
  67. 4、 说明:子查询(表名1:a 表名2:b)  
  68. 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)  
  69. 5、说明:显示 文章、提交人和最后回复时间  
  70. select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title =a.title) b  
  71. 6、 说明:外连接查询(表名1:a 表名2:b)  
  72. select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a  =  b .c  
  73. 7、 说明:在线视图查询(表名1:a )  
  74. select * from (SELECT a,b,c FROM a) T where t.a >  1;  
  75. 8、说 明:between的用法,between限制查询数据范围时包括了边界值,not between不包括  
  76. select * from table1 where time between time1 and time2  
  77. select a,b,c, from table1 where a not between 数 值1 and 数值2  
  78. 9、说明:in 的使用方法  
  79. select * from table1 where a [not] in (' 值1','值2','值4','值6')  
  80. 10、说明:两张关联表,删除主表中已经在副表中没有的信 息  
  81. delete from table1 where not exists ( select * from table2 where table1.field1 = table2 .field1 )  
  82. 11、 说明:四表联查问题:  
  83. 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 .....  
  84. 12、 说明:日程安排提前五分钟提醒  
  85. SQL: select * from 日程安 排 where datediff('minute',f开始时间,getdate())> 5  
  86. 13、 说明:一条sql 语句搞定数据库分页  
  87. select top 10 b.* from (select top 20 主 键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字 段 order by a.排序字段  
  88. 14、说明:前10条记录  
  89. select top 10 * form table1 where 范 围  
  90. 15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论 坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)  
  91. select a,b,c from tablename ta where a =(select max(a) from tablename tb where  tb.b = ta .b)  
  92. 16、 说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表  
  93. (select a from tableA ) except (select a from tableB) except (select a from tableC)  
  94. 17、 说明:随机取出10条数据  
  95. select top 10 * from tablename order by newid()  
  96. 18、 说明:随机选择记录  
  97. select newid()  
  98. 19、 说明:删除重复记录  
  99. Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)  
  100. 20、 说明:列出数据库里所有的表名  
  101. select name from sysobjects where type = 'U'   
  102. 21、 说明:列出表里的所有的  
  103. select name from syscolumns where id = object_id ('TableName')  
  104. 22、 说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select 中的case。  
  105. 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  
  106. 显 示结果:  
  107. type vender pcs  
  108. 电 脑 A 1  
  109. 电脑 A 1  
  110. 光盘 B 2  
  111. 光 盘 A 2  
  112. 手机 B 3  
  113. 手机 C 3  
  114. 23、 说明:初始化表table1  
  115. TRUNCATE TABLE table1  
  116. 24、 说明:选择从10到15的记录  
  117. select top 5 * from (select top 15 * from table order by id asc) table_ 别名 order by id desc  
  118. 三、技巧  
  119. 1、1 1 =1, 1 = 2 的 使用,在SQL语句组合时用的较多  
  120. "where 1 =1" 是表示选择全部   " where   1 = 2 " 全部不选,  
  121. 如:  
  122. if @strWhere !=''  
  123. begin  
  124. set @strSQL  =  'select count(*) as Total from ['  + @tblName + '] where ' + @strWhere  
  125. end  
  126. else  
  127. begin  
  128. set @strSQL  =  'select count(*) as Total from ['  + @tblName + ']'  
  129. end  
  130. 我 们可以直接写成  
  131. set @strSQL  =  'select count(*) as Total from ['  + @tblName + '] where  1 1 =1 安 定 '+ @strWhere  
  132. 2、收缩数据库  
  133. -- 重建索引  
  134. DBCC REINDEX  
  135. DBCC INDEXDEFRAG  
  136. -- 收缩数据和日志  
  137. DBCC SHRINKDB  
  138. DBCC SHRINKFILE  
  139. 3、 压缩数据库  
  140. dbcc shrinkdatabase(dbname)  
  141. 4、 转移数据库给新用户以已存在用户权限  
  142. exec sp_change_users_login 'update_one','newname','oldname'  
  143. go  
  144. 5、 检查备份集  
  145. RESTORE VERIFYONLY from disk = 'E:\dvbbs.bak'   
  146. 6、 修复数据库  
  147. ALTER DATABASE [dvbbs] SET SINGLE_USER  
  148. GO  
  149. DBCC CHECKDB('dvbbs',repair_allow_data_loss) WITH TABLOCK  
  150. GO  
  151. ALTER DATABASE [dvbbs] SET MULTI_USER  
  152. GO  
  153. 7、 日志清除  
  154. SET NOCOUNT ON  
  155. DECLARE @LogicalFileName sysname,  
  156.         @MaxMinutes INT,  
  157.         @NewSize INT  
  158.   
  159. USE     tablename             -- 要 操作的数据库名  
  160. SELECT  @LogicalFileName  =  'tablename_log' ,  -- 日志文件名  
  161. @MaxMinutes  =  10 ,               -- Limit on time allowed to wrap log.  
  162.         @NewSize  =  1                   -- 你想设定的日志文件的大小 (M)  
  163. -- Setup / initialize  
  164. DECLARE @OriginalSize int  
  165. SELECT @OriginalSize  =  size   
  166.   FROM sysfiles  
  167.   WHERE name  = @LogicalFileName  
  168. SELECT 'Original Size of ' + db_name() + ' LOG is ' +  
  169.         CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' +  
  170.         CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB'  
  171.   FROM sysfiles  
  172.   WHERE name  = @LogicalFileName  
  173. CREATE TABLE DummyTrans  
  174.   (DummyColumn char (8000) not null)  
  175.   
  176. DECLARE @Counter   INT,  
  177.         @StartTime DATETIME,  
  178.         @TruncLog  VARCHAR(255)  
  179. SELECT  @StartTime  =  GETDATE (),  
  180.         @TruncLog  =  'BACKUP LOG '  + db_name() + ' WITH TRUNCATE_ONLY'  
  181. DBCC SHRINKFILE (@LogicalFileName, @NewSize)  
  182. EXEC (@TruncLog)  
  183. -- Wrap the log if necessary.  
  184. WHILE     @MaxMinutes >  DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired  
  185.       AND @OriginalSize  = (SELECT size FROM sysfiles WHERE  name  = @LogicalFileName)   
  186.       AND (@OriginalSize * 8 /1024) >  @NewSize   
  187.   BEGIN -- Outer loop.  
  188.     SELECT @Counter  =  0   
  189.     WHILE  ((@Counter <  @OriginalSize / 16) AND (@Counter  <   50000 ))  
  190.       BEGIN -- update  
  191.         INSERT DummyTrans VALUES ('Fill Log')   
  192.         DELETE DummyTrans  
  193.         SELECT @Counter  = @Counter + 1  
  194.       END    
  195.     EXEC (@TruncLog)   
  196.   END    
  197. SELECT 'Final Size of ' + db_name() + ' LOG is ' +  
  198.         CONVERT(VARCHAR(30),size) + ' 8K pages or ' +  
  199.         CONVERT(VARCHAR(30),(size*8/1024)) + 'MB'  
  200.   FROM sysfiles  
  201.   WHERE name  = @LogicalFileName  
  202. DROP TABLE DummyTrans  
  203. SET NOCOUNT OFF  
  204. 8、 说明:更改某个表  
  205. exec sp_changeobjectowner 'tablename','dbo'  
  206. 9、 存储更改全部表  
  207. CREATE PROCEDURE dbo.User_ChangeObjectOwnerBatch  
  208.  @OldOwner as NVARCHAR(128),  
  209.  @NewOwner as NVARCHAR(128)  
  210. AS  
  211. DECLARE @Name   as NVARCHAR(128)  
  212. DECLARE @Owner  as NVARCHAR(128)  
  213. DECLARE @OwnerName  as NVARCHAR(128)  
  214. DECLARE curObject CURSOR FOR  
  215.  select 'Name'   = name,  
  216.   'Owner'   = user_name(uid)  
  217.  from sysobjects  
  218.  where user_name(uid)=@OldOwner  
  219.  order by name  
  220. OPEN  curObject  
  221. FETCH NEXT FROM curObject INTO @Name, @Owner  
  222. WHILE(@@FETCH_STATUS = 0 )  
  223. BEGIN      
  224.  if @Owner =@OldOwner  
  225.  begin  
  226.   set @OwnerName  = @OldOwner + '.' + rtrim(@Name)  
  227.   exec sp_changeobjectowner @OwnerName, @NewOwner  
  228.  end  
  229. -- select @name,@NewOwner,@OldOwner  
  230.  FETCH NEXT FROM curObject INTO @Name, @Owner  
  231. END  
  232. close curObject  
  233. deallocate curObject  
  234. GO  
  235.   
  236. 10、 SQL SERVER中直接循环写入数据  
  237. declare @i int  
  238. set @i = 1   
  239. while @i< 30   
  240. begin  
  241.    insert into test (userid) values(@i)  
  242.    set @i =@i+1  
  243. end  
  244. 小 记存储过程中经常用到的本周,本月,本年函数  
  245. Dateadd(wk,datediff(wk,0,getdate()),-1)  
  246. Dateadd(wk,datediff(wk,0,getdate()),6)  
  247. Dateadd(mm,datediff(mm,0,getdate()),0)  
  248. Dateadd(ms,-3,dateadd(mm,datediff(m,0,getdate())+1,0))  
  249. Dateadd(yy,datediff(yy,0,getdate()),0)  
  250. Dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))  
  251. 上 面的SQL代码只是一个时间段  
  252. Dateadd(wk,datediff(wk,0,getdate()),-1)  
  253. Dateadd(wk,datediff(wk,0,getdate()),6)  
  254. 就 是表示本周时间段.  
  255. 下面的SQL的条件部分,就是查询时间段在本周范围内的:  
  256. Where Time BETWEEN Dateadd(wk,datediff(wk,0,getdate()),-1) AND Dateadd(wk,datediff(wk,0,getdate()),6)  
  257. 而 在存储过程中  
  258. select @begintime  =  Dateadd (wk,datediff(wk,0,getdate()),-1)  
  259. select @endtime  =  Dateadd (wk,datediff(wk,0,getdate()),6) 
分享到:
评论

相关推荐

    SQLSERVER语句收集

    SQLSERVER语句收集SQLSERVER语句收集SQLSERVER语句收集SQLSERVER语句收集SQLSERVER语句收集SQLSERVER语句收集SQLSERVER语句收集SQLSERVER语句收集SQLSERVER语句收集SQLSERVER语句收集

    sql经典语句[收集].pdf

    本文档主要涵盖了多个与SQL相关的经典语句,特别是关于内存设置、文件和文件组管理、日期处理、字符串操作以及数据库对象创建和调整等方面的知识点。 首先,关于内存选项的设置,SQL Server允许管理员通过`sp_...

    经典SQL语句收集

    经典SQL语句收集

    SQL语句收集(实用版)

    "SQL语句收集(实用版)"这个压缩包文件,显然是一份包含了多种实用SQL技巧和示例的文档集合,旨在帮助用户提升SQL查询的效率和准确性。以下是对标题和描述中所提及知识点的详细说明: 1. **基本查询**:SQL的基本...

    sql精典语句收集

    在"sql精典语句收集"的压缩包中,实例文件很可能是包含各种实际应用场景下的SQL语句,这些实例可以帮助学习者理解和掌握SQL的实用技巧。通过分析和实践这些实例,你可以深入理解SQL的精髓,并提升你在数据库管理上的...

    精妙SQL语句收集(全面)

    精妙SQL语句收集;精妙SQL语句收集;精妙SQL语句收集。

    菜鸟级SQL21天自学通+SQL语言学习循序渐进+SQL经典语句

    《SQL经典语句》则可能是一本实用手册,收集了大量常见的SQL语句示例,便于读者在实际工作中快速查找和参考。 通过这三本书的学习,你可以建立起完整的SQL知识体系,从简单的数据查询到复杂的数据库设计,从基础的...

    SQL Server 经典语句大全 CHM 版.rar

    SQL经典语句大全,收集我们在平时使用SQL时的一些语法语句汇集,比如创建、备份、删除数据库的SQL脚本,这些当然是比较简了,还有复杂点的像备份、创建索引、复合SQL语句、创建视图、高级运算查询、EXCEPT 运算符、...

    SQL常用语句收集资料

    这个"SQL常用语句收集资料"的压缩包包含了多种与SQL相关的实用技巧和常见问题的解决方案,涉及了数据处理、查询优化、数据库操作等多个方面。下面我们将深入探讨这些主题: 1. **删除重复数据**:在数据清洗过程中...

    精妙SQL语句收集

    精妙SQL语句收集,真的不错哦

    Sql Server ExpressProfiler 监视Sql语句

    它允许数据库管理员和开发人员实时跟踪和记录数据库服务器上的事件,包括SQL语句的执行情况,以优化性能、查找问题或调试应用程序。在公司环境中,由于未安装官方的Profiler,你可能已经下载了第三方的...

    常用SQL查询语句--绝对经典

    经典的常用SQL查询语句,比较实用,一些常用的组合语句一一收集

    经典SQL语句收集(ORACLE)

    ### 经典SQL语句收集(ORACLE) #### 一、经典查询语句 在Oracle数据库中,查询语句是日常开发与维护中最常见的操作之一。以下列出了一些经典的查询语句示例: 1. **查询所有用户(排除特定用户)**: ```sql ...

    SQL精妙语句收集!

    根据提供的文件信息,我们可以整理出一系列关于SQL的重要知识点与实用语句。这些知识点涵盖了数据库管理、表操作、数据查询等多个方面,对初学者乃至有一定经验的开发者都非常有帮助。 ### 数据库操作 #### 创建...

    经典Sql面试题收集.doc

    经典Sql面试题收集.doc

    sql常用语句 个人收集的几个常用语句

    ### SQL常用语句详解 #### 一、修改表结构:使用`ALTER TABLE`与`ALTER COLUMN` 在SQL中,我们经常需要对现有的表结构进行修改,例如改变某个字段的数据类型或者增加新的字段等。其中,`ALTER TABLE`与`ALTER ...

    收集的经典sql语句

    动态SQL允许我们在运行时构建SQL语句,使得程序更加灵活。 1. **动态SQL的基本语法**: - `EXEC`或`EXECUTE`关键字可以用来执行存储过程或动态生成的SQL语句。 - `sp_executesql`是SQL Server提供的一种更安全的...

Global site tag (gtag.js) - Google Analytics