常见的sql查询语句有哪些?
常见的SQL查询语句包括: 1、查看表结构[SQL>DESC emp;]; 2、查询所有列[SQL>SELECT * FROM emp]; 3、查询指定列[SQL>SELECT empmo,]; 4、查询指定行[SQL>SELECT * FROM]。
常见的SQL查询语句有:
1.简单查询语句
1.查看表结构
SQL>DESC emp;
2.查询所有列
SQL>SELECT * FROM emp;
3.查询指定列
SQL>SELECT empmo, ename, mgr FROM emp;
SQL>SELECT DISTINCT mgr FROM员工;只显示不同结果的项目
4.查询指定行
SQL>SELECT * FROM emp WHERE job='CLERK';
5 。使用算术表达式
SQL>SELECT ename, sal*13+nvl(comm, 0) FROM emp;
nvl(comm,1)表示如果comm中有值,则nvl(comm,1)=comm;如果comm中没有值,则nvl(comm,1) =0。
SQL>SELECT ename, sal*13+nvl(comm,0)year_sal FROM emp; (year_sal是别名,可以按别名排序)
SQL>SELECT * FROM emp WHEREhiredate>'01-January-82';
6.使用like运算符(%,_)
%代表一个或多个字符,_代表一个字符,[charlist]代表字符列中的任意单个字符,[^charlist]或[ !charlist] 表示不在字符列中的任何单个字符。
SQL>SELECT * FROM emp WHERE ename like 'S__T%';
7.在where条件中使用In
SQL>SELECT * FROM emp WHERE job IN('CLERK','ANALYST');
SQL>SELECT * FROM emp WHERE mgr IS/IS NOT NULL;前>9.使用逻辑运算符号
SQL>SELECT * FROM emp WHERE (sal>500 or job='MANAGE') 并命名为 'J% ';10.转换查询结果按字段值排序
SQL>SELECT * FROM emp ORDER BY deptno, sal DESC;(按部门升序,按薪资降序)
11.用例...when...then...结束处理查询结果
SQL>SELECT CASE a WHEN "original_a" THEN "New name Aa" WHEN "original_b" THEN "新名称 Bb" END AS XXX;
S选择表中的字段a,命名为XXX,当a的内容为original_a时,内容显示为“新名称Aa”。
12、格式化日期数据
SQL>SELECT DATE_FORMAT(start_time,"%Y-%m-%d") as "time";2.复杂查询
1.数据分组(最大值、最小值、平均值、总和、计数)
SQL>SELECT MAX(sal), MIN(age),AVG( sal),SUM(sal) from emp;SQL>SELECT * FROM emp where sal=(SELECT MAX(sal) from emp));SQL>SELEC COUNT(*) FROM emp;2. 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,jobhaving AVG(sal)<2000;< p> 数据分组摘要:a.分组功能只能出现在选择列表中、having 和 order by 子句(不能出现在 where 中)
b.如果select语句同时包含group by、having、order by,则它们的顺序为group by、having、order by。
c.如果所选列中有列、表达式和分组函数,这些列和表达式必须出现在 group by 子句中,否则会出现错误。即:SELECT子句中的列名必须是分组列或列函数
使用group by并不是使用having的前提。
3.多表查询
SQL>SELECT e.name,e.sal,d. dname FROM emp e, dept d WHERE e.deptno=d.deptno order by d.deptno;SQL>SELECT e.ename,e.sal,s.grade FROM emp e,salgrade s WHER e.sal BETWEEN s.losal AND s.hisal;从左外连接中选择 a.*、b.x、c.y (Select * from tablex where condition1)b on a.id=b.id 左外连接 (Select * from tabley where condition2)c on a.id =c.idwhere条件3;With 选中的数据是对新表的左连接查询;来自:https://q.cnblogs.com/q/67530/
4.自联接(指同表的联接查询))
SQL>SELECT er.ename, ee.ename mgr_name from emp呃,emp ee,其中 er.mgr=ee.empno;5。子查询(select语句嵌入其他SQL语句中,也称为嵌套查询)
5.1单行子查询
< pre class="brush:php;toolbar:false">SQL> SELECT ename FROM emp WHERE deptno=(SELECT deptno FROM emp where ename='SMITH');
查询表中与smith同一部门的人员姓名。由于返回结果只有一行,因此使用“=”连接子查询语句
5.2 多行子查询
SQL >SELECT ename,job,sal,deptno from emp WHERE job IN (SELECT DISTINCT job FROM emp WHERE deptno=10);
查询与department相同职位的员工姓名和职位表中的工资编号10,工资,部门编号。由于返回结果有多行,因此使用“IN”连接子查询语句。
in和exists的区别:exists()之后的子查询称为相关子查询,它不返回列表的值。它只是返回 true 或 false 结果。操作方法是运行一次主查询,然后在子查询中查询相应的结果。如果为真则输出,否则不输出。然后根据主查询中的每一行在子查询中进行查询。 in()之后的子查询返回结果集。也就是说,执行顺序与exists()不同。子查询首先生成一个结果集,然后主查询去结果集中查找符合要求的字段列表。符合要求则输出,否则不输出。
5.3 使用全部
SQL>SELECT ename,sal,deptno FROM emp WHERE sal> ALL(从 emp WHERE deptno= 30 中选择 sal);或 SQL>SELECT ename,sal,deptno FROM emp WHERE sal> (SELECT MAX(sal) FROM emp WHERE deptno=30);
查询薪资比例为部门号为30的所有员工姓名、薪资及部门工资最高的员工人数。上面两条语句在功能上是一样的,但是从执行效率上来说,功能会高很多。
5.4 使用 ANY
SQL>SELECT ename,sal,deptno FROM emp WHERE sal> ANY (SELECT sal FROM emp WHERE deptno=30);或 SQL>SELECT ename,sal,deptno FROM emp WHERE sal> (SELECT MIN(sal) FROM emp WHERE deptno=30);
查询薪资比例部门号为 30 的姓名、薪资和任何薪资较高的员工的部门编号(只要高于某个员工)。上面两条语句在功能上是一样的,但是从执行效率上来说,功能会高很多。
5.5 多列子查询
SQL>SELECT * FROM emp WHERE (job, deptno)=(SELECT job, deptno FROM emp WHERE ename='SMITH');
5.6 在 from 子句中使用子查询
SQL>SELECT emp. deptno,emp.ename,emp.sal,t_avgsal.avgsal FROM emp,(SELECT emp.deptno,avg(emp.sal) avgsal FROM emp GROUP BY emp.deptno)t_avgsal 其中 emp.deptno=t_avgsal.deptno AND emp.sal >t_avgsal.avgsal ORDER BY emp.deptno;
5.7 分页查询
数据库中的每一行数据都有一个对应的行号,称为rownum。
SQL>SELECT a2.* FROM (SELECT a1.*, ROWNUM rn FROM (SELECT * FROM emp ORDER BY sal) a1 WHERE ROWNUM<=10) a2 WHERE rn>=6;
指定查询列、对查询结果排序等,只需要修改最里面的子查询即可。
5.8 使用查询结果创建新表
SQL>CREATE TABLE mytable (id,name,sal,job,deptno) ASSELECT empno,ename,sal,job,deptno FROM emp;
5.9 合并查询(union并集、intersect交集、union all并集+交集、减去差集)
SQL>SELECT ename, sal, job FROM emp WHERE sal>2500 UNION(INTERSECT/UNION ALL/MINUS) SELECT ename, sal, job FROM emp WHERE job='MANAGER';
合并查询的执行效率远高于and和or等逻辑查询。
5.10 使用子查询插入数据
SQL>CREATE TABLE myEmp(empID number(4), name varchar2(20), sal number (6)、job varchar2(10),部门编号(2));
先创建一个空表;
SQL>INSERT INTO myEmp(empID, name, sal, job, dept) SELECT empno, ename, sal, job, deptno FROM emp WHERE deptno=10;
然后是emp表中的部门编号将10条数据插入到新表myEmp中,实现数据的批量查询。
5.11 使用查询更新表中的数据
SQL>UPDATE emp SET(job, sal, comm) =(SELECT job, sal, comm FROM emp where ename= 'SMITH') WHERE ename='SCOTT';
以上是文章《常见的SQL查询语句有哪些》的全部内容,感谢您的阅读!相信大家都有一定的了解,希望分享的内容对大家有所帮助。如果您想了解更多知识,请关注行业资讯频道!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > 常见的sql查询语句有哪些?