sql语句

时间:2020-07-11
本文章向大家介绍sql语句,主要包括sql语句使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

查看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='普工'

原文地址:https://www.cnblogs.com/yangj-Blog/p/13285308.html