MySQL数据库简单查询以及子句查询顺序

1.基本查询

select ename,depno 
from t_emp

首先执行from,再执行select,要先知道从哪张表获取数据,再查询其中字段

2.数据分页

SELECT empno, ename from t_emp LIMIT 10,5;

从第10条数据开始,获取5条记录,注意此处的5是偏移量
顺序from----select----limit,limit,顾名思义,是限制的意思,此处要首先得到结果集,再对结果集的数量做限制
如果是从第1条数据开始获取,则limit后一个数字必然是0,可以省略这个0

3.结果集排序

SELECT empno, ename, sal from t_emp order by sal DESC;

默认是升序(ASC),此处是降序(DESC)
可以多个字段排序,比如在首要排序条件下有数据依然不能确定其次序,默认是根据主键排序,此时可以增加次要排序条件,

SELECT empno, ename, deptno, sal from t_emp
order by deptno, sal desc;

顺序from----select----order,先有结果集,再排序

4.排序加分页

select empno, ename, sal 
from t_emp
order by sal
limit 5;

排序之后得到结果集,然后再限制输出

5.结果集去重

select distinct denpo
from t_emp;

distinct关键字在select子句中,只能使用一次,以下两种都会报错

select ename, distinct denpo from t_emp;
select distinct ename, distinct denpo from t_emp;

6.条件查询

select empno, ename, sal
from t_emp
where sal > 2000;

条件查询可以结合数学、比较、逻辑和按位运算符,
比较运算符中有一个“包含”IN,可以方便地筛选

select empno, ename, sal
from t_emp
where depno in (10,20);

查询的是t_emp表中depno字段为10或者20的范围内的empno, ename, sal三个字段

比较运算符中的‘like’
‘%A%’:包含字母A的字符串
'_'下划线可以代替一个字符

select empno, ename, sal
from t_emp
where ename like '_LACK';

查找一个人的信息,只记得名字后面的字母,第一个字母忘记了,就可以用下划线代替
比较运算符中的‘正则’:
关键字为REGEXP

select empno, ename, sal
from t_emp
where ename regexp '^[\\u4e00-\\u9fa5]{2,4}$';

查找名字是中文的人的信息

where执行顺序是从左到右的,如果一个条件能将很大部分的数据过滤掉,或者有建索引的,建议往左放,尤其是在有逻辑关系中的and

7.各种子句的查询顺序
from — where ----- select ---- order by ----- limit

8.ifnull函数
有时会碰到两个字段(一般是数字,可null)相加,可一个数字与null做运算,得到的都只能是null,所以要借ifnull函数将null转为其他数字

select ename, sal+ifnull(comm,0) as total_sal
from t_emp;

其中comm字段有可能保存了null,如果是null,ifnull函数就会将其变为0再进行计算

9.datediff函数,计算某两个时间的相差的天数

select datediff(NOW(),'1997-01-20')/365;

得到的结果是23.5342

猜你喜欢

转载自blog.csdn.net/qq_43523725/article/details/108415798