简单介绍几个常用的SQL查询语句
1、查询指定列SQL>SELECT 字段名1, 字段名2, 字段名3FROM 表名;SQL>SELECT DISTINCT 字段名1FROM 表名;注:第二个sql语句是只显示结果不同的项,也叫去重,DISTINCT是关键字,放在字段名前,可以实现去重效果。
2、 使用like操作符(%,_)SQL>SELECT * FROM emp WHERE ename like 'S__T%';注:like用于模糊查询,%表示一个或多个字符,_表示一个字符,[charlist]表示字符列中的任何单一字符,[^charlist]或者[!charlist]不在字符列中的任何单一字符。
3、group by(用于对查询结果的分组统计) 和 having子句(用于限制分组显示结果)SQL>SELECT deptno,MAX(sal),AVG(sal) FROM emp GROUP BY deptno;SQL>SELECT deptno, job, AVG(sal),MIN(sal) FROM emp group by deptno,job having AVG(sal)<2000;注:1> 分组函数只能出现在选择列表、having、order by子句中(不能出现在where中)2>如果select语句中同时包含有group by, having, order by,那么它们的顺序是group by, having, order by。3>在选择列中如果有列、表达式和分组函数,那么这些列和表达式必须出现在group by子句中,否则就是会出错。*使用group by不是使用having的前提条件。
4、子查询钱砀渝测(嵌入到其他sql语句中的select语句,也叫嵌套查询)1>单行子查询SQL>SELECT ename FROM emp WHERE deptno=(SELECT deptno FROM emp where ename='SMITH');查询表中与smith同部门的人员名字。因为返回结果只有一行,所以用“=”连接子查询语句2>多行子查询SQL>SELECT ename,job,sal,deptno from emp WHERE job IN (SELECT DISTINCT job FROM emp WHERE deptno=10);查询表中与部门号为10的工作相同的员工的姓名、工作、薪水、部门号。因为返回结果有多行,所以用“IN”连接子查询语句。注:in与exists的区别:exists() 后面的子查询被称做相关子查询,它是不返回列表的值的。只是返回一个ture或false的结果,其运行方式是先运行主查询一次,再去子查询里查询与其对 应的结果。如果是ture则输出,反之则不输出。再根据主查询中的每一行去子查询里去查询。in()后面的子查询,是返回结果集的,换句话说执行次序和 exists()不一样。子查询先产生结果集,然后主查询再去结果集里去找符合要求的字段列表去。符合要求的输出,反之则不输出。