【MySQL数据库的表连接语句】

news/2024/11/24 5:49:44/

目录

  • 一、连接查询
    • 1、inner join(内连接)
    • 2、left join(左连接)
    • 3、right join(右连接)
  • 二、CREATE VIEW
  • 三、UNION
    • 取非交集的值
  • 五、CASE
  • 六、空值(NULL) 和 无值('') 的区别


一、连接查询

A表
请添加图片描述

B表

UPDATE store_info SET store_name='Washington' WHERE sales=300;#修改一下表里面的数据方便实验

在这里插入图片描述
请添加图片描述

1、inner join(内连接)

inner join(内连接):只返回两个表中联结字段相等的行

select 左表别名.字段 from 左表 坐标别名 inner join 右表 右表别名 on 坐标别名.字段 = 右表别名.字段 

在这里插入图片描述

在这里插入图片描述
内连接的另外几种方式

select * from location a, store_info b where a.store_name = b.store_name;

在这里插入图片描述

select * from location a inner join store_info b using(store_name);

在这里插入图片描述

2、left join(左连接)

left join(左连接):返回包括左表中的所有记录和右表中联结字段相等的记录
在这里插入图片描述

select * from location A left join store_info B on A.store_name = B.store_name;

没有交集的字段就会为空
在这里插入图片描述

3、right join(右连接)

right join(右连接):返回包括右表中的所有记录和左表中联结字段相等的记录

select * from location A right join store_info B on A.store_name = B.store_name;

左表中没有的值就会为空
在这里插入图片描述

二、CREATE VIEW

视图,可以被当作是虚拟表或存储查询。

视图跟表格的不同是,表格中有实际储存数据记录,而视图是建立在表格之上的一个架构,它本身并不实际储存数据记录。
临时表在用户退出或同数据库的连接断开后就自动消失了,而视图不会消失。
视图不含有数据,只存储它的定义,它的用途一般可以简化复杂的查询。比如你要对几个表进行连接查询,而且还要进行统计排序等操作,写SQL语句会很麻烦的,用视图将几个表联结起来,然后对这个视图进行查询操作,就和对一个表查询一样,很方便。

语法:CREATE VIEW "视图表名" AS "SELECT 语句";

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

创建一个原表数据的试图表
在这里插入图片描述

在这里插入图片描述

三、UNION

两表数据
在这里插入图片描述

联集,将两个SQL语句的结果合并起来,两个SQL语句所产生的字段需要是同样的数据记录种类

UNION :生成结果的数据记录值将没有重复,且按照字段的顺序进行排序

语法:[SELECT 语句 1] UNION [SELECT 语句 2];
select store_name from location union select store_name from store_info;

UNION ALL :将生成结果的数据记录值都列出来,无论有无重复

语法:[SELECT 语句 1] UNION ALL [SELECT 语句 2];
select store_name from location union all select store_name from store_info;

在这里插入图片描述内连接求去重后的交集
在这里插入图片描述

左连接求交集
在这里插入图片描述

使用子查询的方式求交集的值

SELECT DISTINCT Store_Name FROM location WHERE (Store_Name) IN (SELECT Store_Name FROM store_info);

在这里插入图片描述

求交集select [distinct] A.字段 from 左表 A inner join 右表 B on A.字段 = B.字段;select A.字段 from 左表 A inner join 右表 B using(同名字段);select B.字段 from 左表 A left join 右表 B on A字段 = B.字段 where B.字段 is not null;select A.字段 from 左表 A right join 右表 B on A.字段 = B.字段 where A字段 is not null;select A.字段 from 左表 A,右表 B where A.字段 = B.字段;select 字段 from 左表 where 字段 in (select 字段 from 右表);求无交集单表的无交集select 字段 from 左表 where 字段 not in (select 字段 from 右表);select A.字段 from 左表 A left join 右表 B on A.字段 = B.字段 where B.字段 is null;select B.字段 from 左表 A right.join 右表 B on A.字段 = B.字段 where A.字段 is null;多表的无交集create view V XXX as select 字段 from 左表 union all select 字段 from 右表select 字段 from V xxx group by 字段 having count(字段) = 1;select .子段 from (select distinct] 字段 from 左表 union all selet distinct] 字段 from 表)  group by h.字段 having countih.字段) = 1;

取非交集的值

1)联级方法中 count(*<=1
(2)左右内连接 将is not null 改为 is null
(3)子查询 外连接查询 not in (内连接查询)

五、CASE

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

语法:
SELECT CASE ("字段名")WHEN "条件1" THEN "结果1"WHEN "条件2" THEN "结果2"...[ELSE "结果N"]END
FROM "表名";# "条件" 可以是一个数值或是公式。 ELSE 子句则并不是必须的。SELECT Store_Name, CASE Store_Name WHEN 'Los Angeles' THEN Sales * 2 WHEN 'Boston' THEN 2000ELSE Sales END 
"New Sales",Date 
FROM store_info;#"New Sales" 是用于 CASE 那个字段的字段名。

在这里插入图片描述

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

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

sql 正则表达式的常见种类
在这里插入图片描述

select "字段" from "表名" where "字段" regexp '正则表达式';

在这里插入图片描述


http://www.ppmy.cn/news/569189.html

相关文章

【力扣周赛】第351场周赛

【力扣周赛】第351场周赛 6466. 美丽下标对的数目题目描述解题思路 6910. 将数组划分成若干好子数组的方式题目描述解题思路 6466. 美丽下标对的数目 题目描述 描述&#xff1a;给你一个下标从 0 开始的整数数组 nums 。如果下标对 i、j 满足 0 ≤ i < j < nums.length…

计算机操作系统安装及备份系统部分,操作系统安装、备份和还原.ppt

操作系统安装、备份和还原 利用光盘对系统进行密码消除 安装好系统之后怎么优化电脑 利用360安全卫士优化电脑 360安全卫士的使用 1.打补丁&#xff0c;修补漏洞、电脑和U盘杀毒 2.清理垃圾 3.清理插件 4.木马查杀 5.优化加速&#xff1a;减少开机启动项 6.利用软件管家安装和卸…

64位Win7安装不能上网问题解决

在卸载掉双系统中的Ubuntu之后&#xff0c;为了使电脑有更好的性能&#xff0c;我决定重新装Win7&#xff0c;由于我的是4G的内存&#xff0c;而如果是安装32位win7的话&#xff0c;我真正能够使用的内存貌似只有3.4G左右&#xff0c;这从右键计算机点击属性就可以看出来。这是…

Android变脸幕后的魔法师:各巨头…

Android操作系统进入中国第一天起&#xff0c;就不再姓Google了。想给Android“改姓”的厂商越来越多&#xff0c;华为、中兴、小米、联想等手机厂商&#xff0c;腾讯、盛大、百度、阿里巴巴四大互联网巨头&#xff0c;还有一些原本名不见经传的创业公司如乐蛙、魔趣、点心&…

一场针对手机底层的新圈地运动(程苓峰)

这场圈地运动已有四个主要参与者&#xff1a;360、金山、腾讯、百度。它们的共有特点是&#xff1a;都跟安全相关&#xff0c;旗下都有安全产品&#xff1b;更戏剧性一点&#xff0c;都或直接、或间接跟“3X”大战相关。 这场运动旨在争夺对手机应用的生杀予夺大权。解释如下。…

2015年电视游戏大厅将逐一死掉?

2014-11-21 18:11:10共30321阅读来源&#xff1a;电科技作者&#xff1a;张倩 昨日&#xff0c;电科技发表了题为《电视游戏大厅现状&#xff1a;“渠道为王”遭遇水土不服》的文章&#xff0c;在行业内引发热议。 甚至有人发出了“到了明年&#xff0c;现有的电视游戏大厅都将…

关于华为Ascend P6的各种技术资料整理

为了方便以后查阅&#xff0c;仅用的到的。特整理如下&#xff1a; 13年9月15日之后就把这华为P6送给了媳妇&#xff0c;自己现在用的是非智能机 &#xff0c;所以也暂停了对华为P6资料的整理。 13.9.15 --------------------------------------------------------------------…

BAT为何都看中智能音箱这个小玩意儿?这篇文章说清楚了

2017年7月5日&#xff0c;李彦宏乘坐“无人车”驶上五环这件事刷了屏&#xff0c;百度和阿里不约而同对智能音箱进行布局反而没多少人关注。 上午&#xff0c;百度发布DuerOS开放平台让第三方硬件公司开发具有对话能力的智能设备&#xff1b; 下午阿里巴巴在北京发布“天猫精灵…