查询数据量:
select count(1) from 表名 (查出该表的全部数据的数据量)
简单查询:
select * from 表名 (查出该表的所有数据所有列的数据)
select s.xxx,s.xx from 表名 as s (把表设置别名s 只查s.xxx和s.xx两列的数据)
排序:
select * from 表名 order by 排序的列名 排序条件(asc 升序| desc 倒序 )(根据排序的列名查出所有的数据并进行排序)
分组:
select * from 表名 group by 分组列名 (查出分组后的表的所有列的数据,分组列名如果有相同的数据只会显示一条)
分组加条件:
select * from 表名 group by 分组列名 having 条件 (查出分组后的表的所有列的数据,分组列名如果有相同的数据只会显示一条,如果想在分组后使用条件 可以使用 having 关键字,后面加上你的条件)
不匹配:
select * from 表名 where 列名 not in 条件 (not in 是查找列名不在条件中的数据)
分条获取:
select * from 表名 limit 1 ( limit 如果后边是一个参数,表示是取的数量,limit 如果是两个参数 (limit 1,2)表示从第几条取几条)
select * from 表名 limit 1 offset 2( limit 取几条,offset 跳过多少条)
查询第排列第二的数据:
select e.emp_no,max(s.salary),e.last_name,e.first_name from employees as e inner join salaries as s on e.emp_no=s.emp_no where s.salary <(select max(s.salary) from salaries as s ) (使用子查询,查出salary 第二大的数据)
内连接简历表:
SELECT sCurrent.emp_no, (sCurrent.salary-sStart.salary) AS growth FROM (employees AS e
INNER JOIN salaries AS sCurrent ON e.emp_no=sCurrent.emp_no AND sCurrent.to_date='9999-01-01' INNER JOIN salaries AS sStart ON e.emp_no=sStart.emp_no AND sStart.from_date=e.hire_date) (使用内连接 建立临时表)
排序编号:
1.DENSE_RANK()函数: select s.emp_no,s.salary,DENSE_RANK() OVER (order by salary DESC) from salaries as s (DENSE_RANK() OVER (排序条件)根据排序条件进行编列序号,条件列如果相同则序号相同)
RANK()函数:
在计算排序时,若存在相同位次,会跳过之后的位次。
例如,有3条排在第1位时,排序为:1,1,1,4······
ROW_NUMBER()函数:
这个函数赋予唯一的连续位次。
例如,有3条排在第1位时,排序为:1,2,3,4······
mysql常用sql语法
最新推荐文章于 2021-11-02 10:39:18 发布