数据库知识杂点

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

9.看图不解释

10.

上一篇下一篇

猜你喜欢

热点阅读