SQL第三次实验

这篇具有很好参考价值的文章主要介绍了SQL第三次实验。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

接实验2

目录

一、数据库的单表查询和连接查询

1.查询各位学生的学号、班级和姓名

2.查询课程的全部信息

 3.查询数据库有哪些专业班级

 4.查询学时数大于60的课程信息

5.查询在1986年出生的学生的学号、姓名和出生日期

 6.查询三次作业的成绩都在80分以上的学号、课程号

7.查询姓张的学生的学号、姓名和专业班级

8.查询05级的男生信息

9.查询没有作业成绩的学号和课程号

10.查询学号为0538的学生的作业1总分

 11.查询选修了K001课程的学生人数

12.查询数据库中有几个班级

13.查询选修三门以上(含三门)课程的学生的学号和作业1平均分、作业2平均分和作业3平均分

14.查询于兰兰的选课信息,列出学号、姓名、课程名(使用两种连接查询的方式)

二、数据库查询与数据操纵

1.使用查询语句完成以下任务

1.查询与‘张志国’同一班级的学生信息(使用连接查询和子查询方式)

2.查询比“计算机应用基础”学时多的课程信息(使用连接查询与子查询的方式)

3.查询选修课程号为K002的学生的学号、姓名(使用连接查询、普通子查询、相关子查询、使用exists关键字的子查询)

4.查询没有选修K001和M001课程的学号、课程号和三次成绩(使用子查询)

 2.使用数据操纵完成以下任务

1.在学生表中添加一条学生记录,其中,学号为0593,姓名为张乐,性别为男,专业班级为电子05

2.将所有课程的学分数变为原来的两倍

3.删除张乐的信息


一、数据库的单表查询和连接查询

1.查询各位学生的学号、班级和姓名

SELECT DISTINCT 学号,专业班级,姓名
FROM 学生表

SQL第三次实验

2.查询课程的全部信息

SELECT *
FROM 课程表

SQL第三次实验

 3.查询数据库有哪些专业班级

SELECT DISTINCT 专业班级
FROM 学生表

SQL第三次实验

 4.查询学时数大于60的课程信息

SELECT *
FROM 课程表
WHERE 学时数>60

SQL第三次实验

5.查询在1986年出生的学生的学号、姓名和出生日期

SELECT 学号,姓名,出生日期
FROM 学生表
WHERE 学生表.出生日期>='1986-01-01' AND 学生表.出生日期<='1986-12-31'

SQL第三次实验

 6.查询三次作业的成绩都在80分以上的学号、课程号

SELECT 学号,课程号
FROM 学生作业表
WHERE 作业1成绩>=80 AND 作业2成绩>=80 AND 作业3成绩>=80

SQL第三次实验

7.查询姓张的学生的学号、姓名和专业班级

SELECT 学号,姓名,专业班级
FROM 学生表
WHERE 学生表.姓名 LIKE '张%'

SQL第三次实验

8.查询05级的男生信息

SELECT *
FROM 学生表
WHERE 专业班级 LIKE '%05'
	AND 性别='男'

SQL第三次实验

%表示任意字符,_表示一个字符。用于部分匹配查询(也称模糊查询),用于字符型数据查找。

格式:<属性名> LIKE <字符串常量>

%abc表示以abc结尾,前面可以有任意个字符。

abc%表示以abc开头,后面可以有任意个字符。

%abc%表示中间含有abc,前后可以有任意个字符。

a_b表示ab之间有一个字符。

[0-9]表示在0~9范围的字符。

[^a-z]表示不在a~z范围的字符。

9.查询没有作业成绩的学号和课程号

SELECT 学号,课程号
FROM 学生作业表
WHERE 作业1成绩 IS NULL
	OR 作业2成绩 IS NULL
	OR 作业3成绩 IS NULL

SQL第三次实验

判断数据是否为NULL值,不能用=NULL来判断,要用IS NULL判断。

10.查询学号为0538的学生的作业1总分

SELECT 作业1总分=SUM(作业1成绩)
FROM 学生作业表
WHERE 学号='0538'

SQL第三次实验

select后既可接属性名,也可接表达式。

 11.查询选修了K001课程的学生人数

SELECT 学生人数=COUNT(课程号)
FROM 学生作业表
WHERE 课程号='K001'

SQL第三次实验

12.查询数据库中有几个班级

SELECT 班级数=COUNT(DISTINCT 专业班级)
FROM 学生表

 SQL第三次实验

13.查询选修三门以上(含三门)课程的学生的学号和作业1平均分、作业2平均分和作业3平均分

SELECT 学号,作业1平均分=AVG(作业1成绩),作业2平均分=AVG(作业2成绩),作业3平均分=AVG(作业3成绩)
FROM 学生作业表
GROUP BY 学号
HAVING (COUNT(课程号)>=3)

SQL第三次实验

 使用GROUP分组后,如果再进行筛选,不能使用SELECT语句,只能使用HAVING语句。

库函数(如AVG,MAX,COUNT等)用在select或having子句中,不能用在where子句中。

14.查询于兰兰的选课信息,列出学号、姓名、课程名(使用两种连接查询的方式)

方式一:

SELECT DISTINCT 学生作业表.学号,学生表.姓名,课程表.课程名
FROM 学生作业表
INNER JOIN 学生表
	ON 学生作业表.学号=学生表.学号
INNER JOIN 课程表
	ON 学生作业表.课程号=课程表.课程号
WHERE 学生表.姓名='于兰兰'

SQL第三次实验

 方式二:

SELECT DISTINCT 学生作业表.学号,学生表.姓名,课程表.课程名
FROM 学生作业表,学生表,课程表
WHERE 学生表.姓名='于兰兰'
	AND 学生作业表.学号=学生表.学号
	AND 学生作业表.课程号=课程表.课程号

SQL第三次实验

如果两张表有外键关系可以使用内链接,因为通过内链接每一条只能返回单条记录。

使用内链接如果出现重复记录则大部分情况说明查询是错误的,在确保sql查询没有逻辑错误的情况下,可以使用DISTINCT去除重复记录。

显示的内连接,一般称为内连接,有INNER JOIN,形成的中间表为两个表经过ON条件过滤后的笛卡尔积。

隐式的内连接,没有INNER JOIN,形成的中间表为两个表的笛卡尔积。

二、数据库查询与数据操纵

1.使用查询语句完成以下任务

1.查询与‘张志国’同一班级的学生信息(使用连接查询和子查询方式)

方式一:连接查询

SELECT 学生表2.学号,学生表2.姓名,学生表2.性别,
	学生表2.专业班级,学生表2.出生日期,学生表2.联系电话
FROM 学生表 AS 学生表1,学生表 AS 学生表2
WHERE 学生表1.专业班级=学生表2.专业班级
	AND 学生表1.姓名='张志国'
	AND 学生表2.姓名<>'张志国'

采用自连接方式,由于列同名,要带上表名称。

连接查询:

连接方法
类别 连接方法 作用
内连接

内连接

(INNER JOIN)

显示符合条件的记录,此为默认值。
外连接

左(外)连接

(LEFT JOIN)

显示符合条件的数据行以及左边表中不符合条件的数据行。此时右边数据行会以NULL来显示。

右(外)连接

(RIGHT JOIN)

显示符合条件的数据行以及右边表中不符合条件的数据行。此时左边数据行会以NULL来显示。

全外连接

(FULL JOIN)

显示符合条件的数据行以及两边表中不符合条件的数据行。此时缺乏数据的数据行会以NULL来显示。
交叉连接 CROSS JOIN 将一个表中的每一个记录和另一个表的每个记录匹配成新的数据行(笛卡尔积)。

引用列名时要加上表名前缀,避免产生二义性。若列名唯一,则不必加前缀。

内连接几种创建方式:
注:R,T为两个不同的表,TNo为两个表共有的列。

1.常见写法

SELECT T.TNo,TN,RNo
FROM T INNER JOIN R
ON T.TNo=R.TNo

内连接两个表,连接条件为TNo属性的值相等。

2.投影法

SELECT T.TNo,TN,RNo
FROM
(SELECT TNo,TN) AS T0
INNER JOIN
(SELECT TNo,RNo) AS R0
ON T0.TNo=R0.TNo

选取两个表需要的属性组成新表,内连接两个新表,连接条件同上。

3.筛选法

SELECT T.TNo,TN,RNo
FROM T,R
WHERE T.TNo=R.TNo

默认连接两表,由于没有设置连接条件,结果为两表的笛卡尔积(相同的属性列重合),需要用WHERE语句筛选。

方式二:子查询:

SELECT *
FROM 学生表
WHERE 专业班级=(SELECT 专业班级
	FROM 学生表
	WHERE 姓名='张志国')
	AND 姓名<>'张志国'

SQL第三次实验

 WHERE中进行子查询,返回符合子查询的集合,父查询在集合中继续查询。

2.查询比“计算机应用基础”学时多的课程信息(使用连接查询与子查询的方式)

方式一:连接查询

SELECT 课程表2.课程号,课程表2.课程名,课程表2.学分数,
	课程表2.学时数,课程表2.任课老师
FROM 课程表 AS 课程表1,课程表 AS 课程表2
WHERE 课程表1.课程名='计算机应用基础'
	AND 课程表2.学时数>课程表1.学时数

方式二:子查询

SELECT *
FROM 课程表
WHERE 学时数>(SELECT 学时数
	FROM 课程表
	WHERE 课程名='计算机应用基础')

SQL第三次实验

3.查询选修课程号为K002的学生的学号、姓名(使用连接查询、普通子查询、相关子查询、使用exists关键字的子查询)

方法一:连接查询

SELECT 学生表.学号,姓名
FROM 学生表,学生作业表
WHERE 学生表.学号=学生作业表.学号
	AND 学生作业表.课程号='K002'

SQL第三次实验

 方法二:普通子查询

SELECT 学号,姓名
FROM 学生表
WHERE (学号 IN (SELECT 学号
	FROM 学生作业表
	WHERE 课程号='K002'))

SQL第三次实验

 方法三:相关子查询

SELECT 学号,姓名
FROM 学生表
WHERE ('K002' IN (SELECT 课程号
	FROM 学生作业表
	WHERE 学号=学生表.学号))

SQL第三次实验

相关子查询涉及表外查询

 方法四:使用exists关键字的子查询

SELECT 学号,姓名
FROM 学生表
WHERE (EXISTS(SELECT 课程号
	FROM 学生作业表
	WHERE 学号=学生表.学号
	AND 课程号='k002'))

SQL第三次实验

 子查询:

4.查询没有选修K001和M001课程的学号、课程号和三次成绩(使用子查询)

SELECT 学号,课程号,作业1成绩,作业2成绩,作业3成绩
FROM 学生作业表
WHERE (课程号 NOT IN(SELECT 课程号
	FROM 学生作业表
	WHERE 课程号 IN ('K001','M001')))

SQL第三次实验

 2.使用数据操纵完成以下任务

1.在学生表中添加一条学生记录,其中,学号为0593,姓名为张乐,性别为男,专业班级为电子05

INSERT INTO 学生表
VALUES ('0593','张乐','男','电子05',NULL,NULL)

SQL第三次实验

 SQL第三次实验

2.将所有课程的学分数变为原来的两倍

UPDATE 课程表
SET 学分数=2*学分数

SQL第三次实验

 表格数据变化:

原先:

SQL第三次实验

当前:
SQL第三次实验

3.删除张乐的信息

DELETE
FROM 学生表
WHERE 姓名='张乐'

SQL第三次实验

 删除成功(已没有张乐的信息):

SQL第三次实验文章来源地址https://www.toymoban.com/news/detail-400390.html

到了这里,关于SQL第三次实验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据库SQL语言实战(五)(数据库系统概念第三章练习题)

    目录 前言知识 一、 关系模式 二、 属性域 例子 介绍 作用 三、Select常数 举例 解释  四、集合差运算 本质 举例  结论 练习题 3.17 3.18  3.21  总结  注:本文的SQL语言适用的是 Oracle数据库 与mySQL可能存在略微不同 模式的定义 :模式则是指数据库中 所有关系模式 的集合,它

    2024年04月22日
    浏览(59)
  • 【数据库概论】第三章 SQL简述、数据定义和索引

    最早在IBM的关系数据库管理系统原型SystemR上实现,后来美国国家标准局(ANSI)批准SQL作为关系数据库语言的美国标准,同年公布了SQL标准文本。近些年来SQL标准的内容越来越丰富和复杂。目前没有任何一个数据库系统能够支持SQL标准的所有概念和特性,同时不少软件厂商对

    2024年02月05日
    浏览(67)
  • 《数据库原理》实验六 SQL数据查询实验

    本系列传送门: 实验二 SQL Server SSMS工具创建和管理数据库及数据表 实验三 SQL Server SSMS工具添加数据 实验四 SQL的数据定义语句 实验五 数据库完整性约束的实现与验证 实验六 SQL数据查询实验 实验六(2) SQL数据查询—连接查询 实验七 SQL的数据更新和视图 实验八 T_SQL编程

    2024年02月03日
    浏览(97)
  • 数据库:实验一 SQL数据定义

    1.用数据定义语言创建教学管理数据库stu_db,在数据库中创建schema T,在架构T下创建Student、Course、SC三张数据表(参见教材),并建立相应 索引 。       创建student数据表      创建course数据表       创建sc数据表        2. 在以上三张表中录入若干数据。        录入数

    2024年04月12日
    浏览(44)
  • 数据库实验:SQL的数据更新

    再次书接上文,sql基础的增删改查 (1) 掌握DBMS的数据查询功能 (2) 掌握SQL语言的数据更新功能 (1) update 语句用于对表进行更新 (2) delete 语句用于对表进行删除 (3) insert 语句用于对表进行插入 (1) 熟练掌握SQL的数据更新语句INSERT、UPDATE、DELETE (2) 写出实验报告 认真阅读S_T.sql,理

    2024年02月05日
    浏览(52)
  • 数据库实验:SQL的数据视图

    视图是由数据库中的一个表或多个表导出的虚拟表,其作用是方便用户对数据的操作 视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,数据库中只存放了视图的定义,而并没有存放视图中的数据,这些数据存放在原来的

    2024年02月05日
    浏览(56)
  • 【SQL】实验十 数据库完整性实验

    一、实验目的 1、 熟悉通过SQL对数据进行完整性控制。熟练掌握数据库 三类完整性约束 (实体完整性、用户自定义完整性、参照完整性) 2、了解SQL SERVER 的违反完整性处理措施。 3、了解主键(PRIMARY KEY)约束 、 外键(FOREIGN KEY)约束 、 唯一性(UNIQUE)约束 、 检查(CHE

    2024年02月01日
    浏览(68)
  • 数据库系统概述——第三章 关系数据库标准语言SQL(知识点复习+练习题)

    🌟 博主: 命运之光 🦄 专栏: 离散数学考前复习(知识点+题) 🍓 专栏: 概率论期末速成(一套卷) 🐳 专栏: 数字电路考前复习 🦚 专栏: 数据库系统概述 ☀️ 博主的其他文章: 点击进入博主的主页​​​​​ 前言: 身为大学生考前复习一定十分痛苦,你有没有过

    2024年02月10日
    浏览(65)
  • ​数据库原理及应用上机(实验二 SQL数据定义功能实验)

    ✨ 作者:命运之光  ✨ 专栏:数据库原理及应用上机实验   目录 ✨一、实验目的和要求 ✨二、实验内容与步骤 ✨三、附加练习 ✨四、实验总结 🍓🍓 前言:   数据库原理及应用上机实验报告的一个简单整理后期还会不断完善 🍓🍓 1.掌握利用SQL查询分析器和企业管理

    2024年02月05日
    浏览(44)
  • 【数据库 Microsoft SQL Server】实验五 数据库安全性与完整性实验

    一、实验目的 1、掌握数据库的自主存取控制方法,学会使用SQL数据控制语句来进行授权控制和权限回收,理解视图安全机制。 2、掌握数据库的三类完整性约束,定义数据库完整性及违约处理,通过违约操作实验来理解数据库完整性机制。 二、实验环境与实验准备工作 实验

    2024年02月08日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包