ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

mysql子查询

2022-05-20 09:03:49  阅读:161  来源: 互联网

标签:INSERT INTO mysql 查询 VALUES time stuID BID



1.1、子查询定义
子查询(Sub Query)或者说内查询(Inner Query),也可以称作嵌套查询(Nested Query),是一种嵌套在其他 SQL 查询的 WHERE 子句中的查询。

子查询用于为主查询返回其所需数据,或者对检索数据进行进一步的限制。

子查询可以在 SELECT、INSERT、UPDATE 和 DELETE 语句中,同 =、<、>、>=、<=、IN、BETWEEN 等运算符一起使用。

使用子查询必须遵循以下几个规则:

子查询必须括在圆括号中。
子查询的 SELECT 子句中只能有一个列,除非主查询中有多个列,用于与子查询选中的列相比较。
子查询不能使用 ORDER BY,不过主查询可以。在子查询中,GROUP BY 可以起到同 ORDER BY 相同的作用。
返回多行数据的子查询只能同多值操作符一起使用,比如 IN 操作符。
SELECT 列表中不能包含任何对 BLOB、ARRAY、CLOB 或者 NCLOB 类型值的引用。
子查询不能直接用在聚合函数中
BETWEEN 操作符不能同子查询一起使用,但是 BETWEEN 操作符可以用在子查询中。
二、子查询
数据库名:BOOK
学生信息表:student
字段名称 数据类型 说明
stuID CHAR(10) 学生编号,主键
stuName VARCHAR(10) 学生名称
major VARCHAR(50) 专业
图书表:book
字段名称 数据类型 说明
BID CHAR(10) 图书编号,主键
title CHAR(50) 书名
author CHAR(20) 作者
借书信息表:borrow
字段名称 数据类型 说明
borrowID CHAR(10) 借书编号,主键
stuID CHAR(10) 学生编号,外键
BID CHAR(10) 图书编号,外键
T_time DATETIME 借书日期
B_time DATETIME 还书日期

CREATE DATABASE book

USE book

CREATE TABLE student(
stuID CHAR(10) PRIMARY KEY,
stuName VARCHAR(10),
major VARCHAR(50)
)

CREATE TABLE book(
bid CHAR(10),
title CHAR(10),
author CHAR(10)
)

CREATE TABLE borrow(
borrowID CHAR(10) PRIMARY KEY,
stuId CHAR(10),
BID CHAR(10),
T_time DATETIME,
B_time DATETIME
)

INSERT INTO student(stuID,stuName,major)VALUES(‘1001’,‘林林’,‘计算机’);
INSERT INTO student(stuID,stuName,major)VALUES(‘1002’,‘白杨’,‘计算机’);
INSERT INTO student(stuID,stuName,major)VALUES(‘1003’,‘虎子’,‘英语’);
INSERT INTO student(stuID,stuName,major)VALUES(‘1004’,‘北漂的雪’,‘工商管理’);
INSERT INTO student(stuID,stuName,major)VALUES(‘1005’,‘五月’,‘数学’);
–图书信息表中插入数据–
INSERT INTO book(BID,title,author)VALUES(‘B001’,‘人生若只如初见’,‘安意如’);
INSERT INTO book(BID,title,author)VALUES(‘B002’,‘入学那天遇见你’,‘晴空’);
INSERT INTO book(BID,title,author)VALUES(‘B003’,‘感谢折磨你的人’,‘如娜’);
INSERT INTO book(BID,title,author)VALUES(‘B004’,‘我不是教你诈’,‘刘庸’);
INSERT INTO book(BID,title,author)VALUES(‘B005’,‘英语四级’,‘白雪’);
–借书信息表中插入数据–
INSERT INTO borrow(borrowID,stuID,BID,T_time,B_time)VALUES(‘T001’,‘1001’,‘B001’,‘2007-12-26’,NULL);
INSERT INTO borrow(borrowID,stuID,BID,T_time,B_time)VALUES(‘T002’,‘1004’,‘B003’,‘2008-1-5’,NULL);
INSERT INTO borrow(borrowID,stuID,BID,T_time,B_time)VALUES(‘T003’,‘1005’,‘B001’,‘2007-10-8’,‘2007-12-25’);
INSERT INTO borrow(borrowID,stuID,BID,T_time,B_time)VALUES(‘T004’,‘1005’,‘B002’,‘2007-12-16’,‘2008-1-7’);
INSERT INTO borrow(borrowID,stuID,BID,T_time,B_time)VALUES(‘T005’,‘1002’,‘B004’,‘2007-12-22’,NULL);
INSERT INTO borrow(borrowID,stuID,BID,T_time,B_time)VALUES(‘T006’,‘1005’,‘B005’,‘2008-1-6’,NULL);
INSERT INTO borrow(borrowID,stuID,BID,T_time,B_time)VALUES(‘T007’,‘1002’,‘B001’,‘2007-9-11’,NULL);
INSERT INTO borrow(borrowID,stuID,BID,T_time,B_time)VALUES(‘T008’,‘1005’,‘B004’,‘2007-12-10’,NULL);
INSERT INTO borrow(borrowID,stuID,BID,T_time,B_time)VALUES(‘T009’,‘1004’,‘B005’,‘2007-10-16’,‘2007-12-18’);
INSERT INTO borrow(borrowID,stuID,BID,T_time,B_time)VALUES(‘T010’,‘1002’,‘B002’,‘2007-9-15’,‘2008-1-5’);
INSERT INTO borrow(borrowID,stuID,BID,T_time,B_time)VALUES(‘T011’,‘1004’,‘B003’,‘2007-12-28’,NULL);
INSERT INTO borrow(borrowID,stuID,BID,T_time,B_time)VALUES(‘T012’,‘1002’,‘B003’,‘2007-12-30’,NULL);

/* 1)显示出“计算机”专业学生在“2007-12-15”至“2008-1-8”时间段内借书的
学生编号、学生名称、图书编号、图书名称、借出日期;参考查询结果如下图所示:*/

SELECT *
FROM student AS s,(SELECT * FROM borrow) AS br,(SELECT * FROM book) AS b
WHERE s.stuID=br.stuId AND b.bid=br.bid AND T_time BETWEEN ‘2007-12-15’ AND ‘2008-1-8’

2)查询所有借过图书的学生编号、学生名称、专业;参考查询结果如下图所示:

SELECT s.stuID,s.major,s.stuName
FROM student AS s
WHERE s.stuID IN (
SELECT stuID FROM borrow
)

SELECT stuName,s2.count1
FROM student AS s,(SELECT stuID,COUNT(stuId) AS count1 FROM borrow WHERE NOT T_time IS NULL AND B_time IS NULL GROUP BY stuID) AS s2
WHERE s2.stuID=s.stuID

标签:INSERT,INTO,mysql,查询,VALUES,time,stuID,BID
来源: https://www.cnblogs.com/akwlovezzy/p/16291090.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有