DISTINCT去重

distinct用于在查询中返回列的唯一不同值(去重复),支持单列或多列。在实际的应用中,表中的某一列含有重复值是常见的,如employee表的dept列。如果在查询数据时,希望得到某列的所有不同值,可以使用distinct。

  • distinct语法:
SELECT DISTINCT column_name, columan_name FROM table_name;

表连接

表连接是在多个表之间通过一定的连接条件,使表之间发生关联,进而能从多个表之间获取数据。如下图所示,两张表通过学号进行连接。

  • 表连接语法:
SELECT table1.column, table2.column FROM table1, table2 WHERE table1.column1 = table2.column2;

表连接的几种方式

各种表连接的区别


交叉连接:没有用where子句的交叉连接将产生笛卡尔积,第一个表的行数乘以第二个表的行数等于笛卡尔积和结果集的大小。这种方式在实际应用中用处不大。

内连接

左连接

例子

  1. 连接数据库,使用student数据库并查看其拥有的数据表
SHOW DATABASES;
USE student;
SHOW TABLES;

效果图:

2. 查看employee数据表

SELECT * FROM employee;

效果图:

3. 分别去重sex和dept字段

SELECT DISTINCT sex FROM employee;
SELECT DISTINCT deptFROM employee;

效果图:

4. 使用group by的方式去重,效果与上一步相同

SELECT dept FROM employee GROUP BY dept;

效果图:

5. 创建footprint数据表并插入若干条数据

CREATE TABLE footprint(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,username VARCHAR(30) COMMENT '用户名',city VARCHAR(30) COMMENT '城市',visit_date VARCHAR(10) COMMENT '到访日期'
);INSERT INTO footprint(username, city, visit_date) VALUES('刘峰', '南京', '2020-12-05');
INSERT INTO footprint(username, city, visit_date) VALUES('刘峰', '南京', '2020-02-15');
INSERT INTO footprint(username, city, visit_date) VALUES('刘峰', '上海', '2019-08-03');
INSERT INTO footprint(username, city, visit_date) VALUES('张三', '杭州', '2020-05-09');
INSERT INTO footprint(username, city, visit_date) VALUES('张三', '杭州', '2021-01-02');
INSERT INTO footprint(username, city, visit_date) VALUES('李四', '北京', '2019-11-22');

效果图:

6. 查看footprint数据表

SELECT * FROM footprint;

效果图:

7. 分别去重username和city字段

SELECT DISTINCT username FROM footprint;
SELECT DISTINCT city FROM footprint;

效果图:

8. 同时去重username和city字段

SELECT DISTINCT username, city FROM footprint;

效果图:

9. 删除旧的sc和stu数据表

DROP TABLE IF EXISTS sc;
DROP TABLE IF EXISTS stu;

效果图:

10. 创建新的stu和score数据表并分别插入若干条记录

CREATE TABLE stu(stu_no VARCHAR(20) NOT NULL PRIMARY KEY COMMENT '学号',name VARCHAR(30) COMMENT '姓名',address VARCHAR(150) COMMENT '地址'
);INSERT INTO stu(stu_no, name, address) VALUES('2021001', '张三', '辽宁沈阳');
INSERT INTO stu(stu_no, name, address) VALUES('2021002', '李四', '浙江杭州');
INSERT INTO stu(stu_no, name, address) VALUES('2021003', '王五', '广东深圳');CREATE TABLE score(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,course VARCHAR(50) COMMENT '科目',stu_no VARCHAR(20) COMMENT '学号',score INT COMMENT '分数',foreign KEY(stu_no) REFERENCES stu(stu_no)
);INSERT INTO score(course, stu_no, score) VALUES('计算机', '2021001', 99);
INSERT INTO score(course, stu_no, score) VALUES('离散数学', '2021001', 85);
INSERT INTO score(course, stu_no, score) VALUES('计算机', '2021002', 78);

效果图:



11. 查看新的stu和score数据表

SELECT * FROM stu;
SELECT * FROM score;

效果图:

12. 外连接方式连接stu和score数据表

SELECT A.stu_no, A.name, B.course, B.score FROM stu A JOIN score B ON(A.stu_no = B.stu_no);

效果图:

13. 内连接方式连接stu和score数据表

SELECT A.stu_no, A.name, B.course, B.score FROM stu A INNER JOIN score B ON(A.stu_no = B.stu_no);

效果图:

14. 使用where子句连接stu和score数据表,效果与上一步一样

SELECT A.stu_no, A.name, B.course, B.score FROM stu A, score B WHERE A.stu_no = B.stu_no;

效果图:

15. 左连接方式连接stu和score数据表

SELECT A.stu_no, A.name, B.course, B.score FROM stu A LEFT JOIN score B ON(A.stu_no = B.stu_no);

效果图:

注:本文是博主MySQL学习的总结,不支持任何商用,转载请注明出处!如果你也对MySQL学习有一定的兴趣和理解,欢迎随时找博主交流~

MySQL学习(8)︱DISTINCT去重与表连接相关推荐

  1. MySQL学习笔记06【多表查询、子查询、多表查询练习】

    MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...

  2. MySQL学习笔记05【多表操作、三大范式、数据库的备份和还原】

    MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...

  3. MySQL学习笔记03【数据库表的CRUD操作、数据库表中记录的基本操作、客户端图形化界面工具SQLyog】

    MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...

  4. 《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·009【多表连接查询】

    文章目录 一.多表连接 1.应用场景 2.等值连接 3.非等值连接 4.自连接 5.标准连接 (1).交叉连接 (2).自然连接 (3).using子句连接 (4).on子句连接 (5).外连接 二. ...

  5. MySQL笔记(四)多表连接查询

    这是我在学习Mysql之路上做的笔记,今天将它粘出来.这一篇主要是Mysql多表连接查询.有错误的欢迎大家指出... 数据库的创建参考我的另一篇博客 https://blog.csdn.net/csd ...

  6. MySQL学习(3)单表查询

    素材如下: DROP TABLE IF EXISTS `course`; CREATE TABLE `course` ( `cs_id` int(11) NOT NULL COMMENT '课程编号' ...

  7. MySQL学习笔记_4_MySQL创建数据表(下)

    MySQL创建数据表(下) 五.数据表类型及存储位置 1.MySQL与大多数数据库不同,MySQL有一个存储引擎概念.MySQL可以针对不同的存储需求选择不同的存储引擎. 2. showengines ...

  8. SQLServer学习笔记八:多表连接查询

    学习目标 掌握多表连接查询的概念 学会使用内连接查询数据 学会使用外连接查询数据 学会使用UNION合并查询结果 前面学习的内容都是基于单个数据库表的查询,下面将学习涉及多个表的数据查询. 多表连接查 ...

  9. MySQL 学习笔记(1)— 创建/连接/选择/显示数据库(表) 查询单列(多列/所有列)/查询返回特定的行数 各种排序(单列/多列/降序/组合排序) 过滤数据

    本文是对之前学习 MySQL 的一个总结,使用思维导图的方式将涉及到的知识点罗列出来,一方面作为自己对于知识点的归纳,另一方面也便于日后查询. 在该篇文章中将对 MySQL 的基本使用.检索基本数据. ...

最新文章

  1. 学习OpenCV——粒子滤波(网上两篇文章总结)
  2. 阳泉师范高等专科学校计算机系,阳泉师范高等专科学校
  3. 2018年第九届蓝桥杯 - 省赛 - Java大学A组 - A.复数幂
  4. linux 函数 文件校验,Linux中的文件效验命令
  5. UVA 10891——Game of Sum
  6. Dubbo 新增本地 IDE 插件,快速创建样例工程
  7. JavaFX加载界面报错:fxcontroller can only be applied to root element?
  8. 苹果内地最大代工厂被曝大幅裁员!这家库克曾点赞的企业怎么了?
  9. 网页爬虫,HttpClient+Jericho HTML Parser 实现网页的抓取
  10. 在VB中如何让背景图片铺满整个MDIForm
  11. ASP.NET 4.0事件消息: 发生了验证错误;检测到有潜在危险的 Request.Form 值。
  12. 设计模式-第七篇之门面模式
  13. java 相等测试与继承
  14. PostgreSQL 优化器入门
  15. 虚拟机VM12磁盘扩容
  16. AHU 数据结构 最短路径 安大地图版本
  17. lol人物模型提取(二)
  18. 金山云CDN:国内最佳付费CDN
  19. LaTeX插入矩阵和方程组
  20. matlab icol,人脸识别-2dpca之Matlab程序

热门文章

  1. “0x00000014”内存。该内存不能为“Written”(或“Read”)的解决办法。
  2. 澎思科技完成A轮1.5亿元融资,360、富士康等联合投资
  3. QBC和QBE查询方法
  4. 图片循环滚动代码(无缝滚动)
  5. 基于朴素贝叶斯和逻辑回归中文外卖评论情感分类
  6. 信贷系统——增加2种模式访问模式A模式(通过销售人员入户的)B模式(通过Erp入户的)
  7. 光驱刻录软件提示需要计算机管理员权限,我想刻录系统提示【找不到光盘刻录机。请确保已正确安装刻录机,并且有刻录光盘的相应权限。】是什么意思...
  8. elasticsearch地理位置查询
  9. 如何使用音频剪辑软件,快速剪辑任意格式音频!
  10. caffe(ubuntu14.04)学习笔记1——运行MNIST数据集模型