常用经典SQL语句大全完整版推荐文档_第1页
常用经典SQL语句大全完整版推荐文档_第2页
常用经典SQL语句大全完整版推荐文档_第3页
常用经典SQL语句大全完整版推荐文档_第4页
常用经典SQL语句大全完整版推荐文档_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、常用经典SQL语句大全完整版-详解+实例下列语句部分是Mssql语句,不可以在access中使用。SQL分 类:DD数据定义语言(CREATE ALTER DROP DECLARE) DM数据操纵语言(SELECT DELETE UPDATE INSERT) DC数据控制语言(GRANT REVOKE COMMIT ROLLBACK) 首先,简要介绍基础语句:1、说明:创建数据库CREATE DATABASE database -n ame2、说明:删除数据库drop database dbn ame3、说明:备份sql server-创建备份数据的deviceUSE masterEXECsp

2、_addumpdevice disk , testBack , c: mssql7backupM yNwind_1.dat -开始备份BACKUP DATABASE pubs TO testBack4、说明:创建新表create table tab name(col1 type1 n ot n ull primary key,col2type2 not null,.)根据已有的表创建新表:A: create table tab_new like tab_old (使用旧表创建新表)B: create table tab_new as select col1,col2from tab_oldde

3、finition only5、说明:删除新表: drop table tab name6、说明:增加一个列: Alter table tab name add colum n col type注:列增加后将不能删除。DB2中列加上后数据类型也不能改变, 唯一能改变的是增加varchar类型的长度。7、说明:添加主键: Alter table tab name add primary key(col)说明:删除主键: Alter table tab name drop primary key(col)8说明:仓U建索弓丨:create unique index idxname on tabnam

4、e(col .) 删除索引:drop in dex idx name注:索引是不可更改的,想更改必须删除重新建。9、说明:仓 U建视图: create view view name as select stateme nt删除视图: drop view view name10、说明:几个简单的基本的sql语句选择:select * from tablel where范围插入:insert into table1(field1,field2)values(value1,value2)删除:delete from tablel where范围更新:update tablel set field1=

5、value1 where范围查找:select * from tablel where fieldl like %value1%-like的语法很精妙,查资料!排序:select * from tablel order by field1,field2 desc总数:select count * as totalcount from tablel求和:select sum(field1) as sumvalue from table1平均:select avg(field1) as avgvalue from table1最大:select max(field1) as maxvalue fr

6、om table1最小:select min(field1) as minvalue from table111、说明:几个高级查询运算词A: UNION运算符UNIO N运算符通过组合其他两个结果表(例如 TABLE1和TABLE2并消去表中任何重复行而派生出一个结果表。当ALL随UNION 一起使用时(即UNION ALL),不消除重复行。两种情况下, 派生表的每一行不是来自 TABLE1就是来自TABLE2B: EXCEPT运算符EXCEPT运算符通过包括所有在 TABLE1中但不在TABLE2中的 行并消除所有重复行而派生出一个结果表。当ALL随EXCEPT一起 使用时(EXCEPT

7、ALL),不消除重复行。C: INTERSECT 运算符INTERSECT运算符通过只包括 TABLE1和TABLE2中都有的行并消除所有重复行而派生出一个结果表。 当ALL随INTERSECT一起使用时(INTERSECT ALL),不消除重复行。注:使用运算词的几个查询结果行必须是一致的。12、说明:使用外连接A、left outer join左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOINb ON a.a = b.cB: right outer

8、 join:右外连接(右连接):结果集既包括连接表的匹配连接行, 也包括 右连接表的所有行。C: full outer join :全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中 的所有记录。其次,大家来看一些不错的sql语句1、说明:复制表(只复制结构,源表名:a新表名:b) (Access 可用)法一:select * into b from a where 11法二:select top 0 * into b from a2、 说明:拷贝表(拷贝数据,源表名:a目标表名:b) (Access 可用)in sert into b(a, b, c) select d,e,f fro

9、m b;3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径)(Access 可用)in sert 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,b,c from a where a IN (1,2,3)5、说明:显示文章、提交人和最后回复时间select a.title,a.user

10、 name,b.adddate from table a,(selectmax(adddate) adddate from table where table.title二a.title) b、说明:外连接查询(表名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.c7、说明:在线视图查询(表名1: a )select * from (SELECT a,b,c FROM a) T where t.a 1;8说明:between的用法,between限制查询数据范围时包括了边界值,no

11、t between 不包括select * from tablel where time between timel and time2select a,b,c, from tablel where a not between数值 1 and 数值29、说明:in的使用方法select * from tablel where a not in (值 1,值 2,值4,值 6)10、说明:两张关联表,删除主表中已经在副表中没有的信息delete from table1 where not exists ( select * from table2 where table1.field1=tabl

12、e2.field1 )11、说明:四表联查问题:select * from a left inner joi n b on a.a=b.b right inner joinc on a.a=c.c inner joi n d on a.a=d.d where .12、说明:日程安排提前五分钟提醒SQL: select * from 日程安排 where datediff( minute ,f 开始 时间,getdate()513、说明:一条sql语句搞定数据库分页select top 10 b.* from (select top 20主键字段,排序字段 from表名order by 排序字段

13、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 table name ta where a=(select max(a) fromtable name tb where tb.b=ta.b)16、说明:包括所有在 TableA 中但不在TableB和TableC中的行并

14、消除所有重复行而派生出一个结果表(select a from tableA ) except (select a from tableB) except(select a from tableC)17、说明:随机取出10条数据select top 10 * from table name order by n ewid()18、说明:随机选择记录select n ewid()19、说明:删除重复记录Delete from table name where id not in (select max(id) fromtable name group by col1,col2,.)20、说明:列出

15、数据库里所有的表名select name from sysobjects where type= U21、说明:列出表里的所有的select namefrom syscolumns where id=object_id( TableNamd )22、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似 select中的case。select type,sum(case vender when A then pcs else 0end),sum(case vender when C then pcs else 0 end),sum(case ve

16、nder when B the n pcs else 0 end) FROM tablenamegroup by type电脑A 1光盘B 223、说明:初始化表table1TRUNCATE TABLE table124、说明:选择从10到15的记录select top 5 * from (select top 15 * from table order by id asc) table_ 另廿名 order by id desc随机选择数据库记录的方法(使用Randomize函数,通过SQL语句实 现)对存储在数据库中的数据来说,随机数特性能给出上面的效果,但它们可能太慢了些。你不能要求AS

17、P“找个随机数”然后打印出来。 实际上常见的解决方案是建立如下所示的循环:Ran domizeRNumber = In t(R nd*499) +1While Not objRec.EOFIf objRec(ID) = RNumber THEN.这里是执行脚本 end ifobjRec.MoveNextWend这很容易理解。首先,你取出1到500范围之内的一个随机数(假 设500就是数据库内记录的总数)。然后,你遍历每一记录来测试 ID的值、检查其是否匹配RNumber满足条件的话就执行由THEN关 键字开始的那一块代码。假如你的RNumber等于495,那么要循环一 遍数据库花的时间可就长了

18、。虽然500这个数字看起来大了些,但相 比更为稳固的企业解决方案这还是个小型数据库了,后者通常在一个数据库内就包含了成千上万条记录。这时候不就死定了?采用SQL你就可以很快地找出准确的记录并且打开一个只包含该记录的 recordset,如下所示:Ran domizeRNumber = In t(R nd*499) + 1SQL = SELECT * FROM Customers WHERE ID = & RNumberset objRec = ObjC onn .Execute(SQL)Response.WriteRNumber & = & objRec(ID) & & objRec(c_em

19、ail)不必写出RNumber和ID,你只需要检查匹配情况即可。只要你 对以上代码的工作满意,你自可按需操作“随机”记录。Recordset没有包含其他内容,因此你很快就能找到你需要的记录这样就大大降 低了处理时间。再谈随机数现在你下定决心要榨干Random函数的最后一滴油,那么你可能 会一次取出多条随机记录或者想采用一定随机范围内的记录。把上面的标准Ran do m示例扩展一下就可以用SQL应对上面两种情况了。为了取出几条随机选择的记录并存放在同一recordset内,你可以存储三个随机数,然后查询数据库获得匹配这些数字的记录:SQL = SELECT * FROM Customers WH

20、ERE ID = & RNumber & ” OR ID = & RNumber2 & ” OR ID = & RNumber3假如你想选出10条记录(也许是每次页面装载时的10条链接的 列表),你可以用BETWEE或者数学等式选出第一条记录和适当数 量的递增记录。这一操作可以通过好几种方式来完成,但是SELECT语句只显示一种可能(这里的ID是自动生成的号码):SQL = SELECT * FROM Customers WHERE ID BETWEEN & RNumber & AND & RNumber & + 9注意:以上代码的执行目的不是检查数据库内是否有 9条并发记录。随机读取若干条记

21、录,测试过Access 语法:SELECT top 10 * From 表名 ORDER BY Rnd(id)Sql server:select top n * from表名 order by n ewid()mysql select * From 表名 Order By ran d() Limit nAccess左连接语法(最近开发要用左连接,Access帮助什么都没有,网上没有Access的SQL说明,只有自己测试,现在记下以备后查)语法 select table1.fd1,table1,fd2,table2.fd2 From tableileft join table2 on table

22、1.fd1,table2.fd1 where .使用SQL语句 用 代替过长的字符串显示语法:SQL数据库:select case when len(field)10 thenleft(fie ld,10)+ . else field end as news_name,news_idfrom table nameAccess 数据库:SELECTiif(len(field)2,left(field,2)+ . ,field)FROMablename;Conn .Execute 说明Execute 方法该方法用于执行SQL语句。根据SQL语句执行后是否返回记录集, 该方法的使用格式分为以下两种:

23、1. 执行SQL查询语句时,将返回查询得到的记录集。用法为:Set对象变量名二连接对象.Execute(SQL查询语言)Execute方法调用后,会自动创建记录集对象,并将查询结果存 储在该记录对象中,通过 Set方法,将记录集赋给指定的对象保存, 以后对象变量就代表了该记录集对象。2. 执行SQL的操作性语言时,没有记录集的返回。此时用法为:连接对象.Execute SQL 操作性语句,RecordAffected,Optio n RecordAffected 为可选项,此出可放置一个变量,SQL语句执行后,所生效的记录数会自动保存到该变量中。通过访问该变量,就可知道SQL语句队多少条记录进

24、行了操作。 Option可选项,该参数的取值通常为 adCMDText它用于告 诉ADO应该将Execute方法之后的第一个字符解释为命令文本。通 过指定该参数,可使执行更高效。 BeginTrans、RollbackTrans、CommitTrans 方法这三个方法是连接对象提供的用于事务处理的方法。Beg inTrans 用于开始一个事物;RollbackTrans用于回滚事务;CommitTrans用 于提交所有的事务处理结果,即确认事务的处理。事务处理可以将一组操作视为一个整体,只有全部语句都成功执 行后,事务处理才算成功;若其中有一个语句执行失败,则整个处理 就算失败,并恢复到处里前

25、的状态。BeginTrans和CommitTrans用于标记事务的开始和结束,在这 两个之间的语句,就是作为事务处理的语句。判断事务处理是否成功, 可通过连接对象的Error集合来实现,若Error集合的成员个数不为 0,则说明有错误发生,事务处理失败。Error集合中的每一个Error 对象,代表一个错误信息。SQL语句大全精要2006/10/26 13:46DELETED句DELETED句:用于创建一个删除查询,可从列在 FRO M子句之中的 一个或多个表中删除记录,且该子句满足 WHERE子句中的条件,可 以使用DELETED除多个记录。语法:DELETE table.* FROM ta

26、ble WHERE criteria语法:DELETE * FROM table WHERE criteria二查询的字说明:table参数用于指定从其中删除记录的表的名称。criteria 参数为一个表达式,用于指定哪些记录应该被删除的表达 式。可以使用Execute方法与一个DROP语句从数据库中放弃整个表。 不过,若用这种方法删除表,将会失去表的结构。不同的是当使用 DELETE只有数据会被删除;表的结构以及表的所有属性仍然保留, 例如字段属性及索引。UPDATE有关 UPDATJE在ORACL数据库中表 A ( ID ,FIRSTNAME, LASTNAME )表 B( ID,LAST

27、NAME)表A中原来ID,FIRSTNAME两个字段的数据是完整的表B中原来ID,LASTNAM两个字段的数据是完整的现在要把表B中的LASTNAM字段的相应的数据填入到 A表中 LASTNAM相应的位置。两个表中的ID字段是相互关联的。先谢谢了 !!!update a set aast name=(select bast name from b wherea.id二b.id)掌握SQL四条最基本的数据操作语句:Insert ,Select,Update 和 Delete。练掌握SQL是数据库用户的宝贵财富。在本文中,我们将引导你 掌握四条最基本的数据操作语句一SQL的核心功能一来依次介绍比较

28、 操作符、选择断言以及三值逻辑。当你完成这些学习后,显然你已经 开始算是精通SQL了。在我们开始之前,先使用 CREATE TABLE句来创建一个表(如 图1所示)。DDL语句对数据库对象如表、列和视进行定义。它们并 不对表中的行进行处理,这是因为DDL语句并不处理数据库中实际的 数据。这些工作由另一类 SQL语句一数据操作语言(DML语句进行 处理。SQL中有四种基本的 DM操作:INSERTSELECTUPDAT和 DELETE 由于这是大多数SQL用户经常用到的,我们有必要在此对它们进行一 一说明。在图1中我们给出了一个名为EMPLOYEE的表。其中的每一行对应一个特定的雇员记录。请熟悉

29、这张表,我们在后面的例子中将 要用到它The Execute method executes a specified query, SQLstateme nt, stored procedure, or provider-specific text.Execute的作用是:执行一个查询语句、陈述语句、程序或技术提供 对象provider 的详细文本。The results are stored in a new Recordset object if it isa row-retur ning query. A closed Recordset object will be returned

30、if it is not a row-returni ng query.如果返回行row-returning 查询语句,那么结果将被存储在一个新 的记录对象中;如果它不是一个返回行row-returni ng 查询语句, 那么它将返回一个关闭的记录对象。Note: The retur ned Recordset is always a read-only,forward-only Recordset!注意:返回的Recordset是一个只读的、只向前兼容的Recordset。Tip: To create a Recordset with more fun ctio nality, firstc

31、reate a Recordset object. Set the desired properties, and then use the Recordset objects Open method to execute the query.提示:在第一次创建Recordset对象时,需要将它创建为一个更具功 能性的Recordset对象。设置一个我们所希望的属性,使用Recordset 对象的Open方法去执行查询语句。Syn tax for row-returni ng row-returni ng 返回行语法Set objrs=objc onn .Execute(comma ndtex

32、t,ra,opti ons)Syn tax for non-row-returni ngnon-row-returning非返回行语法objc onn .Execute comma ndtext,ra,optio nsParameter参数Descriptio n描述comma ndteRequired. The SQL stateme nt, stored procedure, or provider-specific text to execute必要参数。指定需要执行的SQL语句,现存的程序或技术提供对 象provider的详细文本raOpti on al. The nu mber of

33、 records affected by the query 可选参数。返回查询语句执行的记录数opti onsOpti on al. Sets how the provider should evaluate the comma ndtext parameter. Can be one or more CommandTypeEnunor ExecuteOptionEnum values. Default is adCmdU nspecified可选参数。设置技术提供对象provider应该如何评估 Comma ndTex属性的功能。匕可以是一个或多个CommandTypeEnu或 Execu

34、teOptionEnum 的值。默认值是 adCmdU nspecifiedExample案例Comma ndTypeE num ValuesConstant 常量Va ue值Descripti on描述adCmdU nspecified-1Does not specify the comma nd type argume nt.不指疋指令类型自变量adCmdText1Evaluates Comma ndText as a textual definitionof a commanobr stored procedurecall.指示提供者应该将Source作为命令的文本疋义 来计算。adCm

35、dTable2Evaluates Comma ndText as a table n ame whose colu mns are all retur ned by an in ternally gen erated SQL query.指示ADO生成SQL查询以便从在Source中命名 的表中返回所有行adCmdStoredProc4Evaluates Comma ndText as a stored procedure n ame.将CommandTex作为一个已存的程序名称adCmdU nknown8In dicates that the type of comma nd in the

36、Comma ndText property is not known.默认值。指疋未知的CommandTex属性命令adCmdFile256Evaluates Comma ndText as the file n ame of a persiste ntly stored Recordset. Used with Recordset.Ope n or Requery only. 指示应从在Source中命名的文件中恢复保留(保存的)Recordset。它仅能与 Recordset.Open 或Requery指令一起使用adCmdTableDirect512Evaluates Comma ndT

37、ext as a table n ame whose colu mns are all retur ned. Used with Recordset.Ope n or Requery only. To use the Seek method, the Recordset must be ope ned with adCmdTableDirect. This value cannot be comb ined with the ExecuteOptio nEnum value adAs yn cExecute.指示提供者更改从在Source中命名的表中返 回所有行/将CommandTex作为一个

38、表的名称(该表的列全 部是通过内部的SQL查询语句返回的)。它仅适 用 Recordset.Open 或 Requery 指令;如果需 要使用查找方式,那么Recordset必须以 adCmdTableDirect打开。这个值不能与 ExecuteOptionEnum 值 adAsyncExecute 一起使 用ExecuteOptio nEnum ValuesConstant 常量V alue 值Descripti on 描述adOpti onUn specified-In dicates that the comma nd is1un specified.指明为指定的指令adAs yn c

39、ExecuteIn dicates that the comma nd shouldexecute asynchrono usly. This value cannot be combined with the CommandTypeEnuralue adCmdTableDirect.指明指令是否需要异步执行。这个值不能与 CommandTypeEnu之中的 adCmdTableDirect 一起使用adAs yn cFetchIn dicates that the remai ning rowsafter the initialquantity specified in theCacheSi

40、ze property should be retrieved asyn chro no usly.指明在CacheSize属性中指定了初始量以后, 是否应该异步获取保留行remaining rowsadAs yn cFetchN on BlocIn dicates that the main thread n everkingblocks while retriev in g. If the requestedrow has not been retrieved,the current rowautomatically movesto the end of the file. If you ope n a Recordset from a Stream containing a persiste ntly storedRecordset, adAs yn cFetchN on B

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论