Mysql之表的查询
一、单表的查询
首先让我们先熟悉一下mysql语句在查询操作时执行的顺序:
(1)from
(2) on
(3) join
(4) where
(5)group by
(6) avg,sum....
(7)having
(8) select
(9) distinct
(10) order by
创建查询环境:
创建一个学生表:
create table stu(id int primary key auto_increment,name char(10) not null,gender enum('男','女'),age int not null);
插入数据:
insert into stu(name,gender,age) values ('小红','女','16'),('小明','男','18'),('小丽','女','17'),('月月','女','12'),('孙哥','男','28');
1.查询所有字段
select * from 表名;
注: * 表示所有字段

2.查询指定字段
select 字段1,字段2... from 表名;

3.查询指定记录
selec 字段 from 表名 where 约束条件

4.空值的查询

5.关键字查询in与distinct
in关键字:IN(xx,yy,...) 满足条件范围内的一个值即为匹配项

distinct让查询的结果不重复

6.多条件查询and与or
and: 相当于"逻辑与",也就是说要同时满足条件才算匹配

or:相当于“逻辑或",也就是说只要满足其中一个条件,就算匹配上了,跟IN关键字效果差不多

7.范围查询between and
between ... and ... : 在...到...范围内的值即为匹配项,

8.字符匹配查询like
like: 相当于模糊查询,和LIKE一起使用的通配符有 "%"与"_"
"%":作用是能匹配任意长度的字符。

"_":只能匹配任意一个字符

9.对查询结果排序order by
关键字 order by,有两个值供选择 desc 降序 、asc 升序(默认值)
不设置则为默认

desc

10.分组查询group by ※
分组查询作为查询中的重点难点在这里会详细解释说明一下,相信很多初学者在这里遇到过不少问题,希望你们在看了我的文章后能从中获得启发,
创建一个新的查询环境
创建课程表:
create table cou(cid int primary key auto_increment,cname char(20) not null,elenum int not null,teacher char(10) not null);
注:cid表示课程号;cname表示课程名;elenum:表示选课人数;teacher:表示授课教师;
向表中添加数据:
insert into cou(cname,elenum,teacher) values ('高等数学',67,'张红燕'),('大学物理',67,'李健民'),('大学外语',67,'王小丹'),('大学生安全教育',32,'吴菲'),('舌尖上的植物学',32,'老丁'),('体育',20,'高飞');

首先我们先对字段elenum进行分组
select elenum from cou group by elenuml;

从图中可有看出将字段elenum分组后,分为了三个组20、32、67

11.筛选having
分组之后还进行条件过滤,将不想要的分组丢弃,使用关键字 having

12.限制查询LIMIT
LIMIT[位置偏移量] 行数 通过LIMIT可以选择数据库表中的任意行数

13.集合函数查询
集合函数查询包括:COUNT()函数、SUM()函数、AVG()函数、MAX()函数、MIN()函数
COUNT()函数:作用是统计数据表中包含的记录行的总数,或者根据查询结果返回列中包含的数据行数

COUNT(*):计算表中的总的行数,不管某列有数值或者为空值,因为*就是代表查询表中所有的数据行
COUNT(字段名):计算该字段名下总的行数,计算时会忽略空值的行,也就是NULL值的行。
SUM()函数:作用是一个求总和的函数,返回指定列值的总和

AVG()函数:作用是通过计算返回的行数和每一行数据的和,求的指定列数据的平均值

MAX()函数:作用是返回指定列中的最大值

MIN()函数:作用是返回指定列中的最小值

二、多表的查询
1.内链接查询
格式:表名 INNER JOIN 表名 ON 连接条件

2.外链接查询
左外链接查询
格式:表名 LEFT JOIN 表名 ON 条件; 返回包括左表中的所有记录和右表中连接字段相等的记录
右外链接查询
格式:表名 RIGHT JOIN 表名 ON 条件 返回包括右表中的所有记录和右表中连接字段相等的记录

3.复合条件查询
在连接查询(内连接、外连接)的过程中,通过添加过滤条件,限制查询的结果,使查询的结果更加准确,通俗点讲,就是将连接查询时的条件更加细化。
举两个简单的例子:


三、子查询
子查询的意思就是将查询一张表得到的结果来充当另一个查询的条件,这样嵌套的查询就称为子查询。
需要注意的是在子查询完成后需要起一个别名,

as的使用方法就是写表或者派生表的后面+别名

1.关键字查询
关键字ANY与SOME
ANY关键字与SOME关键字用法相同,都是接在一个比较操作符的后面,表示若与子查询返回的任何值比较为TRUE`

关键字AII
使用ALL时表示需要同时满足所有条件。
不太容易理解我们分步来做
先进行先子查询

在一起查询更容易理解:

关键字IN
IN关键字的作用跟上面单表查询的IN是一样的,不过这里IN中的参数放的是一个子查询语句。

四、合并结果查询
利用UNION关键字,可以将查询出的结果合并到一张结果集中,也就是通过UNION关键字将多条SELECT语句连接起来,注意,合并结果集,只是增加了表中的记录,并不是将表中的字段增加,仅仅是将记录行合并到一起。其显示的字段应该是相同的,不然不能合并。
UNION[ALL]的使用
UNION:不使用关键字ALL,执行的时候会删除重复的记录,所有返回的行度是唯一的,
UNION ALL:不删除重复航也不对结果进行自动排序。
格式:
SELECT 字段名,... FROM 表名
UNION[ALL]
SELECT 字段名,... FROM 表名

Mysql之表的查询的更多相关文章
- 【连接查询】mySql多表连接查询与union与union all用法
1.准备两个表 表a: 结构: mysql> desc a; +-------+-------------+------+-----+---------+-------+ | Field | T ...
- mysql数据库表的查询操作-总结
转自:https://www.cnblogs.com/whgk/p/6149009.html 序言 1.MySQL表操作(创建表,查询表结构,更改表字段等), 2.MySQL的数据类型(CHAR.VA ...
- MySQL多表数据查询(DQL)
数据准备: /* ------------------------------------创建班级表------------------------------------ */ CREATE TAB ...
- MySQL常用表结构查询语句
在我们使用数据库进行查询或者建表时,经常需要查看表结构,下面以employees数据库中的departments表为例进行表结构查询: departments表:(2列9行) +---------+- ...
- 最全MySQL数据库表的查询操作
序言 1.MySQL表操作(创建表,查询表结构,更改表字段等), 2.MySQL的数据类型(CHAR.VARCHAR.BLOB,等), 本节比较重要,对数据表数据进行查询操作,其中可能大家不熟悉的就对 ...
- MySQL多表关联查询数量
//多表关联查询数量select user, t1.count1, t2.count2from user tleft join ( select user_id, count(sport_type) ...
- JDBC MySQL 多表关联查询查询
public static void main(String[] args) throws Exception{ Class.forName("com.mysql.jdbc.Driver&q ...
- mysql多表联合查询
转自:http://www.cnblogs.com/Toolo/p/3634563.html 多表连接,小分三种(笛卡尔积.内连接.外连接),多分五种 (笛卡尔积.内连接.左连接.右连接.全连接(my ...
- Mysql 多表联合查询效率分析及优化
1. 多表连接类型 1. 笛卡尔积(交叉连接) 在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用',' 如: SELECT * FROM table1 CROSS JO ...
随机推荐
- iOS App Store网址的命名规则
App Store 命名规则:https://itunes.apple.com/cn/app/ + 拼音(最多6个,全部小写,空格要-) + /id +appID 一些参考实例: http:// ...
- ABAP DMEO 通过工单号读取内部对象号
*&---------------------------------------------------------------------* *& Report YDEMO_013 ...
- Swift细节记录<一>
1.全局变量记录: import UIKit class HHTSwitchGlobalData: NSObject { var isWaiterAutoPop: Bool = true privat ...
- jqweui Popup 使用说明
使用步骤说明: 今天遇到一个问题,无论怎么点击一个图标都不会弹出对应的遮罩层,但是把示列代码拷贝过来又可以正常显示:结果是由于在复制的时候把 # 号弄掉了 错误操作展示: <a href=&qu ...
- WEUI switch 如何取值?
let id = $(this).attr("id"); let name = $(this).attr("data-name"); HTML: <div ...
- python解析本地HTML文件
Python使用爬虫技术时,每运行一次,本地都会访问一次主机.为避免完成程序前调试时多次访问主机增加主机负荷,我们可以在编写程序前将网页源代码存在本地,调试时访问本地文件即可.现在我来分享一下爬取资料 ...
- vue路由跳转取消上个页面的请求和去掉重复请求
vue路由跳转取消上个页面的请求和去掉重复请求 axios 的二次封装(拦截重复请求.异常统一处理) axios里面拦截重复请求
- Semi-supervised learning for Text Classification by Layer Partitioning
本文是arxiv上一篇较短的文章,之所以看是因为其标题中半监督和文本分类吸引了我.不过看完之后觉得所做的工作比较少,但想法其实也挺不错. 大多数的半监督方法都选择将小扰动施加到输入向量或其表示中,这种 ...
- PHP中文名加密
<?php function encryptName($name) { $encrypt_name = ''; //判断是否包含中文字符 if(preg_match("/[\x{4e0 ...
- [SVN] - 使用 TortoiseSVN 进行文件比对非常慢 之 解决
背景 Windows 10 + TortoiseSVN-v1.9.7使用默认的 TortoiseMerge 进行文件比对,打开速度非常非常慢. 解决 禁用 TortoiseMerge / Settin ...