当前位置: 首页 > web >正文

实验三 数据查询

一、【实验教学

1、掌握单表查询。

2、掌握多表查询。

二、【实验教学的基本要求】

1、掌握SQL程序设计基本规范;

2、熟练运用SQL实现数据基本查询,包括单表查询、分组统计查询和连接查询;

3、理解和掌握SQL查询语句中各个子句的特点和作用,按照SQL程序设计规范,写出具体的SQL查询语句并调试通过。

三、【实验原理】

基本查询和统计查询都要用到SELECT语句,但根据不同的查询要求,会使用不同的关键字或集合函数。

(1)SELECT语句的基本语法格式如下:

SELECT [ALL|DISTINCT ] <目标列表达式> [别名] [,<目标列表达式> [别名] ] …

FROM <表名或视图名> [别名]  [,<表名或视图名> [别名] ] ] … | (<SELECT语句>) [ AS ] <别名>

[WHERE <条件表达式> ]

[GROUP BY <列名1> [ HAVING <条件表达式> ] ]

[ORDER BY <列名2> [ ASC|DESC]]

LIMIT <行数1>[ OFFSET <行数2>];

(2)聚集函数:

统计元组个数

COUNT(*)

统计一列中值的个数

COUNT([DISTINCT|ALL] <列名>)

计算一列值的总和(此列必须为数值型)

SUM([DISTINCT|ALL] <列名>)

计算一列值的平均值(此列必须为数值型)

AVG([DISTINCT|ALL] <列名>)

求一列中的最大值和最小值

MAX([DISTINCT|ALL] <列名>)

MIN([DISTINCT|ALL] <列名>)

四、【实验内容】

题目1:单表查询:——SELECT……FROM

(1) 查询全体学生的所有信息;

(2) 查询选修了课程的学生的学号;

(3) 查询考试成绩有不及格的学生的学号;

(4) 查询年龄在20-30岁直接的学生的姓名,性别,所在系;

(5) 查询 IS,CS,MA系的所有学生的姓名和性别;

(6) 查找所有姓‘李’的学生的姓名,学号和性别;

(7) 查询没有先行课的课程的课程号cno和课程名cname;

题目2:查询结果排序:——ORDER BY 子句

(1)查询全体学生的情况,查询结果按所在系号升序排列,同一系中的学生按年龄降序排列;

题目3:连接查询;——关系数据库中最主要的查询,WHERE子句

(1) 查询每一门课程的间接先修课(只求两层即先修课的先修课),并且间接先修课不为空;

(2) 列出所有学生的基本情况和选课情况,若没有选课,则只列出基本情况信息;

(3) 查询每个学生的学号,姓名,选修的课程名和成绩;

题目4:使用带IN谓词的子查询——适用于集合查询

(1)查询与‘刘晨’在同一个系学习的学生的信息;

(2)查询选修了课程名为‘信息系统’的学生的学号和姓名;

(3)查询选修了课程‘1001’和课程‘1002’的学生的学号;

题目5:使用带比较运算的子查询

(1)查询比‘刘晨’年龄小的所有学生的信息;

五、【主要实验仪器及设备】

计算机、

CREATE DATABASE XSGL;
USE XSGL;CREATE TABLE student(
sno CHAR(9) PRIMARY KEY,
sname CHAR(10) NOT NULL UNIQUE,
ssex CHAR(2),
sage INT,
sdept CHAR(5));CREATE TABLE course(
cno CHAR(4) PRIMARY KEY,
cname CHAR(40) NOT NULL,
cpno CHAR(4),
credit INT,
FOREIGN KEY(cpno)REFERENCES course(cno)
);CREATE TABLE sc(
sno CHAR(9),
cno CHAR(4), 
grade DECIMAL(5,1),
PRIMARY KEY(sno,cno),
FOREIGN KEY (cno) REFERENCES course(cno),
FOREIGN KEY (sno) REFERENCES student(sno) 
);INSERT INTO student(sno, sname, ssex, sage, sdept)
VALUES ('95001', '李勇', '男', 20, 'CS'),('95002', '刘晨', '女', 19, 'IS'),('95003', '王敏', '女', 18, 'MA'),('95004', '张立', '男', 19, 'IS'),('95005', '刘云', '女', 18, 'CS');INSERT INTO course(cno, cname, credit, cpno)
VALUES ('1006', '数据处理', 3, NULL),('1007', 'PASCAL语言', 4, '1006'),('1005', '数据结构', 4, '1007'),('1002', '数学', 6, NULL),('1001', '数据库', 4, '1005'),('1003', '信息系统', 3, '1001'),('1004', '操作系统', 4, '1006');		INSERT INTO sc(sno, cno, grade)
VALUES ('95001', '1001', 92.3),('95001', '1002', 85.0),('95001', '1003', 88.3),('95002', '1002', 90.5),('95002', '1003', 80.0),('95003', '1002', 85.6),('95004', '1001', 58.9),('95004', '1002', 85.7);	-- 	查询全体学生的所有信息;		 SELECT * from student;	
-- 	 查询选修了课程的学生的学号;	 SELECT sno from sc;	-- 查询考试成绩有不及格的学生的学号;SELECT sno from sc WHERE sc.grade<60;	 -- 查询年龄在20-30岁直接的学生的姓名,性别,所在系;
SELECT  sname, ssex,  sdept from student WHERE student.sage>20 and student.sage<30;	
-- 查询 IS,CS,MA系的所有学生的姓名和性别;			 SELECT  sname, ssex from student WHERE  sdept in('IS','CS','MS');--查找所有姓‘李’的学生的姓名,学号和性别;SELECT sno, sname, ssex from student WHERE sname LIKE'李%';-- 查询没有先行课的课程的课程号cno和课程名cname;		SELECT cno,cname from course WHERE cpno is NULL;
-- 查询全体学生的情况,查询结果按所在系号升序排列,同一系中的学生按年龄降序排列;			 
SELECT * from  student JOIN sc ON student.sno=sc.sno  ORDER BY sc.cno ASC,student.sage DESC;
-- 查询每一门课程的间接先修课(只求两层即先修课的先修课),并且间接先修课
SELECT cpon from(SELECT cpon FROM course WHERE course.cpon!=NULL);-- 列出所有学生的基本情况和选课情况,若没有选课,则只列出基本情况信息;
SELECT student.sno, student.sname, student.ssex, student.sage, student.sdept, sc.cno from  student JOIN sc ON student.sno=sc.sno;-- 查询每个学生的学号,姓名,选修的课程名和成绩;
SELECT student.sno, student.sname, student.sdept, sc.cno,sc.grade from  student JOIN sc ON student.sno=sc.sno;
-- 查询与‘刘晨’在同一个系学习的学生的信息;
SELECT s.* from  student s JOIN student  f ON s.sdept=f.sdept where f.sname='刘晨'AND s.sname!='刘晨';-- 查询选修了课程名为‘信息系统’的学生的学号和姓名;
SELECT s.* from  student s JOIN sc c ON s.sno=c.sno  WHERE c.cno=( SELECT cno FROM course WHERE cname='信息系统');-- 查询选修了课程‘1001’和课程‘1002’的学生的学号;
SELECT sno from sc WHERE sc.cno IN('1001','1002');
-- 查询比‘刘晨’年龄小的所有学生的信息;
SELECT s2.* from  student s1 JOIN student s2 ON 
s1.sname='刘晨' WHERE s2.sage<s1.sage;

MySQL

http://www.xdnf.cn/news/4220.html

相关文章:

  • Spring AI快速入门
  • QT生成保存 Excel 文件的默认路径,导出的文件后缀自动加(1)(2)等等
  • 如何管理两个Git账户
  • 即开即用,封装 Flask 项目为 exe 文件实操步骤
  • QQ相册下载工具
  • 宁德时代区块链+数字孪生专利解析:去中心化身份认证重构产业安全底座
  • NoUniqueKey问题和Regular join介绍
  • Linux USB Gadget | 框架 / 复合设备实践 / Configfs 配置
  • CSS分栏布局
  • 【T2I】PLACE: Adaptive Layout-Semantic Fusion for Semantic Image Synthesis
  • vue2+element实现Table表格嵌套输入框、选择器、日期选择器、表单弹出窗组件的行内编辑功能
  • CentOS配置了镜像源之后依旧下载元数据失败
  • (二)毛子整洁架构(CQRS/Dapper/DomianEvent Handler)
  • 高效调用京东 API 实战:商品详情页实时数据采集接口开发指南​
  • C++ this关键字
  • python校园二手交易管理系统-闲置物品交易系统
  • ts axios中报 Property ‘code‘ does not exist on type ‘AxiosResponse<any, any>‘
  • PCIe控制逻辑介绍(一)
  • 【C/C++】new关键字解析
  • 说下RabbitMQ的整体架构
  • K-means
  • 一款独立于游戏外的键盘源按键辅助工具他来了
  • C#发送之前转换为JSON格式
  • 美妆集合体验馆的「AI 焕新」:从人工到智能管理的蜕变
  • FPGA设计如何快速入门?(内附学习视频)
  • Kotlin Lambda优化Android事件处理
  • 极端工况的高频电流探头精度优化
  • Python实例题:Python操作excel自动化开发
  • 6.5 行业特定应用:金融、医疗、制造等行业的定制化解决方案
  • 数据结构 --- 栈