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查询数据(最重点)的更多相关文章

  1. mysql学习【第3篇】:使用DQL查询数据

    狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! mysql学习[第3篇]:使用DQL查询数据 DQL语言 DQL( Data Query Lan ...

  2. MYSQL初级学习笔记四:查询数据的操作DQL(SELECT基本形式)(26-35)

    知识点六:查询数据的操作DQL(SELECT基本形式)(26-35) CREATE DATABASE IF NOT EXISTS cms DEFAULT CHARACTER SET utf8; USE ...

  3. ThinkPHP查询数据与CURD

    一.创建连接 在配置文件中使用如下配置: /* 数据库设置 */ 'DB_TYPE' => 'mysql', // 数据库类型 'DB_HOST' => 'localhost', // 服 ...

  4. PHP 从 MongoDb 中查询数据怎么样实现

    一.软件环境(版本非必须) php v5.6 扩展:MongoDB nginx v1.11 mongodb v3.2 note: 必须安装MongoDB扩展 二.连接 $client = new Mo ...

  5. MySQL行(记录)的详细操作一 介绍 二 插入数据INSERT 三 更新数据UPDATE 四 删除数据DELETE 五 查询数据SELECT 六 权限管理

    MySQL行(记录)的详细操作 阅读目录 一 介绍 二 插入数据INSERT 三 更新数据UPDATE 四 删除数据DELETE 五 查询数据SELECT 六 权限管理 一 介绍 MySQL数据操作: ...

  6. 一、初识MySQL数据库 二、搭建MySQL数据库(重点) 三、使用MySQL数据库 四、认识MySQL数据库的数据类型 五、操作MySQL数据库的数据(重点)

    一.初识MySQL数据库 ###<1>数据库概述     1. 数据库         长期存储在计算机内的,由组织的可共享的数据集合         存储数据的仓库         文件 ...

  7. mysql第四篇:数据操作之多表查询

    mysql第四篇:数据操作之多表查询 一.多表联合查询 #创建部门 CREATE TABLE IF NOT EXISTS dept ( did int not null auto_increment ...

  8. solr与.net系列课程(四)solr查询参数的讲解与.net如何获取solr数据

    solr与.net系列课程(四)solr查询参数的讲解与.net如何获取solr数据 上一节我们完成了solr连接数据库,细心的朋友会发现一个问题,就是solr其实和语言没有任何关系,配置完成后任何语 ...

  9. 6.1课堂笔记—DML(数据操作语言),DQL查询语句

    一.DML(数据操作语言) InnoDB MyISAM 支持事务 不支持事务 不支持全文索引 支持全文索引 支持外键约束 不支持 命令查看默认存储引擎 show variables like '%st ...

随机推荐

  1. P3645-[APIO2015]雅加达的摩天楼【bfs,根号分治】

    正题 题目链接:https://www.luogu.com.cn/problem/P3645 题目大意 \(n\)个点,\(m\)条狗,第\(i\)条狗可以往左或者右跳恰好\(p_i\)步,开始是\( ...

  2. 深入浅出WPF-09.Command(命令)

    命令 1)命令系统的基本元素 命令(Command),WPF的命令实际上就是实现了ICommand接口的类,平时使用最多的是RoutedCommand类 命令源(Command Source),即命令 ...

  3. 好未来数据中台 Node.js BFF实践(一):基础篇

    好未来数据中台 Node.js BFF实践系列文章列表: 基础篇 实战篇(TODO) 进阶篇(TODO) 好未来数据中台的Node.js中间层从7月份开始讨论可行性,截止到9月已经支持了4个平台,其中 ...

  4. Mybatis逆向工程和新版本MybatisPlus3.4逆向工程的使用

    Mybatis和MybatisPlus3.4的使用 目录 Mybatis和MybatisPlus3.4的使用 1 RESTFUL 2 逆向工程 2.1 tkMybatis逆向工程 2.1.1 导入依赖 ...

  5. 10.6.2 sendfile

    1.传统Linux中 I/O 的问题 2.传统的 Linux 系统的标准 I/O 接口( read. write)是基于数据拷贝的,也就是数据都是 copy_to_user 或者 copy_from_ ...

  6. 学习Tomcat(七)之Spring内嵌Tomcat

    前面的文章中,我们介绍了Tomcat容器的关键组件和类加载器,但是现在的J2EE开发中更多的是使用SpringBoot内嵌的Tomcat容器,而不是单独安装Tomcat应用.那么Spring是怎么和T ...

  7. Linux查找运行程序主目录

    1.查看程序所在PID netstat -lntup 2.根据PID查找程序所在目录 ll /proc/PID/exe 3.查找程序配置路径 /proc/PID/exe -t

  8. 题解 2020.10.24 考试 T4 模板

    题目传送门 题目大意 有一个 \(n\) 个点组成的树,有 \(m\) 次操作,每次将 \(1\to x\) 的路径上每个点都加入一个颜色为 \(c\) 的小球.但是每个点都有大小限制,即小球个数超过 ...

  9. Python&Selenium 数据驱动测试【unittest+ddt+xml】

    一.摘要 本博文将介绍Python和Selenium做自动化测试时,基于unittest框架,借助ddt模块,使用xml文件作为测试输入. 二.xml文件 保存路径:D:\\Programs\\Pyt ...

  10. 微信小程序的登录流程

    一.背景 传统的web开发实现登陆功能,一般的做法是输入账号密码.或者输入手机号及短信验证码进行登录 服务端校验用户信息通过之后,下发一个代表登录态的 token 给客户端,以便进行后续的交互,每当t ...