DDL數據定義語言
表空間:是實例分配的一塊空間
語法:create tablespace demo01
datafile ‘c:\demo01.dbf’
size 100M
autoextend on
next20M;
普通用戶沒有權限創建表空間,需要用system用戶來創建;
創建表空間后,還需要用管理員創建用戶;
語法:create user user1 identified by test default tablespace demo01;
創建用戶后,需要管理員對用戶進行授權管理;
語法:grant 權限名 to 用戶;
權限分類:connect(連接)、redources(普通操作權限)、dba(管理員操作權限);
然后,測試用戶登錄;
-------------------------------------------------------------------------------------------------
Oracle數據庫的數據類型:
int 整數
double 小數
number(v1,v2) v1表示數字的總長度,v2表示小數位數
char(v1) 固定長度字符
varchar(v1) 可變字符長度
varchar2(v1) 可變字符長度
clob 大文本字符4G大小
blob 二進制字符4G大小
long 長文本2G大小
date 年月日時分秒
datetime 精確的年月日時分秒毫秒微秒納秒
---------------------------------------------------------------------------------------------------
Oracle的約束
主鍵約束 primary key
外鍵約束 foreign key
非空約束 not null
唯一約束 unique
檢查約束 check (如: check gender in (1,0))
約束語法:
constraint 約束名稱 primary key(主鍵列);
constraint 約束名稱 foreign key(從表列)
references 主表(主表列);//添加在從表;
Oracle事務需要手動選擇提交或回滾;
---------------------------------------------------------------------------------------------------
更改表結構:
增加字段:alter table 表名 add (列 數值類型);
修改字段:alter table 表名 modify (列 數值類型);
重命名字段:alter table 表名 rename colunm 舊列名 to 新列名;
刪除字段:alter table 表名 drop column 列名;
DML數據操作語言
插入數據:insert…into…values (…);
修改數據:update…set…where…;
刪除數據:delete from…where…(逐條刪,效率低)、truncate…(摧毀表結構,重建表結構,不能加條件);
創建表的同時,備份表的數據
create table emp as select * from scott.emp;
---------------------------------------------------------------------------------------------------
事務:
read commited: Oracle默認事務隔離級別;
serializable: 序列化,逐條讀;
read only: 只讀;
事務的保存點:
意義:為了保證執行成功的任務能夠提交成功;
語法:savepoint 保存點名稱;
事務保存點的用法:
執行SQL語句1;
savepoint 保存點名稱;
執行SQL語句2;
rollback to 保存點名稱;
commit;
---------------------------------------------------------------------------------------------------
Oracle數據庫的幾個特有對象
1.視圖:一個虛擬表,有數據,但不存放數據,來源于原始表
? ? 意義:為了數據安全
? ? 語法:create view emp_view as select empno,ename,job from emp…;
? ? 查詢視圖:select * from emp_view;
? ? 注意:修改視圖中的數據將影響原始表的數據,要想在修改視圖中的數據時,不對原始表數據進行更改,需要在創建視圖時,對視圖進行with read only限定;
2.序列:是Oracle數據庫生成一系列的數值(1,2,3,4…);
? ? 意義:實現id的自增長
? ? 屬性:nextval下一個值
? ? ? ? ? ? ? currval當前值
? ? 語法:create sequence序列名
? ? 示例:create sequence seq_person;
? ? 注意:先生成再使用,即必須先調用nextval才能查詢currval;
3.索引:數據量大的情況下才使用
? ? 意義:大幅提升查詢速度(100倍左右);
? ? 語法:create index ind_person on person(列名);
? ? 注意:建在重復值盡量少的列上,可以加1個,也可以加多個(復合索引);
? ? 加完之后可以直接執行查詢語句;
4.同義詞:為對象起別名;
? ? 意義:為了數據的安全,細分權限;
? ? 語法:create synonym同義詞名for scott.dept;
? ? 用法:select * from同義詞名;
---------------------------------------------------------------------------------------------------
數據的導入和導出
? 意義:數據的備份和還原,數據庫或服務器的遷移;
方式:命令行和PLSQL工具
命令行:
? ? 導出:
? ? ? ? 全庫導出:exp用戶名/密碼file =‘路徑’ full = y;
? ? ? ? 按用戶導出:exp用戶名/密碼owner=用戶名file =‘路徑;
? ? ? ? 按表導出:exp用戶名/密碼file = ‘路徑’tables =表名1,表名2…;
? ? 導入:將上述命令中的exp換成imp即可;
PLSQL工具:
? ? ExportUser Object;//只能導出表結構,不能備份數據;
? ? ExportTables;//導出數據三種格式:dmp(Oracle數據庫特有格式,必須有服務器對應的軟件,通用)、sql(導出.sql文件,但不能刪除原表,否則不能還原)、pde(圖形化工具格式);