MySQL数据管理(二)(DQL语言)

MySQL数据管理(二)(DQL语言)

1.DQL简介

数据库查询语言 ------数据库最核心的语言

2.简单的字段查询操作

-- select 语句
-- 查询所有的字段值 ,显示所有的字段结果
SELECT * FROM student	

在这里插入图片描述

-- 查询指定的字段值
SELECT `name` FROM student

在这里插入图片描述

-- 查询时的别名操作
SELECT `name` AS '姓名' FROM student    -- 表名和字段名都可以AS更名

在这里插入图片描述

-- 查询时的字符串拼接操作
SELECT CONCAT('姓名:',`name`) FROM student

在这里插入图片描述

-- 语法分析
select `字段名`,`字段名2` from `表名` 

3.SELECT 语句 查询表达式

数据库列的表达式:

  • 文本值
  • Null
  • 函数
  • 计算表达式
  • 系统变量
-- select 语法
select `表达式` from `表名`
-- 查询系统版本
SELECT VERSION()

在这里插入图片描述

-- 计算表达式
SELECT 2*3-1 AS '计算结果'

在这里插入图片描述

-- 去重
SELECT DISTINCT `name` AS '查重name' FROM student

在这里插入图片描述

  • 查重后

在这里插入图片描述

-- 更改查询结果的值
SELECT `pwd`+'1' AS '查询改值' FROM student

在这里插入图片描述

  • 查询改值后

在这里插入图片描述

4. WHERE条件字句

逻辑运算符

与:AND &&

或:OR ||

非:NOT !

模糊查询(区间): BETWEEN AND

SELECT * FROM student WHERE NOT id=2
SELECT * FROM student WHERE id != 2

在这里插入图片描述

  • result:

在这里插入图片描述

SELECT * FROM student WHERE id >= 2 AND id<=5
SELECT * FROM student WHERE id BETWEEN 2 AND 5
  • result:

在这里插入图片描述

SELECT * FROM student WHERE id =2 || id=3
  • result:

在这里插入图片描述

SELECT * FROM student WHERE id%2=0
  • result:
    在这里插入图片描述

模糊查询

比较运算符

  • IS NULL        为空
  • IS NOT NULL   不为空
  • LIKE        SQL匹配
  • IN           在某个确定的范围内
-- ====================模糊查询=================
-- 查询address为null 
SELECT * FROM student WHERE address IS NULL
-- 查询address不为null 
SELECT * FROM student WHERE address IS NOT NULL
-- ====================LIKe=================
-- % 表示一个或多个字符   _表示一个字符
-- 查询name为一个J开头的 
SELECT * FROM student WHERE `name` LIKE 'J%'
-- 查询name为中间有J的 
SELECT * FROM student WHERE `name` LIKE '%J%'
-- 查询第二字为J的name
SELECT * FROM student WHERE `name` LIKE '_J%'
-- ====================In=================
-- IN 匹配的是一堆确定的值,不能用% 或 _
-- 查询id为2,3,4 的人
SELECT * FROM student WHERE `id` IN (2,3,4)

5.联表查询

  • 作用:当我们需要查询的数据来源于多个不同的有关系的数据表时,我们通过这个连接点跨数据表查询数据

  • 思路:1. 确定我们需要查询的数据有哪些?
    2. 确定这些数据来源于那些表?(确定是否使用联表查询)
    3. 确定数据表的连接方式(INNER RIGHT LEFT)
    4. 确定数据表之间的连接点

七种JOIN方式

我们将需要查询的数据表分为A表,和B表,连接点为id

-- ==================  7中JOIN方式  ====================
-- A表独有的+AB共有的
SELECT s.`id`,`name`,`score` 
FROM `student`  AS s
LEFT JOIN `result` AS r
ON s.id=r.id	
-- B表独有的+AB共有的
SELECT s.`id`,`name`,`score`
FROM `student` AS s
RIGHT JOIN `result` AS r
ON s.id = r.id
-- AB共有的
SELECT s.`id`,`name`,`score`
FROM `student` AS s
INNER JOIN `result` AS r
ON s.id = r.id
-- A独有
SELECT s.`id`,`name`,`score` 
FROM `student`  AS s
LEFT JOIN `result` AS r
ON s.id=r.id	
WHERE r.id =NULL
-- B独有
SELECT s.`id`,`name`,`score`
FROM `student` AS s
RIGHT JOIN `result` AS r
ON s.id = r.id
WHERE s.id =NULL  
-- A独有+B独有(外连接但不包括内连接)
SELECT s.`id`,`name`,`score` 
FROM `student`  AS s
LEFT JOIN `result` AS r
ON s.id=r.id	
WHERE r.id =NULL
UNION	
SELECT s.`id`,`name`,`score`
FROM `student` AS s
RIGHT JOIN `result` AS r
ON s.id = r.id
WHERE s.id =NULL
-- 全部都有 (全连接)  
SELECT s.`id`,`name`,`score` 
FROM `student`  AS s
LEFT JOIN `result` AS r
ON s.id=r.id	
UNION
SELECT s.`id`,`name`,`score`
FROM `student` AS s
RIGHT JOIN `result` AS r
ON s.id = r.id

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EWBlFABH-1585911200017)(C:\Users\MACHENIKE\Desktop\1xjhtnei.bmp)]

6.自连接查询

作用:当一个数据表的数据之间层级之间存在子父级关系,自连接查询用于查询显示子父级关系

(针对于树状结构的数据存储方式!!!)

思路:首先假想有两张表,一张为子表,一张为父表

题目一:查询子类所对应的父类 (子表在左,父表在右)

​ 连接点:子表的PID(父ID)=父类的ID

题目二:查询父类所对应的各个子类(父表在左,子表在右)

​ 连接点:父表的ID = 子表的PID

-- 查询子类所对应的父类
SELECT s.id,s.`cate_name`,r.`cate_name`
FROM `cates`  AS s
INNER JOIN `cates` AS r
WHERE s.`parent_id` = r.`id`   
-- 查询父类所对应的各个子类
SELECT s.id,s.`cate_name`,r.`cate_name`
FROM `cates` AS s
INNER JOIN `cates` AS r
WHERE s.`id` = r.`parent_id`

7.子查询

作用:用于和联结查询差不多,但是形式不同,采用的时嵌套的select语句,子查询语句只能返回一个列值

​ 将select语句的结果作为另外一个查询语句的条件

思路:由里向外的查询思路

-- ALL子查询
-- 比较满足子查询结果的每一条(例如大小比较)
--ANY 子查询
-- 满足子查询结果的任意一条(例如大小比较)
--EXISTS子查询
-- 当子查询存在结果时,执行外层查询
--IN子查询
-- 存在于子查询结果中 

8.排序

作用:对查询的结果,按某个值,升序或降序排序

关键字:order by

-- =============== 排序查询 ==================
SELECT * FROM `result`
ORDER BY `score` ASC      -- 升序
SELECT * FROM `result`
ORDER BY `score` DESC     -- 降序

9.分页

作用:对查询结果进行分页显示

关键字:limit

-- =============== 查询分页 ==================
--假设总记录为5条
-- limit 的第一个参数 为 查询结果的起始下标值(从0开始),查询结果的最大条数(pagesize)
SELECT * FROM `result`
LIMIT 1,2     --返回第2条——第3条记录
SELECT * FROM `result`
LIMIT 0,3     --返回第1条——第3条记录
SELECT * FROM `result`
LIMIT 4,3     --返回第5条——第5条记录

10.分组

作用:可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。

关键字:Group By

11.过滤

作用:对分组后的结果进行过滤,(不能用where!where不能和group by 一起,同时where也不能使用聚合函数当作条件!!)

关键字:Having

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值