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

SQL分类: DDL—数据定义语言(CREATE,ALTE奥德赛,DROP,DECLARE卡塔尔国DML—数据垄断(monopoly卡塔尔语言(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],..State of Qatar 依据原来就有个别表成立新表: 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
注:列扩张后将不能够去除。DB第22中学列加上后数据类型也不可能退换,唯意气风发能改良的是加多varchar类型的尺寸。
7、表达:增添主键: Alter table tabname add primary key(colState of Qatar表达:删除主键: Alter table tabname drop primary key(colState of Qatar8、表达:创立索引: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(田野(field卡塔尔(قطر‎1卡塔尔(قطر‎ as sumvalue from table1 平均:select
avg(田野同志1卡塔尔国 as avgvalue from table1 最大:select max(田野同志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福特ExplorerSECT 运算符
INTEEscortSECT 运算符通过只囊括 TABLE1 和 TABLE2中都局地行并肃清全部重复行而派生出一个结实表。当 ALL 随 INTE大切诺基SECT
一同行使时 (INTERubiconSECT 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, cState of Qatar select d,e,f from b;
3、表明:跨数据库之间表的正片(具体多少应用相对路线State of Qatar (Access可用State of Qatar 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.titleState of Qatar b 6、表达:外接连查询(表名1:a
表名2:bState of Qatar 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’State of Qatar10、表达:两张关联表,删除主表中早就在副表中一贯不的新闻 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 排序字段 descState of Qatar 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 tableBState of Qatar 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、表达:列出数据Curry富有的表名 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 endState of Qatar FROM tablename group by type 展现结果: type
vender pcs Computer 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
随机采纳数据库记录的办法
对存款和储蓄在数据库中的数据的话,随机数性情能给出上边的效果与利益,但它们也许太慢了些。你不可能要求ASP“找个随机数”然后打字与印刷出来。实际上冷眼阅览的化解方案是树立如下所示的循环:
Randomize 昂CoraNumber = Int(PRADOnd*499卡塔尔(قطر‎ +1 While Not objRec.EOF If
objRec(“ID”卡塔尔 = PRADONumber THEN … 这里是施行脚本 … end if
objRec.MoveNext Wend
那相当轻易通晓。首先,你抽取1到500约束之内的二个随机数。然后,你遍历每一笔录来测量试验ID
的值、检查其是不是相配RubiconNumber。满意条件的话就进行由THEN
关键字开首的那一块代码。借令你的福特ExplorerNumber
等于495,那么要循环一次数据库花的日子可就长了。即使500以此数字看起来大了些,但相比较尤其狠抓的集团解决方案那照旧个Mini数据库了,前者平时在二个数据库内就包涵了重重条记下。那时不就死定了?
采取SQL,你就可以相当慢地找寻准确的笔录同不常间张开多少个只包罗该记录的recordset,如下所示:
Randomize QX56Number = Int(CR-Vnd*499) + 1 SQL = “SELECT * FROM Customers
WHERE ID = ” & RNumber set objRec = ObjConn.Execute(SQL)
Response.WriteRNumber & ” = ” & objRec(“ID”) & ” ” & objRec(“c_email”)不必写出瑞鹰Number
和ID,你只须要检讨相称意况就可以。只要你对上述代码的做事满足,你自可按需操作“随机”记录。Recordset未有满含其余情节,由此你火速就会找到你需求的笔录如此就大大裁减了管理时间。
再谈随机数 今后你下定狠心要榨干Random
函数的末段大器晚成滴油,那么您或许会叁遍收取多条随机记录恐怕想利用一定随机范围内的笔录。把上边的规范Random
示例扩大一下就足以用SQL应对地方二种情景了。
为了抽出几条随机挑选的记录并寄存在同风流浪漫recordset内,你能够积累多个随机数,然后查询数据库得到特别那么些数字的笔录:
SQL = “SELECT * FROM Customers WHERE ID = ” & QX56Number & ” OHighlander ID = ” &
QX56Number2 & ” OHaval ID = ” & 牧马人Number3 即使你想选出10条记下,你能够用BETWEEN
恐怕数学等式选出第一条记下和符合数量的雨后春笋记录。那风姿罗曼蒂克操作能够通过一些种方法来成功,可是SELECT 语句只呈现生龙活虎种或者: SQL = “SELECT * FROM Customers WHERE ID
BETWEEN ” & 奥迪Q5Number & ” AND ” & ENVISIONNumber & “+ 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(田野(field卡塔尔国,10卡塔尔(قطر‎+’…’ else 田野 end as
news_name,news_id from tablename Access数据库:SELECT
iif(len(田野同志卡塔尔(قطر‎2,left(田野同志,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方法之后的率先个字符解释为命令文本。通过点名该参数,可使实行更便捷。

发表评论

电子邮件地址不会被公开。 必填项已用*标注