完整word版简单数据库查询语句word文档良心出品.docx
- 文档编号:1452594
- 上传时间:2022-10-22
- 格式:DOCX
- 页数:21
- 大小:30.88KB
完整word版简单数据库查询语句word文档良心出品.docx
《完整word版简单数据库查询语句word文档良心出品.docx》由会员分享,可在线阅读,更多相关《完整word版简单数据库查询语句word文档良心出品.docx(21页珍藏版)》请在冰豆网上搜索。
完整word版简单数据库查询语句word文档良心出品
数据查询语言(SELECT语句)
数据操纵语言(INSERT,UPDATE,DELETE语句)
数据定义语言(如CREATE,DROP等语句)
数据控制语言(如COMMIT,ROLLBACK等语句
超详细的SQL语句语法2008-07-1114:
25简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句
一、简单查询
简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。
它们分别说明所查询列、查询的表或视图、以及搜索条件等。
例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。
SELECTnickname,emailFROMtesttableWHEREname='张三'
(一)选择列表
选择列表(select_list)指出所查询列
它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。
1、选择所有列
例如,下面语句显示testtable表中所有列的数据:
SELECT*FROMtesttable
2、选择部分列并指定它们的显示次序
查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。
例如:
SELECTnickname,emailFROMtesttable
3、更改列标题
在选择列表中,可重新指定列标题。
定义格式为:
列标题=列名
列名列标题
如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题:
SELECT昵称=nickname,电子邮件=emailFROMtesttable
4、删除重复行
SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,
默认为ALL。
使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。
5、限制返回的行数
使用TOPn[PERCENT]选项限制返回的数据行数,TOPn说明返回n行,
而TOPnPERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。
例如:
SELECTTOP2*FROMtesttableSELECTTOP20PERCENT*FROMtesttable
9、说明:
in的使用方法
select*fromtable1wherea[not]in(‘值1’,’值2’,’值4’,
’值6’)
10、说明:
两张关联表,删除主表中已经在副表中没有的信息
deletefromtable1wherenotexists(select*fromtable2
wheretable1.field1=table2.field1)
11、说明:
四表联查问题:
select*fromaleftinnerjoinbona.a=b.brightinnerjoin
cona.a=c.cinnerjoindona.a=d.dwhere.....
12、说明:
日程安排提前五分钟提醒
SQL:
select*from日程安排wheredatediff('minute',f开始时
间,getdate())>5
13、说明:
一条sql语句搞定数据库分页
selecttop10b.*from(selecttop20主键字段,排序字段from表
名orderby排序字段desc)a,表名bwhereb.主键字段=a.主键字
段orderbya.排序字段
14、说明:
前10条记录
selecttop10*fromtable1where范围
15、说明:
选择在每一组b值相同的数据中对应的a最大的记录的所有信息(
类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排
名,等等.)
selecta,b,cfromtablenametawherea=(selectmax(a)from
tablenametbwheretb.b=ta.b)
16、说明:
包括所有在TableA中但不在TableB和TableC中的行并消除
所有重复行而派生出一个结果表
(selectafromtableA)except(selectafromtableB)except
(selectafromtableC)
17、说明:
随机取出10条数据
selecttop10*fromtablenameorderbynewid()
18、说明:
随机选择记录
selectnewid()
19、说明:
删除重复记录
Deletefromtablenamewhereidnotin(selectmax(id)from
tablenamegroupbycol1,col2,...)
20、说明:
列出数据库里所有的表名
selectnamefromsysobjectswheretype='U'
21、说明:
列出表里的所有的
selectnamefromsyscolumnswhereid=object_id('TableName')
22、说明:
列示type、vender、pcs字段,以type字段排列,case可以方便
地实现多重选择,类似select中的case。
selecttype,sum(casevenderwhen'A'thenpcselse0
end),sum(casevenderwhen'C'thenpcselse0end),sum(case
venderwhen'B'thenpcselse0end)FROMtablenamegroupby
type
显示结果:
typevenderpcs
电脑A1
电脑A1
光盘B2
光盘A2
手机B3
手机C3
23、说明:
初始化表table1
TRUNCATETABLEtable1
24、说明:
选择从10到15的记录
selecttop5*from(selecttop15*fromtableorderbyid
asc)table_别名orderbyiddesc
随机选择数据库记录的方法(使用Randomize函数,通过SQL语句实现)
对存储在数据库中的数据来说,随机数特性能给出上面的效果,但它们
可能太慢了些。
你不能要求ASP“找个随机数”然后打印出来。
实际上常见
的解决方案是建立如下所示的循环:
Randomize
RNumber=Int(Rnd*499)+1
WhileNotobjRec.EOF
IfobjRec("ID")=RNumberTHEN
...这里是执行脚本...
endif
objRec.MoveNext
Wend
这很容易理解。
首先,你取出1到500范围之内的一个随机数(假设500
就是数据库内记录的总数)。
然后,你遍历每一记录来测试ID的值、检查
其是否匹配RNumber。
满足条件的话就执行由THEN关键字开始的那一块代码
。
假如你的RNumber等于495,那么要循环一遍数据库花的时间可就长了。
虽然500这个数字看起来大了些,但相比更为稳固的企业解决方案这还是个
小型数据库了,后者通常在一个数据库内就包含了成千上万条记录。
这时候
不就死定了?
采用SQL,你就可以很快地找出准确的记录并且打开一个只包含该记录
的recordset,如下所示:
Randomize
RNumber=Int(Rnd*499)+1
SQL="SELECT*FROMCustomersWHEREID="&RNumber
setobjRec=ObjConn.Execute(SQL)
Response.WriteRNumber&"="&objRec("ID")&""&
objRec("c_email")
不必写出RNumber和ID,你只需要检查匹配情况即可。
只要你对以上代
码的工作满意,你自可按需操作“随机”记录。
Recordset没有包含其他内
容,因此你很快就能找到你需要的记录这样就大大降低了处理时间。
再谈随机数
现在你下定决心要榨干Random函数的最后一滴油,那么你可能会一次
取出多条随机记录或者想采用一定随机范围内的记录。
把上面的标准Random
示例扩展一下就可以用SQL应对上面两种情况了。
为了取出几条随机选择的记录并存放在同一recordset内,你可以存储
三个随机数,然后查询数据库获得匹配这些数字的记录:
SQL="SELECT*FROMCustomersWHEREID="&RNumber&"OR
ID="&RNumber2&"ORID="&RNumber3
假如你想选出10条记录(也许是每次页面装载时的10条链接的列表),
你可以用BETWEEN或者数学等式选出第一条记录和适当数量的递增记录。
这
一操作可以通过好几种方式来完成,但是SELECT语句只显示一种可能(这
里的ID是自动生成的号码):
SQL="SELECT*FROMCustomersWHEREIDBETWEEN"&RNumber&
"AND"&RNumber&"+9"
注意:
以上代码的执行目的不是检查数据库内是否有9条并发记录。
随机读取若干条记录,测试过
Access语法:
SELECTtop10*From表名ORDERBYRnd(id)
Sqlserver:
selecttopn*from表名orderbynewid()
mysqlelect*From表名OrderByrand()Limitn
Access左连接语法(最近开发要用左连接,Access帮助什么都没有,网上没有
Access的SQL说明,只有自己测试,现在记下以备后查)
语法electtable1.fd1,table1,fd2,table2.fd2Fromtable1left
jointable2ontable1.fd1,table2.fd1where...
使用SQL语句用...代替过长的字符串显示
语法:
SQL数据库:
selectcasewhenlen(field)>10thenleft(field,10)
+'...'elsefieldendasnews_name,news_idfromtablename
Access数据库:
SELECTiif(len(field)>2,left(field,2)
+'...',field)FROMtablename;
Conn.Execute说明
Execute方法
该方法用于执行SQL语句。
根据SQL语句执行后是否返回记录集,该方法
的使用格式分为以下两种:
1.执行SQL查询语句时,将返回查询得到的记录集。
用法为:
Set对象变量名=连接对象.Execute("SQL查询语言")
E
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整 word 简单 数据库 查询 语句 文档 良心 出品
![提示](https://static.bdocx.com/images/bang_tan.gif)