1. 子查询的返回值为单列单值
例1:查询与学号(sNo)为“1308013101”的同学在同一个班级的学生名单。

代码展示

SELECT *
FROM student
WHERE deptName = (
SELECT deptName
FROM student
WHERE sNo = "1308013101");```

例2:查询选修课程编号(cNo)为“01001”的课程且成绩超过该课程平均分的学生的学号、姓名、班级、课程名称和成绩。

SELECT sNo,sName,deptName,cName,grade
FROM course JOIN score ON course.id = score.cId
JOIN student ON student.id = score.sId
WHERE cNo ="01001" AND grade > (
SELECT AVG(grade)
FROM course JOIN score ON course.id = score.cId
WHERE cNo ="01001"
)

这道题代码不是很难,比较困难的是分析题目,和条件比对。

2. 子查询的返回值为单列多值
例1:查询选修课程编号(cNo)为“01001”的课程的学生名单。

SELECT *
FROM student
WHERE id IN
(SELECT sId
FROM score JOIN course ON score.cId = course.id
WHERE cNo="01001");

例2:查询学号为“1308013101”的学生选修的课程信息。

SELECT*FROM course
WHERE id IN(SELECT cId FROM score
JOIN student ON student.id=score.sId AND sNo='1308013101');

例3:查询没有选修课程的女生名单。

SELECT*FROM student
WHERE sex='女'
AND id NOT IN(SELECT sId FROM score);

例4:查询“软件131“班中比”网络131”班中所有学生年龄都要大的学生信息。

SELECT*
FROM student
WHERE deptName = "软件131" AND birthday <(
SELECT MIN(birthday)
FROM student
WHERE deptName = "网络131"
);
SELECT*
FROM student
WHERE deptName = "软件131" AND birthday < ALL(
SELECT birthday
FROM student
WHERE deptName = "网络131"
);

例5:查询非“网络131“班中比”网络131”班中任意一个学生年龄大的学生信息。

SELECT*
FROM student
WHERE deptName != "网络131" AND birthday < (
SELECT MAX(birthday)
FROM student
WHERE deptName = "网络131"
);

. 子查询的返回值为多列数据
例1:查询选修课程的女生名单,使用关键字EXISTS。

SELECT *
FROM student
WHERE sex = "女" AND EXISTS(
SELECT *
FROM score
WHERE student.id =score.sId);

五、 带子查询的数据更新

例1:创建数据表tempStudent,包含5个字段:学生ID(id)、学号(stuNo)、姓名(stuName)性别(sex)和班级名称(deptName);查询“网络131”班的学生记录,将查询结果插入到tempStudent表中。

CREATE TABLE tempStudent(
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
stuNo CHAR(10) NOT NULL,
stuName VARCHAR(20) NOT NULL,
sex CHAR(2) NOT NULL,
deptName VARCHAR(30) NOT NULL,
PRIMARY KEY(id)
);
INSERT INTO tempStudent
SELECT id,sNo,sName,sex,deptName
FROM student
WHERE deptName ="网络131";

例2:将“数据结构”课程的成绩统一减去5分。

UPDATE score
SET grade = grade - 5
WHERE cId =(
SELECT id
FROM course
WHERE cName ="数据结构"
);

例3:将“机电131”班的学生成绩记录全部删除。

DELETE FROM score
WHERE   sId IN
(SELECT id
FROM student
WHERE deptName = "机电131")

MySQL数据库应用与管理相关推荐

  1. 详解:MySQL数据库的权限管理和运维实操

    详解:MySQL数据库的权限管理 一.MYSQL权限简介 关于mysql的权限简单的理解就是mysql允许你做你权利以内的事情,不可以越界.比如只允许你执行select操作,那么你就不能执行updat ...

  2. Mysql数据库root密码管理四法

    Mysql数据库root密码管理四法 方法一: 管理员可以在系统命令行中使用mysqladmin命令设置mysql用户的密码. 使用mysqladmin设置密码的命令语法如下: mysqladmin ...

  3. Linux全攻略--MySQL数据库配置与管理

    MySQL是一种精巧的,多用户和多线程的中小型SQL数据库系统,由一个服务器守护进程mysqld和很多不同的客户程序和库组成.现在形成了一个"Linux+Apache+PHP+MySQL&q ...

  4. MySQL数据库的账户管理

    账户管理 在生产环境下操作数据库时,绝对不可以使用root账户连接,而是创建特定的账户,授予这个账户特定的操作权限,然后连接进行操作,主要的操作就是数据的crud MySQL账户体系:根据账户所具有的 ...

  5. mysql 数据库的基本管理

    ###### 1.数据库的介绍 ###### 1.什么是数据库 数据库就是个高级的表格软件 2.常见数据库 Mysql Oracle    mongodb  db2 sqlite sqlserver ...

  6. 4、mysql数据库的权限管理

    权限管理指的是对试图连接和操作数据库服务器的用户进行访问控制 关于权限管理的一些sql实例如下: -- 首先通过cmd窗口连接mysql服务器 mysql -u root -p *******-- m ...

  7. mysql linux附加数据库文件夹,Linux全攻略--MySQL数据库配置与管理

    MySQL是一种精巧的,多用户和多线程的中小型SQL数据库系统,由一个服务器守护进程mysqld和很多不同的客户程序和库组成.现在形成了一个"Linux+Apache+PHP+MySQL&q ...

  8. MySQL 数据库图形化管理界面应用种草之 Navicat Premium 如何使用

    文章目录 前言 一.工具/原料 二.安装和建立连接 2.1.连接本地数据库 2.2.连接远程数据库 三.Navicat Premium 的"增删改查"功能操作 3.1.数据库操作( ...

  9. MySQL数据库的基本管理操作

    目录 引言: 一.数据库日志 二.数据库管理 2.1进入数据库 2.2退出数据库 2.3查看数据库信息 2.4 查看数据库中包含的表信息 2.5查看数据表的结构(字段) 2.6 常用的数据类型 2.7 ...

  10. MySQL数据库web客户端管理工具软件

    TreeSoft数据库管理软件使用JAVA开发,采用稳定通用的springMVC+JDBC架构,实现基于web方式对 MySQL,Oracle,PostgreSQL, DB2 ,Cache ,达梦DM ...

最新文章

  1. FuncT,TResult的使用方法(转载)
  2. Informix IDS 11体系打点(918考试)认证指南,第 5 局部: 数据库管事器操作(4)
  3. Python爬取京东商品信息以及评论存进MySQL
  4. 【快乐水题】520. 检测大写字母
  5. 【Q】之防火墙的SNAT DANT原理应用
  6. convirt2.5在虚拟机上安装笔记
  7. python中布尔类型是特殊的_Python中的特殊方法以及应用详解
  8. opengl es的射线拾取
  9. 最简单的模拟U盘病毒(Autorun.inf)
  10. 如何将静态网页部署到github上
  11. PT站的做种和魔力值是如何增加换算的?
  12. matlab数据导出wps,怎么把金山WPS表格的数据导入MATLAB/
  13. 用python turtle画人_家里蹲太孤单?用 Python 画一只单身狗
  14. net core mysql开源框架_.NetCore开源集成框架
  15. JavaIO—Day21
  16. Python循环之进阶篇
  17. python —— 使用sympy模块求解数学方程
  18. AsyncTask的原理
  19. Linux桌面虚拟化技术--KVM
  20. 树形数据结构和扁平数据相互转换

热门文章

  1. 20个常用的Linux工具命令
  2. Windows 11 系统下载,正式版尚未发布
  3. PAROT: Translating natural language to SPARQL(PAROT:将自然语言翻译成SPARQL)--10
  4. aws python sns_手把手教你用Python抓取AWS的日志(CloudTrail)数据
  5. php之box/spout 导入导出功能
  6. 哲学家就餐(linux多线程)
  7. 树莓派:10行代码体验红外检测
  8. 影响TWS耳机发展的五大关键技术
  9. QScintilla的信号汇总和解释
  10. 机器学习算法(一): 基于逻辑回归的分类预测③