(四)DQL查询数据(最重点)
4.1 DQL
Data Query Language 数据查询语言
1 所有的查询操作都用它 Select
2 简单的查询,复杂的查询它都能做
3 数据库中最核心的语言,最重要的语句
4 使用频率最高的语句
4.2 指定查询字段
-- 查询全部的学生
-- SELECT 字段 FROM 表
SELECT * FROM student
SELECT * FROM result
-- 查询指定字段
SELECT `StudentNo`,`StudentName` FROM student
-- 别名,给结果起一个名字 AS 可以给字段起别名,也可以给表起别名
SELECT `StudentNo` AS 学号,`StudentName` AS 学生姓名 FROM student AS s
-- 函数 CONCAT(str1,str2,...)
SELECT CONCAT('姓名: ',StudentName) AS 新名字 FROM student

有的时候,列名字不是那么的见名知意。我们起别名
AS
字段名 as 别名 `StudentNo` AS 学号
表名 as 别名 student AS s
去重 distinct
-- 查询一下有哪些同学参加了考试,成绩
-- 查询全部的考试成绩
SELECT * FROM result
-- 查询有哪些同学参加了考试
SELECT `StudentNo` FROM result
-- 发现重复数据,去重
SELECT DISTINCT `StudentNo` FROM result
去除SELECT查询出来的结果中重复的数据,重复的数据只显示一条
数据库的列(表达式)
-- 查询系统版本
SELECT VERSION() (函数)
-- 用来计算
SELECT 100*3-1 AS 计算结果 (表达式)
-- 查询自增的步长
SELECT @@auto_increment_increment (变量)
-- 学院考试成绩 + 1分查看
SELECT `StudentNo`,`StudentResult`+1 AS '提分后' FROM result


数据库中的表达式:
文本值,列,Null,函数,计算表达式,系统变量......
select 表达式 from 表
SELECT `StudentNo` FROM result

4.3 where 条件子句
作用:检索数据中符合条件的值
搜索的条件由一个或多个表达式组成,结果为 布尔值
逻辑运算符
| 运算符 | 语法 | 描述 |
| and && | a and b a&&b | 逻辑与 |
| or || | a or b a||b | 逻辑或 |
| not ! | not a !a | 逻辑非 |
尽量使用英文字母


模糊查询:比较运算符
| 运算符 | 语法 | 描述 |
| IS NULL | a is null | 如果操作符为NULL,结果为真 |
| IS NOT NULL | a is not null | 如果操作符不为NULL,结果为真 |
| BETWEEN | a between b and c | 若a在b和c之间,则结果为真 |
| Like | a like b | SQL匹配,如果a匹配b,则结果为真 |
| In | a in(a1,a2,a3....) | 假设a在a1,或者a2....其中的某一个值中,结果为真 |



IN具体的一个或多个值

NULL 和 NOT NULL

4.4 联表查询
JOIN对比
-- 查询参加了考试的同学
-- (学号,姓名,科目编号,分数)
/*
1.分许需求,分析查询的字段来自哪些表(连接查询)
2.确定使用哪种连接查询? 7种
确定交叉点(这两个表哪个数据是相同的)
判断的条件:学生表中的 studentNo = 成绩表 studentNo 交集
*/
SELECT s.studentNo,studentName,subjectNo,studentResult
FROM student AS s
INNER JOIN result AS r
WHERE s.studentNo = r.studentno
-- Right JOIN
SELECT s.studentNo,studentName,subjectNo,studentResult
FROM student s
RIGHT JOIN result r
ON s.studentNo = r.studentno
-- Left JOIN
SELECT s.studentNo,studentName,subjectNo,studentResult
FROM student s
LEFT JOIN result r
ON s.studentNo = r.studentno
| 操作 | 描述 |
| Inner Join | 如果表中至少有一个匹配,就返回行 |
| Left Join | 会从左表中返回所有的值,即使右表中没有匹配 |
| Right Join | 会从右表中返回所有的值,即使左表中没有匹配 |
Join(连接的表) ON(判断的条件) 连接查询 具体的语法
where 等值查询
结果一致


就是找到交点共有的值,再通过这些值找到各自行内其他的属性,差不多是这样吧
RIGHT JOIN 的作用:
有一个学生在这个学校,但是他没有参加考试,而且我们想要的结果为参加考试的学生,所以我们要把result 当做主表,这样的话,在result表中没有该同学的成绩,自然他也不会出现在表中,若将student当做主表,该同学的信息就会显示在该表上。
INNER JOIN 的作用:如果表中至少有一个匹配,就返回行
自连接:(作为了解)
自己的表和自己的表连接,核心:一张表拆成两张一样的表即可
pid:父类ID categoryid:当前分类的一个ID

MySQL语句:
CREATE TABLE `school`.`category`( `categoryid` INT(3) NOT NULL COMMENT 'id', `pid` INT(3) NOT NULL COMMENT '父id 没有父则为1', `categoryname` VARCHAR(10) NOT NULL COMMENT '种类名字', PRIMARY KEY (`categoryid`) ) ENGINE=INNODB CHARSET=utf8mb4;
INSERT INTO `school`.`category` (`categoryid`, `pid`, `categoryname`) VALUES (2, 1, '信息技术');
insert into `school`.`CATEGOrY` (`categoryid`, `pid`, `categoryname`) values (3, 1, '软件开发');
insert into `school`.`category` (`categoryid`, `PId`, `categoryname`) values (5, 1, '美术设计');
insert iNTO `School`.`category` (`categoryid`, `pid`, `categorynamE`) VAlUES (4, 3, '数据库');
insert into `school`.`category` (`CATEgoryid`, `pid`, `categoryname`) values (8, 2, '办公信息');
insert into `school`.`category` (`categoryid`, `pid`, `CAtegoryname`) values (6, 3, 'web开发');
inserT INTO `SCHool`.`category` (`categoryid`, `pid`, `categoryname`) valueS (7, 5, 'ps技术');
父类
| categoryid | categoryname |
| 2 | 信息技术 |
| 3 | 软件开发 |
| 5 | 美术设计 |
子类
| pid | categoryid | categoryname |
| 3 | 4 | 数据库 |
| 2 | 8 | 办公信息 |
| 3 | 6 | web开发 |
| 5 | 7 | ps设计 |
操作:查询父类对应的子类关系
| 父类 | 子类 |
| 信息技术 | 办公信息 |
| 软件开发 | 数据库 |
| 软件开发 | web开发 |
| 美术设计 | ps技术 |

4.5 分页和排序
limit 分页
order by 排序:升序ASC,降序DESC

为什么要分页:
缓解数据库压力,给人的体验更好
图片用瀑布流,不用分页
limit是语句中的最后一个
语法:limit(查询起始下标,pageSize)

(n-1)*pageSize --> 起始值
pageSize --> 页面大小
n --> 当前页
数据总数/页面大小 --> 总页数
DISTINCT 去重

例子:

4.6 子查询
where(这个值是计算出来的)
本质:在where语句中嵌套一个子查询语句

由里及外:

ORDER BY StudentResult DESC
三种写法:
第一种:

第二种:

第三种:由里及外


4.8 Select小结

(四)DQL查询数据(最重点)的更多相关文章
- mysql学习【第3篇】:使用DQL查询数据
狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! mysql学习[第3篇]:使用DQL查询数据 DQL语言 DQL( Data Query Lan ...
- MYSQL初级学习笔记四:查询数据的操作DQL(SELECT基本形式)(26-35)
知识点六:查询数据的操作DQL(SELECT基本形式)(26-35) CREATE DATABASE IF NOT EXISTS cms DEFAULT CHARACTER SET utf8; USE ...
- ThinkPHP查询数据与CURD
一.创建连接 在配置文件中使用如下配置: /* 数据库设置 */ 'DB_TYPE' => 'mysql', // 数据库类型 'DB_HOST' => 'localhost', // 服 ...
- PHP 从 MongoDb 中查询数据怎么样实现
一.软件环境(版本非必须) php v5.6 扩展:MongoDB nginx v1.11 mongodb v3.2 note: 必须安装MongoDB扩展 二.连接 $client = new Mo ...
- MySQL行(记录)的详细操作一 介绍 二 插入数据INSERT 三 更新数据UPDATE 四 删除数据DELETE 五 查询数据SELECT 六 权限管理
MySQL行(记录)的详细操作 阅读目录 一 介绍 二 插入数据INSERT 三 更新数据UPDATE 四 删除数据DELETE 五 查询数据SELECT 六 权限管理 一 介绍 MySQL数据操作: ...
- 一、初识MySQL数据库 二、搭建MySQL数据库(重点) 三、使用MySQL数据库 四、认识MySQL数据库的数据类型 五、操作MySQL数据库的数据(重点)
一.初识MySQL数据库 ###<1>数据库概述 1. 数据库 长期存储在计算机内的,由组织的可共享的数据集合 存储数据的仓库 文件 ...
- mysql第四篇:数据操作之多表查询
mysql第四篇:数据操作之多表查询 一.多表联合查询 #创建部门 CREATE TABLE IF NOT EXISTS dept ( did int not null auto_increment ...
- solr与.net系列课程(四)solr查询参数的讲解与.net如何获取solr数据
solr与.net系列课程(四)solr查询参数的讲解与.net如何获取solr数据 上一节我们完成了solr连接数据库,细心的朋友会发现一个问题,就是solr其实和语言没有任何关系,配置完成后任何语 ...
- 6.1课堂笔记—DML(数据操作语言),DQL查询语句
一.DML(数据操作语言) InnoDB MyISAM 支持事务 不支持事务 不支持全文索引 支持全文索引 支持外键约束 不支持 命令查看默认存储引擎 show variables like '%st ...
随机推荐
- YbtOJ#463-序列划分【二分答案,线段树,dp】
正题 题目链接:https://www.ybtoj.com.cn/problem/463 题目大意 给出长度为\(n\)的序列\(A,B\).要求划分成若干段满足 对于任何\(i<j\),若\( ...
- P5137-polynomial【倍增】
正题 题目链接:https://www.luogu.com.cn/problem/P5137 题目大意 \(T\)组数据给出\(n,a,b,p\)求 \[\left(\sum_{0=1}^na^ib^ ...
- Ubuntu开发相关环境搭建
一.Ubuntu系统语言环境切换修改 安装时,选择的中文版,但实际使用起来,很不爽,果断切换为英文 1.1 打开终端: vim /etc/default/locale 1.2 修改配置 LANG=&q ...
- 国庆出游神器:魔幻黑科技换天造物,让vlog秒变科幻大片!
摘要:国庆旅游景点人太多,拍出来的照片全是人人人.车车车,该怎么办?不妨试试这个黑科技,让你的出游vlog秒变科幻大片. 本文分享自华为云社区<国庆出游神器,魔幻黑科技换天造物,让vlog秒变科 ...
- Mysql 5.7版本,所有的坑,这里都有
MYSQL5.7版本流程的坑,我这里都有 必须按照如下操作.不按照下面操作,出错误不要怪我哦_ 我们首先在官网下载mysql5.7版本 解压之后,在bin相同目录下创建一个my.ini配置文件里面内容 ...
- Bert文本分类实践(二):魔改Bert,融合TextCNN的新思路
写在前面 文本分类是nlp中一个非常重要的任务,也是非常适合入坑nlp的第一个完整项目.虽然文本分类看似简单,但里面的门道好多好多,博主水平有限,只能将平时用到的方法和trick在此做个记录和分享 ...
- 题解 Wide Swap
题目传送门 题目大意 给出一个长度为 \(n\) 的排列 \(a_{1,2,...,n}\) 以及常数 \(k\),每次可以交换两个数 \(a_i,a_j\) 当且仅当 \(j-i\ge k \tex ...
- Kubernetes-Service介绍(二)-服务发现
前言 本篇是Kubernetes第九篇,大家一定要把环境搭建起来,看是解决不了问题的,必须实战. Kubernetes系列文章: Kubernetes介绍 Kubernetes环境搭建 Kuberne ...
- Pytorch——张量 Tensors
张量 Tensors 1.torch.is_tensor torch.is_tensor(obj) 用法:判断是否为张量,如果是 pytorch 张量,则返回 True. 参数:obj (Object ...
- 极速上手 VUE 3 —— teleport传送门组件
一.teleport 介绍 teleport 传送门组件,提供一种简洁的方式,可以指定它里面的内容的父元素.通俗易懂地讲,就是 teleport 中的内容允许我们控制在任意的DOM中,使用简单. 使用 ...