DDL數(shù)據(jù)定義語(yǔ)言
表空間:是實(shí)例分配的一塊空間
語(yǔ)法:create tablespace demo01
datafile ‘c:\demo01.dbf’
size 100M
autoextend on
next20M;
普通用戶沒(méi)有權(quán)限創(chuàng)建表空間,需要用system用戶來(lái)創(chuàng)建晦款;
創(chuàng)建表空間后兑凿,還需要用管理員創(chuàng)建用戶愚争;
語(yǔ)法:create user user1 identified by test default tablespace demo01嚼黔;
創(chuàng)建用戶后,需要管理員對(duì)用戶進(jìn)行授權(quán)管理;
語(yǔ)法:grant 權(quán)限名 to 用戶蜂桶;
權(quán)限分類:connect(連接)、redources(普通操作權(quán)限)也切、dba(管理員操作權(quán)限)扑媚;
然后,測(cè)試用戶登錄贾费;
-------------------------------------------------------------------------------------------------
Oracle數(shù)據(jù)庫(kù)的數(shù)據(jù)類型:
int 整數(shù)
double 小數(shù)
number(v1,v2) v1表示數(shù)字的總長(zhǎng)度钦购,v2表示小數(shù)位數(shù)
char(v1) 固定長(zhǎng)度字符
varchar(v1) 可變字符長(zhǎng)度
varchar2(v1) 可變字符長(zhǎng)度
clob 大文本字符4G大小
blob 二進(jìn)制字符4G大小
long 長(zhǎng)文本2G大小
date 年月日時(shí)分秒
datetime 精確的年月日時(shí)分秒毫秒微秒納秒
---------------------------------------------------------------------------------------------------
Oracle的約束
主鍵約束 primary key
外鍵約束 foreign key
非空約束 not null
唯一約束 unique
檢查約束 check (如: check gender in (1,0))
約束語(yǔ)法:
constraint 約束名稱 primary key(主鍵列);
constraint 約束名稱 foreign key(從表列)
references 主表(主表列)褂萧;//添加在從表押桃;
Oracle事務(wù)需要手動(dòng)選擇提交或回滾;
---------------------------------------------------------------------------------------------------
更改表結(jié)構(gòu):
增加字段:alter table 表名 add (列 數(shù)值類型)导犹;
修改字段:alter table 表名 modify (列 數(shù)值類型)唱凯;
重命名字段:alter table 表名 rename colunm 舊列名 to 新列名;
刪除字段:alter table 表名 drop column 列名谎痢;
DML數(shù)據(jù)操作語(yǔ)言
插入數(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í),備份表的數(shù)據(jù)
create table emp as select * from scott.emp太雨;
---------------------------------------------------------------------------------------------------
事務(wù):
read commited: Oracle默認(rèn)事務(wù)隔離級(jí)別吟榴;
serializable: 序列化,逐條讀囊扳;
read only: 只讀吩翻;
事務(wù)的保存點(diǎn):
意義:為了保證執(zhí)行成功的任務(wù)能夠提交成功兜看;
語(yǔ)法:savepoint 保存點(diǎn)名稱;
事務(wù)保存點(diǎn)的用法:
執(zhí)行SQL語(yǔ)句1狭瞎;
savepoint 保存點(diǎn)名稱细移;
執(zhí)行SQL語(yǔ)句2;
rollback to 保存點(diǎn)名稱脚作;
commit葫哗;
---------------------------------------------------------------------------------------------------
Oracle數(shù)據(jù)庫(kù)的幾個(gè)特有對(duì)象
1.視圖:一個(gè)虛擬表,有數(shù)據(jù)球涛,但不存放數(shù)據(jù),來(lái)源于原始表
? ? 意義:為了數(shù)據(jù)安全
? ? 語(yǔ)法:create view emp_view as select empno校镐,ename亿扁,job from emp…;
? ? 查詢視圖:select * from emp_view鸟廓;
? ? 注意:修改視圖中的數(shù)據(jù)將影響原始表的數(shù)據(jù)从祝,要想在修改視圖中的數(shù)據(jù)時(shí),不對(duì)原始表數(shù)據(jù)進(jìn)行更改引谜,需要在創(chuàng)建視圖時(shí)牍陌,對(duì)視圖進(jìn)行with read only限定;
2.序列:是Oracle數(shù)據(jù)庫(kù)生成一系列的數(shù)值(1,2,3,4…)员咽;
? ? 意義:實(shí)現(xiàn)id的自增長(zhǎng)
? ? 屬性:nextval下一個(gè)值
? ? ? ? ? ? ? currval當(dāng)前值
? ? 語(yǔ)法:create sequence序列名
? ? 示例:create sequence seq_person毒涧;
? ? 注意:先生成再使用,即必須先調(diào)用nextval才能查詢currval贝室;
3.索引:數(shù)據(jù)量大的情況下才使用
? ? 意義:大幅提升查詢速度(100倍左右)契讲;
? ? 語(yǔ)法:create index ind_person on person(列名);
? ? 注意:建在重復(fù)值盡量少的列上滑频,可以加1個(gè)捡偏,也可以加多個(gè)(復(fù)合索引);
? ? 加完之后可以直接執(zhí)行查詢語(yǔ)句峡迷;
4.同義詞:為對(duì)象起別名银伟;
? ? 意義:為了數(shù)據(jù)的安全,細(xì)分權(quán)限绘搞;
? ? 語(yǔ)法:create synonym同義詞名for scott.dept彤避;
? ? 用法:select * from同義詞名;
---------------------------------------------------------------------------------------------------
數(shù)據(jù)的導(dǎo)入和導(dǎo)出
? 意義:數(shù)據(jù)的備份和還原看杭,數(shù)據(jù)庫(kù)或服務(wù)器的遷移忠藤;
方式:命令行和PLSQL工具
命令行:
? ? 導(dǎo)出:
? ? ? ? 全庫(kù)導(dǎo)出:exp用戶名/密碼file =‘路徑’ full = y;
? ? ? ? 按用戶導(dǎo)出:exp用戶名/密碼owner=用戶名file =‘路徑楼雹;
? ? ? ? 按表導(dǎo)出:exp用戶名/密碼file = ‘路徑’tables =表名1模孩,表名2…尖阔;
? ? 導(dǎo)入:將上述命令中的exp換成imp即可;
PLSQL工具:
? ? ExportUser Object榨咐;//只能導(dǎo)出表結(jié)構(gòu)介却,不能備份數(shù)據(jù);
? ? ExportTables块茁;//導(dǎo)出數(shù)據(jù)三種格式:dmp(Oracle數(shù)據(jù)庫(kù)特有格式齿坷,必須有服務(wù)器對(duì)應(yīng)的軟件,通用)数焊、sql(導(dǎo)出.sql文件永淌,但不能刪除原表,否則不能還原)佩耳、pde(圖形化工具格式)遂蛀;