MySQl数据库————DQL数据查询语言
系列文章目录
文章目录
- 系列文章目录
- 前言
- 一.DQL
- 一.DQL数据查询语言
- 二.DQL单表查询
- 1.基本条件查询
- 2.多条件查询
- 3.范围查找
- 4.集合范围类查找
- 5.字符串模糊匹配
- 6.空值查询
- 7.分页查询
- 8.合并查询
- 9.排序查询
- 10.分组排序
- 三.DQL多表查询
- 1.测试数据表的创建
- 2.交叉连接
- 3.内连接
- 4.外连接
- ①.左外连接
- ②.右外连接
- ③.全外连接
- 5.多表连接查询
- 二.力扣题目讲解
- 1.基础查询
- ①.查询所有列
- ②.查询多列
- 简单处理查询结果
- ①.查询结果去重
- ②.查询结果限制返回查询结果
- ③.将查询后的结果重新命名
- 三.条件查询
- ①.查找学校是北大的学生信息
- ②.查找后排序
- ③.操作符的混合使用
- 总结
前言
前面我们学习了DDL和DML,学会了如何定义数据表,以及如何去根据需求来实现属性的约束,现在我们将学习如何利用DQL语言查询数据表中的类容,前半部分我们将讲解基本类容,后面会引进刷题网站中的题目进行讲解。
一.DQL
一.DQL数据查询语言
– 用于查询数据库中的数据表数据.
1.SQL查询语句
查询关键字:select
查询语句的基本结构:select <属性名> from [数据库名].表名<查询条件>;
2.查询所有字段
基本格式:
select * from <表名>; -- "*"表示所有字段;
3.查询指定字段
基本格式:select <属性名> from <表名>;
eg:select s_id,s_name from student;
二.DQL单表查询
1.基本条件查询
基本格式:select <属性名> from <表名> where 【条件】;
条件运算符:<,>,<=,>=,=,!=(<>),(不存在==);
例如:select s_id from student where s_id>3
2.多条件查询
基本格式:select <属性名> from [数据库名].表名 where [约束条件1,约束条件2·····];
逻辑运算符:AND/and(&&),OR/or(||)
例如:select s_id from student where s_id>3 and s_id<5;
3.范围查找
范围查找关键字:between ·······and·······
;
例如:select s_id from student where s_id between 5 and 8; -- 在5到8的范围类查找;
select s_id from student where s_id not between 5 and 8 ;-- 在5到8 的范围之外查找
4.集合范围类查找
集合范围类查找的关键字:in
①.在集合范围类查找:
select s_name from student where s_id in(1,2,3,4,5,6); -- 查找学号在1,2,3,4,5,6这些条件下的s_name;
②.在集合之外查找
select s_name from student where s_id not in (1,2,3,4,5,6);
这里的语法和python中的语法相似,如果会python的可以i联想记忆;
5.字符串模糊匹配
模糊匹配 :like
(用于字符串模糊匹配)
①.通配符:%:匹配0个,1个或者多个字符;
select s_id from student where s_name like "%小%";
匹配属性s_name中含有小字的记录,前后任意个字符,例如“王二小”,“李小华”;
②.通配符:_:匹配一个字符
select s_name from student where s_name like "小_";
匹配属性s_name中以小开头,且后面只有一个字符的元组,例如:"小华"
6.空值查询
①.查询空值
select s_name from student where s_name is null;
查询属性s_name中取值为空的记录;
②.查询非空值 is not null
select s_name from student where s_name is not null;
查询属性s_name不为空的记录
;
7.分页查询
分页:limit[偏移量n,记录条数m],是指查询从第n+1开始记录后面m+1的数据,偏移量n默认为0;和python中的索引相似;
select s_id from student limit 3,6;
8.合并查询
合并:union(合并)(union all(合并所有))
临时结果集:select语句查询的结果是一个虚拟表(临时表)。
— union 合并:去重
select 3,"abcde" union select 4,"achde";
注意:合并的多个查询结果必须列的数量相同;
— union all(合并):不去重,合并所有;
select 3,"abcde" union all select 3,"abcde";
9.排序查询
排序查询关键字:order by
对查询结果的排序默认是按照升序的,如果要使用降序,则后面加desc;
例如:默认升序排序:select * from student order by s_id;
降序排序:select * from student order by s_id desc;
10.分组排序
分组:group by;
分组统计:
select count(s_id) as 男学生人数 from db_2.student group by s_sex having s_sex="男";
注意:分组查询中使用条件约束的时候用的是having
关键字,不是where
关键字;
三.DQL多表查询
我们在查询表格的过程中,往往需要将 多个表组合使用,并且要实现多个表之间的数据查询,例如:查询学生成绩,需要将学生表和成绩表连接起来,查询满足的条件的数据,这个时候就需要用到多表查询;
1.测试数据表的创建
创建学生,班级,教师的关系表:
use db_2;
-- 教师表;
create table teacher(
t_id int primary key auto_increment,
t_name varchar(20) not null,
t_sex varchar(4),
t_age int
);
-- 班级表;
create table class(
c_id int primary key auto_increment,
c_name varchar(20) not null,
c_tid int,
c_stunum int default 0,
constraint for_CT foreign key(c_tid) references teacher (t_id)
);
-- 学生表
create table student(
s_id int primary key auto_increment,
s_name varchar(20) not null,
s_cid int,
s_sex varchar(4),
s_age int,
constraint for_SC foreign key (s_cid) references class(c_id)
);后面进行数据的插入,读者根据自己的想法进行数据插入;
2.交叉连接
交叉连接是基本的多表连接查询。
不带where条件子句的交叉连接,将会产生连接表的笛卡尔积,返回结果集的行数等于参与连接的表的行数的积。
带where的条件子句的交叉连接,往往会产生两个或者多个表行数乘积的笛卡尔级数据表,然后才根据where后的条件约束挑选相匹配的数据。
交叉连接的基本格式:
select <表名1.属性名1>,<表名1.属性名2>·······from <表名2.属性名1>,<表名2.属性名2>
交叉连接会产生笛卡尔积,再进行条件筛选,效率比较慢,将连接表格的所有元组都互相匹配一次,产生一个包含所有情况的大表
;
3.内连接
交叉连接产生的笛卡尔积会进行额外的判断和比较,如果要查询较多的数据,交叉连接查询的效率相当低下,所以有了一个高效率的查询;
内连接的图示:
内连接的关键字:inner join
基本格式:
select [表名1.属性名1,表名2.属性名2,表名n.属性名n······] from [数据库名.表名1]inner join [数据库名.表名2] on 连接条件
例如:
内连接时先筛选满足条件的数据,然后再进行连接,避免了很多不必要的冲突,极大的增加了效率。
4.外连接
①.左外连接
左连接是以左表为基准,显示左表查询字段的所有记录,没有匹配的用null代替。
关键字:left join
②.右外连接
右连接是以右表为基准,左表只是记录,没有匹配的用null代替。
关键字:right join
左右连接的表是可以互换的,也就是可以相互的替换。
③.全外连接
全外连接左右表不被限制,显示全部数据,没有匹配的数据用null代替;
关键字:full join
select student.s_name,student.s_id,class.c_name from student full join class where student.s_cid=class.c_id;
5.多表连接查询
一般来说,我们在使用多表查询的时候,最好不要超过4个,如果超过4个,很有可能是数据表的设置有问题。
二.力扣题目讲解
点击此处题目直达
1.基础查询
①.查询所有列
题目解答答案:SELECT id,device_id,gender,age,university,province from user_profile;
②.查询多列
题目解答答案:SELECT device_id,gender,age,university from user_profile;
简单处理查询结果
①.查询结果去重
我们在去重的时候可以用关键字 distinct
,使用该关键字就可以去重,如图中的第一句。
当然也可以使用分组查询来进行去重。第二句就是使用分组查询进行的去重,两句答案都可以通过。
②.查询结果限制返回查询结果
使用分页查询可以获得不同范围类的数据;
答案再现:select device_id from user_profile limit 0,2;
③.将查询后的结果重新命名
利用关键字as
给查询的结果起一个别名;
答案再现:select device_id as user_infos_example from user_profile limit 0,2;
三.条件查询
①.查找学校是北大的学生信息
使用关键字where
就可以进行条件查询;
答案:select device_id,university from user_profile where university="北京大学";
②.查找后排序
使用关键字order by
进行排序,如果是降序,就在后面加一个desc
;
③.操作符的混合使用
答案:select device_id,gender,age,university,gpa from user_profile where (gpa>3.5 and university="山东大学") or (gpa>3.8 and university="复旦大学");
这里的题目我选择了一部分讲解,其余的后面学到了会继续讲解,如果有不会的,可以私聊博主,我会尽快为你解答的。
总结
本节我们学习了DQL数据查询语言,无论是单表查询,还是多表查询,都是非常重要的知识,后面也讲解了部分力扣网站上的题目,只是选择几个比较有价值的讲解了的,如果想要彻底掌握,还是要多刷题,以及多想。不要怕不会做,如有不会可以私聊博主,博主会尽快为你解答。祝各位小伙伴学有所成。
MySQl数据库————DQL数据查询语言相关推荐
- Mysql数据库——DQL数据查询语言
DQL数据查询语言 基本查询 条件查询 聚合函数 分组查询 排序查询 分页查询 执行顺序 实例 基本查询 条件查询 聚合函数 分组查询 排序查询 分页查询 案例练习 小结 DQL,数据查询语言,用来查 ...
- 数据库DQL数据查询语言
文章目录 DQL数据查询语言 1.基础查询:SELECT子句和FROM子句 1.1 语法: 2. WHERE子句 2.1 使用AND"与"和OR"或"来连接多个 ...
- MySQL(二)——DQL数据查询语言
文章目录 1. DQL简述 2. 指定查询字段 3. where 条件子句 4. 联表查询 5. 分页和排序 6. 子查询 7. 分组和过滤 8. Select 小结 1. DQL简述 Data Qu ...
- DQL -- 数据查询语言
DQL -- 数据查询语言 查询不会修改数据库表记录! 一. 基本查询 1. 字段(列)控制 1) 查询所有列 SELECT * FROM 表名; SELECT * FROM emp; --> ...
- 读取mysql数据库的数据,转为json格式
# coding=utf-8 ''' Created on 2016-10-26 @author: Jennifer Project:读取mysql数据库的数据,转为json格式 ''' import ...
- php如何在mysql数据库里创建表_php创建mysql数据库以及数据表
php创建mysql数据库以及数据表 用php链接到mysqli,成功后利用,mysqli_query()创建数据库以及数据表. $con = mysqli_connect("localho ...
- 利用percona-toolkit工具检查MySQL数据库主从复制数据的一致性,以及修复。
利用percona-toolkit工具检查MySQL数据库主从复制数据的一致性,以及修复. 一.pt-table-checksum检查主从库数据的一致性 pt-table-checksum在MASTE ...
- mysql的代码需要保存吗_php向Mysql数据库保存数据的代码
php向Mysql数据库保存数据的代码 PHP如何向MySQL数据库中写入数据你知道吗?你对PHP向MySQL数据库中写入数据了解吗?下面是小编为大家带来的php向Mysql数据库保存数据的`代码,欢 ...
- Windows下MySQL数据库更改数据存储位置
Windows下MySQL数据库更改数据存储位置 1.创建一个新的存储数据文件 比如,我创建了一个文件 E:\MySQL_Service ,用来放mysql数据. 2.找到配置文件my.ini和my ...
最新文章
- Python基础教程:列表、字典、集合推导式
- C++ 成员函数做友元
- 【Linux基础 11】vi和vim编辑器的使用
- scikit-learn决策树算法类库使用小结及可视化方法
- 一种基于谷歌浏览器加载activex控件的解决方法与流程技术_Office控件使用总踩雷?畅写Office带你云端飞行...
- python对比两张图片_用python实现对比两张图片的不同
- HDU-1027 组合数 STL-next_permutation
- drools 7.x集成SparkStream 2.x
- WPF连接WF4的问题
- Linux下软件实现raid
- sublime双击选中$
- 猿创征文|计算机专业硕博研究生提高效率的10款科研工具
- P2P网络与BitTorrent技术简介
- CKEditor 4.12.1富文本编辑器的配置与使用(详细版)
- java+桌球小游戏图片_Java桌球小游戏
- pip 安装包成功 但是import 失败
- 壮大云平台中国力量 安全可控大会即将登场
- 如何设计一个监控平台(上篇)
- 用 matplotlib 绘制 3D 时间序列动态图
- 巴比特 | 元宇宙每日必读:连续七个季度出现亏损,Meta元宇宙部门Q2亏损28 亿美元,扎克伯格称这种情况可能会持续数年...