内容概述

查询数据使用的是DML语句;


【数据库的基本查询】部分内容如下:

● 数据的简单查询:简单的单表查询;之所以称之为简单查询,是因为查询语句中只包含SELETC和FRMO语句,如:【SELECT FROM】样式的;FRMO语句是确定数据的来源,SELECT用来提取字段的数据;

● 数据的高级查询:就是查询语句中有ORDER BY子句,LIMIT子句,DISTINCT关键字的情况;

● 数据的有条件查询:编写条件表达式需要用到数学运算符,比较运算符等运算符;

普通查询

本篇博客,内容有点啰嗦,需要时,快速浏览,效果更佳。


零:导入SQL文件,创建演示所需的表;

为了演示,先导入需要的逻辑表:使用一个demo.sql文件(里面是创建表的SQL语句)来创建需要的表;

四张表结构如下:

(1)t_dept表:部门表:

deptno:部门编号;dname:部门名称;loc:部门所在地。

(2)t_emp表:员工表:

empno:员工编号(主键字段);ename:员工姓名;job:员工职务;mgr:当前员工上司的员工编号;hiredate:入职日期;sal:月薪;comm:佣金;deptno:员工所属部门编号;

(3)t_salgrade表:工资登记表:

grade:工资分级;losal:本等级最低工资;hisal:本等级最高工资;

(4)t_bonus表:奖金表:

empno:员工编号;job:职位;sal:员工基本工资;comm:佣金;


一:基本查询

1.最基本查询 :


2.给【结果集】中的字段重命名:AS

如:从t_emp表中,查询员工姓名和年收入

不使用别名时:

使用别名时:


3.查询语句中子句的执行顺序


4.数据分页:LIMIT子句

LIMIT语句的简写形式:


5.结果集排序:ORDER BY 子句

5.1排序基本内容

默认情况下,MySQL不会对结果集中的数据排序;如果我们想让结果集依照某个字段排序,数据库提供了ORDER BY字句来实现排序功能;

演示1:没写,也就是默认ASC升序

演示1:按sal降序

……………………………………………………

5.2排序的排序原则

……………………………………………………

5.3多个排序条件

……………………………………………………

5.4查询语句中子句的执行顺序

……………………………………………………

5.5一点说明


6.去除结果集重的重复记录

6.1重复记录问题描述

第二范式要求每张表都要有主键字段,主键是不能重复的,所以数据库中是不可能有完全相同的记录的;;;但是结果集就不一样了,如果SELETC中没有选择主键字段,那么结果集中就有可能出现完全一样的记录:

……………………………………………………

6.2去重语法:DISTINCT

……………………………………………………

6.3DISTINCT注意事项

如:

WHERE子句】条件查询

● 条件查询基本内容是【WHERE】子句;

● 在WHERE子句中,为了满足具体的需求,需要各种运算符的配合;

● 运算符有:

数学运算符:+,-,*,/,%;

比较运算符:>,>=,<,,=,!=,IN,IS NULL,IS NOT NULL,BETWEEN AND,LIKE,REGEXP;

逻辑运算符:AND,OR,NOT,XOR;

按位运算符:&,|,~,^,<<,>>;位运算符很少使用;

● 在WHERE子句的表达式中,复杂的地方多用小括号,挺好;


一:条件查询:【WHERE】子句

条件查询的核心是WHERE子句中使用的运算符!!!

使用WHERE子句的时候,条件运算表达式中的运算符有四种:


1.数学运算符:

案例: 查询部门是10的,年工资大于15000,并且入职超过20年的员工信息:


2.比较运算符:

(2.1)比较运算符第一部分:>,,=,IN等

案例:查询10,20,30部门里,在1985年以前入职的员工,而且职位不能是“SALESMAN”的员工信息,而且是1985年以前入职的员工信息:


(2.2) 比较运算符第二部分:IS NULL,BETWEEN AND,LIKE,REGEXP;

案例:

【IS NULL】或者【IS NOT NULL】

判断为空不为空,要使用【IS NULL】或者【IS NOT NULL】;;;千万不要使用=null或者!=null

……………………………………………………

BETWEEN AND

BETWEEN a AND b:是包括a和b的;

……………………………………………………

LIKE

……………………………………………………

REGEXP

正则表达式忘了,可以参考正则表达式一:字符匹配正则表达式二:元字符;多次重复匹配;定位匹配(开头、结尾匹配);贪婪模式&非贪婪模式;表达式分组;这两篇文章;;;;;


3.逻辑运算符

案例1:查询部门不是10和20的员工:

案例2:


4.二进制按位运算符

二进制按位运算符,在MySQL中用的比较少。


二:【WHERE】子句的注意事项

(1)应该把索引条件写在最左侧:利用索引可以快速缩小查询数据的范围,可以提升查询速度;比如上图的第一个例子,比如t_emp表的ename字段设置了索引,那么查询的时候,WHERE子句中,ename应该写在最左侧;

(2)能筛选掉非常多记录的条件写在最左侧:这一点容易理解,一起的目的都是快速;


三:【WHERE】子句在各种子句中执行的优先级