查看sql基础https://www.cnblogs.com/yangj-Blog/p/12976572.html
然后看看常见的sql语句
查询某个数据是否存在
传统的方法是使用count,他会统计具体的数据,但是显然需要遍历表中所以的数据,当数据量很大时,效率较低。
SELECT count(*) FROM table WHERE a = 1 AND b = 2
SQL不再使用count,而是改用 LIMIT 1,让数据库查询时遇到一条就返回,不要再继续查找还有多少条了
业务代码中直接判断是否非空即可
select 1 from user where id = xxx limit 1;
统计函数及分组统计的操作
统计函数主要有:
COUNT():用于统计数据数量
注意关于COUNT()函数,当数据表中没有数据时,COUNT()总是会返回一个数值,只是这个数值是“0”
SUM():用于统计数据和
AVG():统计平均值
MIN():得到最小值
MAX():得到最大值
select count(empno),sum(sal),avg(sal) from emp;
按照职位分组,求出每个职位的最高和最低工资:
select job,max(sal),min(sal) from emp group by job;
多表查询
select empno,ename,job,sal,dept.deptno,dname,loc
from emp,dept
where emp.deptno(+)=dept.deptno; -- (Oracle 8i 及以前的写法)
--另一种写法(右连接): -- (SQL 99的写法)
select empno,ename,job,sal,dept.deptno,dname,loc
from emp right join dept on (emp.deptno=dept.deptno);
多条件查询
select * from TABLE where USERID=a or USERID= b or USERID=c
但是有一种效率更高的
用in实现,比如
select * from TABLE where USERID in(a,b,c,d……)
或者普通的多列选项
SELECT * FROM T_Employee WHERE FNumber BETWEEN ‘DEV001‘ AND ‘DEV008‘ AND FName LIKE ‘%J%‘ AND FSalary BETWEEN 3000 AND 6000
多表多条件查询语句
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
例子
有5个结构相同的表,表1、表2、表3、表4、表5,对这5个表单条件查询Select * from 表1 where 入职日期=‘2014-04-20‘ union all Select * from 表2 where 入职日期=‘2014-04-20‘ union all..........union all Select * from 表5 where 入职日期=‘2014-04-20‘ 查询是成功的,如果再加上一个查询条件 ,岗位=普工,表达式该怎么写?
Select * from 表1 where 入职日期=‘2014-04-20‘ and 岗位=‘普工‘
union all
Select * from 表2 where 入职日期=‘2014-04-20‘ and 岗位=‘普工‘
union all
..........
union all
Select * from 表5 where 入职日期=‘2014-04-20 and 岗位=‘普工‘
或者
select * from (select * from 表bai1 union all select * from 表2 union all select * from 表3 union all select * from 表4 union all select * from 表5)tb where 入职日du期=‘2014-04-20‘ and 岗位zhi=‘普工‘