DB2中常用的SQL句子(1)ITeyetengxun - 娱乐之横扫全球

DB2中常用的SQL句子(1)ITeyetengxun

2019-02-06 07:57:29 | 作者: 白萱 | 标签: 句子,方针,数据 | 浏览: 9059

DB2中常用的SQL句子(1)
2009-09-22 16:29
2008-05-14
DB2中常用的SQL句子

一、删去数据库中表的某些相同的某些记载

delete from tablename where only_Id not in(select min(only_id) from tablename group by sameName)

二、选出相同记载的SQL句子 AND 删去相同记载的SQL句子删去相同记载的SQL句子

//IF 表中无主键,ID中无(IDENTITY(1,1)),ID相同的记载删去?

a、select * from tableName where id in(select id from tableName group by id having count(*) 1)

b、delete from tableName where id in(select id from talbeName group by id having count(*) 1



经典SQL句子集锦

下列句子部分是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()
MySql语法:Select * From 表名 Order By rand() Limit n
Access左衔接语法(最近开发要用左衔接,Access协助什么都没有,网上没有Access的SQL阐明,只要自己测验, 现在记下以备后查)
语法:Select 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方针,代表一个过错信息。

一些常用的SQL句子

下面是一些常用的SQL句子,尽管很根底,但是却很值得保藏,关于初学者十分有用

SQL常用指令运用办法:
(1) 数据记载挑选:
sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]"
sql="select * from 数据表 where 字段名 like %字段值% order by 字段名 [desc]"
sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]"
sql="select * from 数据表 where 字段名 in (值1,值2,值3)"
sql="select * from 数据表 where 字段名 between 值1 and 值2"
(2) 更新数据记载:
sql="update 数据表 set 字段名=字段值 where 条件表达式"
sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"
(3) 删去数据记载:
sql="delete from 数据表 where 条件表达式"
sql="delete from 数据表"  (将数据表一切记载删去)
(4) 添加数据记载:
sql="insert into 数据表 (字段1,字段2,字段3 …) values (值1,值2,值3 …)"
sql="insert into 方针数据表 select * from 源数据表"  (把源数据表的记载添加到方针数据表)
(5) 数据记载计算函数:
AVG(字段名) 得出一个表格栏均匀值
COUNT(*|字段名) 对数据行数的计算或对某一栏有值的数据行数计算
MAX(字段名) 获得一个表格栏最大的值
MIN(字段名) 获得一个表格栏最小的值
SUM(字段名) 把数据栏的值相加
引证以上函数的办法:
sql="select sum(字段名) as 别号 from 数据表 where 条件表达式"
set rs=conn.excute(sql)
用 rs("别号") 获取统的计值,其它函数运用同上。
(5) 数据表的树立和删去:
CREATE TABLE 数据表称号(字段1 类型1(长度),字段2 类型2(长度) …… )
例:CREATE TABLE tab01(name varchar(50),datetime default now())
DROP TABLE 数据表称号 (永久性删去一个数据表)
4. 记载集方针的办法:
rs.movenext  将记载指针从当时的方位向下移一行
rs.moveprevious  将记载指针从当时的方位向上移一行
rs.movefirst  将记载指针移到数据表榜首行
rs.movelast  将记载指针移到数据表最终一行
rs.absoluteposition=N 将记载指针移到数据表第N行
rs.absolutepage=N  将记载指针移到第N页的榜首行
rs.pagesize=N  设置每页为N条记载
rs.pagecount  依据 pagesize 的设置回来总页数
rs.recordcount  回来记载总数
rs.bof  回来记载指针是否超出数据表首端,true表明是,false为否
rs.eof  回来记载指针是否超出数据表结尾,true表明是,false为否
rs.delete  删去当时记载,但记载指针不会向下移动
rs.addnew  添加记载到数据表结尾
rs.update  更新数据表记载
---------------------------------------
Recordset方针办法
Open办法
recordset.Open Source,ActiveConnection,CursorType,LockType,Options
Source
Recordset 方针能够通过Source特点来衔接Command方针。Source参数能够是一个Command方针称号、一段SQL指令、一个指定的数据表称号或是一个Stored Procedure。假设省掉这个参数,体系则选用Recordset方针的Source特点。
ActiveConnection
Recordset方针能够通过ActiveConnection特点来衔接Connection方针。这儿的ActiveConnection能够是一个Connection方针或是一串包括数据库衔接信息(ConnectionString)的字符串参数。
CursorType
Recordset方针Open办法的CursorType参数表明将以什么样的游标类型发动数据,包括adOpenForwardOnly、adOpenKeyset、adOpenDynamic及adOpenStatic,分述如下:

常数  常数值  阐明
-
adOpenForwardOnly  0  缺省值,发动一个只能向前移动的游标(Forward Only)。
adOpenKeyset  1  发动一个Keyset类型的游标。
adOpenDynamic  2  发动一个Dynamic类型的游标。
adOpenStatic  3  发动一个Static类型的游标。
-
以上几个游标类型将直接影响到Recordset方针一切的特点和办法,以下列表阐明他们之间的差异。
-
Recordset 特点  adOpenForwardOnly adOpenKeyset adOpenDynamic adOpenStatic
-
AbsolutePage  不支撑  不支撑  可读写  可读写
AbsolutePosition  不支撑  不支撑  可读写  可读写
ActiveConnection  可读写  可读写  可读写  可读写
BOF  只读  只读  只读  只读
Bookmark  不支撑  不支撑  可读写  可读写
CacheSize  可读写  可读写  可读写  可读写
CursorLocation  可读写  可读写  可读写  可读写
CursorType  可读写  可读写  可读写  可读写
EditMode  只读  只读  只读  只读
EOF  只读  只读  只读  只读
Filter  可读写  可读写  可读写  可读写
LockType  可读写  可读写  可读写  可读写
MarshalOptions  可读写  可读写  可读写  可读写
MaxRecords  可读写  可读写  可读写  可读写
PageCount  不支撑  不支撑  只读  只读
PageSize  可读写  可读写  可读写  可读写
RecordCount  不支撑  不支撑  只读  只读
Source  可读写  可读写  可读写  可读写
State  只读  只读  只读  只读
Status  只读  只读  只读  只读
AddNew  支撑  支撑  支撑  支撑
CancelBatch  支撑  支撑  支撑  支撑
CancelUpdate  支撑  支撑  支撑  支撑
Clone  不支撑  不支撑
Close  支撑  支撑  支撑  支撑
Delete  支撑  支撑  支撑  支撑
GetRows  支撑  支撑  支撑  支撑
Move  不支撑  支撑  支撑  支撑
MoveFirst  支撑  支撑  支撑  支撑
MoveLast  不支撑  支撑  支撑  支撑
MoveNext  支撑  支撑  支撑  支撑
MovePrevious  不支撑  支撑  支撑  支撑
NextRecordset  支撑  支撑  支撑  支撑
Open  支撑  支撑  支撑  支撑
Requery  支撑  支撑  支撑  支撑
Resync  不支撑  不支撑  支撑  支撑
Supports  支撑  支撑  支撑  支撑
Update  支撑  支撑  支撑  支撑
UpdateBatch  支撑  支撑  支撑  支撑

其间NextRecordset办法并不适用于Microsoft Access数据库。
LockType
Recordset 方针Open办法的LockType参数表明要选用的Lock类型,假如疏忽这个参数,那么体系会以Recordset方针的LockType特点为预设值。LockType参数包括adLockReadOnly、adLockPrssimistic、adLockOptimistic及 adLockBatchOptimistic等,分述如下:
-
常数  常数值  阐明

adLockReadOnly  1  缺省值,Recordset方针以只读办法发动,无法运转AddNew、Update及Delete等办法
adLockPrssimistic  2  当数据源正在更新时,体系会暂时锁住其他用户的动作,以坚持数据共同性。
adLockOptimistic  3  当数据源正在更新时,体系并不会锁住其他用户的动作,其他用户能够对数据进行增、删、改的操作。
adLockBatchOptimistic 4  当数据源正在更新时,其他用户有必要将CursorLocation特点改为adUdeClientBatch才干对数据进行增、
  删、改的操作。 

DB2 供给了干系式材料库的查询言语 SQL (Structured Query Language),是一种十分口语化、既易学又易懂的语法。此一言语简直是每个材料库体系都有必要供给的,用以表明干系式的操作,包括了材料的界说(DDL)以及材料的处理(DML)。SQL本来拼成SEQUEL,这言语的原型以“体系 R“的姓名在 IBM 圣荷西实验室完结,通过IBM内部及其他的许多运用性及功率测验,其成果适当令人满足,并决定在体系R 的技能根底发展出来 IBM 的产品。并且美国国家规范学会(ANSI)及世界规范化安排(ISO)在1987遵从一个简直是以 IBM SQL 为根底的规范干系式材料言语界说。
一、材料界说 DDL(Data Definition Language)
材料定言语是指对材料的格局和形状下界说的言语,他是每个材料库要树立时分时首要要面临的,举凡材料分哪些表格联系、表格内的有什麽栏位主键、表格和表格之间相互参阅的联系等等,都是在开端的时分一切必要规划好的。
1、建表格:
CREATE TABLE table_name(
column1 DATATYPE [NOT NULL] [NOT NULL PRIMARY KEY],
column2 DATATYPE [NOT NULL],
...)
阐明:
DATATYPE 是材料的格局,详见表。
NUT NULL 可不行以答应材料有空的(没有有材料填入)。
PRIMARY KEY 是本表的主键。



2、更改表格
ALTER TABLE table_name
ADD COLUMN column_name DATATYPE
阐明:添加一个栏位(没有删去某个栏位的语法。
ALTER TABLE table_name
ADD PRIMARY KEY (column_name)
阐明:更改表得的界说把某个栏位设为主键。
ALTER TABLE table_name
DROP PRIMARY KEY (column_name)
阐明:把主键的界说删去。
3、树立索引
CREATE INDEX index_name ON table_name (column_name)
阐明:对某个表格的栏位树立索引以添加查询时的速度。
4、删去
DROP table_name
DROP index_name
二、的材料形状 DATATYPEs
smallint
16 位元的整数。
interger
32 位元的整数。
decimal(p,s)
p 准确值和 s 巨细的十进位整数,准确值p是指悉数有几个数(digits)巨细值,s是指小数
点後有几位数。假如没有特别指定,则体系会设为 p=5; s=0 。
float
32位元的实数。
double
64位元的实数。
char(n)
n 长度的字串,n不能超过 254。
varchar(n)
长度不固定且其最大长度为 n 的字串,n不能超过 4000。
graphic(n)
和 char(n) 相同,不过其单位是两个字元 double-bytes, n不能超过127。这个形状是为
了援助两个字元长度的字体,例如中文字。
vargraphic(n)
可变长度且其最大长度为 n 的双字元字串,n不能超过 2000。
date
包括了 年份、月份、日期。
time
包括了 小时、分钟、秒。
timestamp
包括了 年、月、日、时、分、秒、千分之一秒。
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表娱乐之横扫全球立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章