0x01.什麼是Oracle數據庫
- ORACLE 數據庫系統是美國 ORACLE 公司(甲骨文)提供的以分佈式數據庫爲核心的一組軟件產品,是目前最流行的客戶/服務器(CLIENT/SERVER)或 B/S 體系結構的數據庫之一。比如SilverStream 就是基於數據庫的一種中間件。ORACLE 數據庫是目前世界上使用最爲廣泛的數據庫管理系統,作爲一個通用的數據庫系統,它具有完整的數據管理功能;作爲一個關係數據庫,它是一個完備關係的產品;作爲分佈式數據庫它實現了分佈式處理功能。
0x02.Oracle相關的概念
1.數據庫
- Oracle 數據庫是數據的物理存儲。這就包括(數據文件 ORA 或者 DBF、控制文件、聯機日誌、參數文件)。其實 Oracle 數據庫的概念和其它數據庫不一樣,這裏的數據庫是一個操作系統只有一個庫。可以看作是 Oracle 就只有一個大數據庫。
2.實例
- 一個 Oracle 實例(Oracle Instance)有一系列的後臺進程(Backguound Processes)和內存結構(Memory Structures)組成。一個數據庫可以有 多 個實例。
3.用戶
- 用戶是在實例下建立的。
- 注意:不同實例可以建相同名字的用戶。
4.表空間
- 表空間是 Oracle 對物理數據庫上相關數據文件(ORA 或者 DBF 文件)的邏輯映射。
- 一個數據庫在邏輯上被劃分成一到若干個表空間,每個表空間包含了在邏輯上相關聯的一組結構。每個數據庫至少有一個表空間(稱之爲 system 表空間)。
5.數據文件(DBF、ORA)
- 數據文件是數據庫的物理存儲單位。
- 數據庫的數據是存儲在表空間中的。
- 一個數據文件只能屬於一個表空間,而一個表空間可以由一個或多個數據文件組成。
- 表空間會隨機把這些表數據放到一個或者多個數據文件中。
- 注意:一旦數據文件被加入到某個表空間後,就不能刪除這個文件,如果要刪除某個數據文件,只能刪除其所屬於的表空間才行。
6.與MySQL區別
- oracle 是由用戶和表空間對數據進行管理和存放的。但是表不是有表空間去查詢的,而是由用戶去查的。
- 因爲不同用戶可以在同一個表空間建立同一個名字的表,這裏的唯一區分就是用戶了。
- 而MySQL數據庫是以表來進行管理和存放的。
0x03.表空間和用戶的創建
1.表空間的創建與刪除
--創建表空間
create tablespace test1
--文件存放位置
datafile 'D:\HouDuanTools\Orcle-datas\test1.dbf'
--初始默認大小
size 50m
--不夠時每次拓展5m
autoextend on
next 5m;
--刪除表空間
drop tablespace test1;
2.用戶的創建與切換
-
創建了用戶之後,需要對其授權。
-
三種Oracle的角色:
-
connect --基本角色,擁有最基本的權限。
- ALTER SESSION --修改會話
- CREATE CLUSTER --建立聚簇
- CREATE DATABASE LINK --建立數據庫鏈接
- CREATE SEQUENCE --建立序列
- CREATE SESSION --建立會話
- CREATE SYNONYM --建立同義詞
- CREATE VIEW --建立視圖
-
resource --開發者角色,在有上述基本的權限後,還有下列權限:
- CREATE PROCEDURE --建立過程
- CREATE TABLE --建表
- CREATE TYPE --建立類型
- CREATE TRIGGER --建立觸發器
-
dba --超級管理員角色,擁有全部權限。
-
--創建用戶
create user test
--密碼
identified by atfwus
--初始的表空間
default tablespace test1;
--給用戶授權
grant dba to test;
- 執行完上述sql語句後,就可以退出,然後重新使用
test
用戶的身份進行登錄。
0x04.Oracle數據類型
序號 | 數據類型 | 具體描述 |
---|---|---|
1 | Varchar,varchar2 | 字符串類型 |
2 | NUMBER | 數字類型 |
3 | DATA | 日期類型 |
4 | CLOB | 大文本數據類型,最多可存 4G |
5 | BLOB | 二進制數據,最多可存 4G |
-
說明:
- NUMBER(n)表示一個整數,長度是 n 。
- NUMBER(m,n):表示一個小數,總長度是 m,小數是 n,整數是 m-n 。
- Varchar是定長度,varcahr是可變長度。
0x05.表管理
1.建表
- 語法:
Create table 表名(
字段 1 數據類型 [default 默認值],
字段 2 數據類型 [default 默認值],
...
字段 n 數據類型 [default 默認值]
);
- 示範:
--創建一個student表
create table student (
id number(16),
name varchar2(20)
);
2.刪表
- 語法:
DROP TABLE 表名
- 示範
DROP TABLE student
3.修改表結構
添加列:
- 語法:
ALTER TABLE 表名稱 ADD(列名 1 類型 [DEFAULT 默認值],列名 1 類型[DEFAULT 默認值]...)
- 示範:
--給表增加一列
alter table student add (gender varchar2(5));
刪除列:
- 語法:
ALTER TABLE 表名稱 DROP COLUMN 列名;
- 示範:
ALTER TABLE student DROP COLUMN sex;
修改列:
- 語法:
ALTER TABLE 表名稱 MODIFY(列名 1 類型 [DEFAULT 默認值],列名 1 類型[DEFAULT 默認值]...)
- 示範:
--修改一列
alter table student modify gender number(1);
修改列名:
- 語法:
ALTER TABLE 表名稱 RENAME COLUMN 列名 1 TO 列名 2
- 示範:
--修改列名
alter table student rename column gender to sex;
0x06.表數據的更新
- 注意:必須手動提交事務,才能完成真正的更新。
1.增(INSERT)
- 語法:
INSERT INTO 表名[(列名 1,列名 2,...)]VALUES(值 1,值 2,...) ;
-- 這種寫法必須按照表中的字段的順序來插入值,而且如果有爲空的字段使用 null
INSERT INTO 表名 VALUES(值 1,值 2,...) ;
- 示範:
--插入一條數據
insert into student (id,name,sex) values(1,'ATFWUS',1);
2.刪(DELETE)
- 在刪除語句中如果不指定刪除條件的話就會刪除所有的數據
- 語法:
DELETE FROM 表名 WHERE 刪除條件;
- 示範:
DELETE FROM student WHERE id=1;
3.改(UPDATE)
- 在更新語句中如果不指定條件的話就會默認更新所有的數據
- 語法:
UPDATE 表名 SET 列名 1=值 1,列名 2=值 2,....WHERE 修改條件;
- 示範:
--更新數據
update student set name='AAA' where id=1;
0x07.序列
- 在 oracle 中完成自動增長的功能, 只能依靠序列完成,所有的自動增長操作,需要用戶手工完成處理。
- 序列:從1開始,依次遞增,主要用來給主鍵賦值。
- 序列不屬於任何一張表,但在邏輯上可以和表做綁定。
- 序列的創建語法:
CREATE SEQUENCE 序列名
[INCREMENT BY n]
[START WITH n]
[{MAXVALUE/ MINVALUE n|NOMAXVALUE}]
[{CYCLE|NOCYCLE}]
[{CACHE n|NOCACHE}];
-
使用序列:
- nextval :取得序列的下一個內容
- currval :取得序列的當前內容
-
dual是一張僞表,目的是爲了補全語法。
create sequence s_student;
select s_student.currval from dual;
- 使用序列增加表數據:
insert into student (s_student.nextval,name,sex) values(1,'ATFWUS',1);
0x08.Scott用戶
-
scott是一個系統已經新建好的普通用戶
- 用戶名scott
- 密碼默認tiger
- 默認狀態是被鎖定,DBA用戶執行
-
scott是給初學者學習的用戶,學習者可以用Scott登錄系統,注意scott用戶登錄後,就可以使用Oracle提供的數據庫和數據表,這些都是oracle提供的,學習者不需要自己創建數據庫和數據表,直接使用這些數據庫和數據表練習SQL。
解鎖:
- DBA用戶執行:
-- 解鎖scott用戶
alter user scott account unlock;
--解鎖scott用戶的密碼【也可重置用戶的密碼】
alter user scott identified by tiger;
- 退出後,就可以重新以scott登錄。
ATFWUS --Writing By 2020–05-04