一、oracle數(shù)據(jù)庫操作
1、創(chuàng)建數(shù)據(jù)庫
create?database?databasename
2、刪除數(shù)據(jù)庫
drop?database?dbname
3、備份數(shù)據(jù)庫
完全備份
exp?demo/demo@orcl?buffer=1024?file=d:back.dmp?full=y
? ? ?demo:用戶名、密碼? ? ?buffer:?緩存大小? ? ?file:?具體的備份文件地址? ? ?full:?是否導(dǎo)出全部文件? ? ?ignore:?忽略錯誤,如果表已經(jīng)存在,則也是覆蓋
將數(shù)據(jù)庫中system用戶與sys用戶的表導(dǎo)出
exp?demo/demo@orcl?file=d:backup1.dmp?owner=(system,sys)
導(dǎo)出指定的表
exp?demo/demo@orcl?file=d:backup2.dmp?tables=(teachers,students)
按過濾條件,導(dǎo)出
exp?demo/demo@orcl?file=d:back.dmp?tables=(table1)?query="?where?filed1?like?'fg%'"
導(dǎo)出時可以進行壓縮;命令后面 加上?compress=y ;如果需要日志,后面:?log=d:log.txt
備份遠程服務(wù)器的數(shù)據(jù)庫
exp?用戶名/密碼@遠程的IP:端口/實例?file=存放的位置:文件名稱.dmp?full=y
4、數(shù)據(jù)庫還原
打開cmd直接執(zhí)行如下命令,不用再登陸sqlplus。
完整還原
imp?demo/demo@orcl?file=d:back.dmp?full=y?ignore=y?log=D:implog.txt
指定log很重要,便于分析錯誤進行補救。
導(dǎo)入指定表
? ? ?imp?demo/demo@orcl?file=d:backup2.dmp?tables=(teachers,students)
還原到遠程服務(wù)器
imp?用戶名/密碼@遠程的IP:端口/實例?file=存放的位置:文件名稱.dmp?full=y
二、Oracle表操作
1、創(chuàng)建表
create?table?tabname(col1?type1?[not?null]?[primary?key],col2?type2?[not?null],..)
? ? ?根據(jù)已有的表創(chuàng)建新表:
A:select?*?into?table_new?from?table_old?(使用舊表創(chuàng)建新表) B:create?table?tab_new?as?select?col1,col2…?from?tab_old?definition?only
2、刪除表
drop?table?tabname
3、重命名表
alter?table?表名?rename?to?新表名
4、增加字段
alter?table?表名?add?(字段名?字段類型?默認值?是否為空); 例:alter?table?tablename?add?(ID?int);
5、修改字段
alter?table?表名?modify?(字段名?字段類型?默認值?是否為空);
6、重名字段
alter?table?表名?rename?column?列名?to?新列名?(其中:column是關(guān)鍵字)
7、刪除字段
? ? ?說明:
alter?table?表名?drop?column?字段名;
8、添加主鍵
alter?table?tabname?add?primary?key(col)
9、刪除主鍵
alter?table?tabname?drop?primary?key(col)
10、創(chuàng)建索引
create?[unique]?index?idxname?on?tabname(col….)
11、刪除索引
drop?index?idxname
注:索引是不可更改的,想更改必須刪除重新建。
12、創(chuàng)建視圖
create?view?viewname?as?select?statement
13、刪除視圖
drop?view?viewname
三、Oracle操作數(shù)據(jù)
1、數(shù)據(jù)查詢
select??from??[where?]?[order?by?[asc或desc]]
2、插入數(shù)據(jù)
insert?into?表名?values(所有列的值); insert?into?test?values(1,'zhangsan',20); insert?into?表名(列)?values(對應(yīng)的值); insert?into?test(id,name)?values(2,'lisi');
3、更新數(shù)據(jù)
update?表?set?列=新的值?[where?條件]?-->更新滿足條件的記錄 update?test?set?name='zhangsan2'?where?name='zhangsan' update?表?set?列=新的值?-->更新所有的數(shù)據(jù) update?test?set?age?=20;
4、刪除數(shù)據(jù)
delete?from?表名?where?條件?-->刪除滿足條件的記錄 delete?from?test?where?id?=?1; delete?from?test?-->刪除所有 commit;?-->提交數(shù)據(jù) rollback;?-->回滾數(shù)據(jù) delete方式可以恢復(fù)刪除的數(shù)據(jù),但是提交了,就沒辦法了?delete刪除的時候,會記錄日志?-->刪除會很慢很慢 truncate?table?表名 刪除所有數(shù)據(jù),不會影響表結(jié)構(gòu),不會記錄日志,數(shù)據(jù)不能恢復(fù)?-->刪除很快 drop?table?表名 刪除所有數(shù)據(jù),包括表結(jié)構(gòu)一并刪除,不會記錄日志,數(shù)據(jù)不能恢復(fù)-->刪除很快
5、數(shù)據(jù)復(fù)制
表數(shù)據(jù)復(fù)制
insert?into?table1?(select?*?from?table2);
復(fù)制表結(jié)構(gòu)
create?table?table1?select?*?from?table2?where?1>1;
復(fù)制表結(jié)構(gòu)和數(shù)據(jù)
create?table?table1?select?*?from?table2;
復(fù)制指定字段
create?table?table1?as?select?id,?name?from?table2?where?1>1;
四、數(shù)據(jù)庫復(fù)制命令
不同的數(shù)據(jù)庫語法不同(SQL Server和Oracle為例),且復(fù)制包括目標表已存在和目標表不存在的情況,分別回答:
SQL Server中,如果目標表存在:
insert?into?目標表select*from原表;
SQL Server中,,如果目標表不存在:
select*into?目標表from原表;(復(fù)制表結(jié)構(gòu)和數(shù)據(jù)) select*from?目標表from原表where1=0(只復(fù)制表結(jié)構(gòu))
Oracle中,如果目標表存在:
insert?into?目標表select*from原表; commit;
Oracle中,如果目標表不存在:
create?table?目標表?as?select?*?from?原表?where?1=0(只復(fù)制表結(jié)構(gòu)) create?table?目標表?as?select?*?from?原表;復(fù)制表結(jié)構(gòu)和數(shù)據(jù)
推薦教程:Oracle教程