常用经典SQL语句大全完整版

上传人:仙*** 文档编号:92902250 上传时间:2022-05-19 格式:DOC 页数:21 大小:59KB
收藏 版权申诉 举报 下载
常用经典SQL语句大全完整版_第1页
第1页 / 共21页
常用经典SQL语句大全完整版_第2页
第2页 / 共21页
常用经典SQL语句大全完整版_第3页
第3页 / 共21页
资源描述:

《常用经典SQL语句大全完整版》由会员分享,可在线阅读,更多相关《常用经典SQL语句大全完整版(21页珍藏版)》请在装配图网上搜索。

1、-常用经典SQL语句大全完整版-详解+实例以下语句局部是Mssql语句,不可以在access中使用。SQL分类:DDL数据定义语言(CREATE,ALTER,DROP,DECLARE)DML数据操纵语言(SELECT,DELETE,UPDATE,INSERT)DCL数据控制语言(GRANT,REVOKE,MIT,ROLLBACK)首先,简要介绍根底语句:1、说明:创立数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server- 创立 备份数据的 deviceUSE masterE*EC sp_a

2、ddumpdevice disk, testBack, c:mssql7backupMyNwind_1.dat- 开场 备份BACKUP DATABASE pubs TO testBack4、说明:创立新表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 definitio

3、n only5、说明:删除新表:drop table tabname6、说明:增加一个列: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 inde* id*name on tabname(col.)删除索引:drop i

4、nde* id*name注:索引是不可更改的,想更改必须删除重新建。9、说明:创立视图:create view viewname as select statement删除视图:drop view viewname10、说明:几个简单的根本的sql语句选择:select * from table1 where 范围插入:insert into table1(field1,field2) values(value1,value2)删除:delete from table1 where 范围更新:update table1 set field1=value1 where 范围查找:select *

5、 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 ma*(field1) as ma*value from table1最小:select min(f

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

7、行。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 JOIN b ON a.a = b.cB:right outer jo

8、in:右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。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可用)insert into b(a, b, c) select d,e,f from b;3、说明:跨

9、数据库之间表的拷贝(具体数据使用绝对路径) (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

10、,b.adddate from table a,(select ma*(adddate) adddate from table where table.title=a.title) b6、说明:外连接查询(表名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限制查询数据范围时包括了边界值,not be

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

12、d1 )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()513、说明:一条sql 语句搞定数据库分页select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a

13、,表名 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 ma*(a) from tablename tb where tb.b=ta.b)16、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有

14、重复行而派生出一个结果表(select a from tableA ) e*cept (select a from tableB) e*cept (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 ma*(id) from tablename group by col1,col2,.)20、说明:列出数据库里所有的

15、表名select name from sysobjects where type=U21、说明:列出表里的所有的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 whe

16、n B then pcs else 0 end) FROM tablename group by type显示结果:typevender pcs电脑 A 1电脑 A 1光盘 B 2光盘 A 2手机 B 3手机 C 323、说明:初始化表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语句实现对存储在数据库中的数据来说

17、,随机数特性能给出上面的效果,但它们可能太慢了些。你不能要求ASP找个随机数然后打印出来。实际上常见的解决方案是建立如下所示的循环:RandomizeRNumber = Int(Rnd*499) +1While Not objRec.EOFIf objRec(ID) = RNumber THEN. 这里是执行脚本 .end ifobjRec.MoveNe*tWend这很容易理解。首先,你取出1到500范围之内的一个随机数假设500就是数据库内记录的总数。然后,你遍历每一记录来测试ID 的值、检查其是否匹配RNumber。满足条件的话就执行由THEN 关键字开场的那一块代码。假设你的RNumbe

18、r 等于495,则要循环一遍数据库花的时间可就长了。虽然500这个数字看起来大了些,但相比更为稳固的企业解决方案这还是个小型数据库了,后者通常在一个数据库内就包含了成千上万条记录。这时候不就死定了?采用SQL,你就可以很快地找出准确的记录并且翻开一个只包含该记录的recordset,如下所示:RandomizeRNumber = Int(Rnd*499) + 1SQL = SELECT * FROM Customers WHERE ID = & RNumberset objRec = ObjConn.E*ecute(SQL)Response.WriteRNumber & = & objRec(

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

20、M Customers WHERE ID = & RNumber & OR ID = & RNumber2 & OR ID = & RNumber3假设你想选出10条记录也许是每次页面装载时的10条的列表,你可以用BETWEEN 或者数学等式选出第一条记录和适当数量的递增记录。这一操作可以通过好几种方式来完成,但是 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 newid()mysql select * From 表名 Order By rand() Limit nAccess左连接语法(最近开发要用左连接,Access帮助什么都没有,网上没有Access的SQL说明,只有自己测试, 现在记下以备后查)语法 select table1.fd1,table1,fd2,table2.fd2 From table1 left join table2 on

22、table1.fd1,table2.fd1 where .使用SQL语句 用.代替过长的字符串显示语法:SQL数据库:select case when len(field)10 then left(field,10)+. else field end as news_name,news_id from tablenameAccess数据库:SELECT iif(len(field)2,left(field,2)+.,field) FROM tablename;Conn.E*ecute说明E*ecute方法该方法用于执行SQL语句。根据SQL语句执行后是否返回记录集,该方法的使用格式分为以下两种

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

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

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

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

27、E两个字段的数据是完整的表 B中原来ID,LASTNAME两个字段的数据是完整的现在要把表 B中的LASTNAME字段的相应的数据填入到A表中LASTNAME相应的位置。两个表中的ID字段是相互关联的。先谢谢了!update a set a.lastname=(select b.lastname from b where a.id=b.id)掌握SQL四条最根本的数据操作语句:Insert,Select,Update和Delete。练掌握SQL是数据库用户的珍贵财富。在本文中,我们将引导你掌握四条最根本的数据操作语句SQL的核心功能来依次介绍比拟操作符、选择断言以及三值逻辑。当你完成这些学习后

28、,显然你已经开场算是精通SQL了。在我们开场之前,先使用CREATE TABLE语句来创立一个表如图1所示。DDL语句对数据库对象如表、列和视进展定义。它们并不对表中的行进展处理,这是因为DDL语句并不处理数据库中实际的数据。这些工作由另一类SQL语句数据操作语言DML语句进展处理。SQL中有四种根本的DML操作:INSERT,SELECT,UPDATE和DELETE。由于这是大多数SQL用户经常用到的,我们有必要在此对它们进展一一说明。在图1中我们给出了一个名为EMPLOYEES的表。其中的每一行对应一个特定的雇员记录。请熟悉这张表,我们在后面的例子中将要用到它。The E*ecute me

29、thod e*ecutes a specified query, SQL statement, stored procedure, or provider-specific te*t.E*ecute的作用是:执行一个查询语句、陈述语句、程序或技术提供对象provider的详细文本。The results are stored in a new Recordset object if it is a row-returning query. A closed Recordset object will be returned if it is not a row-returning query.

30、如果返回行row-returning查询语句,则结果将被存储在一个新的记录对象中;如果它不是一个返回行row-returning查询语句,则它将返回一个关闭的记录对象。Note: The returned Recordset is always a read-only, forward-only Recordset!注意:返回的Recordset是一个只读的、只向前兼容的Recordset。Tip: To create a Recordset with more functionality, first create a Recordset object. Set the desired pr

31、operties, and then use the Recordset objects Open method to e*ecute the query.提示:在第一次创立Recordset对象时,需要将它创立为一个更具功能性的Recordset对象。设置一个我们所希望的属性,使用Recordset对象的Open方法去执行查询语句。Synta* for row-returningrow-returning返回行语法Set objrs=objconn.E*ecute(mandte*t,ra,options)Synta* for non-row-returningnon-row-returnin

32、g非返回行语法objconn.E*ecute mandte*t,ra,optionsParameter参数Description描述mandte*tRequired. The SQL statement, stored procedure, or provider-specific te*t to e*ecute必要参数。指定需要执行的SQL语句,现存的程序或技术提供对象provider的详细文本raOptional. The number of records affected by the query可选参数。返回查询语句执行的记录数optionsOptional. Sets how th

33、e provider should evaluate the mandte*t parameter. Can be one or moremandTypeEnumorE*ecuteOptionEnumvalues. Default is adCmdUnspecified可选参数。设置技术提供对象provider应该如何评估mandTe*t属性的功能。它可以是一个或多个mandTypeEnum 或 E*ecuteOptionEnum的值。默认值是adCmdUnspecifiedE*ample案例mandTypeEnum ValuesConstant常量Value值Description描述adC

34、mdUnspecified-1Does not specify the mand type argument.不指定指令类型自变量adCmdTe*t1Evaluates mandTe*t as a te*tual definition of a mand or stored procedure call.指示提供者应该将Source作为命令的文本定义来计算。adCmdTable2Evaluates mandTe*t as a table name whose columns are all returned by an internally generated SQL query.指示ADO生

35、成SQL查询以便从在Source中命名的表中返回所有行adCmdStoredProc4Evaluates mandTe*t as a stored procedure name.将mandTe*t作为一个已存的程序名称adCmdUnknown8Indicates that the type of mand in the mandTe*t property is not known.默认值。指定未知的mandTe*t属性命令adCmdFile256Evaluates mandTe*t as the file name of a persistently stored Recordset. Use

36、d with Recordset.Open or Requery only.指示应从在Source中命名的文件中恢复保存保存的Recordset。它仅能与Recordset.Open 或 Requery 指令一起使用adCmdTableDirect512Evaluates mandTe*t as a table name whose columns are all returned. Used with Recordset.Open or Requery only. To use the Seek method, the Recordset must be opened with adCmdT

37、ableDirect. This value cannot be bined with the E*ecuteOptionEnum value adAsyncE*ecute.指示提供者更改从在 Source 中命名的表中返回所有行/将mandTe*t作为一个表的名称该表的列全部是通过内部的SQL查询语句返回的。它仅适用Recordset.Open 或 Requery 指令;如果需要使用查找方式,则Recordset必须以adCmdTableDirect翻开。这个值不能与E*ecuteOptionEnum值 adAsyncE*ecute一起使用E*ecuteOptionEnum ValuesCo

38、nstant常量Value值Description描述adOptionUnspecified-1Indicates that the mand is unspecified.指明为指定的指令adAsyncE*ecuteIndicates that the mand should e*ecute asynchronously. This value cannot be bined with the mandTypeEnum value adCmdTableDirect.指明指令是否需要异步执行。这个值不能与mandTypeEnum 之中的adCmdTableDirect一起使用adAsyncFe

39、tchIndicates that the remaining rows after the initial quantity specified in the CacheSize property should be retrieved asynchronously.指明在CacheSize属性中指定了初始量以后,是否应该异步获取保存行remaining rowsadAsyncFetchNonBlockingIndicates that the main thread never blocks while retrieving. If the requested row has not be

40、en retrieved, the current row automatically moves to the end of the file. If you open a Recordset from a Stream containing a persistently stored Recordset, adAsyncFetchNonBlocking will not have an effect; the operation will be synchronous and blocking. adAsynchFetchNonBlockinghas no effect when the

41、adCmdTableDirect option is used to open the Recordset.指示主要线程在提取期间从未堵塞。如果所请求的行尚未提取,则当前行将自动移到文件末尾。如果翻开的记录流中的记录固定地包含一个记录,则adAsyncFetchNonBlocking将不会产生作用;才作程序将同时运行以及阻塞该常量。当adCmdTableDirect选项用于翻开记录时,adAsynchFetchNonBlocking将不会产生任何作用adE*ecuteNoRecordsIndicates that the mand te*t is a mand or stored proced

42、ure that does not return rows (for e*ample, a mand that only inserts data). If any rows are retrieved, they are discarded and not returned. adE*ecuteNoRecords can only be passed as an optional parameter to the mand or Connection E*ecute method.它仅指明了指令文本仅是一条不返回任何行的指令或现存程序如:一条只执行数据插入的指令。如果没有任何行被提取,则他们

43、将放弃执行并不返回任何值。adE*ecuteNoRecords仅可以作为一个可选参数传递到指令中或连接执行方法Connection E*ecute method中adE*ecuteStreamIndicates that the results of a mand e*ecution should be returned as a stream. adE*ecuteStream can only be passed as an optional parameter to the mand E*ecute method.指明需要以结果流的形式返回命令执行的结果。adE*ecuteStream仅可以作为一个可选参数传递到指令中或连接执行方法Connection E*ecute method中adE*ecuteRecordIndicates that the mandTe*t is a mand or stored procedure that returns a single row which should be returned as a Record object.指明mandTe*t仅是返回一个单独行该单独行作为一条记录对象返回的一条指令或现存程序. z.

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!