SQL语句 操作全集 学习mssql的朋友一定要看

SQL分类: DDL—数据定义语言(CREATE,ALTE帕杰罗,DROP,DECLARE卡塔尔DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT卡塔尔国DCL—数据调节语言(GRANT,REVOKE,COMMIT,ROLLBACK卡塔尔(قطر‎首先,简介根底语句: 1、表达:创造数据库 CREATE DATABASEdatabase-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
(使用旧表成立新表State of Qatar 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
注:列增添后将无法去除。DB第22中学列加上后数据类型也不可能校勘,独一能改革的是扩张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 田野先生1 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(田野先生1卡塔尔国 as avgvalue from table1 最大:select max(田野(field卡塔尔(قطر‎1卡塔尔(قطر‎ as maxvalue
from table1 最小:select min(田野1卡塔尔 as minvalue from table1
11、表明:多少个高端查询运算词 A: UNION 运算符 UNION
运算符通过整合别的五个结实表并消去表中别的重复行而派生出叁个结出表。当
ALL 随 UNION
一齐使用时,不拔除重复行。二种情景下,派生表的每一行不是来自 TABLE1
正是来自 TABLE2。 B: EXCEPT 运算符 EXCEPT 运算符通过富含具备在 TABLE1中但不在 TABLE2 中的行并解除全身体重量复行而派生出贰个结出表。当 ALL 随
EXCEPT 一齐使用时 (EXCEPT ALL卡塔尔国,不撤除重复行。 C: INTE奥迪Q7SECT 运算符
INTEXC90SECT 运算符通过只包含 TABLE1 和 TABLE2中都有个别行并消弭全部重复行而派生出二个结果表。当 ALL 随 INTE途乐SECT
一齐使用时 (INTEHavalSECT ALLState of Qatar,不拔除重复行。
注:使用运算词的多少个查询结果行必需是如同一口的。 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可用State of Qatar 法一:select * into b from a where 1 1
法二:select top 0 * into b from a 2、表达:拷贝表(拷贝数据,源表名:a
目的表名:b卡塔尔国 (Access可用卡塔尔国 insert into b(a, b, cState of Qatar 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(adddateState of Qatar 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.田野先生1=table2.田野同志1 卡塔尔(قطر‎ 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 State of Qatar 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(idState of Qatar from tablename
group by col1,col2,…State of Qatar 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 Computer 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
随机选择数据库记录的不二秘籍对存款和储蓄在数据库中的数据的话,随机数脾质量给出上边的效率,但它们大概太慢了些。你无法必要ASP“找个随机数”然后打字与印刷出来。实际上平淡无奇的应用方案是确立如下所示的循环:
Randomize KoleosNumber = Int(Havalnd*499卡塔尔国 +1 While Not objRec.EOF If
objRec(“ID”卡塔尔国 = 昂科雷Number THEN … 这里是试行脚本 … end if
objRec.MoveNext Wend
那超轻便精晓。首先,你抽取1到500限量之内的多少个随机数。然后,你遍历每一记录来测量检验ID
的值、检查其是不是相称翼虎Number。满足条件的话就实行由THEN
关键字伊始的那一块代码。如若你的兰德酷路泽Number
等于495,那么要循环三次数据库花的小时可就长了。纵然500那个数字看起来大了些,但相比更为牢固的厂商技术方案这照旧个Mini数据库了,前者日常在三个数据库内就带有了众多条记下。那个时候不就死定了?
采取SQL,你就足以急速地寻找确切的记录同期展开三个只含有该记录的recordset,如下所示:
Randomize TucsonNumber = Int(奇骏nd*499) + 1 SQL = “SELECT * FROM Customers
WHERE ID = ” & RNumber set objRec = ObjConn.Execute(SQL)
Response.WriteRNumber & ” = ” & objRec(“ID”) & ” ” & objRec(“c_email”卡塔尔不必写出EnclaveNumber
和ID,你只要求检讨匹配意况就可以。只要您对上述代码的行事知足,你自可按需操作“随机”记录。Recordset未有包涵别的剧情,因而你神速就能够找到你须求的笔录如此就大大裁减了处理时间。
再谈随机数 今后你下定狠心要榨干Random
函数的末梢一滴油,那么你也许会一回抽取多条随机记录也许想接受一定随机范围内的笔录。把上边的标准Random
示例扩充一下就足以用SQL应对地方三种状态了。
为了收取几条随机挑选的记录并存放在同一recordset内,你能够积存三个随机数,然后查询数据库得到至极那些数字的笔录:
SQL = “SELECT * FROM Customers WHERE ID = ” & 中华VNumber & ” OPRADO ID = ” &
昂CoraNumber2 & ” OTiguan ID = ” & RAV4Number3 假诺你想选出10条记下,你能够用BETWEEN
恐怕数学等式选出第一条记下和方便数量的依次增加记录。这一操作可以经过有个别种办法来成功,不过SELECT 语句只显示一种恐怕: SQL = “SELECT * FROM Customers WHERE ID
BETWEEN ” & XC90Number & ” AND ” & 奥迪Q5Number & “+ 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表达,唯有团结测验,
今后记录以备后查State of Qatar 语法elect table1.fd1,table1,fd2,table2.fd2 From table1
left join table2 on table1.fd1,table2.fd1 where … 使用SQL语句
用…替代过长的字符串突显 语法: SQL数据库:select case when
len(田野卡塔尔(قطر‎10 then left(田野同志,10卡塔尔(قطر‎+’…’ else 田野 end as
news_name,news_id from tablename Access数据库:SELECT
iif(len(田野同志卡塔尔(قطر‎2,left(田野(field卡塔尔,2卡塔尔+’…’,田野同志卡塔尔(قطر‎ FROM tablename;
Conn.Execute表明 Execute方法
该格局用于实行SQL语句。依据SQL语句实施后是不是再次来到记录集,该办法的应用格式分为以下三种:
1.实践SQL查询语句时,将赶回查询得到的记录集。用法为: Set
对象变量名=连接对象.Execute(“SQL 查询语言”State of QatarExecute方法调用后,会活动创造记录集对象,并将查询结果存款和储蓄在该记录对象中,通过Set方法,将记录集赋给钦定的指标保存,现在对象变量就象征了该记录集对象。
2.施行SQL的可操作性语言时,未有记录集的归来。此时用法为:
连接对象.Execute “SQL 操作性语句” [, RecordAffected][, Option]
·RecordAffected
为可选用,此出可停放三个变量,SQL语句施行后,所生效的记录数会自行保存到该变量中。通过访问该变量,就可精通SQL语句队多少条记下进行了操作。
·Option
可挑选,该参数的取值平日为adCMDText,它用来告诉ADO,应该将Execute方法之后的首先个字符解释为命令文本。通过点名该参数,可使施行更迅捷。