转载 精妙SQL头条 - 威尼斯人

转载 精妙SQL头条

2019-02-14 07:58:07 | 作者: 范明 | 标签: 句子,数据库,运用 | 浏览: 1390

原文:

下列句子部分是Mssql句子,不行以在access中运用

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: 
左外衔接(左衔接):成果集几包括衔接表的匹配行,也包括左衔接表的一切行。 
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
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 

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

随机挑选数据库记载的办法(运用Randomize函数,经过SQL句子完结)
对存储在数据库中的数据来说,随机数特性能给出上面的作用,但它们或许太慢了些。你不能要求ASP“找个随机数”然后打印出来。实际上常见的解决方案是树立如下所示的循环: 
Randomize 
RNumber = Int(Rnd*499) +1 

While Not objRec.EOF 
If objRec("ID") = RNumber THEN 
... 这儿是履行脚本 ... 
end if 
objRec.MoveNext 
Wend 

这很简单了解。首要,你取出1到500规模之内的一个随机数(假定500就是数据库内记载的总数)。然后,你遍历每一记载来测验ID 的值、查看其是否匹配RNumber。满足条件的话就履行由THEN 关键字开端的那一块代码。假设你的RNumber 等于495,那么要循环一遍数据库花的时刻可就长了。尽管500这个数字看起来大了些,但比较更为安定的企业解决方案这仍是个小型数据库了,后者一般在一个数据库内就包括了不计其数条记载。这时候不就死定了? 
选用SQL,你就能够很快地找出精确的记载而且翻开一个只包括该记载的recordset,如下所示: 
Randomize 
RNumber = Int(Rnd*499) + 1 

SQL = "Select * FROM Customers Where ID = "   RNumber 

set objRec = ObjConn.Execute(SQL) 
Response.WriteRNumber   " = "   objRec("ID")   " "   objRec("c_email") 

不用写出RNumber 和ID,你只需求查看匹配状况即可。只需你对以上代码的作业满足,你自可按需操作“随机”记载。Recordset没有包括其他内容,因而你很快就能找到你需求的记载这样就大大降低了处理时刻。 
再谈随机数 
现在你下定决心要榨干Random 函数的最终一滴油,那么你或许会一次取出多条随机记载或许想选用必定随机规模内的记载。把上面的规范Random 示例扩展一下就能够用SQL应对上面两种状况了。 
为了取出几条随机挑选的记载并存放在同一recordset内,你能够存储三个随机数,然后查询数据库取得匹配这些数字的记载: 
SQL = "Select * FROM 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条并发记载。


随机读取若干条记载,测验过
Access语法:Select top 10 * From 表名 orDER BY Rnd(id)
Sql server:select top n * from 表名 order by newid()
mysqlelect * From 表名 order By rand() Limit n
Access左衔接语法(最近开发要用左衔接,Access协助什么都没有,网上没有Access的SQL阐明,只要自己测验, 现在记下以备后查)
语法elect table1.fd1,table1,fd2,table2.fd2 From table1 left join table2 on 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 tablename
Access数据库:Select iif(len(field) 2,left(field,2)+...,field) FROM tablename; 

Conn.Execute阐明
Execute办法
该办法用于履行SQL句子。依据SQL句子履行后是否回来记载集,该办法的运用格局分为以下两种:
1.履行SQL查询句子时,将回来查询得到的记载集。用法为:
Set 目标变量名=衔接目标.Execute("SQL 查询言语")
Execute办法调用后,会主动创立记载集目标,并将查询成果存储在该记载目标中,经过Set办法,将记载集赋给指定的目标保存,今后目标变量就代表了该记载集目标。

2.履行SQL的操作性言语时,没有记载集的回来。此刻用法为:
衔接目标.Execute "SQL 操作性句子" [, RecordAffected][, Option]
·RecordAffected 为可选项,此出可放置一个变量,SQL句子履行后,所收效的记载数会主动保存到该变量中。经过拜访该变量,就可知道SQL句子队多少条记载进行了操作。
·Option 可选项,该参数的取值一般为adCMDText,它用于通知ADO,应该将Execute办法之后的榜首个字符解释为指令文本。经过指定该参数,可使履行更高效。

·BeginTrans、RollbackTrans、CommitTrans办法
这三个办法是衔接目标供给的用于业务处理的办法。BeginTrans用于开端一个事物;RollbackTrans用于回滚业务;CommitTrans用于提交一切的业务处理成果,即承认业务的处理。
业务处理能够将一组操作视为一个全体,只要悉数句子都成功履行后,业务处理才算成功;若其中有一个句子履行失利,则整个处理就算失利,并康复到处里前的状况。
BeginTrans和CommitTrans用于符号业务的开端和完毕,在这两个之间的句子,就是作为业务处理的句子。判别业务处理是否成功,可经过衔接目标的Error调集来完结,若Error调集的成员个数不为0,则阐明有过错发作,业务处理失利。Error调集中的每一个Error目标,代表一个过错信息。

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表威尼斯人立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1

    转载 精妙SQL头条

    句子,数据库,运用
  • 2

    数据库管理工具alibaba

    数据库,运用,用户
  • 3

    mysql动态sql句子快报

    动态,句子,游标
  • 4

    使用oracle job和存储进程环球

    进程,数据,数据表
  • 5
  • 6

    数据库sina

    数据库,数据,功用
  • 7

    oracle rac 装置手册sina

    装置,节点,集群
  • 8