数据库知识杂点
2018-09-26 本文已影响2人
放开那个BUG
1.如何求最大的或者最小的
- select * from A order by id(从小到大排序) desc(逆序)limit 1(只取第一个)
或者
- select * from A where id = (select max(id) from A) //使用max()函数
2.limit的用法、distinct的用法
- 求倒数第3个人的信息
- select * from A where id = (select id from A order by id limit 2, 1)
- distinct是去掉重复值的
3.group by
- group by从字面理解就是根据by指定的规则对数据进行分组,所谓的分组就是将数据划分成若干个小区域,然后对若干个小区域进行数据处理。
4.not in的用法
5.sql运算符
- sql除了可以使用比较操作符之外,还可以使用加减乘除取模等算术运算符
6.不使用order by求第二大的信息
- 如果使用order by: select id from A where id = (select distinct id from A order by id desc limit 1,1)
- 不使用order by的思路是在id小于max(id)中找到max(id):
select max(id) from A where id < (select max(id) from A)
7.inner join、left join已经right join的含义
- 简而言之就是:inner join只有条件符合的时候才返回结果,left join是以左表为基准,可能会出现右边不匹配然后右边的值有空值的情况;right join同理。
8.select ... from (select ...)
//比如这种写法就是当作生成了sCurrent和sStart两张表
select sCurrent.emp_no, (sCurrent.salary - sStart.salary) as growth from
(select s.emp_no, s.salary from employees e, salaries s where e.emp_no = s.emp_no
and s.to_date = '9999-01-01') as sCurrent
inner join
(select s.emp_no, s.salary from employees e, salaries s where e.emp_no = s.emp_no
and e.hire_date = s.from_date) as sStart
on sCurrent.emp_no = sStart.emp_no
order by growth