`

转贴 精妙SQL语句学习

阅读更多

在前人的基础上,我对比较优秀的sql语句进行了重新的编辑和整理,力求精短易学。希望大家可以举一反三,更好学习sql语句,如果有问题,还请翻阅相关书籍。下列语句部分是Mssql语句,不可以在access中使用。
注:搜集来自网络,为了方便查询,我将此文发在我的网站里http://www.ekuaiji.com/articleDetail.asp?id=529,随时更新。
欢迎大家发帖,接龙!

SQL分类:
DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)
DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)
DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)

首先,简要介绍基础语句:
1、说明:创建数据库
CREATE DATABASE database-name
2、说明:删除数据库
drop database dbname
3、说明:备份sql server
--- 创建 备份数据的 device
USE master
EXEC sp_addumpdevice 'disk', 'testBack',  'c:\mssql7backup\MyNwind_1.dat'
--- 开始 备份
BACKUP DATABASE pubs TO testBack  
4、说明:创建新表
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
根据已有的表创建新表:
   A:create table tab_new like tab_old (使用旧表创建新表)
   B:create table tab_new as select col1,col2… from tab_old definition only
5、说明:删除新表drop table tabname
6、说明:增加一个列
Alter table tabname add column col type
注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
7、说明:添加主键: Alter table tabname add primary key(col)
说明:删除主键: Alter table tabname drop primary key(col)
8、说明:创建索引:create [unique] index idxname on tabname(col….) 
删除索引:drop index idxname
注:索引是不可更改的,想更改必须删除重新建。
9、说明:创建视图:create view viewname as select statement
删除视图:drop view viewname
10、说明:几个简单的基本的sql语句
选择:select * from table1 where 范围
插入:insert into table1(field1,field2) values(value1,value2)
删除:delete from table1 where 范围
更新:update table1 set field1=value1 where 范围
查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料!
排序:select * from table1 order by field1,field2 [desc]
总数:select count(*) as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1
11、说明:几个高级查询运算词
A: UNION 运算符
UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。
B: EXCEPT 运算符
EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。 
C: INTERSECT 运算符
INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。
注:使用运算词的几个查询结果行必须是一致的。
12、说明:使用外连接
A、left outer join:
左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。
B:right outer join:
右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
C:full outer join:
全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。


其次,大家来看一些不错的sql语句
1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)
法一:select * into b from a where 1<>1
法二:select top 0 * into b from a

2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用)
insert into b(a, b, c) select d,e,f from b;

3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)
insert into b(a, b, c) select d,e,f from b in ‘具体数据库’  where 条件
例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where..

4、说明:子查询(表名1:a 表名2:b)
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)

5、说明:显示文章、提交人和最后回复时间
select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b

6、说明:外连接查询(表名1:a 表名2:b)
select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

7、说明:在线视图查询(表名1:a )
select * from (SELECT a,b,c FROM a) T where t.a > 1;

8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括
select * from table1 where time between time1 and time2
select a,b,c, from table1 where a not between 数值1 and 数值2

9、说明:in 的使用方法
select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)

10、说明:两张关联表,删除主表中已经在副表中没有的信息
delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )

11、说明:四表联查问题:
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 .....

12、说明:日程安排提前五分钟提醒
SQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())>5

13、说明:一条sql 语句搞定数据库分页
select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段

14、说明:前10条记录
select top 10 * form table1 where 范围

15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)
select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)

16、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表
(select a from tableA ) except (select a from tableB) except (select a from tableC)

17、说明:随机取出10条数据
select top 10 * from tablename order by newid()

18、说明:随机选择记录
select newid()

19、说明:删除重复记录
Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)

20、说明:列出数据库里所有的表名
select name from sysobjects where type='U'

21、说明:列出表里的所有的
select name from syscolumns where id=object_id('TableName')

22、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select 中的case。
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
显示结果:
type  vender   pcs
电脑   A        1
电脑   A        1
光盘   B        2
光盘   A        2
手机   B        3
手机   C        3

23、说明:初始化表table1
TRUNCATE TABLE table1

24、说明:选择从10到15的记录
select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc

分享到:
评论

相关推荐

    常用SQL语句技法[转贴]

    根据给定的文件信息,以下是对“常用SQL语句...以上SQL语句技法涵盖了数据库的基本操作,包括数据库和表的创建、删除、修改,数据的增删改查,以及更高级的索引、视图和集合运算等,对于学习和掌握SQL语言非常有帮助。

    凹丫丫ASP.NET新闻系统学习(转贴)

    【凹丫丫ASP.NET新闻系统学习(转贴)】是一个基于Visual Studio 2005(VS2005)和SQL Server 2005的教程资源,旨在帮助开发者学习如何构建一个基本的新闻信息发布系统。这个系统可能涵盖了新闻的添加、编辑、删除...

    Win7下安装SQLServer 2000的解决方案

    提供的“转贴:win7下成功安装sql server 2000 百度空间_应用平台.mht”文件可能包含了作者在安装过程中遇到的问题及解决方法,可作为参考。记得在安装过程中详细记录每一步,以便于问题排查和后续维护。

    易语言动网转贴.rar

    3. **数据库操作**:将抓取的数据存入目标论坛的数据库,可能涉及到SQL语句的编写,以及数据库连接的建立和管理。 4. **用户认证**:考虑到论坛通常需要登录才能访问,开发者可能需要实现模拟登录功能,以获取用户...

    易语言源码动网转贴.rar

    这可能涉及到SQL查询语句的编写,以及对数据库结构的深入理解,包括用户表、帖子表、分类表等关键数据表的结构。 2. 数据转换逻辑:在数据迁移过程中,必须确保数据的一致性和完整性。源码可能包含了各种数据格式...

    完全删除sql2005

    完全删除sql2005,转贴:【应用】如何彻底删除SQL Server2005 百度空间_应用平台

    Axis学习笔记(网页转贴)

    **Axis学习笔记(网页转贴)** Axis是一个开源的Java库,主要用于创建和使用Web服务。它是Apache软件基金会的一部分,广泛应用于开发基于SOAP(简单对象访问协议)的Web服务。本学习笔记将深入探讨Axis在Web服务开发...

    《SQL Server 2000实用教程(高职-李伟红)》电子教案

    转贴.

    动网转贴.zip易语言项目例子源码下载

    易语言的设计理念是“易学易用”,它的语法简洁明了,很多语句直接采用中文,降低了学习编程的门槛。例如,“创建窗口”、“设置文本”等命令,直观且易于理解,使得编程变得更加直观和便捷。 在“动网转贴”项目中...

    动网转贴.e.rar

    【压缩包子文件的文件名称列表】:虽然没有给出具体的子文件名称,但通常一个动网论坛的备份可能会包含数据库文件(如SQL文件)、帖子内容的文本文件、用户信息、附件等。这些文件可能是以结构化的格式(如CSV、XML...

    [转贴]Symbian编程VC开发环境设置 (方便个人学习用,转载自 rocklys的专栏,转贴请搜索原作者) - waferham的专栏 - CSDNBlog.mht

    [转贴]Symbian编程VC开发环境设置 (方便个人学习用,转载自 rocklys的专栏,转贴请搜索原作者) - waferham的专栏

    动易系统的论坛转贴工具 -ASP源码.zip

    开发者或者有兴趣学习ASP的人可以研究这个源码,理解如何在ASP环境中处理用户交互、数据库操作、论坛数据结构以及实现转贴功能的具体步骤。 压缩包内的“内容来自存起来软件站www.cqlsoft.com.txt”可能是一个文本...

    BFC UBB转贴器

    由于现在流行的转贴工具都是基于浏览器的,转换速度比较慢,还得打开浏览器才能使用(同时受到浏览器版本限制)。 &lt;br&gt; 而这个小程序则完全不依赖于浏览器,以BFC采集器的UBB转换模块为基础,转换速度超快,...

    QTP数据库连接

    通过理解如何配置连接参数,执行SQL语句,以及处理返回的结果,测试人员可以更有效地确保应用程序的数据层功能正确无误。在实际操作中,根据不同的数据库类型,可能还需要调整连接字符串和驱动程序,确保兼容性。...

    动易系统的论坛转贴工具

    《动易系统的论坛转贴工具详解与应用》 在互联网信息交流日益频繁的今天,论坛作为用户互动的重要平台,其内容分享与传播的作用不容忽视。动易系统的论坛转贴工具,便是为了解决用户在论坛间便捷分享内容而设计的一...

    论坛转贴 v1.0 JS版-源码.zip

    总的来说,"论坛转贴 v1.0 JS版-源码.zip"是一个JavaScript实现的论坛转贴功能的源代码包,旨在供学习和研究。用户需要解压密码来访问源码,并且可以参考"内容来自存起来软件站www.cqlsoft.com.txt"这个文件获取更多...

    Html处理软件、转贴工具(源代码)

    去除Html中的干扰码等(样例中以轻之国度的干扰码为例) 配置文件语法: 方法类型(整数) 最大匹配长度(整数) 字符串1(删除开头) 字符串2(删除结尾) 方法类型: 1:删除单行 2:删除行与行之间的

    东度极品论坛转贴工具

    东度极品论坛转贴工具东度极品论坛转贴工具

    电子政务-导电泡棉转贴装置.zip

    在“导电泡棉转贴装置”这个特定的场景下,我们可能是在讨论一种用于电子政务设备或系统中的特殊组件。 导电泡棉是一种具有导电性能的泡沫材料,通常用于电子设备的屏蔽、接地或防静电保护。在电子政务设备中,这种...

Global site tag (gtag.js) - Google Analytics