关系数据库SQL之基本数据查询:子查询、分组查询

2019-09-20 06:10 来源:未知

MySQL基本简单操作

先进入Mysql容器。

[root@promote ~]# docker exec -it mysql /bin/bash
root@30d60b852cf5:/# mysql -uroot -p000000
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 8
Server version: 8.0.11 MySQL Community Server - GPL

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

mysql>

新建一个数据库。

mysql> create database gubeiqing;
Query OK, 1 row affected (0.02 sec)

mysql> show databases;
 -------------------- 
| Database           |
 -------------------- 
| gubeiqing          |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
 -------------------- 
5 rows in set (0.01 sec)

进入数据库,新建数据表。

mysql> use gubeiqing;
Database changed
mysql> show tables;
Empty set (0.00 sec)

mysql> create table gubeiqing_table(name varchar(20) not null , age varchar(20) not null);
Query OK, 0 rows affected (0.11 sec)

mysql> show tables;
 --------------------- 
| Tables_in_gubeiqing |
 --------------------- 
| gubeiqing_table     |
 --------------------- 
1 row in set (0.01 sec)

接着给数据库新增列,基本简单语法是:ALTER TABLE 表名 add column 列名 列类型 是否为空;

mysql> desc gubeiqing_table;
 ------- ------------- ------ ----- --------- ------- 
| Field | Type        | Null | Key | Default | Extra |
 ------- ------------- ------ ----- --------- ------- 
| name  | varchar(20) | NO   |     | NULL    |       |
| age   | varchar(20) | NO   |     | NULL    |       |
 ------- ------------- ------ ----- --------- ------- 
2 rows in set (0.01 sec)

mysql> alter table gubeiqing_table add column job varchar(20) not null;
Query OK, 0 rows affected (0.26 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc gubeiqing_table;
 ------- ------------- ------ ----- --------- ------- 
| Field | Type        | Null | Key | Default | Extra |
 ------- ------------- ------ ----- --------- ------- 
| name  | varchar(20) | NO   |     | NULL    |       |
| age   | varchar(20) | NO   |     | NULL    |       |
| job   | varchar(20) | NO   |     | NULL    |       |
 ------- ------------- ------ ----- --------- ------- 
3 rows in set (0.00 sec)

修改列名,基本简单语法是:ALTER TABLE 表名 change column 原列名 修改后的列名 列类型 是否为空;

mysql> desc gubeiqing_table;
 ------- ------------- ------ ----- --------- ------- 
| Field | Type        | Null | Key | Default | Extra |
 ------- ------------- ------ ----- --------- ------- 
| name  | varchar(20) | NO   |     | NULL    |       |
| age   | varchar(20) | NO   |     | NULL    |       |
| job   | varchar(20) | NO   |     | NULL    |       |
 ------- ------------- ------ ----- --------- ------- 
3 rows in set (0.00 sec)

mysql> alter table gubeiqing_table change column job gbq_job varchar(20) not null;
Query OK, 0 rows affected (0.11 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc gubeiqing_table;
 --------- ------------- ------ ----- --------- ------- 
| Field   | Type        | Null | Key | Default | Extra |
 --------- ------------- ------ ----- --------- ------- 
| name    | varchar(20) | NO   |     | NULL    |       |
| age     | varchar(20) | NO   |     | NULL    |       |
| gbq_job | varchar(20) | NO   |     | NULL    |       |
 --------- ------------- ------ ----- --------- ------- 
3 rows in set (0.00 sec)

删除刚刚新增的列,基本简单语法是:ALTER TABLE 表名 drop column 列名;

mysql> desc gubeiqing_table;
 --------- ------------- ------ ----- --------- ------- 
| Field   | Type        | Null | Key | Default | Extra |
 --------- ------------- ------ ----- --------- ------- 
| name    | varchar(20) | NO   |     | NULL    |       |
| age     | varchar(20) | NO   |     | NULL    |       |
| gbq_job | varchar(20) | NO   |     | NULL    |       |
 --------- ------------- ------ ----- --------- ------- 
3 rows in set (0.00 sec)

mysql> alter table gubeiqing_table drop column gbq_job;
Query OK, 0 rows affected (0.11 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc gubeiqing_table;
 ------- ------------- ------ ----- --------- ------- 
| Field | Type        | Null | Key | Default | Extra |
 ------- ------------- ------ ----- --------- ------- 
| name  | varchar(20) | NO   |     | NULL    |       |
| age   | varchar(20) | NO   |     | NULL    |       |
 ------- ------------- ------ ----- --------- ------- 
2 rows in set (0.00 sec)

然后说一下模糊搜索,就比如现在要在数据库里查找zhangsan的信息,可是只记得zhang剩下的部分都不记得了,那么就可以使用模糊搜索,基本简单语法是:SELECT * from 表名 WHERE 字段 LIKE '模糊字段';

mysql> select * from gubeiqing_table where name like 'zhang%';
 ---------- ----- 
| name     | age |
 ---------- ----- 
| zhangsan | 20  |
 ---------- ----- 
1 row in set (0.01 sec)

%用来表示不记得的部分,是通配符。
除了%之外还有 _表示任何单个字符,[ ]指定范围或集合中的任何单个字符,[^]不属于指定范围或集合的任何单个字符。

聚合函数查询


聚合函数:是一个值的集合为输入,返回单个值的函数。
SQL预定义了5个聚集函数:AVG(平均值)、MIN(最小值)、MAX(最大值)、SUM(求和)、COUNT(计数)。
具体的数据库还会预定义一些其他常用的函数,比如字符串相聚合函数、时间聚合函数……。

SELECT AVG(Age),MAX(Age),MIN(Age),SUM(Age),COUNT(Id) FROM Students;

聚合函数查询

分组查询


使用GROUP BY子句可进行分组查询
注意:分组查询的时候要在GROUP BY子句后面跟上所有查询字段的列表

--根据班级分组查询各班平均年龄、最大 年龄、最小年龄、年龄总和、班级人数
SELECT Class,AVG(Age),MAX(Age),MIN(Age),SUM(Age),COUNT(Id) FROM Students GROUP BY Class;

彩民之家高手论坛 1

HAVING子句

如果需要在分组前的数据进行限制,可以使用HAVING子句
HAVING子句只能与GROUP BY搭配使用

--根据班级分组查询各班平均年龄并且班级人数大于3人
SELECT Class,AVG(Age) FROM Students GROUP BY Class HAVING COUNT(Id)>3;

彩民之家高手论坛 2

HAVING子句和WHERE的区别

WHERE语句在GROUP BY语句之前,SQL会在分组之前计算WHERE语句;
HAVING语句在GROUP BY语句之后,SQL会在分组之后计算HAVING语句。

分组查询


使用GROUP BY子句可进行分组查询
注意:分组查询的时候要在GROUP BY子句后面跟上所有查询字段的列表

--根据班级分组查询各班平均年龄、最大 年龄、最小年龄、年龄总和、班级人数
SELECT Class,AVG(Age),MAX(Age),MIN(Age),SUM(Age),COUNT(Id) FROM Students GROUP BY Class;

分组查询

HAVING子句

如果需要在分组前的数据进行限制,可以使用HAVING子句
HAVING子句只能与GROUP BY搭配使用

--根据班级分组查询各班平均年龄并且班级人数大于3人
SELECT Class,AVG(Age) FROM Students GROUP BY Class HAVING COUNT(Id)>3;

HAVING子句

HAVING子句和WHERE的区别

WHERE语句在GROUP BY语句之前,SQL会在分组之前计算WHERE语句;
HAVING语句在GROUP BY语句之后,SQL会在分组之后计算HAVING语句。

前言


上一篇关系数据库常用SQL语句语法大全主要是关系型数据库大体结构,本文细说一下关系型数据库查询的SQL语法。

彩民之家高手论坛 3

准备工作


1.创建数据库和数据表
2.插入基本数据
3.本文以SQL Server为例介绍

-- 创建学生表
CREATE TABLE Students(
    Id int NOT NULL PRIMARY KEY,
    Name varchar(20) NOT NULL,
    Class varchar(15) NOT NULL,
    Gender varchar(10) NULL,
    Age int NULL,
    Phone varchar(15) NULL,
    [Address] varchar(100) NULL
)

-- 创建课程表
CREATE TABLE Courses(
    Id int NOT NULL PRIMARY KEY IDENTITY(1,1),
    Name varchar(50) NOT NULL
);

-- 创建成绩表
CREATE TABLE Scores(
    Id int PRIMARY KEY IDENTITY(1,1),
    SId int NOT NULL,
    CId int NOT NULL,
    Grades decimal(5,2) NOT NULL,
    IsPassed bit NOT NULL
);

-- 插入学生表基础数据
INSERT INTO Students (Id,Name,Class,Gender,Age,Phone,[Address]) VALUES(2016001,'小明','一班','男',20,'18817716611','北京');
INSERT INTO Students (Id,Name,Class,Gender,Age,Phone,[Address]) VALUES(2016002,'小龙','一班','男',19,'18817716622','天津');
INSERT INTO Students (Id,Name,Class,Gender,Age,Phone,[Address]) VALUES(2016003,'小王','二班','男',20,'18817716633','北京');
INSERT INTO Students (Id,Name,Class,Gender,Age,Phone,[Address]) VALUES(2016004,'婷婷','一班','女',17,'18817716644','济南');
INSERT INTO Students (Id,Name,Class,Gender,Age,Phone,[Address]) VALUES(2016005,'张三','一班','男',19,'18817716655','北京');
INSERT INTO Students (Id,Name,Class,Gender,Age,Phone,[Address]) VALUES(2016006,'小赵','一班','男',20,'18817716666','北京');
INSERT INTO Students (Id,Name,Class,Gender,Age,Phone,[Address]) VALUES(2016007,'丽丽','二班','女',18,'18817716677','北京');
INSERT INTO Students (Id,Name,Class,Gender,Age,Phone,[Address]) VALUES(2016008,'花花','一班','女',19,'18817716688','沈阳');
INSERT INTO Students (Id,Name,Class,Gender,Age,Phone,[Address]) VALUES(2016009,'静静','二班','女',20,'18817716699','北京');

-- 插入课程表基础数据
INSERT INTO Courses(Name) VALUES('语文');
INSERT INTO Courses(Name) VALUES('数学');
INSERT INTO Courses(Name) VALUES('英语');

-- 插入成绩表基础数据
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016001,1,120,1);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016001,2,70,0);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016001,3,89,1);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016002,1,90,1);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016002,2,88,1);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016002,3,96,1);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016003,1,112,1);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016003,3,102,1);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016004,1,80,1);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016004,2,86,1);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016004,3,47,0);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016005,1,87,1);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016005,2,96,1);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016005,3,68,0);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016006,2,95,1);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016006,3,100,1);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016007,1,87,1);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016007,2,57,0);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016007,3,130,1);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016008,1,89,1);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016008,3,66,0);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016009,1,97,1);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016009,2,104,1);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016009,3,68,1);

聚合函数查询


聚合函数:是一个值的集合为输入,返回单个值的函数。
SQL预定义了5个聚集函数:AVG(平均值)、MIN(最小值)、MAX(最大值)、SUM(求和)、COUNT(计数)。
具体的数据库还会预定义一些其他常用的函数,比如字符串相聚合函数、时间聚合函数……。

SELECT AVG(Age),MAX(Age),MIN(Age),SUM(Age),COUNT(Id) FROM Students;

彩民之家高手论坛 4

语法回顾


SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式>]…
  FROM <表名或视图名>[,<表名或视图名>]…
  [WHERE <条件表达式>]
  [GROUP BY <列名> [HAVING <条件表达式>]]
  [ORDER BY <列名> [ASC|DESC]…]

SQL查询语句的顺序:SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY。SELECT、FROM是必须的,HAVING子句只能与GROUP BY搭配使用。

别名/更名


语法

SELECT 字段名1 [AS] 别名 [,字段名1 AS 别名]… FROM <表名>

AS可以省略
当别名中含有非字母和下划线时或者是关键字时,需要加上单/双引号

示例

SELECT Id AS '学号',Name '姓名',Class ClassName FROM Students;

彩民之家高手论坛 5

前言


上一篇关系数据库常用SQL语句语法大全主要是关系型数据库大体结构,本文细说一下关系型数据库查询的SQL语法。

SQL数据查询

模糊查询


语法

SELECT 字段列表 FROM 表名 WHERE 字段 LIKE '<通配符>'

模糊查询是通过关键字LIKE和通配符实现的
_:任何单个字符(一个'_'只匹配一个字符,多个字符就使用多个_)
%:包含零个或更多字符的任意字符串(匹配任意内容)
[]:指定范围的字符(只匹配[]内的字符)
[ ^]:不在指定范围的字符(只匹配除[]内的字符)
SQL中通配符可以混合使用

  • 单个字符匹配

    SELECT * FROM Students WHERE Name LIKE '小_';
    SELECT * FROM Students WHERE Phone LIKE '188177166__';
    

    彩民之家高手论坛 6

  • 任意字符匹配

    SELECT * FROM Students WHERE Phone LIKE '188177166__';
    SELECT * FROM Students WHERE Phone LIKE '%';
    SELECT * FROM Students;
    

    这三条SQL语句查询结果都相同只针对此表,原因是瞎猫碰上死耗子。(数据少,刚好查询的结果是全部的内容)

彩民之家高手论坛 7

  • 范围内查询

    -- 查询所有手机号码结尾两位包含1和2的信息
    SELECT * FROM Students WHERE Phone LIKE '188177166[12][12]';
    

彩民之家高手论坛 8

  • 不在范围内查询

    -- 查询所有手机号码结尾两位不包含1、3、5、7的信息 SELECT * FROM Students WHERE Phone LIKE '188177166[^1357][^1357]';

彩民之家高手论坛 9

关于SQL查询就到这里告一段落,后面会更新相关内容。
如果你觉得有问题,欢迎和你一起探讨。

子查询(嵌套查询)


子查询也称嵌套查询,是指一个SELECT查询语句可以嵌入另一个SELECT查询语句之中。SQL中允许多级嵌套,子查询在实际使用中非常多。
连接查询:涉及两个及以上的表查询为连接查询。

--查询二班学生成绩
SELECT * FROM Scores WHERE SId IN(SELECT Id FROM Students WHERE Class='二班')

子查询

简单查询


简单查询只需要SELECTFROMWHERE3个关键字即可实现。

SELECT * FROM Students;
SELECT * FROM Students WHERE Class='一班';
SELECT * FROM Students WHERE Class='一班' AND Age = 20;

彩民之家高手论坛 10

别名/更名


语法

SELECT 字段名1 [AS] 别名 [,字段名1 AS 别名]… FROM <表名>

AS可以省略
当别名中含有非字母和下划线时或者是关键字时,需要加上单/双引号

示例

SELECT Id AS '学号',Name '姓名',Class ClassName FROM Students;

别名/更名

准备工作


1.创建数据库和数据表
2.插入基本数据
3.本文以SQL Server为例介绍

-- 创建学生表
CREATE TABLE Students(
    Id int NOT NULL PRIMARY KEY,
    Name varchar(20) NOT NULL,
    Class varchar(15) NOT NULL,
    Gender varchar(10) NULL,
    Age int NULL,
    Phone varchar(15) NULL,
    [Address] varchar(100) NULL
)

-- 创建课程表
CREATE TABLE Courses(
    Id int NOT NULL PRIMARY KEY IDENTITY(1,1),
    Name varchar(50) NOT NULL
);

-- 创建成绩表
CREATE TABLE Scores(
    Id int PRIMARY KEY IDENTITY(1,1),
    SId int NOT NULL,
    CId int NOT NULL,
    Grades decimal(5,2) NOT NULL,
    IsPassed bit NOT NULL
);

-- 插入学生表基础数据
INSERT INTO Students (Id,Name,Class,Gender,Age,Phone,[Address]) VALUES(2016001,'小明','一班','男',20,'18817716611','北京');
INSERT INTO Students (Id,Name,Class,Gender,Age,Phone,[Address]) VALUES(2016002,'小龙','一班','男',19,'18817716622','天津');
INSERT INTO Students (Id,Name,Class,Gender,Age,Phone,[Address]) VALUES(2016003,'小王','二班','男',20,'18817716633','北京');
INSERT INTO Students (Id,Name,Class,Gender,Age,Phone,[Address]) VALUES(2016004,'婷婷','一班','女',17,'18817716644','济南');
INSERT INTO Students (Id,Name,Class,Gender,Age,Phone,[Address]) VALUES(2016005,'张三','一班','男',19,'18817716655','北京');
INSERT INTO Students (Id,Name,Class,Gender,Age,Phone,[Address]) VALUES(2016006,'小赵','一班','男',20,'18817716666','北京');
INSERT INTO Students (Id,Name,Class,Gender,Age,Phone,[Address]) VALUES(2016007,'丽丽','二班','女',18,'18817716677','北京');
INSERT INTO Students (Id,Name,Class,Gender,Age,Phone,[Address]) VALUES(2016008,'花花','一班','女',19,'18817716688','沈阳');
INSERT INTO Students (Id,Name,Class,Gender,Age,Phone,[Address]) VALUES(2016009,'静静','二班','女',20,'18817716699','北京');

-- 插入课程表基础数据
INSERT INTO Courses(Name) VALUES('语文');
INSERT INTO Courses(Name) VALUES('数学');
INSERT INTO Courses(Name) VALUES('英语');

-- 插入成绩表基础数据
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016001,1,120,1);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016001,2,70,0);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016001,3,89,1);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016002,1,90,1);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016002,2,88,1);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016002,3,96,1);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016003,1,112,1);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016003,3,102,1);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016004,1,80,1);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016004,2,86,1);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016004,3,47,0);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016005,1,87,1);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016005,2,96,1);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016005,3,68,0);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016006,2,95,1);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016006,3,100,1);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016007,1,87,1);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016007,2,57,0);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016007,3,130,1);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016008,1,89,1);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016008,3,66,0);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016009,1,97,1);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016009,2,104,1);
INSERT INTO Scores(SId,CId,Grades,IsPassed) VALUES(2016009,3,68,1);

简单查询


简单查询只需要SELECTFROMWHERE3个关键字即可实现。

SELECT * FROM Students;
SELECT * FROM Students WHERE Class='一班';
SELECT * FROM Students WHERE Class='一班' AND Age = 20;

简单查询结果

语法回顾


SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式>]…
  FROM <表名或视图名>[,<表名或视图名>]…
  [WHERE <条件表达式>]
  [GROUP BY <列名> [HAVING <条件表达式>]]
  [ORDER BY <列名> [ASC|DESC]…]

SQL查询语句的顺序:SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY。SELECT、FROM是必须的,HAVING子句只能与GROUP BY搭配使用。

模糊查询


语法

SELECT 字段列表 FROM 表名 WHERE 字段 LIKE '<通配符>'

模糊查询是通过关键字LIKE和通配符实现的
_:任何单个字符(一个'_'只匹配一个字符,多个字符就使用多个_)
%:包含零个或更多字符的任意字符串(匹配任意内容)
[]:指定范围的字符(只匹配[]内的字符)
[ ^]:不在指定范围的字符(只匹配除[]内的字符)
SQL中通配符可以混合使用

  • 单个字符匹配
SELECT * FROM Students WHERE Name LIKE '小_';
SELECT * FROM Students WHERE Phone LIKE '188177166__';

模糊查询-单个字符匹配

  • 任意字符匹配
SELECT * FROM Students WHERE Phone LIKE '188177166__';
SELECT * FROM Students WHERE Phone LIKE '%';
SELECT * FROM Students;

这三条SQL语句查询结果都相同只针对此表,原因是瞎猫碰上死耗子。(数据少,刚好查询的结果是全部的内容)

模糊查询-任意匹配

  • 范围内查询
-- 查询所有手机号码结尾两位包含1和2的信息
SELECT * FROM Students WHERE Phone LIKE '188177166[12][12]';

模糊查询-范围内查询

  • 不在范围内查询
-- 查询所有手机号码结尾两位不包含1、3、5、7的信息
SELECT * FROM Students WHERE Phone LIKE '188177166[^1357][^1357]';

模糊查询-不在范围内查询

关于SQL查询就到这里告一段落,后面会更新相关内容。
如果你觉得有问题,欢迎和你一起探讨。

本文采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
基于简书上的作品创作。 可转载、引用,但需经本人同意后署名作者且注明文章出处,并以相同方式共享。

彩民之家高手论坛 11

知识共享许可协议

子查询(嵌套查询)


子查询也称嵌套查询,是指一个SELECT查询语句可以嵌入另一个SELECT查询语句之中。SQL中允许多级嵌套,子查询在实际使用中非常多。
连接查询:涉及两个及以上的表查询为连接查询。

--查询二班学生成绩
SELECT * FROM Scores WHERE SId IN(SELECT Id FROM Students WHERE Class='二班')

彩民之家高手论坛 12

版权声明:本文由彩民之家高手论坛发布于彩民之家高手论坛,转载请注明出处:关系数据库SQL之基本数据查询:子查询、分组查询