有哪些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语句有哪些有更深入的了解。具体用法需要在实践中验证。在此,小编将为大家推送更多相关知识点的文章,欢迎关注!