mysql查询关键字补充与多表查询
查询关键字补充
having过滤
关键字having和where的功能一样的,都是对数据进行筛选,只不过where是用在分组之前的查询筛选,having是用在分组之后的查询筛选。
select 字段 from 表 group by 分组字段 having 条件
distinct去重
distinct关键字用于去掉一模一样的记录,如果数据中有主键,那么肯定无法去重。
select distinct 查询的字段 from 表
order by排序
order by可以对查询出来的数据进行排序。
升序排序
select 字段 from 表 order by 排序字段
# 或者
select 字段 from 表 order by 排序字段 asc
降序排序
select 字段 from 表 order by 排序字段 desc
多字段排序:先按排序字段1升序排序,如果值一样,那么按照排序字段2降序排序。
select 字段 from 表 order by 排序字段1 asc 排序字段2 desc
limit分页
limit关键字用于限制查询出来的记录数。
语法1:只展示m条记录
select 字段 from 表 limit m
语法2:展示m条记录后的n条记录
select 字段 from 表 limit m,n
补充:查询记录最大值
select 字段 from 表 order by 排序字段 desc limit 1
regexp正则
regexp关键字可以使用正则表达式筛选数据。
select 展示的字段 from 表 where 字段 regexp '正则表达式'

多表查询
多表查询的思路有两种:子查询和连表查询
子查询
子查询就是将一条SQL语句的查询结果加括号当做另外一条SQL语句的查询条件;
比如现有学生表与班级表:
- student(sid,sname,cid(外键))
- class(cid,cname)
如果想要查询名字为'张三'的学生所在班级,可以先查询'张三'所在的班级id:
select cid from student where sname='张三';
然后把查询的结果当作条件:
select cname from class where cid=(
select cid from student where sname='张三'
);
这种多表查询方式就是子查询。
连表查询
连表查询即两张表或多张表联合查询,连表操作有四个关键字:
- inner join:只连接两张表中有对应关系的数据
- left join:以左边的表为基准,展示所有的数据,没有对应项则用NULL填充
- right join:以右边的表为基准,展示所有的数据,没有对应项则用NULL填充
- union:两张的表的查询结果拼接在一起输出,前提是两个查询的列数要相同
比如现有学生表与班级表:
- student(sid,sname,cid(外键))

- class(cid,cname)

inner join关键字查询
select sname,cname from student inner join class
on student.cid=class.cid;

left join关键字查询
select sname,cname from student left join class
on student.cid=class.cid;

right join关键字查询
select sname,cname from student right join class
on student.cid=class.cid;

union关键字查询
select sname,cname from student left join class
on student.cid=class.cid
union
select sname,cname from student right join class
on student.cid=class.cid;

mysql查询关键字补充与多表查询的更多相关文章
- MySQL:记录的增删改查、单表查询、约束条件、多表查询、连表、子查询、pymysql模块、MySQL内置功能
数据操作 插入数据(记录): 用insert: 补充:插入查询结果: insert into 表名(字段1,字段2,...字段n) select (字段1,字段2,...字段n) where ...; ...
- springdata 查询思路:基本的单表查询方法(id,sort) ---->较复杂的单表查询(注解方式,原生sql)--->实现继承类---->复杂的多表联合查询 onetomany
springdata 查询思路:基本的单表查询方法(id,sort) ---->较复杂的单表查询(注解方式,原生sql)--->实现继承类---->复杂的多表联合查询 onetoma ...
- MYSQL 外键 on语句 多表查询
外键约束 创建外键 --- 每一个班主任会对应多个学生 , 而每个学生只能对应一个班主任 ----主表 CREATE TABLE ClassCharger( id TINYINT PRIMARY KE ...
- MySQL多个相同结构的表查询并把结果合并放在一起的语句(union all)
union all select *,'1' as category from table1001 where price > 10 union all select *,'2' as cate ...
- MySQL数据库(4)- 多表查询、可视化工具Navicat的使用、设计模式MVC
一.多表查询 准备工作:创建两张表,部门表(department).员工表(employee),代码和表格如下: # 创建表 create table department( id int, name ...
- MySQL基础(三)多表查询(各种join连接详解)
Mysql 多表查询详解 一.前言 二.示例 三.注意事项 一.前言 上篇讲到Mysql中关键字执行的顺序,只涉及了一张表:实际应用大部分情况下,查询语句都会涉及到多张表格 : 1.1 多表连接有哪些 ...
- Mysql基础(五):多表查询、pymysql模块
目录 数据库04 /多表查询.pymysql模块 1. 笛卡尔积 2. 连表查询 3. 子查询 4. pymysql模块 数据库04 /多表查询.pymysql模块 1. 笛卡尔积 将两表所有的数据一 ...
- mysql学习(十)多表查询
多表查询时,要给表名起别名,给字段名其别名(当两个表含有重复字段时) select p.name, c.name, pid from products p, cats c;//得到的结果为笛卡尔乘积 ...
- MySql语句常用命令整理---多表查询
首先第一张表还是我们单表查询之前用到t_employee,我们在另外新建一个表t_dept(部门表)建表命令如下: drop table if exists t_dept; CREATE TABLE ...
随机推荐
- 用vue开发一个猫眼电影web app
前言:之前一直在学习原生的javascript,但是无奈功力太浅,学了很长时候也只能写一些简单的小demo,知道遇见了vue,一切都变了,他的双向绑定和组件化思想让我迅速的爱上了他,可是光学不练是没有 ...
- H5: 表单验证失败的提示语
前言 前端的童鞋在写页面时, 都不可避免的总会踩到表单验证这个坑. 这时候, 我们就要跪了, 因为要写一堆js来检查. 但是自从H5出现后, 很多常见的表达验证, 它都已经帮我们实现了, 让我 ...
- JavaScript 工作原理之六-WebAssembly 对比 JavaScript 及其使用场景
原文请查阅这里,略有改动,本文采用知识共享署名 4.0 国际许可协议共享,BY Troland. 本系列持续更新中,Github 地址请查阅这里. 这是 JavaScript 工作原理的第六章. 现在 ...
- linux磁盘概述
硬盘简史 世界上第一块硬盘出生在1956年,至今已有61年半个多世纪的历史.它由IBM公司制造,世界上第一块硬盘:350RAMAC.盘片直径为24英寸,盘片数为50片,重量则是上百公斤,相当于两个冰箱 ...
- WePY开发环境的安装和小程序生成WePY项目
相对于微信开发者工具而言,WePY的安装和生成项目稍显复杂.特记录下安装顺序: 1.安装Node.js 在Node官网(https://nodejs.org/)下载Node.js的安装包,此处我下载的 ...
- SpatiaLite 数据库使用记录
SpatiaLite 数据库使用记录 官网 https://www.gaia-gis.it/fossil/libspatialite/index 下载地址 https://www.gaia-gis.i ...
- Java学习day20
一个简单的鼠标点击在窗口画点的程序 今天学习了键盘监听和Swing窗口 Swing可以理解为是AWT的升级版本,方法名字等大都相似,例如Frame和JFrame AWT如果要关闭窗口,需要使用窗口监听 ...
- Java学习day16
IO流即输入/输出流,按数据类型分为:字节流和字符流 与IO有关的操作最后都要释放,使用close方法 以字节流形式写入数据后需要换行可以添加换行符,注意旧版系统之间识别的换行符不相同,旧版Windo ...
- formData一般用法,移动端,pc端都可以用,pc有兼容性问题
其实FormData是一个 对象他是一个比较新的东东(其实我也不知道改叫什么好) 利用FormData对象,你可以使用一系列的键值对来模拟一个完整的表单,然后使用XMLHttpRequest发送这个& ...
- github ations 入门使用
在使用之前,我们了解一下什么是 Github Actions. 在 GitHub Actions 的仓库中自动化.自定义和执行软件开发工作流程. 您可以发现.创建和共享操作以执行您喜欢的任何作业(包括 ...