-
約束的作用
?1.定義規(guī)則;
? 2.確保數(shù)據(jù)的完整性;
oracle中5個重要的約束
? 1.非空約束
? 2.主鍵約束
? 3.外鍵約束
? 4.唯一約束
? ?5.檢查約束
查看全部 -
delete from table_name [where conditions];
1.無條件刪除
create table testdel
as
select * from userinfo;
select * from testdel;
delete from testdel;
select * from testdel;
2.有條件刪除--加上where
select username from userinfo;
delete from userinfo where username='yyy';
select username from userinfo;
查看全部 -
1.truncate和 delete只刪除數(shù)據(jù)不刪除表的結(jié)構(gòu)(定義)
drop語句將刪除表的結(jié)構(gòu)被依賴的約束(constrain),觸發(fā)器(trigger),索引(index); 依賴于該表的存儲過程/函數(shù)將保留,但是變?yōu)閕nvalid狀態(tài)。
2.delete語句是dml,這個操作會放到rollback segement中,事務(wù)提交之后才生效;如果有相應(yīng)的trigger,執(zhí)行的時候?qū)⒈挥|發(fā)
truncate,drop是ddl, 操作立即生效,原數(shù)據(jù)不放到rollback segment中,不能回滾. 操作不觸發(fā)trigger。
3.delete語句不影響表所占用的extent, 高水線(high watermark)保持原位置不動
顯然drop語句將表所占用的空間全部釋放
truncate 語句缺省情況下見空間釋放到 minextents個 extent,除非使用reuse storage; truncate會將高水線復(fù)位(回到最開始)。
4.速度,一般來說: drop> truncate > delete。
5.安全性:小心使用drop 和truncate,尤其沒有備份的時候.否則哭都來不及。
6.使用上,想刪除部分數(shù)據(jù)行用delete,注意帶上where子句. 回滾段要足夠大. 想刪除表,當然用drop
想保留表而將所有數(shù)據(jù)刪除. 如果和事務(wù)無關(guān),用truncate即可. 如果和事務(wù)有關(guān),或者想觸發(fā)trigger,還是用delete
如果是整理表內(nèi)部的碎片,可以用truncate跟上reuse stroage,再重新導(dǎo)入/插入數(shù)據(jù)。查看全部 -
1.無條件更新
update userinfo set userpwd = '111111';
select userpwd from userinfo;
更改2個字端
update userinfo set userpwd='111',email='111@126.com';
2.有條件更新
update userinfo set userpwd='123456' where username='xxx';
select username,userpwd from userinfo;
查看全部 -
復(fù)制表數(shù)據(jù)
1.在創(chuàng)建表時復(fù)制?
create table userinfo_new?
as
select * from userinfo;
desc userinfo_new;
把userinfo表架構(gòu)和內(nèi)容復(fù)制給userinfo_new表;
create table userinfo_new1
as?
select id,username from userinfo;
僅僅復(fù)制2個字段,包含其中值到新表;
2.在添加時復(fù)制
注意數(shù)據(jù)類型2個表需要匹配
insert info userinfo_new
select * from userinfo;
插入復(fù)制過來的所有字段數(shù)據(jù);
insert info userinfo_new(id,username)
select id,username from userinfo;
2個表字段內(nèi)容可以不同,但數(shù)據(jù)類型必須一直才可以執(zhí)行成功.
查看全部 -
1.向表中所有字段添加值
不指定字段名稱,默認表字段排列
insert into userinfo
values (1,'xxxx','123','xxxxx@126.com',sysdate);
sysdate 獲取當前日期
2.向表中指定字段添加值
insert info userinfo(id,username,userpwd)
values(2,'yyy','123');
select username,userpwd from userinfo;
添加數(shù)據(jù)注意表設(shè)定某些字段是否可以為空的。
create table userinfo1
(
id number(6,0),
regdate date default sysdate
);
insert info userinfo1(id)
values('1');
一定要指定字段名稱,有默認值的會自動填充.
alter table userinfo
modify email default '無';
修改表字段的默認值
insert into userinfo(id)
values(3);
select id,email from userinfo;
如果email字段不想用默認值
insert info userinfo(id,email)
values(4,'aaaa');
查看全部 -
刪除表
truncate table 比delete速度快很多
truncate 也成為截斷表,清空表數(shù)據(jù),保存表結(jié)構(gòu)
drop 把表的結(jié)構(gòu)也刪除清空,數(shù)據(jù)也清除;
查看全部 -
修改表---修改表的結(jié)構(gòu)
desc userinfo;
alter table userinfo add remarks varchar2(500);
desc userinfo;
修改字段長度內(nèi)容
alter table userinfo modify remarks varchar2(400);
修改數(shù)據(jù)類型
alter table userinfo modify userpwd number(6,0);
alter table userinfo drop column remarks;
該字段名字
alter talbe userinfo rename column email to new_email;
修改表名字
rename table_name to new_table_name;
rename userinfo to new_userinfo;
查看全部 -
字符型
固定長度
char(n) n最大2000
nchar(n) n最大1000--存中文多
變動長度的
varchar2(n) n最大2000,支持unicode
nvarchar2(n)--n最大1000,支持unicode
數(shù)值類型
number(p,s)
number(5,2) 123.45 有效數(shù)字是5位,可以保留2位小數(shù)---用的比較多
float(n)-----相對來說用number類型的多
日期類型
date------可以精確到s
timestamp------可以精確到小數(shù)秒,即毫秒
其他類型
blob可以存放4g的數(shù)據(jù)----二進制形式存放的數(shù)據(jù)
clob可以存4g數(shù)據(jù)-----字符串形式存儲的
查看全部 -
number(p,s)
p指有效數(shù)字,總共長度
查看全部 -
刪除表空間,和其數(shù)據(jù)文件
drop tablespace tablespace_name [including contents];
drop tablespace test1_tablespace including contents;
注意contents后面有s
查看全部 -
對數(shù)據(jù)文件進行添加,刪除的操作,以及查看數(shù)據(jù)文件位置的命令
alter tablespace test1_tablespace add datafile 'test2_file.dbf' size 10m;
select file_name from dba_data_files where tablespace_name='TEST1_TABLESPACE';
alter tablespace tablespace_name drop datafile 'filename.dbf';
tips:不能刪除創(chuàng)建表空間第一個數(shù)據(jù)文件;
alter tablespace test1_tablespace drop datafile 'test2_file.dbf';
查看全部 -
修改表空間,都是指修改永久的表空間
設(shè)置聯(lián)機或脫機狀態(tài)的表空間
一般新建的表,都是默認聯(lián)機的狀態(tài)
alter tablespace tablespace_name online/offline;
如果表空間設(shè)置成脫機,我們就不能使用它了。
設(shè)置表空間只讀或者可讀寫的狀態(tài)
alter tablespace tablespace_name read only
alter tablespace tablespace_name read write
默認表空間是可讀寫的狀態(tài)
但是在聯(lián)機狀態(tài)才可以讀或讀寫,脫機狀態(tài)不可以修改讀寫狀態(tài)的。
select status from dba_tablespaces where tablespace_name='TEST1_TABLESPACE';
online ,read write 也展示online
read only
查看全部 -
查看用戶的表空間
dba_tablespaces 系統(tǒng)管理員的表字典--system可以查看,sys倒不能查看
user_tablespaces 普通用戶的表字典
scott 可以查看user_namespaces 不可以查看dba_namespaces;
dba_users 數(shù)據(jù)字典,只有管理員級別的可以查看
user_users 普通管理都可以查看的數(shù)據(jù)字典
設(shè)置用戶的默認或臨時的表空間
alter user system default tablespace system;
select default_tablespace,temporary_tablespace from dba_users wehre username = 'SYSTEM';
普通用戶沒有設(shè)置表空間的權(quán)限
查看全部 -
表空間是如何分類的
數(shù)據(jù)庫都是存放在表空間里面的
1.永久表空間---永久存放的空間,表,視圖等;
2.臨時表空間---數(shù)據(jù)的中間執(zhí)行過程,執(zhí)行完了就自動釋放,不永久保存
3.undo表空間---事務(wù)處理,修改之前數(shù)據(jù)的保存,這樣就可以進行數(shù)據(jù)回滾操作。
查看全部 -
scott 是默認用戶,默認是鎖定的
alter user username account 解鎖命名?
username----用戶名
alter user username account unlock;
alter user username account lock;
example:alter user scott account unlock;
connect scott/tiger tiger 為默認密碼
connect 是命令,不是sql語句,所以不用分號結(jié)尾
sql語句必須分號結(jié)尾
命令不需分號結(jié)尾
查看全部
舉報