Oracle数据库知识整理
1.Oracle简介
Oracle服务器 : 是由Oracle实例和Oracle数据库组成。
Oracle数据库:磁盘上的物理文件的集合。
存放位置:
echo $ORACLE_HOME
C:\01_oracleinstall\BIN bin目录存放exe工具
C:\01_oracleinstall\LIB
C:\01_oracleinstall\oradata 存放用户数据
*.DBF文件 存放用户数据
Oracle集群:cluster Oracle 一个Oracle数据库可以被映射多个实例
Oracle实例:数据库实例是用于和操作系统进行联系的标识,也就是说数据库和操作系统之间的交互使用的是数据库实例。
2.Oracle登陆
登陆:
普通用户登陆 :
sqlplus 用户名/密码 (例如scott/tiger) (Scott是Oracle服务器自带的教学数据库,我们可以在数据库中解锁使用,默认密码是tiger)
超级用户登陆:
sqlplus /nolog
connect /as sysdba //操作用户登陆方式
用户退出:qiut
操作:
查看登陆用户下有什么表
select * from tab; (tab是数据字典,tab是关键字)
select * from dept;(查询表的所有记录) (下面为结果,括弧内的不是显示结果)
DEPTNO(部门编号) DNAME (部门名称 ) LOC (位置)
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
desc dept (查询表结构) 名称 是否为空? 类型
------------ -------- ----------------------------
DEPTNO NOT NULL NUMBER(2)
DNAME VARCHAR2(14)
LOC VARCHAR2(13)
为了美观我们可以进行如下设置:
set linesize 150 设置行宽
set pagesize 140 设置页大小
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
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
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
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
清屏:
host cls
3.基本SQL SELECT语句
select * from emp;
(* 检索所有列 )
显示员工姓名 员工编号 工作 薪水 月薪 年薪
select aname,empno,job,sal,sal*12 from emp;
给列名起别名
可以省去” “或as,但是别名有空格时,不能省略“”
select ename as “员工姓名” , empno “编号”, job 工作, sal”月 薪” , sal*12 年薪 from emp;
注意别名”月 薪“有空格,所以要加入”“
select ename as "员工姓名" , empno "编号", job 工作, sal "月 薪" , sal*12 年薪 from emp
员工姓名 编号 工作 月 薪 年薪
---------- ---------- --------- ---------- ----------
SMITH 7369 CLERK 800 9600
ALLEN 7499 SALESMAN 1600 19200
WARD 7521 SALESMAN 1250 15000
JONES 7566 MANAGER 2975 35700
MARTIN 7654 SALESMAN 1250 15000
BLAKE 7698 MANAGER 2850 34200
CLARK 7782 MANAGER 2450 29400
SCOTT 7788 ANALYST 3000 36000
KING 7839 PRESIDENT 5000 60000
TURNER 7844 SALESMAN 1500 18000
ADAMS 7876 CLERK 1100 13200
JAMES 7900 CLERK 950 11400
FORD 7902 ANALYST 3000 36000
MILLER 7934 CLERK 1300 15600
查询奖金为空的员工
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
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30
select sysdate from dual;
SYSDATE
--------------
07-10月-14
注释:dual是伪表,用来存放我们想要查看的一些数据.例如查看系统时间,需要一个表来存放才能查看,所以就有了伪表的存在.
DISTINCT关键字
1.去除所修饰的重复的行
select DISTINCT deotno from emp;
DEPTNO
----------
30
20
10
2.当DISTINCT修饰多个字段时,除非都多个字段相同 ,否则认为时重复的