MySQL高级SQL语句(下)

Posted 正在迷途

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL高级SQL语句(下)相关的知识,希望对你有一定的参考价值。

一、联集

将两个SQL语句的结果合并起来,两个SQL语句所产生的栏位需要是同样的资料种类

1.UNION

UNION :生成结果的资料值将没有重复,且按照字段的顺序进行排序
语法:[SELECT 语句 1] UNION [SELECT 语句 2];
:
select place_name from destination union select place_name from info;

MySQL高级SQL语句(下)_字符串

MySQL高级SQL语句(下)_联集_02

去重

2.UNION ALL

UNION ALL :将生成结果的资料值都列出来,无论有无重复
语法:[SELECT 语句 1] UNION ALL [SELECT 语句 2];
例:
select place_name from destination union all select place_name from info;

MySQL高级SQL语句(下)_字符串_03

二、交集值

取两个SQL语句结果的交集

select a.place_name from destination a inner join info b on a.place_name = b.place_name;

select a.place_name from destination a inner join info b using(place_name);

select DISTINCT a.place_name from destination a inner join info b using(place_name);ame); DISTINCT 去重

MySQL高级SQL语句(下)_sql语句_04

两表没用重复的行,并且确实有交集的时候用

select a.place_name from (select place_name from destination union all select place_name from info) a group by a.place_name having count(*) > 1;

MySQL高级SQL语句(下)_sql语句_05

MySQL高级SQL语句(下)_字符串_06

取两个SQL语句结果的交集,且没有重复

select a.place_name from (select b.place_name from destination b inner join info c on b.place_name =c.place_name) a group by a.place_name;

select distinct a.place_name from destination a inner join info b using(place_name);

select distinct place_name from destination where (place_name) in (select place_name from info);

select distinct a.place_name from destination a left join info b using(place_name) where b.place_name is not null;

MySQL高级SQL语句(下)_sql语句_07

MySQL高级SQL语句(下)_存储过程_08

三、无交集值

显示第一个SQL语句的结果,且与第二个SQL语句没有交集的结果,且没有重复

select a.place_name from destination a inner join info b on a.place_name = b.place_name;

select a.place_name from destination a inner join info b using(place_name);

MySQL高级SQL语句(下)_sql语句_09

MySQL高级SQL语句(下)_字符串_10

四、CASE

CASE是 SQL 用来做为 IF-THEN-ELSE 之类逻辑的关键字

语法:
SELECT CASE ("字段名")
WHEN "条件1" THEN "结果1"
WHEN "条件2" THEN "结果2"
...
[ELSE "结果N"]
END
FROM "表名";

# "条件" 可以是一个数值或是公式。 ELSE 子句则并不是必须的。

例如:
select place_name, case place_name
when beijing then sales - 50
when kunming then sales - 20
else sales
end
"new sales",date
from info;
#"New Sales" 是用于 CASE 那个字段的字段名。

MySQL高级SQL语句(下)_sql语句_11

五、空值(NULL) 和 无值(’’) 的区别

  • 无值的长度为 0,不占用空间的;而 NULL 值的长度是 NULL,是占用空间的。
  • IS NULL 或者 IS NOT NULL,是用来判断字段是不是为 NULL 或者不是 NULL,不能查出是不是无值的。
  • 无值的判断使用=’‘或者<>’来处理。<> 代表不等于。
  • 在通过 count()指定字段统计有多少行数时,如果遇到 NULL 值会自动忽略掉,遇到无值会加入到记录中进行计算
SELECT length(NULL), length(), length(1);

MySQL高级SQL语句(下)_sql语句_12

1、测试

#建表
create table test(test varchar(20));
insert into test values( );
insert into test values(123123);
insert into test values();
insert into test values(1111);
insert into test values();
select * from test;

MySQL高级SQL语句(下)_联集_13

例:
select * from test where test is null;
select * MySQL高级(进阶)SQL语句

MySQL高级SQL语句

MySQL高级(进阶)SQL语句

Mysql高级SQL语句

mysql 高级SQL语句

MySQL高级SQL语句(上)