您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 实验十五-使用SQL语言(二)
1实验十五使用SQL语言(二)一、实验目的与要求1.复习创建数据库的方法。2.掌握导入数据表的方法。3.掌握使用SQL语言的方法。二、实验内容1.创建数据库,并导入数据表【任务1】使用MySQL-front软件创建数据库studb,然后导入数据表。步骤:(1)连接MySQL服务器方法:把教师机共享的“实验15数据表”文件夹复制到桌面上,在phpStudy界面的“MySQL管理器”中选择MySQL-front,打开该软件,然后选择localhost,点击“打开”按钮。如下图所示:(2)创建一个数据库studb,并采用简体中文编码格式。方法:在左侧点击“localhost”,然后单击“新建数据库”按钮,在“新建数据库”的文本框中,输入名称:studb,选择字符集:gbk,字符集校对:gbk_Chinese_ci(即简体中文),然后单击“确定”按钮。如下图所示:当添加数据库studb完毕之后,在左侧列表中会显示该数据库,如下图所示:2(3)在数据库“studb”中导入3张数据表student、course和sc。方法:在左侧列表中选择数据库“studb”,右键单击它,选择“输入-SQL文件夹”,然后选择数据表文件student.sql,然后单击“打开”按钮。如下图所示:按照类似的方法,在数据库“studb”中导入其他2张数据表course和sc。导入完毕后,会显示出数据库“studb”中所有的数据表,如下图所示:3如果无法显示出数据表,则可以先关闭MySQL-front软件,再重新打开该软件,即可正常显示出所有数据表。这3张表中的字段如下所示:数据表student,用于存放学生信息,有5个字段,具体如下:字段名数据类型长度说明备注snochar8主键(主索引),不允许为空学号snamevarchar10不允许为空姓名ssexchar1不允许为空,默认值:男性别sbirthdate不允许为空,默认值:2000-01-01出生日期sdeptvarchar20不允许为空系名数据表course,用于存放课程信息,有2个字段,具体如下:字段名数据类型长度说明备注courseidchar8主键、不允许为空课程号cnamevarchar20不允许为空课程名数据表sc,用于存放学生考试成绩信息,有3个字段,具体如下:字段名数据类型长度说明备注snochar8主键、不允许为空学号courseidchar8主键、不允许为空课程号gradetinyint3不允许为空、默认值:0成绩2.使用SQL语言【任务2】使用SQL语言,完成数据查询。请同学们记录任务2中各题对应的SQL语句,并保存select查询的结果,填入Word文档“实验15实验报告.doc”中。注意:4一个SQL语句使用分号(;)结尾,否则mysql认为语句没有输入完。SQL语句关键字和函数名不区分大小写(Linux区分,Windows不区分)。SELECT查询语句的语法:SELECT[DISTINCT|ALL]列名1[,列名2,...]FROM表名1[,表名2,...][WHERE条件表达式][GROUPBY列名1[HAVING条件表达式][ORDERBY列名2[ASC|DESC],...]说明:from子句:指定查询数据的表where子句:查询的数据应满足什么条件groupby子句:按“列名1”的值进行分组having子句:对分组后的结果进行条件限制orderby子句:对查询结果结果按“列名2”排序,选项asc升序(默认)或desc降序。步骤:(1)查询选修了课程号为“01000002”的学生的学号sno及考试成绩grade,并将查询结果按“考试成绩”降序排列,成绩相同的按照“学号”升序排列。方法:在左侧选择“studb”,然后单击“SQL编辑器”,删除原来的代码,输入下图所示的代码,然后单击“运行”按钮。如下图所示:(2)查询所有学生的姓名sname和年龄,要求用中文“姓名”和“年龄”显示列名,并按照“年龄”降序排列。方法:与上例类似,请自己完成SQL语句,并记录查询结果。提示:年龄要通过“当前系统日期所在年份-出生日期所在年份”来计算,其中年份函数是year(),系统当前日期函数是curdate(),即当前系统日期所在年份是year(curdate())。在查询语句中常用的集函数:计数函数:count(列名)计算元素的个数求和函数:sum(列名)对某一列的值求和,但属性必须是整型计算平均值:avg(列名)对某一列的值计算平均值求最大值:max(列名)找出某一列的最大值求最小值:min(列名)找出某一列的最小值(3)查询每个学生的平均成绩,并用中文“学号”和“平均分”显示列名。方法:单击“SQL编辑器”,输入下图所示的代码,然后单击“运行”按钮。如下图所示:5(4)查询每个学生的平均成绩在70分以上的记录,并用中文“平均分”显示列名。方法:与上例类似,请自己完成SQL语句,并记录查询结果。提示:用groupby子句对学号sno进行分组,用having子句对分组后的结果进行条件限制,筛选出平均成绩大于70分的记录。WHERE子句中常用的谓词:BETWEEN……AND……:在两个数之间NOTBETWEEN……AND……:不在两个数之间IN(值1,值2……):是否在特定的集合里(枚举);NOTIN(值1,值2……):与前者相反LIKE:是否匹配于一个模式ISNULL:是否为空;ISNOTNULL:是否不为空(5)使用BETWEEN……AND谓词查询课程号为“01000001”的成绩在80~100分(包括80分和100分)之间的学生的学号sno和成绩grade。方法:单击“SQL编辑器”,输入下图所示的代码,然后单击“运行”按钮。如下图所示:(6)使用BETWEEN……AND谓词查询年龄在16~18岁(包括16岁和18岁)之间的学生的姓名sname和年龄,并用中文“姓名”和“年龄”显示列名。方法:与上例类似,请自己完成SQL语句,并记录查询结果。(7)使用IN谓词查询系名为“外语”和“计算机”学生的姓名sname和性别ssex。方法:单击“SQL编辑器”,输入下图所示的代码,然后单击“运行”按钮。如下图所示:(8)使用IN谓词查询选修了课程号courseid为“01000002”和“01000003”的学生的学号sno和6课程号courseid。方法:与上例类似,请自己完成SQL语句,并记录查询结果。使用LIKE谓词进行模糊查询时,可以使用2种通配符:_:匹配任何单个字符%:匹配任意个字符(包括零个字符)(9)使用LIKE谓词查询所有姓“田”的学生学号sno、姓名sname和性别ssex。方法:单击“SQL编辑器”,输入下图所示的代码,然后单击“运行”按钮。如下图所示:(10)使用LIKE谓词查询学生姓名中第2个字为“伟”的学生学号sno和姓名sname。方法:与上例类似,请自己完成SQL语句,并记录查询结果。(11)使用ISNULL谓词查询缺少成绩的学生的学号sno和相应的课程号courseid。说明:由于某些学生选修课程后,并没有参加考试,所以他们有选课记录,但没有考试成绩。方法:单击“SQL编辑器”,输入下图所示的代码,然后单击“运行”按钮。如下图所示:此题查询结果是空的,因为数据表中不存在没有成绩的学生。如果查询时,需要同时涉及多个表的查询,则称为连接查询。用来连接两个表的条件称为连接条件。(12)使用多表连接查询各个学生选修课程的情况,要求:显示出学生的姓名sname、选修的课程号courseid和成绩grade。方法:单击“SQL编辑器”,输入下图所示的代码,然后单击“运行”按钮。如下图所示:7(13)使用多表连接查询选修了课程号为“01000001”的学生的学号sno、姓名sname和成绩grade。方法:与上例类似,请自己完成SQL语句,并记录查询结果。(14)使用多表连接查询所有选修了课程号为“01000001”的学生的姓名sname、课程名cname和成绩grade,并用中文“姓名”、“课程名”和“成绩”显示列名。方法:单击“SQL编辑器”,输入下图所示的代码,然后单击“运行”按钮。如下图所示:将一个查询块嵌套在另一个查询块的WHERE或HAVING子句条件中的查询称为子查询。一个SELECT-FROM-WHERE语句称为查询块。(15)使用子查询查询选修了课程号为“01000002”的学生的姓名sname。方法:单击“SQL编辑器”,输入下图所示的代码,然后单击“运行”按钮。如下图所示:(16)使用子查询查询选修了课程号“01000001”且成绩大于85的学生的姓名sname。方法:与上例类似,请自己完成SQL语句,并记录查询结果。(17)使用子查询查询学生“张欣然”选修课程的情况,要求显示出它选修的课程号courseid和成绩grade。方法:与上例类似,请自己完成SQL语句,并记录查询结果。(18)使用子查询查询选修了课程名“计算机应用基础”的学生的学号sno和姓名sname。方法:与上例类似,请自己完成SQL语句,并记录查询结果。上交实验内容:完成实验后,保存“实验15实验报告.doc”,并重命名为“实验15实验报告-学号末2位+姓名.doc”(例如:实验15实验报告-01张三)。8在桌面上新建一个文件夹“学号末2位+姓名”,然后将“实验15实验报告-学号末2位+姓名.doc”复制到“学号末2位+姓名”文件夹中,最后将自己的“学号末2位+姓名”文件夹上交到教师机指定文件夹中。
本文标题:实验十五-使用SQL语言(二)
链接地址:https://www.777doc.com/doc-5276291 .html