数据库实验报告2范文

上传人:李1****利物 文档编号:203562590 上传时间:2021-10-22 格式:DOCX 页数:13 大小:22.05KB
返回 下载 相关 举报
数据库实验报告2范文_第1页
第1页 / 共13页
数据库实验报告2范文_第2页
第2页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《数据库实验报告2范文》由会员分享,可在线阅读,更多相关《数据库实验报告2范文(13页珍藏版)》请在金锄头文库上搜索。

1、数据库实验报告2 昆明理工大学信息工程与自动化学院学生实验报告 ( ( 2022 2022 学年 第 1 学期 ) 课程名称:数据库系统教程 开课实验室: 信自楼 445 5 2022 年 年 1 11 月 7 27 日 年级、专业、班 学号 姓名 成绩 实验项目名称 SQL 的数据查询 指导教师 丁家满 教师评语 该同学是否了解实验原理: A.了解 B.基本了解 C.不了解 该同学的实验能力: A.强 B.中等 C.差 该同学的实验是否达到要求: A.达到 B.基本达到 C.未达到 实验报告是否规范: A.规范 B.基本规范 C.不规范 实验过程是否详细记录: A.详细 B.一般 C.没有

2、教师签名: 年 月 日 一 、上机目的及内容 1. 上机内容: : SQL 的数据查询,查询、插入、删除、修改 2. 上机目的 : 掌握数据查询语句,并能熟练应用 二、实验原理及基本技术路线图(方框原理图或程序流程图) 在 在 SQL server 2022 软件中的查询中,输入 SQL 代码 三、所用仪器、材料(设备名称、型号、规格等或使用软件) 1 台 PC 及 SQL server 2022 软件 四 、实验方法、步骤(或:程序代码或操作过程) 1)select 查询 单表查询:查询全体学生的学号及姓名: SELECT SNO,SNAME FROM S; 查询全体学生的全部信息: SEL

3、ECT * FROM S; 2)查询经过计算值 (SELECT 子句的目标列表达式>为表达式,表达式可以是:算术表达式、字符串常量、函数、列别名等 ) 查全体学生的学号、姓名及其出生年份: SELECT SNO,SNAME,2022-AGE FROM S; 查询全体学生的姓名、出生年份和所属系: SELECT SNO,SNAME,2022-AGE,SDEPT FROM S; 查询选修了课程的学生学号: SELECT SNO FROM SC,C WHERE SC.CNO=C.CNO; 为了避免这种不合题意的情况,我们用 distinct 用了去除重复的元组。所以上例中的执行语句为: SEL

4、ECT DISTINCT SNO FROM SC; SELECT DISTINCT SNO FROM SC,C WHERE SC.CNO=C.CNO; 查询选修课程的各种成绩: SELECT CNO,GRADE FROM SC; SELECT DISTINCT CNO,DISTINCT GRADE FROM SC; SELECT CNO,DISTINCT GRADE FROM SC; SELECT DISTINCT CNO,GRADE FROM SC; SELECT CNO,GRADE FROM SC; 对上述情况的分析及总结:distinct 作用于其后的列,同一个 selsct后面只允许跟

5、一个 distinct 而且只能放在第一个列的位置上。若此处不同 distinct 则执行语句按照表中的顺序顺序的执行下来(如执行语句 3 的结果示) 选择满足条件的元组选择满足条件的元组选择满足条件的元组选择3)满足条件的元组 比较大小比较大小比较大小比较大小 在 WHERE 子句的比较条件>中使用比较运算符=,>,>=,=,!= 或 >,!>,!, 逻辑运算符NOT + 比较运算符。 查询所有年龄在 20 岁以上,30 以下的学生姓名及其年龄: SELECT SNAME,AGE FROM S WHERE AGE>20 and AGE30; SELECT

6、SNAME,AGE FROM S WHERE AGE BETWEEN 20 AND 30; 4)使用谓词:IN 值表>,NOT IN 值表>。 值表>:用逗号分隔的一组取值 查询信自、材料和机械学院学生的姓名和性别: SELECT SNAME,SEX FROM S WHERE SDEPT IN(SELECT SDEPT FROM S WHERE SDEPT=信自 or SDEPT=材料 or SDEPT=机械); SELECT SNAME,SEX FROM S WHERE SDEPT IN(信自 ,材料 ,机械); 总结:在使用in查询某一个值在某一个范围的时候,要加在范围上

7、加上括号,括号里面的表示范围。如果表示某一个值不属于某一个范围,则用not in 5)字符串的匹配操作字符串的匹配操作字符串的匹配操作字符串的匹配操作 条件表达式中字符串的匹配操作符是LIKE(可以用 = 运算符取代 LIKE 谓词,用 != 或 >运算符取代 NOT LIKE 谓词。)在表达式中可以使用两个通配符: 百分号(%):与零个或者多个字符组成的字符串匹配。a%b表示以a开头,以b结尾的任意长度的字符串。如acb,addgb,ab 等都满足该匹配串。下划线( _):与单个字符匹配。a_b表示以a开头,以b结尾的长度为3的任意字符串。如acb,afb等都满足该匹配串。 查询202

8、2开头学号的学生的详细情况 SELECT * FROM S WHERE SNO LIKE 2022%; 查询所有姓张学生的姓名、学号和性别: SELECT SNO,SNAME,SEX FROM S WHERE SNAME LIKE 张%; SELECT SNO,SNAME,SEX FROM S WHERE SNAME LIKE 张_; 查找不姓刘的学生的详细情况 SELECT SNO,SNAME FROM S WHERE SNAME not LIKE 张; 6)使用换码字符将通配符转义为普通字符使用换码字符将通配符转义为普通字符使用换码字符将通配符转义为普通字符使用换码字符 将通配符转义为普通

9、字符 为了使字符串中包含特殊字符(既%和_),SQl允许定义转义字符。转义字符紧靠特殊字符(%和_)并放在它前面,表示该特殊字符将被当成普通字符。在like比较中使用ESCAPE关键字定义转义符。一般使用()作为转义字符,也可以用其他字符,只要和ESCAPE后面的匹配就可以,如使用()也可以,但为了不出现错误,尽量不要用%和_作为转义字符。 查询语文课程的课程号和课程名: SELECT CNO,CNAME FROM C WHERE CNAME LIKE 语_ ESCAPE ; 7) 涉及空值的查询涉及空值的查询涉及空值的查询涉及空值的查询 SQL中允许列值为空,空值用保留字NULL表示。可以使

10、用谓词 IS NULL 或 IS NOT NULL,这里IS NULL 是测试列值是否为空,如果需要测试非空值则用IS NOT NULL,请注意, IS NULL 不能用 = NULL 代替。 某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。查询缺少成绩的学生的学号和相应的课程号 SELECT CNO,SNO FROM SC WHERE GRADE IS NULL ; 某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。查询有成绩的学生的学号和相应的课程号 SELECT CNO,SNO FROM SC WHERE GRADE IS not NULL ; 8)使用聚合

11、函数使用聚合函数使用聚合函数使用聚合函数 SQl提供下列的聚合函数: 计数:COUNT(DISTINCT|ALL *)和COUNT(DISTINCT|ALL 列名>) 计算总和:SUM(DISTINCT|ALL 列名>) 计算平均值:AVG(DISTINCT|ALL 列名>) 求最大值:MAX(DISTINCT|ALL 列名>) 求最小值:MIN(DISTINCT|ALL 列名>) 这里,DISTINCT短语:在计算时要取消指定列中的重复值;ALL短语:不取消重复值;ALL为缺省值 查询学生总人数 SELECT COUNT(*) AS 学生总人数 FROM S;

12、查询选修了课程的学生人数: SELECT COUNT(DISTINCT SNO) AS 选修了课人数 FROM S; 9)SELECT语句完整的句法语句完整的句法语句完整的句法语句完整的句法 语句格式: SELECT ALL|DISTINCT 目标列表达式>,目标列表达式> „ FROM 表名或视图名>, 表名或视图名> „ WHERE 行条件表达式> GROUP BY 列名> HAVING 组条件表达式> ORDER BY 列名> ASC|DESC ,„„ GROUP BY子句:对查询结果按指定列

13、的值分组,该属性列值相等的元组为一个组。通常会在每组中使用集函数;HAVING短语:筛选出满足指定条件的组;ORDER BY子句:对查询结果表按指定列值的升序或降序排序。 使用ORDER BY子句,可以按一个或多个属性列排序。升序:ASC;降序:DESC;缺省值为升序,当排序列含空值时,各系统把列为空值的元组集中在最前面或最后面显示。 (1).对查询结果进行排序对查询结果进行排序对查询结果进行排序对查询结果进行排序: 查询选修了C001号课程的学生的学号及其成绩,查询结果按分数降序排列: SELECT SNO,GRADE FROM SC WHERE CNO=C001 ORDER BY GRAD

14、E DESC; 求各个课程号及相应的选课人数: select CNO,COUNT(distinct SNO) as 选课人数 from SC group by cno; 查询有2门以上(含2门)课程是90分以上(含90分)的学生的学号及(70分以上的)课程: select SNO,COUNT(SNO) AS 课程数 from SC where GRADE IN(SELECT GRADE FROM SC WHERE GRADE>=70) group by SNO having COUNT(SNO)>=2; 连接查询连接查询连接查询连接查询 同时涉及多个表的查询称为连接查询,两张以上的表做笛卡尔积,再做自然连接,把主键连接在一起,主键无需同名 查询每个学生及其选修课程的情况: SELECT S.*,SC.* FROM S,SC WHER

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作范文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号