数据库语句总结_mysql常用语句总结
数据库语句总结由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“mysql常用语句总结”。
实验四
1、建立数据库
createdatabaseTSJY on(name=TSJY, filename='E:TSJY.mdf', size=10MB, maxsize=100MB, filegrowth=1MB)logon(name='TSJY_log', filename='E:TSJYT.ldf', size=5MB, maxsize=50MB, filegrowth=1MB);
2、建表
useS_T createtableStudent(Snochar(11)notnullprimarykey, Snamechar(8)notnull, Ssexchar(2)notnull, SageTinyintnotnull, Sdeptchar(10)notnull check(Ccredit >=1 and Ccredit =1 and Grade
3、将course表的cpno的长度改为3 altertableCoursealtercolumncpnochar(3)
4、给student表中的ex列的增加默认约束,默认值为“男”
altertableStudentaddconstraintdf_Student_Ssex default'男'forSsex;
5、为course表增加一列teacher,char(8)altertableCourseaddteacherchar(8);
6、删除course表的teacher列
altertableCoursedropcolumnteacher;
7、插入数据
insertintoS(SNO,SNAME,STATUS,CITY)values('S1','精益','20','天津'),('S2','盛锡','10','北京'),('S3','东方红','30','北京'),('S4','丰泰盛','20','天津'),('S5','为民','50','上海');
8、为S表设一个主键
altertableSaddprimarykey(SNO);
9、为S表增加一个唯一索引s_sno createuniqueindexs_snoonS(SNO);为SPJ表增加索引spj_sno_pno_jno,要求索引列sno用降序,pno、jno用升序
createindexspj_sno_pno_jnoonSPJ(SNOdesc,pno,jno);为HISD的Doctor表按医生ID(dID)升序建立唯一索引
createuniqueindex Dindex on Doctor(dID)
为HISD的Doctor表按医生ID(dID)降序建立唯一索引
createuniqueindex Dindex on Doctor(dID desc)
10、为SPJ表加外键约束(若建表时已经建立外键,可以先删除某个已有外键,重新建立
altertableSPJaddconstraintFK_SNOforeignkey(SNO)referencesS(SNO);altertableSPJaddconstraintFK_PNOforeignkey(PNO)referencesP(PNO);altertableSPJaddconstraintFK_JNOforeignkey(JNO)referencesJ(JNO);
11、为SPJ表增加列qty的检查约束,要求qty>0 altertableSPJaddconstraintCK_SPJ_qtycheck(qty>0);
12、删除SPJ表的检查约束CK_SPJ_qty altertableSPJdropconstraintCK_SPJ_qty13、查询全体学生的学号与姓名
select Sno,Sname FROM Student14、查询全体学生的基本信息
select * FROM Student15、查询全体学生的姓名、出生年份及所在系
uses_t SELECTSname,year(getdate())-sagebirthyear,sdept FROMstudent16、查询选修了课程的学生学号。(掌握distinct的用法)
SELECTdistinctSnoFROMSC17、查询年龄在18-20岁间的06级的学生姓名及学号
SELECTSname,SnoFROMstudentWHERESageBETWEEN 18 AND 20 ANDSNOlike'2006%'
18、查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别
SELECT Sname,Ssex
FROM Student WHERE Sdept IN('IS','MA','CS');
19、查找所有姓李的学生的信息
SELECT*FROMstudentwhereSnamelike'李%' 20、查找所有已选修但没有成绩的学生学号。
selectSno fromSC whereGradeisnull21、对所有已选课的学生按学号进行升序排列,同时要求每个学生按成绩降序排列。(掌握order by的用法)
selectSno,Grade fromSC orderbySno,Gradedesc22、统计每门课程的选课人数。(掌握group by用法)
selectcourse.Cname,COUNT(sc.Cno)as人数
fromcourse,SC wherecourse.Cno=SC.Cno groupbyCname23、统计重名的学生姓名及人数。
selectSname,COUNT(*)as人数 fromstudent groupbySname havingCOUNT(*)>124、统计男生与女生的人数。
selectex,COUNT(sno)cnt fromstudent groupbyex25、查询“计算机系”年龄最大的学生的基本信息。
select* fromstudenta whereSage=(selectMAX(Sage)fromstudentb whereSdept='计算机系')
实验五
26、打出所有供应商的姓名和所在城市。
useSPJ selectSNAME,CITY froms27、找出所有零件的名称及重量。
useSPJ selectPNAME,WEIGHT fromp28、统计每个供应商供应的各种零件数量。
selectPNAME,COUNT(PNAME)cnt fromP,SPJ whereP.PNO=SPJ.PNO groupbyPNAME29、求供应工程J1零件的供应商号码SNO。
useSPJ selectdistinctsno fromspj wherejno='j1' 30、求供应工程J1零件P1的的供应商号码SNO。
useSPJ selectdistinctsno fromspj wherejno='j1'andpno='p1' 实验六
31、求所在的城市为直辖市的供应商的名称。
selectSnamefromswherecityin('北京','天津','重庆','上海')
32、求供应红色零件的供应商号,零件号和数量。
selectSNO,PNO,QTYFROMSPJ wherePnoIN(SELECTpnoFROMp whereColor='红')
33、没有使用天津供应商生产的红色零件的工程号JNO。
selectdistinctJNOfromSPJwhereJNOnotin(selectJNOfromSPJ,P,SwhereSPJ.PNO=P.PNO
andSPJ.SNO=S.SNOandP.COLOR='红'andS.CITY='天津')
34、求供应数量超过300的供应信息,包括供应商名,零件名,项目名和供应数量。
selectSNAME,PNAME,JNAME,QTYfromSPJ,S,P,J whereS.SNO=SPJ.SNOandP.PNO=SPJ.PNO
andJ.JNO=SPJ.JNOandQTY>30035、至少使用了供应商S1所供应的全部零件的工程号JNO。
selectPNOfromSPJwhereSNO='S1';selectJNOfromSPJwhere(PNO='P1'andSNO='S1')intersectselectJNOfromSPJwhere(PNO='P2'andSNO='S1')
36、找出使用供应商S1所提供零件的工程号码。
selectdistinctJNOfromSPJwhereSNO='S1'
37、找出工程项目J2使用的各种零件的名称及其重量。
selectPNAME,WEIGHTfromP,SPJ whereSPJ.PNO=P.PNOandJNO='J2'
38、找出上海厂商供应的所有零件号码。
selectPNOfromS,SPJwhereS.SNO=SPJ.SNO andS.CITY='上海'groupbyPNO39、找出使用上海产的零件的工程名称。
selectJNOfromS,SPJ whereS.SNO=SPJ.SNOandS.CITY='上海' groupbyJNO40、找出没有使用天津产的零件的工程号码。
selectJNOfromSPJwhereSPJ.JNOnotin(selectJNOfromS,SPJwhereS.SNO=SPJ.SNOands.CITY='天津')
41、查询‘IS’系学生的学号、所选课程名称及该门课程的成绩。
selectSC.Sno,Cname,GradefromSC,Course,student wherestudent.Sno=SC.SnoandCourse.Cno=SC.CnoandSdept='数学系'
42、查询‘CS’系成绩不及格的学生姓名。
selectdistinctSnamefromStudent,SC wherestudent.Sno=SC.SnoandGrade
43、查询每一门的课程的间接先修课程。
selectfirst.Cno,second.Cpno fromCoursefirst,Coursesecond wherefirst.Cpno=second.Cno44、查询所有的学生的选课情况,要求没有选课的情况也能在结果显示出来。
selectStudent.*,sc.CnoFROMStudentLEFTJoinSCon SC.Sno=Student.Sno45、查询每个学生超过他选修课程平均成绩的课程号,课程名称及成绩。
selectx.Cno,Cname,Grade
fromSCx,Coursewherex.Cno=Course.CnoandGrade>(selectAVG(Grade)fromSCywherex.Sno=y.Sno)
46、查询‘IS’系的学生以及‘数据库系统原理’成绩在70~80之间的学生。
selectSnamefromStudent,Course,SC
whereStudent.Sno=SC.SnoandCourse.Cno=SC.Cno andCourse.Cname='数据库系统原理'andGradebetween'70'and'80' andSdept='数学系'
47、用两种方法实现:选修了001课程和002课程的学生学号。
方法一:selectSnofromSCwhereCno='1'intersect selectSnofromSCwhereCno='2' 方法二:selectSnofromSCwhereCno='2'andSnoin(selectSnofromSCwhereCno='1')
48、查询至少选修了学生001课程和002课程的学生学号。
selectdistinctSnofromSCAwherenotexists(select*fromSCBwhere(Cno='1'orCno='2')andnotexists(select*fromSCCwhereC.Sno=A.Sno andC.Sno=B.Sno))实验七
49、建一新表,并将所有学生的学生的学号、平均成绩增加到其中。
createtableavgrade(snochar(11)primarykeynotnull, avgranumeric(3,1))insertintoavgrade(sno,avgra)selectsno,avg(Grade)fromSCgroupbySno 50、假设所有的学生都选了‘008‘课程,如何将记录插入选修表中。
insertintoSC(sno,cno)selectsno,'008' fromstudent51、将所有CS系的成绩不及格学生的成绩加5分。
updateSC setgrade=grade+5 where'计算机系'=(selectsdept fromstudent,sc
wherestudent.Sno=sc.Snoandgrade
52、删除选了‘数据库’数据库的学生的选课记录。
delete fromSC wherecno=(selectcnofromcoursewhereCname='数据库')
53、删除所有的学生记录。
delete
fromstudent54、把全部红色零件的颜色改成蓝色。
updatep setcolor='蓝' wherecolor='红'
55、由S5供给J4的零件P6改为由S3供应。
updatespj setsno='s3' wheresno='s5'andjno='j4'andpno='p6'
56、从供应商关系中删除供应商号是S2的记录,并从供应情况关系中删除相应的记录。
deletefroms wheresno='s2' deletefromSPJ wheresno='s2'
57、请将(S2,J6,P4,200)插入供应情况关系。
insertintospj(sno,pno,jno,qty)values('s2','j6','p4','200')
实验八
58、为“图书”的“分类号”建立一个索引ts_flh。
createindexts_flhontushu(fenleihao)
59、为“借阅”表建立一唯一索引jycx,要求按“借书证号”升序,“借书日期”降序。
createindexjycxonjieyue(cardID,jdatedesc)
60、为“管理员”表建立一检查约束,要求“基本工资”在(100,10000)之间。
altertableadministratoraddconstraintCK_administrator_gongzi
check(gongzibetween 100 and 10000)
61、建立“借阅”与“图书”及“读者”表之间的参照关系。(增加借阅表的外键约束)
altertablejieyueaddconstraintFK_IDforeign key(ID)referencestushu(ID)altertablejieyueaddconstraintFK_cardIDforeign key(cardID)referencesduzhe(cardID)
62、查询出“图书”数据库中作者姓“刘”的所有图书。SELECT*FROMtushuwherewriterlike'刘%'
63、查询出“图书”数据库中高等教育出版社出版的、单价低于25元的所有种类的图书。
select*fromtushuwhereaddre='高等教育出版社'andprice
4、求出“读者”数据库中的总人数。
selectCOUNT(*)fromduzhe 65、求出“图书”数据库中的所有图书的最高价、最低价和平均价。
selectMAX(price)as最高价,MIN(price)as最低价,AVG(price)as平均价fromtushu 66、求出“借阅”库中借书证号为“112”的所借图书的册数。
selectcardID,COUNT(*)as册数fromjieyuewherecardID='112'groupbycardID 67、按分类号降序显示“图书”库中各种图书的分类号、书名合作者。
selectfenleihao,bookname,writerfromtushuorderbyfenleihaodesc 68、按单价升序显示“图书”库中的高等教育出版社出版的所有图书。
select*fromtushuwhereaddre='高等教育出版社'orderbyprice69、按单价升序显示出“图书”库中由清华大学出版社和电子工业出版社出版的所有图书。
select*fromtushuwhere(addre='高等教育出版社'oraddre='电子工业出版社')orderbyprice 70、按书名和作者分组统计出“图书”库中每种图书的数量。
selectbookname,writer,COUNT(*)as数量fromtushugroupbybookname,writer 71、统计出“图书”数据库中15至25元之间的图书数量。
selectcount(*)as数量fromtushuwherepricebetween 15 and 25 72、查询出“图书”数据库中书名中含有“应用基础”字串的所有图书。
select*fromtushuwherebooknamelike'应用基础%' 73、分组统计出“借阅”数据库中每一种借书证号所借图书的册数。
selectcardID,COUNT(*)as册数fromjieyuegroupbycardID 74、按单位分组统计出“读者”数据库中每个单位的人数。
selectdanwei,COUNT(*)as人数fromduzhegroupbydanwei75、分组统计出1997年底以前借阅不低于2本图书的借书证号和数量。
selectcardID,COUNT(*)as人数fromjieyuewherejdate=2 76、联接查询“借阅”库和“图书”,得到借阅每一本书的信息。
select*fromtushu,jieyuewheretushu.ID=jieyue.ID77、联接查询“借阅”库和“读者”库,得到每一个以借阅者的借书证号、姓名、单位。
selectduzhe.cardID,name,danweifromduzhe,jieyuewhereduzhe0..cardID=jieyue.cardID78、联接查询“借阅”、“读者”、“图书”三个库,得到每一本所借图书的读者的借书证号、姓名、单位、书名。
selectduzhe.cardID,name,danwei,booknamefromduzhe,jieyue,tushu
whereduzhe.cardID=jieyue.cardIDandtushu.ID=jieyue.ID 79、从“图书”数据库中(通过对“借阅”库的嵌套)查询出所有被借图书的信息。
select*fromtushuwhereIDin(selectIDfromjieyue)80、按单位分组统计出被借图书的数量。
selectdanwei,COUNT(*)as数量fromduzhe,jieyuewhereduzhe.cardID=jieyue.cardIDgroupbydanwei 81、按单位分组统计出借阅图书的人数。
selectdanwei,COUNT(*)as人数fromduzhewherecardIDin(selectdistinctcardIDfromjieyue)groupbydanwei 82、从读者库中查询出每个借阅图书的读者的情况。
select*fromduzhewherecardIDin(selectdistinctcardIDfromjieyue)83、查询‘管理员’表中职称为教授或副教授,并且在1950年(含该年)以后出生的所有职工记录。
select*fromadministratorwherezhicheng='教授'orzhicheng='副教授'andbirth
4、查询‘管理员’表中基本工资在250到380元之间的职工记录。
select*fromadministratorwheregongzibetween 250 and 380 85、将基本工资小于500的管理员,工资加上100元。
updateadministratorsetgongzi=gongzi+100 wheregongzi
86、列出藏书在十本以上的图书(书名、作者、出版社)。
selectbookname,writer,addrefromtushuwherecangshuliang>1087、“数据库系统原理教程,王珊编,清华大学出版社,1998年出版”还有几本?
selectkucunfromtushuwherebookname='数据库系统'andwriter='王瑞'andaddre='清华大学出版社' 实验九
88、请为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)、零件代码(PNO)、供应数量(QTY)。针对该视图完成下列查询:
CREATEVIEWVSPASSELECTSNO,PNO,QTYFROMSPJ,JWHERESPJ.JNO=J.JNOANDJ.JNAME='三建'
89、找出三建工程项目使用的各种零件代码及其数量。
SELECTPNO,sum(QTY)FROMVSPgroupbyPNO 90、找出供应商S1的供应情况。
SELECTdistinct*FROMVSPWHERESNO='S1' 91、建立信息系学生的视图(用with check option子句),并向该视图中插入类似以下的语句:
insert into is_student1(sno,sname,sage)values(‘20051100101’,‘王一’,20)
是否合理?如何更改?
createviewIS_student as selectsno,sname,sagefromstudent wheresdept='IS' withcheckoption 不合理(sno,sname,sage)不用
92、建立信息系选修了001号课程的学生的视图。
createviewIS_S1 as selectstudent.sno,sname,gradefromstudent,sc wheresdept='IS'andstudent.sno=sc.snoandcno='1' 93、在第(2)题创建的视图的基础上建立信息系选修了1号课程且成绩在90分以上的学生的视图。
createviewIS_S2 as
selectstudent.sno,sname,gradefromstudent,sc wheresdept='IS'andstudent.sno=sc.snoandcno='2'andGrade>=90 94、试图删除“选修”表(SC表),看看第(2)题与第(3)题建立的视图是否存在。
deletefromSC 不存在