Mysql单表查询和多表查询


一、单表查询

1.select 定义语句

SELECT [ ALL | DISTINCT ] 输出列表达式…
[ FROM 表名1 [ , 表名2 ]… ]
[WHERE 条件 ]
[ORDER BY 列名 表达式 列编号 [ASC | DESC],…
[ HAVING 条件 ]
[ORDER BY 列名 表达式 列编号 [ ASC| DESC,… ]
[LIMIT [偏移量,] 行数 行数 OFFSET 偏移量]

1.1选择指定的列

SELECT 表达式

1.2定义列别名

SELECT 列名 [ AS ] 别名

1.3替换查询结果中的数据

CASE
WHEN 条件1 THEN 表达式1
WHEN 条件2 THEN 表达式2

ELSE 表达式n
END

1.4计算列值

例子:对sell表中已发货的记录计算订购金额(订购金额=订购册数*订购单价),并显示图书编号和订购金额。代码如下:

SELECT 图书编号,ROUND(订购册数*订购单价,2)   AS 订购金额
FROM  sell
WHERE 是否发货='已发货'

1.5消除结果集中的重复行

SELECT DISTINCT 列名1 ,列名2 …

2.WHERE子句

2.1比较运算

表达式 { = | < | <= |>|>=|<=>|<>|!=} 表达式

2.2逻辑运算

逻辑运算可以将多个判定运算的结果通过逻辑运算符(AND、OR、XOR 和 NOT)组成更为复杂的查询条件。
在这里插入图片描述

例子:查询book表中清华大学出版社、北京大学出版社出版的价格大于等于35元的书。代码如下:

SELECT*FROM book
WHERE  (出版社='清华大学出版社'OR出版社='北京大学出版社')  
AND 单价>=35;

2.3模式匹配

表达式 [NOT] LIKE 表达式

2.4范围匹配

表达式 [NOT] BETWEEN 表达式1 AND 表达式2

2.5空值比较

表达式 IS [NOT ] NULL

二、多表查询

1.FROM子句

FROM 表名1 AS 别名1 表名2 AS 别名2
JOIN 子句

2.多表连接

(1)全连接:是指将每个表的每行都与其他表中的每行交叉,以产生所有可能的组合,列包含了所有表中出现的列,也就是笛卡儿积。

(2)内连接:全连接产生的表在大多数情况下都没有意义。在这样的情形下,通常要设定条件来得到结果集减少且有意义的表,这样的连接即为内连接。如果设定的条件是等值条件,则也叫等值连接。

(3)外连接:包括左外连接(LEFT OUTER JOIN)和右外连接(RIGHT OUTER JOIN )两种。
左外连接:结果表中除了匹配行外,还包括左表有但右表中不匹配的行,对于这样的行,从右表中选择的列被设置为NULL。
右外连接:结果表中除了匹配行外,还包括右表有但左表中不匹配的行,对于这样的行,从左表中选择的列被设置为NULL。

3.JOIN连接

表名1 INNER JOIN 表名2
表名1 LEFT | RIGHT | OUTER JOIN 表名2
ON 连接条件 | USING (列名)

4.子查询

4.1IN子查询

表达式 [NOT] IN (子查询)

4.2比较子查询

表达式 {<|<=|=|>|>=|!=|<>} {ALL | SOME | ANY}
表达式:与子查询结果集进行比较的表达式 ALL|SOME|ANY:说明比较运算的限制 如果子查询的结果集只返回一行数据,可以通过比较运算符直接比较;如果子查询的结果集返回多行数据,则需要用{ALL|SOME|ANY }来限定。 ALL指定表达式要与子查询结果集中的每个值都进行比较,当表达式的每个值都满足比较的关系时,才返回TRUE,否则返回FALSE。 SOME 和 ANY 是同义词,表示表达式只要与子查询结果集中的某个值满足比较的关系,就返回TRUE,否则返回 FALSE。

4.3EXISTS子查询

[NOT] EXISTS

5.联合查询

SELECT 语句1 UNION [UNION选项] SELECT语句2;
UNION 选项:分为 ALL和 DISTINCT,联合查询时默认为DISTINCT,去掉结果集中的重复行;如果要保留结果集中的所有行,必须指定 ALL。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值