- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章SQL语句学习由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
(高手就不要笑话了^_^).
好了,其他的不说现在就开始:
select 子句主要决定了从表中取出的列名,列数以及列的显示顺序等信息,"*"表示查询所有的列,有关select的用法应该结合其它子句的用法.
1.from 子句:
①from子句用于指定被查询的表,试图或快照。 ②如果指定多个实体,用逗号讲它们分割。为了查询方便,特别是进行自连接查询时,可以给表起别名。(这里我要说很多刚开始使用sql的朋友开始的时候总觉得这个很简单,没有什么可学的,可是到后来在做一些复杂的sql的时候总是想不起来这一点导致其实不难的sql语句无从下手)。 ③如果被查询的实体不在当前的模式中,则必须用模式名来限定该对象。 select *from admin.emp ④若查询远程数据库中的实体,必须使用数据库链路,如果查询分区表中某个分区的数据,则必须使用关键字Partition来指定分区名。 select *from emp@cbf107 select *from emp partition(A_hiredate) 。
2.where 子句 。
where 子句用于限定处理的行数,选择满足条件的行,where 子句中的任何逻辑条件都使用比较运算符,满足where子句中逻辑条件的数据被返回或者被处理,在where子句中可以使用列名或表达式.
select ename from emp where deptno=10 。
①如果列类型为字符型,where ename='smith';(单引号内字符串大小写有区别) ②列类型为数字型deptno=20; ③如果列值取其他列值,可用如下形式表示 where emp.depno=dept.deptno ④in 与 not in 择列的值与值列表中某一个值相符的相关行信息(如果进行"或操作") 。
查询表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 where sal between 2000 and 3000; select ename,job,sal from emp where sal not between 2000 and 3000 。
select ename,oeptno from emp where ename like 's%'; "%" 匹配0个或n个长度的字符串,而"_"仅匹配一个字符。假如查询条件中本身含有"_"或"%",为了与模式匹配符"_"和"%"区分,必须在like运算符中加ESCAPE"%子句. 查询雇员名以A_开始的行 select *from emp where ename like 'a\_%' ESCAPE '\',
is null 和 is not null 空值(null)不等同于0,0是一个数字,而空值表示未知的,不存在的或不可用的数据.它不能像0那样进行算术运算,null用于查询列值为空值或非空的信息。 在Oracle的RDBMS中,null(空值)不占空间,判断某一列值是否为空,不能用"="或"!="运算符号,而要用is null或is not null.
选择没有奖金的雇员信息 select ename,job from emp where comm is null 。
3.order by 。
在关系型模式中,行是没有顺序可言的。order by 子句确定的行信息显示时的先后顺序,当按多列进行排序时,首先由第一个列名确定顺序,其次由第二个列名确定顺序.
先按工资的降序排列,在工资相同的情况下,按姓名的字母顺序排列 。
select ename employee, sal salary from emp where deptno=30 order by sal desc employee,
假如在select子句中使用distinct关键字,在order by 子句中只能使用select 子句中列出来的列名,不能使用列的别名.
在查询语句中不仅可以使用列名或列的别名进行排序,也可以使用在select 子句中列的位置进行排序。(select 子句中有一个很长的表达式,并且要用此表达式的结果进行排序时用列的位置是很有用的)。对于涉及集合操作:union,minus的查询,不能使用列名,在这种情况下,必须提供列的位置.
select 'name:'||ename "employee", sal "salary", from emp where deptno=30 order by 2,1,
4.group by 。
在select 语句中可以使用group by 子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。group by 子句可以将查询结果分组,并返回行的汇总信息Oracle 按照group by 子句中指定的表达式的值分组查询结果.
在带有group by 子句的查询语句中,在select 列表中指定的列要么是group by 子句中指定的列,要么包含聚组函数 。
select max(sal),job emp group by job; (注意max(sal),job的job并非一定要出现,但有意义) 。
查询语句的select 和group by ,having 子句是聚组函数唯一出现的地方,在where 子句中不能使用聚组函数.
select deptno,sum(sal) from emp where sal>1200 group by deptno having 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个连接条件.
select D.dname,D.Loc,E.ename,e.sal from delpt D,emp E where D.deptno=E.deptno,
一但定义了表的别名,在本条select语句中就不能用表名去限制列名,应该用表的别名去限制别名.
哪些雇员的工资属于第三级别?
select empno,ename,sal from emp,salgrade where grade=3 and sal between losal and hisal,
找出emp表中的每一雇员属于哪一等级.
select empno,ename,sal,grade from emp,sal,grade where emp.sal between lowsal and hisal. 。
5.外连接与内连接 。
有时候,即使在连接的表中没有相应的行,用户可能想从一张表中看数据,Oracle提供了外连接实现该功能。 内连接是指连接查询只显示完全满足连接条件的记录,即等值连接,外连接的查询结果是内连接查询结果的扩展。外连接不仅返回满足连接条件的所有记录而且也返回了一个表中那些在另一个表中没有匹配行的记录。外连接的操作符是“+”。“+”号放在连接条件中信息不完全的那一边(即没有相应行的那一边)。运算符“+”影响NULL行的建立。建一行或多行NULL来匹配连接的表中信息完全的行.
外连接运算符“+”只能出现在where子句中表达式的一边.
假如在多张表之间有多个连接条件,外连接运算符不能使用or,in逻辑运算符与其它条件组合.
假如emp表中deptno=10的ename为空值,dept表中deptno=20的loc为空值:
1. 。
select ename,dept.deptno,loc from emp,dept where emp.depno(+)=dept.deptno,
如果在dept.deptno中有的数值在emp.deptno中没有值,则在做外连接时, 结果中ename会产生一个空值。(emp.deptno=10) 。
2. 。
select ename,dept.deptno,loc from emp,dept where emp.depno=dept.deptno(+),
如果在emp.deptno中有的数值在dept.deptno中没有值,则在做外连接时, 结果中loc会产生一个空值。。(dept.deptno=20) 。
5.自连接 。
自连接是指同一张表的不同行间的连接。该连接不受其他表的影响。用自连接可以比较同一张表中不同行的某一列的值。因为自连接查询仅涉及到某一张表与其自身的连接。所以在from子句中该表名出现两次,分别用两个不同的别名表示,两个别名当作两张不同的表进行处理,与其它的表连接一样,别名之间也使用一个或多个相关的列连接。为了区分同一张表的不同行的列,在名前永别名加以限制.
select worker.ename, manager.ename manager from emp worker, emp manager where work.mgr=manager.empno,
7.集合运算 。
基合运算符可以用于从多张表中选择数据.
①UNION运算 用于求两个结果集合的并集(两个结果集合的所有记录),并自动去掉重复行.
select ename,sal from account where sal>2000 union select ename,sal from research where sal>2000 union select ename,sal from sales where sal>2000,
注:ename,sal 是必须一致的.
②UNION ALL运算 用于求两个结果集合的并集(两个结果集中的所有记录)源码天空,并且不去掉重复行.
select ename,sal from account where sal>2000 union select ename,sal from research where sal>2000 union select ename,sal from sales where sal>2000,
③INTERSECT运算 intersect运算返回查询结果中相同的部分.
各部门中有哪些相同的职位?
select Job from account intersect select Job from research intersect select Job from sales,
④MINUS运算 minus返回两个结果集的差集。(在第一个结果集中存在的,而在第二个结果集中不存在的行。) 。
有那些职位是财务部中有,而在销售部门中没有?
select Job from account minus select Job from sales,
最后此篇关于SQL语句学习的文章就讲到这里了,如果你想了解更多关于SQL语句学习的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 9 年前。 Improve
介绍篇 什么是MiniApis? MiniApis的特点和优势 MiniApis的应用场景 环境搭建 系统要求 安装MiniApis 配置开发环境 基础概念 MiniApis架构概述
我正在从“JavaScript 圣经”一书中学习 javascript,但我遇到了一些困难。我试图理解这段代码: function checkIt(evt) { evt = (evt) ? e
package com.fastone.www.javademo.stringintern; /** * * String.intern()是一个Native方法, * 它的作用是:如果字
您会推荐哪些资源来学习 AppleScript。我使用具有 Objective-C 背景的传统 C/C++。 我也在寻找有关如何更好地开发和从脚本编辑器获取更快文档的技巧。示例提示是“查找要编写脚本的
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 4年前关闭。 Improve thi
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
关闭。这个问题不符合 Stack Overflow guidelines 。它目前不接受答案。 想改善这个问题吗?更新问题,以便堆栈溢出为 on-topic。 6年前关闭。 Improve this
我是塞内加尔的阿里。我今年60岁(也许这是我真正的问题-笑脸!!!)。 我正在学习Flutter和Dart。今天,我想使用给定数据模型的列表(它的名称是Mortalite,请参见下面的代码)。 我尝试
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 9年前关闭。 Improve this que
学习 Cappuccino 的最佳来源是什么?我从事“传统”网络开发,但我对这个新框架非常感兴趣。请注意,我对 Objective-C 毫无了解。 最佳答案 如上所述,该网站是一个好地方,但还有一些其
我正在学习如何使用 hashMap,有人可以检查我编写的这段代码并告诉我它是否正确吗?这个想法是有一个在公司工作的员工列表,我想从 hashMap 添加和删除员工。 public class Staf
我正在尝试将 jQuery 与 CoffeScript 一起使用。我按照博客中的说明操作,指示使用 $ -> 或 jQuery -> 而不是 .ready() 。我玩了一下代码,但我似乎无法理解我出错
还在学习,还有很多问题,所以这里有一些。我正在进行 javascript -> PHP 转换,并希望确保这些做法是正确的。是$dailyparams->$calories = $calories;一条
我目前正在学习 SQL,以便从我们的 Magento 数据库制作一个简单的 RFM 报告,我目前可以通过导出两个查询并将它们粘贴到 Excel 模板中来完成此操作,我想摆脱 Excel 模板。 我认为
我知道我很可能会因为这个问题而受到抨击,但没有人问,我求助于你。这是否是一个正确的 javascript > php 转换 - 在我开始不良做法之前,我想知道这是否是解决此问题的正确方法。 JavaS
除了 Ruby-Doc 之外,哪些来源最适合获取一些示例和教程,尤其是关于 Ruby 中的 Tk/Tile?我发现自己更正常了 http://www.tutorialspoint.com/ruby/r
我只在第一次收到警告。这正常吗? >>> cv=LassoCV(cv=10).fit(x,y) C:\Python27\lib\site-packages\scikit_learn-0.14.1-py
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be
我是一名优秀的程序员,十分优秀!