常见的sql查询语句有哪些?

分类:编程技术 时间:2024-02-20 15:21 浏览:0 评论:0
0
小编给大家分享一下常见的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');

<强>8.查询字段内容为空/不空的语句

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查询语句有哪些》的全部内容,感谢您的阅读!相信大家都有一定的了解,希望分享的内容对大家有所帮助。如果您想了解更多知识,请关注行业资讯频道!

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > 常见的sql查询语句有哪些?

用户评论