1. 多表联查心德

# 1. 分析需求

# 2. 确定表与表的关联做为判断条件

# 3. 确定每表要获取的数据

# 4. 查找所需的表内容加上条件

2. 查询练习

#1.查看表结构

mysql> desc city;

+-------------+----------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+-------------+----------+------+-----+---------+----------------+

| ID | int(11) | NO | PRI | NULL | auto_increment |

| Name | char(35) | NO | | | |

| CountryCode | char(3) | NO | MUL | | |

| District | char(20) | NO | | | |

| Population | int(11) | NO | | 0 | |

+-------------+----------+------+-----+---------+----------------+

5 rows in set (0.00 sec)

#2.查看所有数据

mysql> select * from city;

#3.查看指定列的数据

mysql> select Name,Population from city;

#4.查看数据时排序(按照人口数量)

#升序

mysql> select Name,Population from city order by Population;

#降序

mysql> select Name,Population from city order by Population desc;

#5.查询部分数据

#查看前十条数据

mysql> select Name,Population from city order by Population desc limit 10;

#6.按照步长查询数据

mysql> select id,Name,Population from city limit 50,50;

#50起始位置 50步长

3.条件查询

#1.条件查询就是使用where语句,where语句可以使用的符号

条件符号:= < > <= >= != <> or and like

精确匹配:=

范围匹配:< > <= >= != <>

模糊匹配:like

连接语句:or and

#2.查询中国的城市人口

mysql> select name,population from city where CountryCode='CHN';

#3.查询黑龙江人口数量

mysql> select name,population from city where countrycode='CHN' and District='heilongjiang';

#4.查询中国人口数量小于100000的城市

mysql> select name,population from city where countrycode='CHN' and population < 100000;

#5.模糊匹配

#匹配以N结尾的数据

mysql> select name,countrycode from city where countrycode like '%N';

#匹配以N开头的数据

mysql> select name,countrycode from city where countrycode like 'N%';

#匹配包含N的数据

mysql> select name,countrycode from city where countrycode like '%N%';

#6.查询中国或美国的人口数量

#使用or

mysql> select name,population from city where countrycode = 'CHN' or countrycode = 'USA';

#使用in

mysql> select name,population from city where countrycode in ('CHN','USA');

#使用union all

mysql> select name,population from city where countrycode = 'CHN' union all select name,population from city where countrycode = 'USA';

select高级用法

#多表联查,联表查询

1.传统连接

1)集合

#集合

[qiudao,zengdao,qiandao]

[80,90,100]

#数据库

id:[1,2,3]

name:[qiudao,zengdao,qiandao]

id:[1,2,3]

mark:[80,90,100]

2)建表

mysql> create table students(id int,name varchar(10));

Query OK, 0 rows affected (0.08 sec)

mysql> create table score(id int,mark int);

Query OK, 0 rows affected (0.05 sec)

3)插入数据

mysql> insert into students values(1,'qiudao'),(2,'qiandao'),(3,'zengdao');

Query OK, 3 rows affected (0.02 sec)

Records: 3 Duplicates: 0 Warnings: 0

mysql> insert into score values(1,80),(2,90),(3,100);

Query OK, 3 rows affected (0.01 sec)

Records: 3 Duplicates: 0 Warnings: 0

4)数据查询

#查看两个表的数据

mysql> select * from students;

+------+---------+

| id | name |

+------+---------+

| 1 | qiudao |

| 2 | qiandao |

| 3 | zengdao |

+------+---------+

3 rows in set (0.00 sec)

mysql> select * from score;

+------+------+

| id | mark |

+------+------+

| 1 | 80 |

| 2 | 90 |

| 3 | 100 |

+------+------+

3 rows in set (0.00 sec)

#查看邱导的分数

mysql> select students.name,score.mark from students,score where students.id=1 and score.id=1;

mysql> select students.name,score.mark from students,score where students.id=score.id and name='qiudao';

+--------+------+

| name | mark |

+--------+------+

| qiudao | 80 |

+--------+------+

1 row in set (0.01 sec)

#查询所有学生成绩

mysql> select students.name,score.mark from students,score where students.id=score.id

5)练习题一:

连表查询:世界上小于100人的城市在哪个国家?请列出城市名字,国家名字与人口数量

#1.确认我要查哪些内容

国家名字 城市名字 城市人口数量 小于100人

#2.确认在哪个表

country.name city.name city.population

#3.找出两个表相关联的字段

city.countrycode country.code

#4.编写语句

mysql> select country.name,city.name,city.population from country,city where city.countrycode=country.code and city.population < 100;

+----------+-----------+------------+

| name | name | population |

+----------+-----------+------------+

| Pitcairn | Adamstown | 42 |

+----------+-----------+------------+

1 row in set (0.01 sec)

6)练习题二:

连表查询:世界上小于100人的城市在哪个国家,是用什么语言?请列出城市名字,国家名字与人口数量和国家语言

#1.确认我要查哪些内容

国家名字 城市名字 城市人口数量 国家使用的语言 小于100人

#2.确认在哪个表

country.name city.name city.population countrylanguage.language

#3.找出三个表相关联的字段

country.code city.countrycode countrylanguage.countrycode

#4.写sql语句

mysql> select country.name,city.name,city.population,countrylanguage.language from country,city,countrylanguage where country.code=city.countrycode and city.countrycode=countrylanguage.countrycode and city.population < 100;

+----------+-----------+------------+-------------+

| name | name | population | language |

+----------+-----------+------------+-------------+

| Pitcairn | Adamstown | 42 | Pitcairnese |

+----------+-----------+------------+-------------+

1 row in set (0.04 sec)

MySQL十表联查快速得到结果_MySQL 多表联查相关推荐

  1. mysql的innodb表生成的物理文件_MySQL innodb表使用表空间物理文件复制或迁移表

    MySQL InnoDB引擎的表通过拷贝物理文件来进行单表或指定表的复制,可以想到多种方式,今天测试其中2种: 将innodb引擎的表修改为Myisam引擎,然后拷贝物理文件 直接拷贝innodb的表 ...

  2. MySQL 锁表后快速解决方法 及 锁表原因

    前几天同事在晚上上线的时候执行sql语句造成锁表,想总结一下以避免后续发生. (1) 遇到锁表快速解决办法 依次执行1-6步,运行第6步生成的语句即可. 如果特别着急,运行 1 2 6 步 以及第6步 ...

  3. mysql大表不停机加字段_mysql大表在不停机的情况下增加字段该怎么处理

    MySQL中给一张千万甚至更大量级的表添加字段一直是比较头疼的问题,遇到此情况通常该如果处理?本文通过常见的三种场景进行案例说明. 1. 环境准备 数据库版本: 5.7.25-28(Percona 分 ...

  4. mysql锁表问题的解决方法_MYSQL锁表问题的解决方法

    本文实例讲述了MYSQL锁表问题的解决方法.分享给大家供大家参考,具体如下: 很多时候!一不小心就锁表!这里讲解决锁表终极方法! 案例一 mysql>show processlist; 参看sq ...

  5. mysql更新多表sql语句怎么写_MySQL多表updatesql语句总结

    MySQL 多表 update 有几种不同的写法.假定我们有两张表,一张表为Product表存放产品信息,其中有产品价格列Price:另外一张表是 MySQL 多表 update 有几种不同的写法. ...

  6. mysql数据库怎么添加主键约束_mysql修改表时怎么添加主键约束?

    mysql中可以通过"ALTER TABLE 表名 ADD PRIMARY KEY(字段名);"语句在修改数据表时添加主键约束:当在修改表时要设置表中某个字段的主键约束时,要确保设 ...

  7. mysql 一对多 右表多条记录合并_MYSQL 单表一对多查询,将多条记录合并成一条记录...

    一.描述: 在MySQL 5.6环境下,应工作需求:将一个表中多条某个相同字段的其他字段合并(不太会表达,有点绕,直接上图) 想要达到的效果: 实现SQL语句: SELECT a.books, GRO ...

  8. mysql创建表时设置外键_mysql创建表时设置外键约束的方法

    mysql创建表时设置外键约束的方法 发布时间:2020-06-17 15:54:11 来源:亿速云 阅读:312 作者:元一 MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中, ...

  9. hive 创建表_2min快速了解,Hive内部表和外部表

    在了解内部表和外部表区别前, 我们需要先了解一下Hive架构 : 大家可以简单看一下这个架构图,我介绍其中要点: Hive的数据分为两种,一种为普通数据,一种为元数据. 元数据存储着表的基本信息,增删 ...

最新文章

  1. OpenCV(项目)二维码识别(二维码、条形码)
  2. 07-图6 旅游规划 (25分)(以此感谢zyx佬)
  3. KMeans和KMedoid 的Matlab实现
  4. 翻转二叉树—leetcode226
  5. yii验证系统学习记录,基于yiicms(一)写的太长了,再写一篇(二)
  6. HSRP与VRRP以及GLBP区别
  7. 文件的上传下载功能的实现(包括进度条)[telerik控件]
  8. 解决ActiveX Control异常:“没有注册类(异常来自 HRESULT:0x80040154(REGDB_E_CLASSNOTREG))“
  9. 关于Request.params的知识收藏
  10. android studio打包h5打包,AndroidStudio将html5打包成apk
  11. 深入浅出SCSI子系统(八)SCSI错误恢复
  12. python权重是什么意思_Python带权重随机数的简单实现
  13. Studio 3T重置日期,达到重复试用的效果
  14. JS + Echarts实现中国地图 China.js
  15. 2022 199管综真题及答案解析
  16. linux command
  17. 天涯论坛关闭发帖!中国互联网的青春没了;iPhone 15 将全系支持灵动岛;美团成立机器人研究院 |极客头条...
  18. Android-App性能测试工具GT的使用方法
  19. 专属所想 精诚所“制”——网帮客精选企业定制
  20. 显示或隐藏MacOS中的隐藏文件

热门文章

  1. vivo OPPO iQOO 一加 真我 手撕 安卓10 11 12手撕方案
  2. OSChina 周四乱弹 —— 二次元世界很不安全
  3. 揭秘FMX进度条样式修改
  4. vue路由传参和取参,四种方法,包会
  5. 老赵的DOM笔记(一) offset
  6. Unicode 编码表
  7. 适合中小企业的OA协同办公产品怎么选?最全的测试都在这里了
  8. Linux的virbr0和ens33区别
  9. 飞机订票管理系统(Java+数据库+MVC)
  10. 前端开发工程师-阿里内推一面