顾名思义,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;
清屏:host cls;
- USER 为 "SCOTT"
查询emp表的结构:desc emp;
查询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)
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;
查询员工的编号,姓名,月薪,年薪:select empno,sal*12 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行。
修改上一条sql语句:edit;
- 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行。
查询员工的编号,姓名,月薪,年薪,年收入(年薪+奖金有空值)
select empno,sal*12,sal*12+comm from emp;
已选择14行。
- 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">
解决null的问题,使用NVL()函数:select empno,nvl(comm,0) from emp;
NVL(a,b):如果a是空,用b替代: select empno,sal*12+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行。
使用别名,查询员工的编号,姓名,月薪,年薪,年收入(年薪+奖金):
- 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;
select empno "编号",ename "姓名",sal "月薪",sal*12 "年薪",0) "年 收 入" 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行。
使用字符串连接符号,输出"hello world"
- 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行。
select 'Hello' || ' World' "结果" from dual;
显示系统当前时间
- sql> select 'Hello'|| 'World'"结果" from dual;
- 结果
- --------------------
- HelloWorld
select sysdate from dual;
Oracle默认日期格式为:DD(2位日)-MON(月的简写)-RR(2位年)
使用字符串连接符号,显示如下格式信息:xxxx的薪水是xxxx
- sql> select sysdate from dual;
- SYSDATE
- --------------
- 20-6月 -16
select ename || '的工资是' || sal || '元' AS "薪水情况" from emp;
保存sql语句到文件:spool d:\1234.sql;
- 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 off;
执行文件中的sql语句,该文件必须是*.sql文件:@ d:\1234.sql;
单行注释:--单行注释
多行注释:select *
/*
这是
多行
注释
*/
from emp;
查询10号部门的员工:select * from emp where deptno=10;
查询姓名是KING的员工,字符串值,大小写敏感:select * from emp where ename='KING';
- 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
查询1981年11月17日入职的员工,"17-11月-81"满足oracle默认日期格式(DD-MON-RR表示2位的年份):select * from emp where hiredate='17-11月-81';
- sql> select * from emp where ename='KING';
- EMPNO ENAME JOB MGR HIREDATE
- ----- -------------------- ------------------ ---------- --------------
- SAL COMM DEPTNO
- ---------- ---------- ----------
- 7839 KING PRESIDENT 17-11月-81
- 5000 10
- 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;
查询入职时间在"20-2月-81"到"23-1月-82"之间的员工
- 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
select * from emp where hiredate between '20-2月-81' and '23-1月-82';【ok】
select * from emp where hiredate between '23-1月-82' and '20-2月-81';
- 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行。
【未选中行】
查询10号和20号部门的员工:select * from emp where deptno in (10,20);
查询姓名以"S"开头的员工
- 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行。
select * from emp where ename like 'S%';
select * from emp where ename like '%%';
- 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
查询姓名是4个字符的员工:select * from emp where ename like 'K____';
- 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行。
查询员工姓名中含有'_'的员工,让\后的字符回归本来意思
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';
持续记录。。。。。。。。