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