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 ...
随机推荐
- Ueditor上传本地音频MP3
遇到一个项目,客户要求能在编辑框中上传录音文件.用的是Ueditor编辑器,但是却不支持本地MP3上传并使用audio标签播放,只能搜索在线MP3,实在有点不方便.这里说一下怎么修改,主要还是利用原来 ...
- java中设置准确的时间日期类的用法
5.日期Date相关类: 题目1: 设置准确的时间(jdk1.1以后Date的setHours不被推荐了,所以要用Calendar设置时间) import java.util.*;public cla ...
- PAT B1024科学计数法
科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指 ...
- vue点击按钮复制文本框内容
1.npm进行安装 npm install clipboard --save 2.在需要使用的组件中import 引用方法:import Clipboard from 'clipboard'; 3.添 ...
- CTF大赛模拟-CFS三层内网漫游
CTF大赛模拟-CFS三层内网漫游 环境: 三台虚拟机,三个网络. target 1:192.168.161.178 ,192.168.52.132 (linux) target 2:192.168. ...
- 创建可以运行宿主机GPU的容器
1.安装NVIDIA Container Runtime apt-get参考https://blog.csdn.net/li_ellin/article/details/107180516 yum参考 ...
- 百度离线人脸识别sdk的使用
1.1下载sdk运行 百度离线人脸识别sdk的使用 1.2配置环境 添加至项目,可以拖动复制或者以类库形式添加face-resource此文件夹 放到根目录上一层 激活文件与所有dll引用放到根目录嫌 ...
- 洛谷 P2392 kkksc03考前临时抱佛脚, dp / 深搜
题目链接 P2392 kkksc03考前临时抱佛脚 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目 dp代码 #include <iostream> #includ ...
- SpringCloud微服务实战——搭建企业级开发框架(三十九):使用Redis分布式锁(Redisson)+自定义注解+AOP实现微服务重复请求控制
通常我们可以在前端通过防抖和节流来解决短时间内请求重复提交的问题,如果因网络问题.Nginx重试机制.微服务Feign重试机制或者用户故意绕过前端防抖和节流设置,直接频繁发起请求,都会导致系统防重 ...
- JavaScript函数中的arguments对象
ECMAScript标准中,每个函数都有一个特殊的内置对象arguments.arguments对象是一个类Array对象(object),用以保存函数接收到的实参副本. 一.内置特性 说它是一个内置 ...