2022年01月10日发布sql查询语句有哪些

大家好,今日小科来聊聊一篇关于2022年01月10日整理发布:sql查询语句有哪些的文章,现在让我们往下看看吧!
Sql查询语句:1。检查表结构[SQL descemp];2.查询所有列[SQL Select * From EMP];3.查询指定的列;4.查询指定行;5.使用算术表达式;6.使用逻辑运算符号。
推荐(免费):sql教程
Sql查询语句:
一、简单查询语句
1.查看表格结构
SQLDESC emp2.查询所有列
SQLSELECT * FROM emp3.查询指定的列。
SQLSELECT empmo,ename,mgr FROM emp
从环境管理计划中选择不同的经理;仅显示具有不同结果的项目。4.查询指定的行。
SQLSELECT * FROM emp WHERE作业=“职员”;5.使用算术表达式
SQLSELECT ename,sal*13 nvl(comm,0)FROM EMP;
Nvl(comm,1)表示NVL (comm,1)=comm(如果Comm中有值);如果comm中没有值,nvl(comm,1)=0。
SQLSELECT ename,sal*13 nvl(comm,0)year _ sal FROM EMP;(year_sal是按别名排序的别名)
Sql从EMP中选择*其中hired ate ' 01-1-82 ';6.使用like运算符(%_)
%表示一个或多个字符_表示一个字符[charlist]表示任何单个字符[charlist]或[!不在字符列中的任何单个字符。
SQLSELECT * FROM emp WHERE ename像“S__T%”一样;7.在什么条件下使用
SQLSELECT * FROM emp WHERE job IN('职员','分析师');8.字段内容为空/非空的查询语句
从经理为/不为空的环境管理计划中选择*;9.使用逻辑运算符号
SQLSELECT * FROM emp WHERE (sal500或job='MANAGE ')和ename,如' J % ';10.根据字段值对查询结果进行排序。
萨尔desc德普托诺的订单;(按部门递增,按工资递减)11。用例.当.的时候.然后.结束以处理查询结果。
当' original _ a '然后是' new name Aa '当' original_b '然后是' new name Bb' END AS XXX时,选择案例a;选择表格中的A字段,并将其命名为XXX。当A的内容为original_a时,内容显示为“新命名的Aa”。
原始表
Abc原件_ a.原始_ b....................
XXX新名字Aa新名字Bb 12。格式化日期数据
选择date _ format (start _ time,' % y-%m-%d ')作为“时间”;二、复杂查询
1.数据分组(最大值、最小值、平均值、总和、计数)
电磁脉冲产生的最大值、最小值、AVG值和最大值;
SQLSELECT * FROM emp其中sal=(SELECT MAX(sal)FROM EMP));
来自emp的SQLSELEC计数(*);2.group by(用于对查询结果的统计信息进行分组)和having子句(用于限制显示结果的分组)
德普集团的麦克斯(萨尔)、AVG(萨尔);
SQLSELECT deptno,job,AVG(sal),MIN(sal) FROM emp group by deptno,job having AVG(sal)2000;数据包摘要:
A.分组功能只能出现在选择列表中,ha
ving、order by子句中(不能出现在where中)
b. 如果select语句中同时包含有group by, having, order by那么它们的顺序是group by, having, order by。
c. 在选择列中如果有列、表达式和分组函数那么这些列和表达式必须出现在group by子句中否则就是会出错。也即:SELECT子句中的列名必须为分组列或列函数
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;Select a.*, b.x, c.y from a left outer join (Select * from tablex where condition1)b on a.id=b.id left outer join (Select * from tabley where condition2)c on a.id=c.idwhere condition3;
4. 自连接(指同一张表的连接查询)
SQL>SELECT er.ename, ee.ename mgr_name from emp er, emp ee where er.mgr=ee.empno;
5. 子查询(嵌入到其他sql语句中的select语句也叫嵌套查询)
5.1 单行子查询
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);
查询表中与部门号为10的工作相同的员工的姓名、工作、薪水、部门号。因为返回结果有多行所以用“IN”连接子查询语句。
5.3 使用ALL
SQL>SELECT ename,sal,deptno FROM emp WHERE sal> ALL (SELECT sal FROM emp WHERE deptno=30);或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 where 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) AS SELECT empno,ename,sal,job,deptno FROM emp;
5.9 合并查询(union 并集, intersect 交集, union all 并集 交集, minus差集)
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), dept number(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';
这篇好文章是转载于:知行礼动
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 知行礼动
- 本文地址: /news/detail/tanhbggbfc