设为首页 收藏本站
查看: 747|回复: 0

[经验分享] Oracle学习之路(一):oracle简介+基本sql语句+条件查询+排序数据理论与案例

[复制链接]

尚未签到

发表于 2016-8-6 09:46:26 | 显示全部楼层 |阅读模式

1. Oracle简介


Oracle是殷墟出土的甲骨文(oracle bone inscriptions)的英文翻译的第一个单词Oracle公司是全球最大的信息管理软件及服务供应商,成立于1977年,总部位于美国加州 Redwood shore;Oracle公司因其复杂的关系数据库产品而闻名。Oracle的关系数据库是世界第一个支持SQL语言的数据库


2. Oracle数据库和 Oracle实例


Oracle 服务器由两大部分组成, Oracle 数据库和 Oracle 实例。


Oracle数据库:位于硬盘上实际存放数据的文件,这些文件组织在一起, 成为一个逻辑整体, 即为 Oracle 数据库. 因此在 Oracle 看来,
“数据库” 是指硬盘上文件的逻辑集合, 必须要与内存里实例合作, 才能对外提供数据管理服务.


Oracle实例:位于物理内存里的数据结构.它由一个共享的内存池和多个后台进程所组成, 共享的内存池可以被所有进程访问. 用户如果要存取数据库(也就是硬盘上的文件)
里的数据, 必须通过实例才能实现, 不能直接读取硬盘上的文件.


区别:实例可以操作数据库; 在任何时刻一个实例只能与一个数据库关联; 大多数情况下, 一个数据库上只有一个实例对其进行操作.


3.注意


SQL语言大小写不敏感;但where或having条件引号中的单词大小写敏感;SQL 可以写在一行或者多行关键字不能被缩写也不能分行各子句一般要分行写。使用缩进提高语句的可读性。


乘除的优先级高于加减;同一优先级运算符从左向右执行。括号内的运算先执行括号决定一切!


空值是无效的,未指定的,未知的或不可预知的值;空值不是空格或者0


4.案例知识点分析


列的别名:


重命名一个列,便于计算。紧跟列名,也可以在列名和别名之间加入关键字‘AS’,别名使用双引号,以便在别名中包含空格或特殊的字符并区分大小写。


连接符:


把列与列,列与字符连接在一起。用 ‘||’表示。可以用来‘合成’列。


例子:


select deptno||dname from dept;




DEPTNO||DNAME


------------------------------------------------------


10ACCOUNTING


20RESEARCH


30SALES


40OPERATIONS




字符串和日期:


字符串可以是 SELECT 列表中的一个字符,数字,日期。日期和字符只能在单引号中出现。每当返回一行时,字符串被输出一次。字符和日期要包含在单引号中。


字符大小写敏感,日期格式敏感。默认的日期格式是 DD-MON-RR。


行的去重复:


默认情况下,查询会返回全部行,包括重复行。在 SELECT 子句中使用关键字 ‘DISTINCT’ 删除重复行。


例子:select distinct(job) from emp;


5. SQL和 SQL*Plus




DSC0000.png


DSC0001.png


使用SQL*Plus可以:


描述表结构;编辑 SQL 语句;执行 SQL语句。 将 SQL 保存在文件中并将SQL语句执行结果保存在文件中。在保存的文件中执行语句。将文本文件装入 SQL*Plus编辑窗口。


6其它比较运算


DSC0002.png




使用 LIKE 运算选择类似的值;


选择条件可以包含字符或数字:% 代表零个或多个字符(任意个字符);_ 代表一个字符;‘%’和‘-’可以同时使用;可以使用 ESCAPE 标识符 选择‘%’和 ‘_’ 符号;回避特殊符号的:使用转义符。例如:将[%]转为[\%]、[_]转为[\_],然后再加上[ESCAPE ‘\’] 即可;使用 IS (NOT) NULL 判断空值。


例子:



select * from emp where sal between 1000 and 2000;

EMPNO ENAME      JOB         MGR HIREDATE         SAL   COMM DEPTNO      
---------- ---------- --------- ----- -------------- ----- ------ ------
7499 ALLEN      SALESMAN   7698 20-2月 -81      1600    300     30
7521 WARD       SALESMAN   7698 22-2月 -81      1250    500     30
7654 MARTIN     SALESMAN   7698 28-9月 -81      1250   1400     30
7844 TURNER     SALESMAN   7698 08-9月 -81      1500      0     30
7876 ADAMS      CLERK      7788 23-5月 -87      1100            20
7934 MILLER     CLERK      7782 23-1月 -82      1300            10


select * from emp where sal in(1250,1600);
EMPNO ENAME      JOB         MGR HIREDATE         SAL   COMM DEPTNO  
---------- ---------- --------- ----- -------------- ----- ------ ------
7499 ALLEN      SALESMAN   7698 20-2月 -81      1600    300     30
7521 WARD       SALESMAN   7698 22-2月 -81      1250    500     30
7654 MARTIN     SALESMAN   7698 28-9月 -81      1250   1400     30


select * from emp where comm is null;

EMPNO ENAME      JOB         MGR HIREDATE         SAL   COMM DEPTNO      
---------- ---------- --------- ----- -------------- ----- ------ ------
7369 SMITH      CLERK      7902 17-12月-80       800            20
7566 JONES      MANAGER    7839 02-4月 -81      2975            20
7698 BLAKE      MANAGER    7839 01-5月 -81      2850            30


select * from emp where comm is not null;

EMPNO ENAME      JOB         MGR HIREDATE         SAL   COMM DEPTNO      
---------- ---------- --------- ----- -------------- ----- ------ ------
7499 ALLEN      SALESMAN   7698 20-2月 -81      1600    300     30
7521 WARD       SALESMAN   7698 22-2月 -81      1250    500     30


select * from emp where ename like 'A%';
EMPNO ENAME      JOB         MGR HIREDATE         SAL   COMM DEPTNO  
---------- ---------- --------- ----- -------------- ----- ------ ------
7499 ALLEN      SALESMAN   7698 20-2月 -81      1600    300     30
7876 ADAMS      CLERK      7788 23-5月 -87      1100            20


select * from emp where ename like '_L%';
EMPNO ENAME      JOB         MGR HIREDATE         SAL   COMM DEPTNO  
---------- ---------- --------- ----- -------------- ----- ------ ------
7499 ALLEN      SALESMAN   7698 20-2月 -81      1600    300     30
7698 BLAKE      MANAGER    7839 01-5月 -81      2850            30
7782 CLARK      MANAGER    7839 09-6月 -81      2450            10


select job_id from jobs where job_id like 'ST\_%' escape '\';
JOB_ID
----------
ST_CLERK
ST_MAN


  

7.优先级


DSC0003.png




可以使用括号改变优先级顺序


8. ORDER BY子句


使用 ORDER BY 子句排序


ASC(ascend): 升序


DESC(descend): 降序


ORDER BY 子句在SELECT语句的结尾。


可以使用不在SELECT 列表中的列排序


例子:




select empno,d.deptno,ename,dname,sal from emp e,dept d
where e.deptno=d.deptno
order by sal asc,d.deptno desc;

EMPNO DEPTNO ENAME      DNAME            SAL                                                   
---------- ------ ---------- -------------- -----                                                   
7369     20 SMITH      RESEARCH         800                                                   
7900     30 JAMES      SALES            950                                                   
7876     20 ADAMS      RESEARCH        1100                                                   
7521     30 WARD       SALES           1250                                                   
7654     30 MARTIN     SALES           1250                                                   
7934     10 MILLER     ACCOUNTING      1300                                                   
7844     30 TURNER     SALES           1500                                                   
7499     30 ALLEN      SALES           1600                                                   
7782     10 CLARK      ACCOUNTING      2450                                                   
7698     30 BLAKE      SALES           2850                                                   
7566     20 JONES      RESEARCH        2975                                                   

EMPNO DEPTNO ENAME      DNAME            SAL                                                   
---------- ------ ---------- -------------- -----                                                   
7788     20 SCOTT      RESEARCH        3000                                                   
7902     20 FORD       RESEARCH        3000                                                   
7839     10 KING       ACCOUNTING      5000     


转载自http://blog.csdn.net/tianyazaiheruan/article/details/8759805

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-253594-1-1.html 上篇帖子: Oracle:并行操作为什么无法执行(老白) 下篇帖子: 请问在Mysql中可以像Oracle中那样创建序列(sequence)吗?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表