查询关键字补充

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查询关键字补充与多表查询的更多相关文章

  1. MySQL:记录的增删改查、单表查询、约束条件、多表查询、连表、子查询、pymysql模块、MySQL内置功能

    数据操作 插入数据(记录): 用insert: 补充:插入查询结果: insert into 表名(字段1,字段2,...字段n) select (字段1,字段2,...字段n) where ...; ...

  2. springdata 查询思路:基本的单表查询方法(id,sort) ---->较复杂的单表查询(注解方式,原生sql)--->实现继承类---->复杂的多表联合查询 onetomany

    springdata 查询思路:基本的单表查询方法(id,sort) ---->较复杂的单表查询(注解方式,原生sql)--->实现继承类---->复杂的多表联合查询 onetoma ...

  3. MYSQL 外键 on语句 多表查询

    外键约束 创建外键 --- 每一个班主任会对应多个学生 , 而每个学生只能对应一个班主任 ----主表 CREATE TABLE ClassCharger( id TINYINT PRIMARY KE ...

  4. MySQL多个相同结构的表查询并把结果合并放在一起的语句(union all)

    union all select *,'1' as category from table1001 where price > 10 union all select *,'2' as cate ...

  5. MySQL数据库(4)- 多表查询、可视化工具Navicat的使用、设计模式MVC

    一.多表查询 准备工作:创建两张表,部门表(department).员工表(employee),代码和表格如下: # 创建表 create table department( id int, name ...

  6. MySQL基础(三)多表查询(各种join连接详解)

    Mysql 多表查询详解 一.前言 二.示例 三.注意事项 一.前言 上篇讲到Mysql中关键字执行的顺序,只涉及了一张表:实际应用大部分情况下,查询语句都会涉及到多张表格 : 1.1 多表连接有哪些 ...

  7. Mysql基础(五):多表查询、pymysql模块

    目录 数据库04 /多表查询.pymysql模块 1. 笛卡尔积 2. 连表查询 3. 子查询 4. pymysql模块 数据库04 /多表查询.pymysql模块 1. 笛卡尔积 将两表所有的数据一 ...

  8. mysql学习(十)多表查询

    多表查询时,要给表名起别名,给字段名其别名(当两个表含有重复字段时) select p.name, c.name, pid from products p, cats c;//得到的结果为笛卡尔乘积 ...

  9. MySql语句常用命令整理---多表查询

    首先第一张表还是我们单表查询之前用到t_employee,我们在另外新建一个表t_dept(部门表)建表命令如下: drop table if exists t_dept; CREATE TABLE ...

随机推荐

  1. 首次写iPad布局感想(H5)

    一直做前端工作,却从来没有开发过平板的项目,想来也是有遗憾的,孰知,新公司的第二个项目就是要适配平板,刚开始是懵的,对于兼容,感觉是自己的短板,但庆幸的是这一版只需要兼容iOS系统就可以. 那我现在就 ...

  2. 实现自定义的小程序底部tabbar

    背景 诶,当然是为了实现更有温度的代码啦(背后设计师拿着刀对着我) 自带tabbar app.json中配置: tabBar: { backgroundColor: '#fff', borderSty ...

  3. VasSonic Android源码解析

    VasSonic是腾讯推出的为了提高H5页面首屏加载速度而推出的高性能Hybrid框架,目前广泛应用在QQ商城等Hybrid界面中,以提高用户体验. https://github.com/Tencen ...

  4. python-你好

    你的程序会读入一个名字,比如John,然后输出"Hello John". 输入格式: 一行文字. 输出格式: 一行文字. 输入样例: Mary Johnson 输出样例: Hell ...

  5. java中字符串池,String池,共享池到底是怎么回事?

    栈中有共享池的概念,比 如下面例子中,sz="hello";在栈中创建一个String对象引用变量sz,然后看看栈中有没有"hello",如果没有,则将&quo ...

  6. java静态方法和实例方法的区别

    静态方法(方法前冠以static)和实例方法(前面未冠以static)的区别  调用静态方法或说类方法时,可以使用类名做前缀,也可以使用某一个具体的对象名:通常使用类名.static方法只能处理sta ...

  7. IDEA个人常用快捷键

    Ctrl+Z:撤销 Ctrl+Shift+Z:重做 Ctrl+X:剪贴 Ctrl+C:复制 Ctrl+V:粘贴 Ctrl+Y:删除当前行 Ctrl+D:复制当前行 Alt+向左箭头:返回上次光标位置 ...

  8. CCF201503-1图像旋转

    问题描述 旋转是图像处理的基本操作,在这个问题中,你需要将一个图像逆时针旋转90度. 计算机中的图像表示可以用一个矩阵来表示,为了旋转一个图像,只需要将对应的矩阵旋转即可. 输入格式 输入的第一行包含 ...

  9. vim 下几种比较省劲的方式(vi结合着用)

    Vim的几种模式 正常模式:可以使用快捷键命令,或按:输入命令行. 插入模式:可以输入文本,在正常模式下,按i.a.o等都可以进入插入模式. 可视模式:正常模式下按v可以进入可视模式, 在可视模式下, ...

  10. Linux centos7系统列出systemd下所有正在运行的服务

    Linux系统提供各种系统服务(如进程管理.登录.syslog.cron等)和网络服务.Linux支持不同的方法来管理服务(启动.停止.重启.在系统启动时的自动启动等),通常通过流程或服务管理器. 大 ...