2022SQL语言总结.docx
《2022SQL语言总结.docx》由会员分享,可在线阅读,更多相关《2022SQL语言总结.docx(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2022SQL语言总结 SQL语言总结select姓名,sum(成果)as总分from学生innerjoin成果on学生.学号=成果.学号groupby姓名答:从通过学号建立的学生与成果关系表中选择选择学生成果的姓名集合Update学生成果表set高数=93Where高数=80;答:将“学生成果表”中全部“高数”为80分的记录的改为93分Select学号,姓名From学生Where专业=“计算机应用”;答:查询出专业为“计算机应用”的全部男生的学号和姓名Select学号,姓名From学生Where年龄=18and姓名like“王*”;答:显示学生表中年龄大于18岁且姓“王”的学生的全部信息。S
2、electCount(性别)as男生人数From学生Where性别=男;答:分别显示男生人数Select课程.课程编号,课程.课程名,成果.学生编号,成果.成果From课程InnerJoin成果on课程.课程编号=成果.课程编号Where(课程.课程名)=数据库原理and(成果.成果)70;答:查找“数据库原理”课程成果在70分以上学生的学号、姓名和成果Selecttop3学号,姓名From学生Orderby成果Desc;答:显示成果前3名的学生的学号和姓名SELECT学生.学生编号,学生.学生姓名,课程.课程编号,课程.课程名,成果.成果,班级.班级编号FROM课程INNERJOIN(班级I
3、NNERJOIN(成果INNERJOIN学生ON成果.学生编号=学生.学生编号)ON班级.班级编号=学生.班级编号)ON课程.课程编号=成果.课程编号WHERE(课程.课程名)=计算机基础)AND(班级.班级编号)=0401);答:查询0401课程成果SELECT学生编号,学生姓名,性别,诞生年月,籍贯,身高,班级编号FROM学生WHERE性别=男AND班级编号=0401;答:查找班级编号为0401的全部男生UPDATE成果SET成果=(成果*0.1)+成果)WHERE成果SELECTavg(成果)AS平均成果FROM成果;答:平均成果查询SELECTavg(身高)AS平均身高FROM学生WH
4、ERE性别=男;答:求出男生的平均身高SELECT学生编号,Avg(成果)AS平均成果,Sum(成果)AS总成果FROM成果GROUPBY学生编号;答:求学生的平局成果和总成果UPDATE学生SET学生编号=050211WHERE学生编号=050101;答:修改学生编号altertable学生add身高smallint;答:增加身高字段扩展阅读:经典SQL语句总结SQL分类:DDL数据定义语言(CREATE,ALTER,DROP,DECLARE)DML数据操纵语言(SELECT,DELETE,UPDATE,INSERT)DCL数据限制语言(GRANT,REVOKE,COMMIT,ROLLBAC
5、K)首先,简要介绍基础语句:1、说明:创建数据库CREATEDATABASEdatabase-name2、说明:删除数据库dropdatabasedbname3、说明:备份sqlserver-创建备份数据的deviceUSEmasterEXECsp_addumpdevicedisk,testBack,c:mssql7backupMyNwind_1.dat-起先备份BACKUPDATABASEpubsTOtestBack4、说明:创建新表createtabletabname(col1type1notnullprimarykey,col2type2notnull,.)依据已有的表创建新表:A:cr
6、eatetabletab_newliketab_old(运用旧表创建新表)B:createtabletab_newasselectcol1,col2fromtab_olddefinitiononly5、说明:删除新表:droptabletabname6、说明:增加一个列:Altertabletabnameaddcolumncoltype注:列增加后将不能删除。DB2中列加上后数据类型也不能变更,唯一能变更的是增加varchar类型的长度。7、说明:添加主键:Altertabletabnameaddprimarykey(col)说明:删除主键:Altertabletabnamedropprima
7、rykey(col)8、说明:创建索引:createuniqueindexidxnameontabname(col.)删除索引:dropindexidxname注:索引是不行更改的,想更改必需删除重新建。9、说明:创建视图:createviewviewnameasselectstatement删除视图:dropviewviewname10、说明:几个简洁的基本的sql语句选择:select*fromtable1where范围插入:insertintotable1(field1,field2)values(value1,value2)删除:deletefromtable1where范围更新:up
8、datetable1setfield1=value1where范围查找:select*fromtable1wherefield1like%value1%-like的语法很精妙,查资料!排序:select*fromtable1orderbyfield1,field2desc总数:selectcount*astotalcountfromtable1求和:selectsum(field1)assumvaluefromtable平均:selectavg(field1)asavgvaluefromtable1最大:selectmax(field1)asmaxvaluefromtable1最小:selec
9、tmin(field1)asminvaluefromtable111、说明:几个高级查询运算词A:UNION运算符UNION运算符通过组合其他两个结果表(例如TABLE1和TABLE2)并消去表中任何重复行而派生出一个结果表。当ALL随UNION一起运用时(即UNIONALL),不消退重复行。两种状况下,派生表的每一行不是来自TABLE1就是来自TABLE2。B:EXCEPT运算符EXCEPT运算符通过包括全部在TABLE1中但不在TABLE2中的行并消退全部重复行而派生出一个结果表。当ALL随EXCEPT一起运用时(EXCEPTALL),不消退重复行。C:INTERSECT运算符INTERS
10、ECT运算符通过只包括TABLE1和TABLE2中都有的行并消退全部重复行而派生出一个结果表。当ALL随INTERSECT一起运用时(INTERSECTALL),不消退重复行。注:运用运算词的几个查询结果行必需是一样的。12、说明:运用外连接A、leftouterjoin:左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的全部行。SQL:selecta.a,a.b,a.c,b.c,b.d,b.ffromaLEFTOUTJOINbONa.a=b.cB:rightouterjoin:右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的全部行。C:fullouterjo
11、in:全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的全部记录。其次,大家来看一些不错的sql语句1、说明:复制表(只复制结构,源表名:a新表名:b)(Access可用)法一:select*intobfromawhere11法二:selecttop0*intobfroma2、说明:拷贝表(拷贝数据,源表名:a目标表名:b)(Access可用)insertintob(a,b,c)selectd,e,ffromb;3、说明:跨数据库之间表的拷贝(详细数据运用肯定路径)(Access可用)insertintob(a,b,c)selectd,e,ffrombin详细数据库where条件例子:
12、.frombin&Server.MapPath(.)&data.mdb&where.4、说明:子查询(表名1:a表名2:b)selecta,b,cfromawhereaIN(selectdfromb)或者:selecta,b,cfromawhereaIN(1,2,3)5、说明:显示文章、提交人和最终回复时间selecta.title,a.username,b.adddatefromtablea,(selectmax(adddate)adddatefromtablewheretable.title=a.title)b6、说明:外连接查询(表名1:a表名2:b)selecta.a,a.b,a.c,
13、b.c,b.d,b.ffromaLEFTOUTJOINbONa.a=b.c7、说明:在线视图查询(表名1:a)select*from(SELECTa,b,cFROMa)Twheret.a1;8、说明:between的用法,between限制查询数据范围时包括了边界值,notbetween不包括select*fromtable1wheretimebetweentime1andtime2selecta,b,c,fromtable1whereanotbetween数值1and数值29、说明:in的运用方法select*fromtable1whereanotin(值1,值2,值4,值6)10、说明:两
14、张关联表,删除主表中已经在副表中没有的信息deletefromtable1wherenotexists(select*fromtable2wheretable1.field1=table2.field1)11、说明:四表联查问题:select*fromaleftinnerjoinbona.a=b.brightinnerjoincona.a=c.cinnerjoindona.a=d.dwhere.12、说明:日程支配提前五分钟提示SQL:select*from日程支配wheredatediff(minute,f起先时间,getdate()513、说明:一条sql语句搞定数据库分页selectto
15、p10b.*from(selecttop20主键字段,排序字段from表名orderby排序字段desc)a,表名bwhereb.主键字段=a.主键字段orderbya.排序字段14、说明:前10条记录selecttop10*formtable1where范围15、说明:选择在每一组b值相同的数据中对应的a最大的记录的全部信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成果排名,等等.)selecta,b,cfromtablenametawherea=(selectmax(a)fromtablenametbwheretb.b=ta.b)16、说明:包括全部在TableA中但
16、不在TableB和TableC中的行并消退全部重复行而派生出一个结果表(selectafromtableA)except(selectafromtableB)except(selectafromtableC)17、说明:随机取出10条数据selecttop10*fromtablenameorderbynewid()18、说明:随机选择记录selectnewid()19、说明:删除重复记录Deletefromtablenamewhereidnotin(selectmax(id)fromtablenamegroupbycol1,col2,.)20、说明:列出数据库里全部的表名selectnamef
17、romsysobjectswheretype=U21、说明:列出表里的全部的selectnamefromsyscolumnswhereid=object_id(TableName)22、说明:列示type、vender、pcs字段,以type字段排列,case可以便利地实现多重选择,类似select中的case。selecttype,sum(casevenderwhenAthenpcselse0end),sum(casevenderwhenCthenpcselse0end),sum(casevenderwhenBthenpcselse0end)FROMtablenamegroupbytype显
18、示结果:typevenderpcs电脑A1电脑A1光盘B2光盘A2手机B3手机C323、说明:初始化表table1TRUNCATETABLEtable124、说明:选择从10到15的记录selecttop5*from(selecttop15*fromtableorderbyidasc)table_别名orderbyiddesc随机选择数据库记录的方法(运用Randomize函数,通过SQL语句实现)对存储在数据库中的数据来说,随机数特性能给出上面的效果,但它们可能太慢了些。你不能要求ASP“找个随机数”然后打印出来。事实上常见的解决方案是建立如下所示的循环:RandomizeRNumber=I
19、nt(Rnd*499)+1WhileNotobjRec.EOFIfobjRec(ID)=RNumberTHEN.这里是执行脚本.endifobjRec.MoveNextWend这很简单理解。首先,你取出1到500范围之内的一个随机数(假设500就是数据库内记录的总数)。然后,你遍历每一记录来测试ID的值、检查其是否匹配RNumber。满意条件的话就执行由THEN关键字起先的那一块代码。假如你的RNumber等于495,那么要循环一遍数据库花的时间可就长了。虽然500这个数字看起来大了些,但相比更为稳固的企业解决方案这还是个小型数据库了,后者通常在一个数据库内就包含了成千上万条记录。这时候不就死
20、定了?采纳SQL,你就可以很快地找出精确的记录并且打开一个只包含该记录的recordset,如下所示:RandomizeRNumber=Int(Rnd*499)+1SQL=SELECT*FROMCustomersWHEREID=&RNumbersetobjRec=ObjConn.Execute(SQL)Response.WriteRNumber&=&objRec(ID)&objRec(c_email)不必写出RNumber和ID,你只须要检查匹配状况即可。只要你对以上代码的工作满足,你自可按需操作“随机”记录。Recordset没有包含其他内容,因此你很快就能找到你须要的记录这样就大大降低了处
21、理时间。再谈随机数现在你下定决心要榨干Random函数的最终一滴油,那么你可能会一次取出多条随机记录或者想采纳肯定随机范围内的记录。把上面的标准Random示例扩展一下就可以用SQL应对上面两种状况了。为了取出几条随机选择的记录并存放在同一recordset内,你可以存储三个随机数,然后查询数据库获得匹配这些数字的记录:SQL=SELECT*FROMCustomersWHEREID=&RNumber&ORID=&RNumber2&ORID=&RNumber假如你想选出10条记录(或许是每次页面装载时的10条链接的列表),你可以用BETWEEN或者数学等式选出第一条记录和适当数量的递增记录。这一
22、操作可以通过好几种方式来完成,但是SELECT语句只显示一种可能(这里的ID是自动生成的号码):SQL=SELECT*FROMCustomersWHEREIDBETWEEN&RNumber&AND&RNumber&+9留意:以上代码的执行目的不是检查数据库内是否有9条并发记录。随机读取若干条记录,测试过Access语法:SELECTtop10*From表名ORDERBYRnd(id)Sqlserver:selecttopn*from表名orderbynewid()mysqlselect*From表名OrderByrand()LimitnAccess左连接语法(最近开发要用左连接,Access帮
23、助什么都没有,网上没有Access的SQL说明,只有自己测试,现在登记以备后查)语法selecttable1.fd1,table1,fd2,table2.fd2Fromtable1leftjointable2ontable1.fd1,table2.fd1where.运用SQL语句用.代替过长的字符串显示语法:SQL数据库:selectcasewhenlen(field)10thenleft(field,10)+.elsefieldendasnews_name,news_idfromtablenameAccess数据库:SELECTiif(len(field)2,left(field,2)+.,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022 SQL 语言 总结
限制150内