还剩18页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
《数据库系统概论》实验报告书专业班级学号姓名指导教师测试成绩SELECT SDEPT,SCLASS,COUNTSNO FROM Student GROUP BY SDEPT,SCLASS HAVINGSCLASS!二01;例3-29:(涉及空值的查询)分别观察各组函数、行的显示顺序以及分组查询与空值的关系select COUNTSCORE from Score;select AVGSCORE from Score;select MAXSCOREfrom Score;select MINSCOREfrom Score;select SUM SCOREfrom Score;select SCOREfrom Score group bySCORE asc;select SCOREfromScoregroup bySCORE desc;例3-30:连接查询求选修了课程001且成绩在70分以下或成绩在90分以上的学生的姓名、课程名称和成绩SELECT SANME,,CNAME,SCORE FROM Student,Course,Score,WHERE Score.CNO=001AND SC0RE90OR SC0RE70AND Course.CNO-Score.CNO ANDStudent.SNO=Score.SNO;例3-31:连接查询与表的别名求选修了课程的学生的学生姓名、课程号和成绩SELECT SNAME,CNO,SCORE FROM Student,Score WHEREStudent.SNO=Score.SNO;例3-32:自身连接查询求年龄大于‘李丽的所有学生的姓名、系和年龄SELECT X.SNAME,X.SDEPT,X.SAGE FROM Student X,Student YWHERE X.SAGEY.SAGE ANDY.SNAME二,李丽,;例3-33:外部连接查询求选修了课程002或003的学生的学号、课程号、课程名和成绩,要求必须将002和003课程的相关信息显示出来SELECT Score.SNO,Score.CNO,Course.CNAME,SCORE,CTIME FROM Course,Score WHERECourse.CNO IN002,003AND Score.CNO=Course.CNO+;例3-34:子查询求与‘黎明年龄相同的学生的姓名和系SELECT SNAME,SDEPT FROM Student WHERESAGE INSELECT SAGE FROM Student WHERE SNAME三黎明,;例3-35:子查询求选修了课程名为数据结构的学生的学号和姓名SELECT SNO,SNAME FROM Student WHERE SNO INSELECT SNO FROM Score WHERECN0=SELECT CNO FROMCourse WHERECNAME=数据结构例3-36:子查询ANY求比数学系中某一学生年龄大的学生的姓名和系SELECT SANMESDEPT FROM Student WHERESAGEANYSELECT SAGE FROM Student WHERE SDEPT=MAAND SDEPTOMA;例3-37:子查询ALL求比数学系中全体学生年龄大的学生的姓名和系SELECT SNAME,SDEPT FROM Student WHERESAGEALL SELECT SAGE FROM Student WHERE SDEPT=MAAND SDEPTOMA;例3-38:子查询EXISTS求选修了课程004的学生的姓名和系SELECT SNAME,SDEPT FROM Student WHERE EXISTS SELECT*FROM Score WHERE CNO=004ANDSNO二Student.SNO;例3-39:返回多列的子查询求与‘黎明同系且同龄的学生的姓名和系SELECT SNAME,SDEPT FROM Student WHERE SDEPT=SELECT SDEPT FROM Student WHERE SNAME=黎明AND SAGE=SELECTSAGE FROM Student WHERE SNAME=黎明;单行子查询返回多个行,因为Student表中有两名学生叫黎明例3-40多个子查询求与一黎明同系,且年龄大于‘李丽的学生的信息SELECT*FROM Student WHERE SDEPTin SELECT SDEPT FROM Student WHERE SNAME=黎明AND SAGESELECTSAGE FORMStudent WHERESANME=李丽;例3-41:子查询中使用表连接求数学系中年龄相同的学生的姓名和年龄SELECT X.SNAME,X.SAGE FROMStudent X,Student YWHERE X,SAGE=Y.SAGE ANDX.SDEPTW ANDY.SDEPT=MA ANDX.SNOOY.SNO;例3-42:连接或嵌套查询检索至少选修王成刚老师所授课程中一门课程的女学生姓名SELECT SNAMEFROMStudent WHERE SNO IN SELECT SNO FROM Score WHERE CNO IN SELECT CNO FROMTeach WHERETNAME=王成刚例3-43:嵌套与分组查询检索选修某课程的学生人数多于3人的教师姓名SELECT TNAMEFROM TeachWHRERE CNO INSELECT CNOFROM Score GROUP BY CNO HAVING3COUNTSNO;例3-44:集合查询列出所有教师和同学的姓名和性别SELECT SANME,SSEX FROMStudent UNIONSELECT TNAMETSEX FROMTeach;例3-45:相关子查询求未选修课程004的学生的姓名SELECT SNAMEFROMStudent WHERE SNONOT INSELECT SNO FROM ScoreWHRER CNO004;例3-46:相关子查询求选修了全部课程的学生的姓名SELECT SNAMEFROMStudent WHERE NOT EXISTS SELECT*FROM Course WHERE NOTEXISTSSELECT*FROM Score WHERE SNO=Student.SNO ANDCN0=Course.CNO;例3-47:相关子查询求至少选修了学生96002所选修的全部课程的学生的学号SELECT DISTINCTSNO FROM Score SCIWHERE NOEXISTS SELECT*FROM ScoreSC2WHERESCI.SNO=96002AND NOEXISTS SELECT*FROM ScoreSC3WHERE SNO=SC
1.SNO ANDCN0=SC
2.CNO;例3-48:相关子查询求成绩比所选修课程平均成绩高的学生的学号、课程号、和成绩SELECT SNOCNO.SCORE FROM Score SCIWHERE EXTSTSSELECT*FROMScoreSC2GROUP BYCNO HAVINGSCI.SCOREAVGSCORE AND CNO=SC
1.CNO例3-49:相关子查询查询被一个以上的学生选修的课程号SELECT CNOFROM CourseWHEREEXISTSSELECT*FROMScoreGROUP BYCNOHAVING COUNTSNO1ANDCNO=Course.CNO;例3-50:相关子查询查询所有未选课程的学生姓名和所在系.SELECT SNAME,SDEPTFROMStudentWHERENOTEXISTSSELECT*FROMScore WHERESNO=Student.SNO;[实验要求]对数据库表进行各种查询操作[实验方法]
①将实验需求用SQL语句表示;
②执行SQL语句;
③查看执行结果,如果结果不正确,进行修改,直到正确为止[实验总结]
①SQL语句以及执行结果;
②对重点实验结果进行分析;
③实验中的问题和提高;
④收获与体会.实验四视图、授权控制与事务处理[实验日期]年月.日[实验目的]通过实验进一步理解视图的建立和更新、数据库的权限管理和事务处理功能[实验内容]
4.SQL视图的定义与操纵:例4-1:(建立视图)建立计算机系的学生的视图STUDENT_CSocreate viewSTUDENT CSas select*from Student where SDEPT=CS;例4-2:(建立视图)建立由学号和平均成绩两个字段的视图STUDENT_GR.create viewSTUDENT_GRSNO,AG as select SNO,AVGSCORE agfromScoregroup by SNO;例4-3:(视图查询)利用视图STUDENT_CS,求年龄大于19岁的学生的全部信息select*from STUDENT_CS whereSAGE19;例4-4:(视图查询)利用视图STUDENT_GR,求平均成绩为88分以上的学生的学号和平均成绩select SNO,AGfrom STUDENT_GR whereAG88;例4-5:(视图更新)利用视图STUDENT_CS,增加学生(‘96006,张然,CS02,男,19)oinsert intoSTUDENT_CS values96006,‘张然‘,‘CS,’02,‘男,19;例4-6:(视图更新)利用视图STUDENT.CS,将学生年龄增加1岁观察其运行结果并分析原因update STUDENT_CS setSAGE二SAGE+1;例4-7:(视图更新)利用视图STUDENT_GR,将平均成绩增加2分观察其运行结果并分析原因updateSTUDENT_GR setAG=AG+2;例4-8:(视图更新)删除视图STUDENT_CS中学号为‘96006’的学生的全部数据delete fromSTUDENT_CS whereSNO=96006;例4-9:(视图更新)删除视图STUDENT_GR的全部数据delete fromSTUDENT_GR;例4-10:(删除视图)删除视图STUDENT_CS和STUDENT_GROdrop viewSTUDENT_CS;drop viewSTUDENT_GR;
5.SQL数据控制语句例5-1(授权)给左右邻近同学(用户)授予在表Student上的SELECT权限,并使这两个用户具有给其他用户授予相同权限的权限grant selecton Studentto U149074316,U149074318with grantoption;例5-2:(授权)给邻近同学(用户)授予Teach表上的所有权限grant allon Teachto U149074316,U149074318;例5-3:(授权)给所有用户授予Score表上的SELECT权限grant selecton Scoreto public;例5-4:(授权验证)观察左右邻近同学查询你所授权的表中的内容例5-5:(收回授权)收回上面例子中的所有授予的权限revoke selecton Studentfrom U149074316,U149074318;revoke allon TeachfromU149074316,U149074318;revoke selecton Scorefrom public;
6.SQL事务处理例6T(事务回退)将课程名称表中的‘程序设计课程学时数修改为
80、微机原理课程学时数修改为70学时,查询全部课程的总学时数后,取消所有修改(ROLLBACK)再次查询全部课程的总学时数注意比较分析两次查询的结果update Courseset CTIME=80where CNAME=程序设计;update Courseset CTIME=70where CNAME=微机原理;select CNO,SUMCTIME fromCourse group by CNO;rollback;select CNO,SUMCTIME fromCourse groupby CNO;例6-2:事务提交将课程名称表中的‘程序设计课程学时数修改为
80、微机原理课程学时数修改为70学时,查询全部课程的总学时数后,确认所有修改COMMIT再次查询全部课程的总学时数注意比较分析两次查询的结果update Courseset CTIME=80where CNAME二程序设计;update Courseset CTIME=70where CNAME=,微机原理;select CNO,SUMCTIME fromCourse groupby CNO;commit;select CNO,SUMCTIME fromCourse groupby CNO[实验要求]
①建立视图,视图查询,视图更新;
②给某一或全部用户授权和收回授权;
③事务回退,事务提交[实验方法]
①将实验需求用SQL语句表示;
②执行SQL语句;
③查看执行结果,如果结果不正确,进行修改,直到正确为止[实验总结]
①SQL语句以及执行结果;
②对重点实验结果进行分析;
③实验中的问题和提高;
④收获与体会.实验五Oracle存储过程与触发器[实验日期]年.・月.・日[实验目的]通过实验进一步理解和掌握Oracle数据库的存储过程和触发器[实验内容]
4.存储过程与触发器例7-1:存储过程创建一个显示学生总人数的存储过程CREATE ORREPLACE PROCEDURESTU_COUNT SUMOUT NUMBERASBEGINSELECT COUNT*INTO SUMFROM STUDENT;END;END;例7-2:存储过程创建显示学生信息的存储过程STUDENT_LIST,并引用STU_COUNT存储过程create orreplace procedure STUDENT_LIST asplStudent.SNO%type;p2Student.SNAME%type;p3Student.SDEPT%type;p4Student.SCLASS%type;p5Student.SAGE%type;p6Student.SSEX%type;N number2;cursor C_S isselect*from Student;beginOPEN C_S;STU_COUNTN;for iIN
1..N LOOPFETCHC_S INTOpl,p2,p3,p4,p5,p6;dbms_output.put」ineSNO:||pl|ISNAME:||p2|ISDEPT:||p3|ISCLASS:||p4||SAGE:||p51ISSEX:||p6;END LOOP;END;例7-3:存储过程创建一个显示学生平均成绩的存储过程create orreplace procedureSTU_AGV_SNOINSTUDENT.SNO%TYPEasV_SNAME STUDENT.SNAME%TYPE;V_AG NUMBER5,2;beginselect AVGSCOREinto V_AVG fromScore whereSNO=V_SNO;select SNAMEinto VSNAME fromStudent whereSNO=V SNO;dbms_output.put_lineC SNAME/||S_NAME|rAVG_SCORE/||S_AVG;END;例7-4:存储过程创建显示所有学生平均成绩的存储过程create orreplaceprocedureSCORE_AVGasSavg number7,3;beginselect AVGSCOREinto Savgfrom SCORE;dbms_output.put_line,S_AVG:||S_AVG;end;set serveroutputon;execute SCORE_AVG;例7-5:修改数据库表在Student表中增加SAVGN,6,2字段alter tableStudent addSAVG number6,2;例7-6:存储过程创建存储过程,计算每个学生的平均成绩保存到学生表SAVG字段中CREATE ORREPLACE PROCEDURESAVE_AVGASS_SNO STUDENT.SNO%TYPE;NUM NUMBER2;I NUMBER;CURSOR C_ADD ISSELECT SNO FROM STUDENT;BEGINSTU_COUNTNUM;OPEN C_ADD;FOR IIN
1..NUM LOOPFETCHC ADDINTO SSNO;UPDATE STUDENTSET SAVG=SELECT AVGSCORE FROMSCORE GROUP BY SNOHAVING SNO=S_SNOWHERESNO=S_SNOEND LOOP;CLOSE C_ADD;END SAVE_AVG;EXECUTE SAVE_AVG;例7-7:触发器当更新学生成绩表SCORE中的学生成绩时,自动计算该学生的平均成绩保存到学生表SAVG字段中CREATE ORREPLACE TRIGGERSC_UP AFTERUPDATE ONSCOREREFERENCING NEWAS NEWOLD ASOLD FOREACH ROWBEGINIFUPDATING THENSAVE_AVG;END IF;END;例7-8:触发器创建包含插入、删除、修改多种触发事件的触发器DML_LOG,对SCORE表的操作进行记录用INSERTING、DELETING、UPDATING谓词来区别不同的DML操作先创建事件记录表LOGS,该表用来对操作进行记录该表的字段含义解释如下LOG_ID:操作记录的编号,数值型,它是该表的主键,自动增1,可由序列自动生成LOG_TABLE:进行操作的表名,字符型,非空,该表设计成可以由多个触发器共享使用比如我们可以为Student表创建类似的触发器,同样将操作记录到该表LOG DML操作的动作,即INSERT、DELETE或UPDATE三种之一LOG_KEY_ID:操作时表的主键值,数值型之所以记录表的主键,是因为主键是表的记录的惟一标识,可以识别是对哪一条记录进行了操作对于Score表,主键是由SNO_CNO构成LOG.DATE操作的日期,日期型,取当前的系统时间LOG_USER操作者,字符型,取当时的操作者账户名比如登录SCOTT账户进行操作,在该字段中,记录账户名为SCOTTCREATE TABLELOGSLOG_ID NUMBER10PRIMARY KEY,LOG_TABLE VARCHAR210NOT NULL,LOG_DML VARCHAR210,LOG_KEY_ID NUMBER10,LOG_DATE DATE,LOG_USER VARCHAR215;CREATE SEQUENCELOGS_ID_SQU INCREMENTBY1START WITH1MAXVALUE9999999NOCYCLE NOCACHE;CREATE ORREPLACE TRIGGERDML_LOGBEFORE DELETEOR INSERTOR UPDATEONSCOREFOR EACHROW—行级触发器BEGINIF INSERTINGTHENINSERT INTOLOGS VALUESLOGS_ID_SQU.NEXTVAL,SCORE,INSERT,,:new.SNO,SYSDATE,USER;ELSIF DELETINGTHENINSERT INTOLOGS VALUESLOGS_ID_SQU.NEXTVAL,SCORE,DELETE,:old.SNO,SYSDATE,USER;ELSEINSERT INTOLOGS VALUESLOGS_ID_SQU.NEXTVAL,SCOREUPDATEnew.SNO,SYSDATE,USER;END IF;END;[实验要求]
①创建、调试和修改、调用和执行Oracle存储过程;
②创建、调试和修改、测试Oracle触发器.[实验方法]
①将实验需求用SQL语句表示;
②执行SQL语句;
③查看执行结果,如果结果不正确,进行修改,直到正确为止[实验总结]
①SQL语句以及执行结果;
②对重点实验结果进行分析;
③实验中的问题和提高;
④收获与体会实验一数据定义语言[实验日期]年月日[实验目的]熟悉Oracle上机环境及Oracle客户端的配置;熟练掌握和使用DDL语言,建立、修改和删除数据库表、主键、外键约束关系和索引[实验内容]Oracle上机环境以及Oracle客户端的配置参见附录
1.SQL数据定义语句例1-1建立数据库表建立教学数据库的四个数据库表,其中Student表中不包含SSEXC2字段,Sname字段为Sname C,8且可为空CREATE TABLEStudent SNO CHAR5,SNAME CHAR10NULL,SDEPT CHAR2,SCLASS CHAR2,SAGE NUMBER2,CONSTRAINT SON_PK PRIMARY KEY SNO;CREATE TABLECourseCNO CHAR3,CNAME VARCHAR216,CTIME NUMBER3,CONSTRAINT CNO_PK PRIMARYKEY CNO;CREATE TABLETeachTNAME CHAR8,TSEX CHAR2,CNO CHAR3,TDATE DATE,TDEPT CHAR2,CONSTRAINT TT_PK PRIMARYKEYTNAME,CNO,TDEPT,CONSTRAINT CNO_FK FOREIGNKEYCNO REFERENCESCourseCNO;CREATE TABLEScore心得体会例1-3修改列名时错误的将其与修改表明混杂在一起了,正确的使用方法是ALTER TABLE表名RENAME COLUMN列名TO列名例3-14中,查询字段SNAME为char型,因此在存储时会自动在后面加上空格在取数据并进行判断时,需要将其用trim函数进行去空格化操作例3-16中,在oracle中,」代表一个占位符,在进行查询时,需要将进行转义,用escape进行转义声明例3-28中,查询条件写成了where格式,正确做法应当为having,因为存在groupby语句,查询条件应当使用having进行连接例3-34中,查询与黎明‘学生相关信息相同的学生信息时,没发现‘黎明’这个学生名存在两个,不能使用二,应当使用in例3-47中,查询结果存在重复,查询时忘记去重,应当加上distinc练习3后几题的相关子查询中,对exists的使用不熟练,需要多练习总结通过这次的数据库实验,掌握了基本的SQL语言,学会了创建表,以及对基本表的增、册h改、查操作,以及视图的创建,在写SQL语言过程中一定要仔细认真,有一点小错误都会导致结果不正确,同时学会了考虑问题时一定要全面,考虑各种情况是否有遗漏,只有这样才能写出正确的语句SNOCHAR5,CNO CHAR3,SCORE NUMBER5,2,CONSTRAINT SC_PK PRIMARYKEY SNO,CNO,CONSTRAINT CNO1_FK FOREIGNKEYCNO REFERENCESCourse CNO,CONSTRAINT SNO_FK FOREIGNKEYSNO REFERENCESStudent SNO;Score表中定义外键的名称不能为CNO,被Teach表中约束条件占用例1-2:修改数据库表在Student表中增加SEXC,2字段ALTER TABLEStudent ADDSEX CHAR2;例1-3:修改列名将Student表中列名SEX修改为SSEXALTER TABLEStudent RENAMECOLUMN SEXTO SSEX;例1-4:修改数据库表将Student表中把Sname字段修改为Sname C,10且为非空ALTER TABLEStudent MODIFYSNAME CHAR10NOT NULL;例1-5:建立索引为Score表按课程号升序、分数降序建立索引,索引名为SC_GRADECREATE UNIQUEINDEX SC_GRADE ONScoreCNO ASC,SCORE DESC;例1-6:删除索引删除索引SC_GRADEoDROP INDEXSC_GRADE;例1-7:建立数据库表建立数据库表S1SNO,SNAME,SD,SA,其字段类型定义与Student表中的相应字段SNO,SNAME,SDEPT,SAGE的数据类型定义相同CREATE TABLESlSNO CHAR5PRIMARYKEYNOT NULL,SNAME CHAR10,SD CHAR2,SA NUMBER2;create tableSI asselectSNO,SNAME,SDEPT asSD,SAGE asSA fromStudentwhere1=2;例「8:修改数据库表删除成绩表Score的参照完整性约束关系ALTER TABLEScore DROPCONSTARINT SNO_FK;ALTER TABLEScore DROPCONSTARINT CN01_FK;例1-9:修改数据库表添加成绩表Score的参照完整性约束关系ALTER TABLESCORE ADDCONSTRAINT CNO1_FK FOREIGNKEYCNO REFERENCESCourseCNO;ALTER TABLESCORE ADDCONSTRAINT SNO_FK FOREIGNKEYSNO REFERENCESStudentSNO;例1-10:修改数据库表名将数据库表S1改名为Student_TempoRENAME SITO Student_Temp;[实验要求]1熟悉Oracle上机环境,掌握Oracle客户端的配置;2建立数据库表,修改数据库表结构,建立、删除索引;[实验方法]
①按照附录中的操作步骤进行客户端的配置;
②将实验需求用SQL语句表示;
③执行SQL语句;
④查看执行结果,如果结果不正确,进行修改,直到正确为止[实验总结]
①SQL语句以及执行结果;
②对重点实验结果进行分析;
③实验中的问题和提高;
④收获与体会.实验二数据操纵语言[实验日期]年月日[实验目的]在实验一的基础上,熟练掌握和使用DML语言,对数据进行增加、修改和删除操作[实验内容]
2.SQL数据操纵语句例2-1:插入数据按前面各表中的数据分别插入到教学数据库的四个数据库表中例2-2:多行插入将表Student中在计算机系CS的学生数据插入到表Student_Temp中INSERT INTOStudent_TempSNO,SNAME,SD,SASELECT SNO,SNAME,SDEPT,SAGE FROM STUDENTWHERE SDEPT=CS’;以上操作中,注意用COMMIT提交数据,将数据保存到数据库服务器例2-3利用查询来实现表的定义与数据插入求每一个学生的平均成绩,把结果存入数据库表Student Gr中CREATE TABLEStudent_GrSNO CHAR10,SAVG NUMBER5,2;INSERT INTOStudent_GrSNO,SAVGSELECT SNO,AVGScoreFROM ScoreGROUP BY SNO;create tableStudent GrasselectSNO,AVGSCORE fromScoregroupbySNO;例2-4:修改数据将Student_Temp表中所有学生的年龄加2UPDATE Student_Temp SETSA=SA+2;例2-5:修改数据将Course表中程序设计课时数修改成与数据结构的课时数相同UPDATE CourseSET CTIME=SELECT CTIME FROMCourseWHERE CNO=004WHERE CNO=008’;例2-6:插入数据向Score表中插入数据「98001—’001—95,根据返回信息解释其原因INSERT INTOSCORE VALUES98001001,95;原因插入的数据如果某个字段是外键那么该值要么为空要么在主键表中有对应的主键值,否则就不满足参照完整性约束,Score表中的SNO字段是根据Student中的SNO建立的,然而Student中的SNO中没有98001o例2-7插入数据向Score表中插入数据「97001,‘010’,80,根据返回信息解释其原因INSERT INTOSCORE VALUES,97001010,85;原因因为Score表中的CNO字段是根据Course中的CNO建立的,Course表中并没有课程号是010的例2-8(删除数据)删除Student表中学号为‘96001’的学生信息,根据返回信息解释其原因DELETE FROMStudentWHERESNO=96001;原因因为Student表中学号已经被别的表作为外键,不可以被删除,违反完整约束条件例2-9(删除数据)删除Course表中课程号为‘003’的课程信息,根据返回信息解释其原因DELETE FROMCOURSE WHERECNO=003;原因因为Course表中课程号已经被别的表作为外键,不可以被删除,违反完整约束条件例2-10:(删除数据)删除学生表Student.Temp中学号以96打头的学生信息DELETE FROMStudent_Temp WHERESNO LIKE96%’;(此操作后,注意用ROLLBACK回退可能更新的数据)例2-11:(删除数据)删除数据库表Student_Temp中所有学生的数据DELETE FROMStudent_Temp;例2-12:(删除表)删除数据库表Student_Temp和Student_GroDROP TABLEStudent_Temp;DR0P TABLEStudent_Gr;[实验要求]对数据库表进行插入、修改和删除数据的操作[实验方法]1按照附录中的操作步骤进行客户端的配置;2将实验需求用SQL语句表示;
③执行SQL语句;
④查看执行结果,如果结果不正确,进行修改,直到正确为止[实验总结]
①SQL语句以及执行结果;
②对重点实验结果进行分析;
③实验中的问题和提高;
3.SQL数据查询语句例3-1:(选择表中的若干列)求全体学生的学号、姓名、性别和年龄SELECT SNO,SNAME,SSEX,SAGE FROMStudent;例3-2:(不选择重复行)求选修了课程的学生学号SELECT DISTINCTSNOFROMScore WHERECNO ISNOT NULL;例3-3:(选择表中的所有列)求全体学生的详细信息SELECT*FROMStudent;例3-4:(使用表达式)求全体学生的学号、姓名和出生年份SELECT SNO,SNAME,2016-SAGE AS〃出生年份〃FROMStudent例3-5:(使用列的别名)求学生的学号和出生年份,显示时使用别名“学号”和“出生年份二SELECTSNO AS〃学号〃,2016-SAGE AS〃出生年份〃FROMStudent;例3-6:(比较大小条件)求年龄大于19岁的学生的姓名和年龄SELECT SNAME,SAGE FROMStudentWHERESAGE19;例3-7:(比较大小条件)求计算机系或信息系年龄大于18岁的学生的姓名、系和年龄SELECT SNAME,SDEPT,SAGE FROMStudentWHERESDEPT=CS ANDSAGE18;例3-8:(确定范围条件)求年龄在19岁与22岁(含20岁和22岁)之间的学生的学号和年龄SELECT SNO,SAGE FROMStudentWHERESAGE BETWEEN20AND22;例3-9:(确定范围条件)求年龄不在19岁与22岁之间的学生的学号和年龄SELECT SNO,SAGEFROMStudentWHERESAGE NOTBETWEEN19AND22;例3-10:(确定集合条件)求在下列各系的学生信息数学系、计算机系SELECT*FROMStudentWHERESDEPTINMA,CS;例3-11:(确定集合条件)求不是数学系、计算机系的学生信息例3-12:(匹配查询)求姓名是以“李”打头的学生SELECT*FROMStudentWHERESDEPTNOT INMA,CS;SELECT*FROMStudentWHERESNAMELIKE李常;例3-13:(匹配查询)求姓名中含有“志”的学生例3-14:(匹配查询)SELECT*FROMStudentWHERESNAMELIKE%志对;求姓名长度至少是三个汉字且倒数第三个汉字必须是“马”的学生SELECT*FROMStudentWHERE trimSNAMELIKE%马;例3-15:匹配查询求选修课程001或003,成绩在80至90之间,学号为96xxx的学生的学号、课程号和成绩SELECTSNO,CNO,SCORE FROMScoreWHERECNOIN001003AND SCOREBETWEEN80AND90ANDSNO LIKE96%’;例3T6:匹配查询求课程名中包含字符的课程号、课程名和学时数SELECTCNO,CNAME,CTIMEFROMCourseWHERECNAME LIKE%\_%ESCAPE\;例3T7:涉及空值查询求缺少学习成绩的学生的学号和课程号SELECTSNO,CNOFROMScoreWHERESCORE ISNULL;例3-18:控制行的显示顺序求选修003课程或004课程的学生的学号、课程号和分数,要求按课程号升序、分数降序的顺序显示结果SELECT*FROMScoreWHERECNOIN003,004ORDER BYCNO,SCORE DESC;例3-19:组函数求学生总人数SELECTCOUNT*FROMStudent;例3-20:组函数求选修了课程的学生人数SELECT COUNTDISTINCTSNOFROMScore;例3-21:组函数求计算机系学生的平均年龄SELECT AVG SAGEFROMStudentWHERESDEPT=CS’;例3-22:组函数求选修了课程001的最高、最低与平均成绩SELECT MAXSCORE,MINSCORE,AVGSCORE FROMScoreWHERECNO=001’;例3-23:分组查询求各门课程的平均成绩与总成绩SELECT AVGSCORE,SUMSCOREFROMScoreGROUP BYCNO;例3-24:分组查询求各系、各班级的人数和平均年龄SELECT COUNTSNO,AVGSAGEFROMStudent GROUP BY SDEPT,SCLASS;例3-25:分组查询输入以下查询语句并执行,观察出现的其结果并分析其原因.SELECT SNAME,SDEPT,COUNT*FROM STUDENTWHERESDEPT=CS GROUP BY SDEPT;SELECT列表项中不存在的列可以出现在GROUP BY的列表项中,但是SELECT列表中出现的GROUP BY里必须有此处SNAME未出现在GROUPBY中;例3-26:分组查询分析以下语句为什么会出现错误并给出正确的查询语句SELECTSAGEFROMSTUDENTGROUPBYSNO;SELECT列表项中不存在的列可以出现在GROUPBY的列表项中,但是SELECT列表中出现的GROUPBY里必须有此处SAGE未出现在GROUPBY中;例3-27:分组查询求学生人数不足3人的系及其相应的学生数SELECTSDEPT,COUNTSNO FROMStudentGROUPBYSDEPTHAVINGCOUNTSNO3;例3-28:分组查询求各系中除01班之外的各班的学生人数。
个人认证
优秀文档
获得点赞 0