Oracle学习01【持续更新】

前端之家收集整理的这篇文章主要介绍了Oracle学习01【持续更新】前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

顾名思义,Oracle翻译过来为甲骨文。
百度百科:甲骨文公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,
总部位于美国加利福尼亚州的红木滩。1989年正式进入中国市场。
2013年,甲骨文已超越 IBM ,成为继 Microsoft 后全球第二大软件公司。

Oracle创始人:拉里.埃里森(32岁之前还一事无成,读了三个大学,没有取得大学文凭,换了十几家公司,最终老婆也离他而去。在成为土豪之前,也可称得上是传奇一生的屌丝啊!哈哈。中国有句古话:英雄不问出处,这个土豪至少证明了他的价值,我等屌丝除了崇拜还是崇拜啊,拉里.埃里森已成为世界数一数二富有的人,身价几百亿美元,可见这个土豪吸取多少老百姓的血汗钱哈......)

Oracle下载官方网址:https://www.oracle.com --->Downloads----> OracleDataBase------>Oracle Database 12c Release 1(最新版本)

废话不多说,先体验一把:

【以下操作,必须以管理员身份登录,才能修改

管理员身份登录,请注意,输出空格符:
sqlplus / as sysdba
例如:C:\Documents and Settings\Administrator>sqlplus / as sysdba

C:\Users\Administrator>sqlplus / as sysdba

sql*Plus: Release 11.2.0.1.0 Production on 星期一 6月 20 18:57:31 2016

Copyright (c) 1982,2010,Oracle.  All rights reserved.


连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning,OLAP,Data Mining and Real Application Testing options

解锁:
alter user 用户名 account unlock;
例如:sql> alter user scott account unlock;

修改普通用户密码:
alter user 用户名 identified by 新密码;
例如:sql> alter user scott identified by 123456;

查询scott用户下的所有表:
select * from tab;

sql> select * from tab;

TNAME                                                        TABTYPE
------------------------------------------------------------ --------------
 CLUSTERID
----------
BONUS                                                        TABLE


DEPT                                                         TABLE


EMP                                                          TABLE



TNAME                                                        TABTYPE
------------------------------------------------------------ --------------
 CLUSTERID
----------
SALGRADE                                                     TABLE

查询当前用户是谁show user;
USER 为 "SCOTT"
清屏:host cls;
查询emp表的结构:desc emp;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- -------------

 EMPNO                                     NOT NULL NUMBER(4)
 ENAME                                              VARCHAR2(10)
 JOB                                                VARCHAR2(9)
 MGR                                                NUMBER(4)
 HIREDATE                                           DATE
 SAL                                                NUMBER(7,2)
 COMM                                               NUMBER(7,2)
 DEPTNO                                             NUMBER(2)
查询emp表的所有内容
select * from emp;
sql> select* from emp;

     EMPNO ENAME                JOB                       MGR HIREDATE
---------- -------------------- ------------------ ---------- ------------
       SAL       COMM     DEPTNO
---------- ---------- ----------
      7369 SMITH                CLERK                    7902 17-12月-80
       800                    20

      7499 ALLEN                SALESMAN                 7698 20-2月 -81
      1600        300         30

      7521 WARD                 SALESMAN                 7698 22-2月 -81
      1250        500         30


     EMPNO ENAME                JOB                       MGR HIREDATE
---------- -------------------- ------------------ ---------- ------------
       SAL       COMM     DEPTNO
---------- ---------- ----------
      7566 JONES                MANAGER                  7839 02-4月 -81
      2975                    20

      7654 MARTIN               SALESMAN                 7698 28-9月 -81
      1250       1400         30

      7698 BLAKE                MANAGER                  7839 01-5月 -81
      2850                    30


     EMPNO ENAME                JOB                       MGR HIREDATE
---------- -------------------- ------------------ ---------- ------------
       SAL       COMM     DEPTNO
---------- ---------- ----------
      7782 CLARK                MANAGER                  7839 09-6月 -81
      2450                    10

      7788 SCOTT                ANALYST                  7566 19-4月 -87
      3000                    20

      7839 KING                 PRESIDENT                     17-11月-81
      5000                    10


     EMPNO ENAME                JOB                       MGR HIREDATE
---------- -------------------- ------------------ ---------- ------------
       SAL       COMM     DEPTNO
---------- ---------- ----------
      7844 TURNER               SALESMAN                 7698 08-9月 -81
      1500          0         30

      7876 ADAMS                CLERK                    7788 23-5月 -87
      1100                    20

      7900 JAMES                CLERK                    7698 03-12月-81
       950                    30


     EMPNO ENAME                JOB                       MGR HIREDATE
---------- -------------------- ------------------ ---------- ------------
       SAL       COMM     DEPTNO
---------- ---------- ----------
      7902 FORD                 ANALYST                  7566 03-12月-81
      3000                    20

      7934 MILLER               CLERK                    7782 23-1月 -82
      1300                    10


已选择14行。

设置显示的列宽(数字型),9表示数字型,一个9表示一个数字位,四个9表示四个数字位:col empno for 9999;

设置在一页中显示20条记录:set pagesize 20;

查询emp表的员工编号,姓名,工资,部门号:select empno,ename,sal,deptno from emp;


查询emp表的不重复的工作
select distinct job from emp;

sql> select empno,deptno from emp;

EMPNO ENAME                       SAL     DEPTNO
----- -------------------- ---------- ----------
 7369 SMITH                       800         20
 7499 ALLEN                      1600         30
 7521 WARD                       1250         30
 7566 JONES                      2975         20
 7654 MARTIN                     1250         30
 7698 BLAKE                      2850         30
 7782 CLARK                      2450         10
 7788 SCOTT                      3000         20
 7839 KING                       5000         10
 7844 TURNER                     1500         30
 7876 ADAMS                      1100         20
 7900 JAMES                       950         30
 7902 FORD                       3000         20
 7934 MILLER                     1300         10

已选择14行。
查询员工的编号,姓名,月薪,年薪:select empno,sal*12 from emp;
EMPNO ENAME                       SAL     SAL*12
----- -------------------- ---------- ----------
 7369 SMITH                       800       9600
 7499 ALLEN                      1600      19200
 7521 WARD                       1250      15000
 7566 JONES                      2975      35700
 7654 MARTIN                     1250      15000
 7698 BLAKE                      2850      34200
 7782 CLARK                      2450      29400
 7788 SCOTT                      3000      36000
 7839 KING                       5000      60000
 7844 TURNER                     1500      18000
 7876 ADAMS                      1100      13200
 7900 JAMES                       950      11400
 7902 FORD                       3000      36000
 7934 MILLER                     1300      15600

已选择14行。
修改上一条sql语句:edit;
查询员工的编号,姓名,月薪,年薪,年收入(年薪+奖金有空值)
select empno,sal*12,sal*12+comm from emp;
sql> select empno,sal*12+comm from emp;

EMPNO ENAME                       SAL     SAL*12 SAL*12+COMM
----- -------------------- ---------- ---------- -----------
 7369 SMITH                       800       9600
 7499 ALLEN                      1600      19200       19500
 7521 WARD                       1250      15000       15500
 7566 JONES                      2975      35700
 7654 MARTIN                     1250      15000       16400
 7698 BLAKE                      2850      34200
 7782 CLARK                      2450      29400
 7788 SCOTT                      3000      36000
 7839 KING                       5000      60000
 7844 TURNER                     1500      18000       18000
 7876 ADAMS                      1100      13200<pre name="code" class="sql">
已选择14行。
 解决null的问题,使用NVL()函数:select empno,nvl(comm,0) from emp; 
 

sql> select empno,0)from emp;

EMPNO ENAME                       SAL NVL(COMM,0)
----- -------------------- ---------- -----------
 7369 SMITH                       800           0
 7499 ALLEN                      1600         300
 7521 WARD                       1250         500
 7566 JONES                      2975           0
 7654 MARTIN                     1250        1400
 7698 BLAKE                      2850           0
 7782 CLARK                      2450           0
 7788 SCOTT                      3000           0
 7839 KING                       5000           0
 7844 TURNER                     1500           0
 7876 ADAMS                      1100           0
 7900 JAMES                       950           0
 7902 FORD                       3000           0
 7934 MILLER                     1300           0

已选择14行。
NVL(a,b):如果a是空,用b替代: select empno,sal*12+nvl(comm,0) from emp;

sql> select empno,0) from emp;

EMPNO ENAME                       SAL     SAL*12 SAL*12+NVL(COMM,0)
----- -------------------- ---------- ---------- ------------------
 7369 SMITH                       800       9600               9600
 7499 ALLEN                      1600      19200              19500
 7521 WARD                       1250      15000              15500
 7566 JONES                      2975      35700              35700
 7654 MARTIN                     1250      15000              16400
 7698 BLAKE                      2850      34200              34200
 7782 CLARK                      2450      29400              29400
 7788 SCOTT                      3000      36000              36000
 7839 KING                       5000      60000              60000
 7844 TURNER                     1500      18000              18000
 7876 ADAMS                      1100      13200              13200
 7900 JAMES                       950      11400              11400
 7902 FORD                       3000      36000              36000
 7934 MILLER                     1300      15600              15600

已选择14行。
使用别名,查询员工的编号,姓名,月薪,年薪,年收入(年薪+奖金):

select empno as "编号",ename as "姓名",sal as "月薪",sal*12 as "年薪",0) as "年收入" from emp;

sql> select empno as "编号",sal*1
2+nvl(comm,0) as "年收入" from emp;

      编号 姓名                       月薪       年薪     年收入
---------- -------------------- ---------- ---------- ----------
      7369 SMITH                       800       9600       9600
      7499 ALLEN                      1600      19200      19500
      7521 WARD                       1250      15000      15500
      7566 JONES                      2975      35700      35700
      7654 MARTIN                     1250      15000      16400
      7698 BLAKE                      2850      34200      34200
      7782 CLARK                      2450      29400      29400
      7788 SCOTT                      3000      36000      36000
      7839 KING                       5000      60000      60000
      7844 TURNER                     1500      18000      18000
      7876 ADAMS                      1100      13200      13200
      7900 JAMES                       950      11400      11400
      7902 FORD                       3000      36000      36000
      7934 MILLER                     1300      15600      15600

已选择14行。
select empno "编号",ename "姓名",sal "月薪",sal*12 "年薪",0) "年 收 入" from emp;

sql> select empno "编号",0
) "年 收 入" from emp;

      编号 姓名                       月薪       年薪   年 收 入
---------- -------------------- ---------- ---------- ----------
      7369 SMITH                       800       9600       9600
      7499 ALLEN                      1600      19200      19500
      7521 WARD                       1250      15000      15500
      7566 JONES                      2975      35700      35700
      7654 MARTIN                     1250      15000      16400
      7698 BLAKE                      2850      34200      34200
      7782 CLARK                      2450      29400      29400
      7788 SCOTT                      3000      36000      36000
      7839 KING                       5000      60000      60000
      7844 TURNER                     1500      18000      18000
      7876 ADAMS                      1100      13200      13200
      7900 JAMES                       950      11400      11400
      7902 FORD                       3000      36000      36000
      7934 MILLER                     1300      15600      15600

已选择14行。
使用字符串连接符号,输出"hello world"
select 'Hello' || ' World' "结果" from dual;
sql> select 'Hello'|| 'World'"结果" from dual;

结果
--------------------
HelloWorld
显示系统当前时间
select sysdate from dual;
Oracle默认日期格式为:DD(2位日)-MON(月的简写)-RR(2位年)
sql> select sysdate from dual;

SYSDATE
--------------
20-6月 -16
使用字符串连接符号,显示如下格式信息:xxxx的薪水是xxxx
select ename || '的工资是' || sal || '元' AS "薪水情况" from emp;
sql> select ename || '的工资是' || sal || '元' AS "薪水情况" from emp;

薪水情况
------------------------------------------------------------------------

SMITH的工资是800元
ALLEN的工资是1600元
WARD的工资是1250元
JONES的工资是2975元
MARTIN的工资是1250元
BLAKE的工资是2850元
CLARK的工资是2450元
SCOTT的工资是3000元
KING的工资是5000元
TURNER的工资是1500元
ADAMS的工资是1100元
JAMES的工资是950元
FORD的工资是3000元
MILLER的工资是1300元

已选择14行。
保存sql语句到文件:spool d:\1234.sql;
保存sql语句及其执行的结果:spool off;
执行文件中的sql语句,该文件必须是*.sql文件:@ d:\1234.sql;
单行注释:--单行注释
多行注释:select *

/*
这是
多行
注释
*/
from emp;


查询10号部门的员工:select * from emp where deptno=10;

sql> select * from emp where deptno=10;

EMPNO ENAME                JOB                       MGR HIREDATE
----- -------------------- ------------------ ---------- --------------
       SAL       COMM     DEPTNO
---------- ---------- ----------
 7782 CLARK                MANAGER                  7839 09-6月 -81
      2450                    10

 7839 KING                 PRESIDENT                     17-11月-81
      5000                    10

 7934 MILLER               CLERK                    7782 23-1月 -82
      1300                    10
查询姓名是KING的员工,字符串值,大小写敏感:select * from emp where ename='KING';
sql> select * from emp where ename='KING';

EMPNO ENAME                JOB                       MGR HIREDATE
----- -------------------- ------------------ ---------- --------------
       SAL       COMM     DEPTNO
---------- ---------- ----------
 7839 KING                 PRESIDENT                     17-11月-81
      5000                    10
查询1981年11月17日入职的员工,"17-11月-81"满足oracle默认日期格式(DD-MON-RR表示2位的年份):select * from emp where hiredate='17-11月-81';
sql> select * from emp where hiredate='17-11月-81';

EMPNO ENAME                JOB                       MGR HIREDATE
----- -------------------- ------------------ ---------- --------------
       SAL       COMM     DEPTNO
---------- ---------- ----------
 7839 KING                 PRESIDENT                     17-11月-81
      5000                    10

查询薪水在1300到1600之间的员工
select * from emp where sal between 1300 and 1600;

sql> select * from emp where sal between 1300 and 1600;

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

 7844 TURNER               SALESMAN                 7698 08-9月 -81
      1500          0         30

 7934 MILLER               CLERK                    7782 23-1月 -82
      1300                    10
查询入职时间在"20-2月-81"到"23-1月-82"之间的员工
select * from emp where hiredate between '20-2月-81' and '23-1月-82';【ok】

sql> select * from emp where hiredate between '20-2月-81' and '23-1月-82'

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

 7566 JONES                MANAGER                  7839 02-4月 -81
      2975                    20

 7654 MARTIN               SALESMAN                 7698 28-9月 -81
      1250       1400         30

 7698 BLAKE                MANAGER                  7839 01-5月 -81
      2850                    30


EMPNO ENAME                JOB                       MGR HIREDATE
----- -------------------- ------------------ ---------- --------------
       SAL       COMM     DEPTNO
---------- ---------- ----------
 7782 CLARK                MANAGER                  7839 09-6月 -81
      2450                    10

 7839 KING                 PRESIDENT                     17-11月-81
      5000                    10

 7844 TURNER               SALESMAN                 7698 08-9月 -81
      1500          0         30

 7900 JAMES                CLERK                    7698 03-12月-81
       950                    30

 7902 FORD                 ANALYST                  7566 03-12月-81
      3000                    20


EMPNO ENAME                JOB                       MGR HIREDATE
----- -------------------- ------------------ ---------- --------------
       SAL       COMM     DEPTNO
---------- ---------- ----------
 7934 MILLER               CLERK                    7782 23-1月 -82
      1300                    10


已选择11行。
select * from emp where hiredate between '23-1月-82' and '20-2月-81';

【未选中行】
查询10号和20号部门的员工:select * from emp where deptno in (10,20);

sql> select * from emp where deptno in(10,20);

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

 7782 CLARK                MANAGER                  7839 09-6月 -81
      2450                    10

 7788 SCOTT                ANALYST                  7566 19-4月 -87
      3000                    20

 7839 KING                 PRESIDENT                     17-11月-81
      5000                    10


EMPNO ENAME                JOB                       MGR HIREDATE
----- -------------------- ------------------ ---------- -------------
       SAL       COMM     DEPTNO
---------- ---------- ----------
 7876 ADAMS                CLERK                    7788 23-5月 -87
      1100                    20

 7902 FORD                 ANALYST                  7566 03-12月-81
      3000                    20

 7934 MILLER               CLERK                    7782 23-1月 -82
      1300                    10


已选择8行。
查询姓名以"S"开头的员工
select * from emp where ename like 'S%';

sql> select * from emp where ename like 'S%';

EMPNO ENAME                JOB                       MGR HIREDATE
----- -------------------- ------------------ ---------- --------------
       SAL       COMM     DEPTNO
---------- ---------- ----------
 7369 SMITH                CLERK                    7902 17-12月-80
       800                    20

 7788 SCOTT                ANALYST                  7566 19-4月 -87
      3000                    20
select * from emp where ename like '%%';
sql> select * from emp where ename like'%%';

EMPNO ENAME                JOB                       MGR HIREDATE
----- -------------------- ------------------ ---------- --------------
       SAL       COMM     DEPTNO
---------- ---------- ----------
 7369 SMITH                CLERK                    7902 17-12月-80
       800                    20

 7499 ALLEN                SALESMAN                 7698 20-2月 -81
      1600        300         30

 7521 WARD                 SALESMAN                 7698 22-2月 -81
      1250        500         30

 7566 JONES                MANAGER                  7839 02-4月 -81
      2975                    20

 7654 MARTIN               SALESMAN                 7698 28-9月 -81
      1250       1400         30


EMPNO ENAME                JOB                       MGR HIREDATE
----- -------------------- ------------------ ---------- --------------
       SAL       COMM     DEPTNO
---------- ---------- ----------
 7698 BLAKE                MANAGER                  7839 01-5月 -81
      2850                    30

 7782 CLARK                MANAGER                  7839 09-6月 -81
      2450                    10

 7788 SCOTT                ANALYST                  7566 19-4月 -87
      3000                    20

 7839 KING                 PRESIDENT                     17-11月-81
      5000                    10

 7844 TURNER               SALESMAN                 7698 08-9月 -81
      1500          0         30


EMPNO ENAME                JOB                       MGR HIREDATE
----- -------------------- ------------------ ---------- --------------
       SAL       COMM     DEPTNO
---------- ---------- ----------
 7876 ADAMS                CLERK                    7788 23-5月 -87
      1100                    20

 7900 JAMES                CLERK                    7698 03-12月-81
       950                    30

 7902 FORD                 ANALYST                  7566 03-12月-81
      3000                    20

 7934 MILLER               CLERK                    7782 23-1月 -82
      1300                    10


已选择14行。
查询姓名是4个字符的员工:select * from emp where ename like 'K____';
查询员工姓名中含有'_'的员工,让\后的字符回归本来意思
select * from emp where ename like '%\_%' escape '\';
select * from emp where ename like '%#_%' escape '#';
select * from emp where ename like '%__%' escape '_';
select * from emp where ename like '%w_%' escape 'w';


持续记录。。。。。。。。

猜你在找的Oracle相关文章