有哪些SQL语句?

分类:编程技术 时间:2024-02-20 15:37 浏览:0 评论:0
0
本文主要讲解“SQL语句有哪些”。文章中的讲解内容简单明了,易学易懂。请跟随小编的思路慢慢深入,一起研究学习“SQL语句都有哪些”!

select子句主要决定从表中取出的列名、列数以及列显示顺序等信息。 “*”表示查询所有列。 select 的使用应与其他子句结合使用。用法。

1.from子句:

①from子句用于指定要查询的表、尝试或快照。
② 如果指定多个实体,请用逗号分隔。为了查询方便,特别是在进行自连接查询时,可以给表起一个别名。 (这里我想说,很多刚开始使用SQL的朋友一开始总是觉得这个很简单,没有什么可学的。但是,后来做的时候有些复杂的SQL,他们总是记不住这一点,其实并不难。没有办法从sql语句开始)。
③如果要查询的实体不在当前模式中,则必须使用模式名称限定该对象。
select *from admin.emp
④ 如果查询远程数据库中的实体,则必须使用数据库链接。如果查询分区表中某个分区的数据,必须使用关键字Partition指定分区名称。 。
选择*从emp@cbf107
选择*从emp分区(A_hiredate)

2. where 子句

where sub 语句用于限制要处理的行数,并选择满足条件的行。 where 子句中的任何逻辑条件都使用比较运算符。返回或处理满足where子句中逻辑条件的数据。在 where 子句中,您可以使用列名或表达式。

从 emp 中选择 ename,其中 deptno=10

①If 列类型为字符,其中ename='smith'; (单引号内的字符串大小写有区别)
②列类型为数字deptno=20;
③如果列值取其他列值,可以用以下形式表示
where emp.depno=dept.deptno
④In 和 not in 选择列值与值列表中的值匹配的相关行信息(如果进行“OR 运算”)

查询表EMP有哪些员工和分析师
select name,job from emp where job in ('clerk','analyst');
查询表EMP哪些人不是员工和分析师
select name ,job from emp where job not in ('clerk', 'analyst');

有工资在 2000 到 3000 之间的员工
select ename,job,sal from emp,其中 sal 在 2000 到 3000 之间;
从 emp 中选择 ename ,job,sal,其中 sal 不在 2000 到 3000 之间

从 emp 中选择 ename,oeptno,其中 ename like 's%';
“%”匹配0或n个长度的字符字符串,“_”只匹配一个字符。如果查询条件本身包含“_”或“%”,为了与模式匹配字符“_”和“%”区分开,必须在like运算符后添加ESCAPE“%”子句。
查询员工姓名以A开头。_起始行
select *from emp where ename like 'a\_%' ESCAPE '\';

is null and is not null
空值​​(null)不等价于0,0是一个数字,null值代表未知、不存在或不可用的数据,它不能进行像0这样的算术运算,null用于查询该列值为的信息null或non-null。
在Oracle的RDBMS中,null(空值)不占用空间,判断列值是否为空不能使用“=”或“!=”运算符符号,而是使用为空或不为空。

选择不带奖金的员工信息
select ename,job from emp where comm is null

3.order by

在关系模式中,有没有行的顺序。 order by 子句决定行信息。按多列排序时,第一个列名决定顺序,然后第二个列名决定顺序。

首先按照薪资降序排序,如果薪资相同,则按照姓名字母顺序排序

选择
ename员工,
sal薪资
来自
emp
其中
deptno=30

sal desc员工排序;

如果在select子句字,order by子句中只能使用select子句中列出的列名,不能使用列别名。

在查询语句中,不仅可以使用列名或列别名进行排序,还可以使用该列在select子句中的位置进行排序。 (当 select 子句中有一个长表达式并且想要对该表达式的结果进行排序时,列位置很有用。)对于涉及集合操作的查询:union、minus、column n无法使用 ames,在这种情况下必须提供列位置。

选择
'姓名:'||ename“员工”,
sal“工资”,
来自
emp
所在
deptno=30
order by
2,1;

4.group by

group可以在select中使用语句 by 子句将行分为更小的组,然后使用聚合函数返回每个组的摘要信息。此外,having 子句可用于限制返回的结果集。 group by 子句可以对查询结果进行分组并返回行的汇总信息。 Oracle根据group by子句中指定的表达式的值对查询结果进行分组。

在带有group by子句的查询语句中,select列表中指定的列要么是group by子句中指定的列,要么包含聚合函数

select max(sal), job emp group by job;
(注意max(sal),job的job不一定要出现,但是是meaningful)

select和group by查询语句中,having子句是唯一出现聚合函数的地方,而不是在where子句中可以使用分组函数。

select deptno,sum(sal) from emp where sal>1200 group by deptnohaving sum(sal)>8500 order by deptno;

当在gropu by子句中使用having时,查询结果中仅返回满足having条件的组。 sql语句中可以有where子句和having子句。 having子句与where子句类似,用于设置限制条件

where子句的作用是在对查询结果进行分组之前,删除不满足where条件的行,即:在分组之前过滤数据。条件不能包含聚合函数。使用 where 条件显示特定行。
having子句的作用是过滤符合条件的组,即过滤分组后的数据。条件往往与保留聚合函数。使用having条件显示特定组,也可以使用多个分组条件进行分组。

查询各部门每个职位的员工人数
select deptno,job,count(*) from emp group by deptno,job;

5 .多表连接

笛卡尔连接是指从多个表中获取数据时,在where子句中不指定多个表之间的公共关系(即从一个表中获取每一条记录)与另一个表中的每条记录都是相连的)。如果第一个表中有 M 条记录,第二个表中有 N 条记录,则结果是 M*N 条记录。尽量避免笛卡尔连接。因此,一般有N张表需要连接,并且至少有N-1个连接条件。


delpt D,emp E
其中
选择
D.dname、D.Loc、E.ename、e.sal
D.deptno=E.deptno;

定义表的别名后,表name 不能用于限制此 select 语句中的列名。应该使用表的别名来限制别名。

哪些员工的工资属于第三级?


emp、salgrade
中选择
empno、ename、sal
,其中
grade=3

sal介于losal和hisal之间;

找出emp表中每个员工属于哪个级别。


emp,sal,grade
中选择
empno,ename,sal,grade
其中
emp.sal位于lowsal和hisal之间。

5.外连接和内连接

有时,即使连接的表中没有对应的行,用户也可能希望查看表中的数据。 Oracle 提供了外连接实现。这个功能。
内连接是指连接查询只显示完全满足连接条件的记录,即等值连接。外连接的查询结果是内连接查询结果的扩展。外连接不仅返回满足连接的所有记录条件,但也包括一个表中在另一表中没有匹配行的记录。外连接的运算符是“+”。 “+”号放在连接条件信息不完整的一侧(即没有对应行的一侧)。运算符“+”影响 NULL 行的创建。创建一个或多个 NULL 行以匹配连接表中具有完整信息的行。

外连接运算符“+”只能出现在where子句中表达式的一侧。

如果多个表之间存在多个连接条件,则外连接运算符不能与其他条件使用or、in逻辑运算符组合。


假设emp表中deptno=10的ename为空值,dept表中deptno=20的loc为空值:

1.


emp,dept
中选择
ename,dept.deptno,loc
,其中
emp.depno(+)=dept .deptno;

如果dept.deptno有值但emp.deptno没有值,当进行外部连接时,
ename 将在结果中产生空值。 (emp.deptno=10)

2.


emp,dept
ename,dept.deptno,loc
>where
emp.depno=dept.deptno(+);

如果emp.deptno中有值但dept.deptno没有值,则在进行外连接时,
Loc 将在结果中产生空值。 。 (dept.deptno=20)


5.自连接

自连接是指同一个表的不同行之间的连接。连接不受其他表的影响。使用自连接来比较同一表中的行一列的值。因为自连接查询只涉及某个表与其自身的连接。因此,表名在from子句中出现了两次,分别用两个不同的别名表示。这两个别名被视为两个不同的表。与其他表连接一样,它们之间也使用一个或多个别名。相关列连接。为了区分列我同一个表的n个不同行,别名限制在名称之前。


emp工人、
emp经理
位置选择
worker.ename、
manager.ename经理

work.mgr=manager.empno;

7.集合操作

基运算符可用于从多个表中选择数据。

①UNION操作
用于求两个结果集的并集(两个结果集的所有记录),并自动去除重复行。

从帐户中选择ename,sal,其中sal> 2000
union
从研究中选择ename,sal,其中sal>2000
union
从研究中选择ename,sal sales where sal>2000;

注意:ename和sal必须一致。

②UNION ALL操作
用于查找两个结果集(两个结果集中的所有记录)的并集,而不去除重复行。

从帐户中选择ename,sal,其中sal> 2000
union
从研究中选择ename,sal,其中sal>2000
union
从研究中选择ename,sal销售额,其中 sal>2000;

③INTERSECT 运算
相交运算返回查询结果的相同部分。

各个部门的共同职位有哪些?

从帐户中选择工作
相交
从研究中选择工作
相交
从销售中选择工作;


④MINUS
减号运算返回两个结果集之间的差值。 (第一个结果集中存在但第二个结果集中不存在的行。)

哪些职位在财务部门有空缺,但在销售部门没有?

select Job from account

select Job from sales;

感谢您的阅读,以上是《什么是SQL语句》读完文章后,相信你会对SQL语句有哪些有更深入的了解。具体用法需要在实践中验证。在此,小编将为大家推送更多相关知识点的文章,欢迎关注!

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

用户评论