熟悉Oracle上機環境及Oracle客戶端的配置;熟練掌握和使用DDL語言,建立、修改和刪除資料庫表、主鍵、外鍵約束關係和索引。 (修改資料庫表名) 將資料庫表S1改名為Student_Temp。 在定義外鍵約束條件時,不能把其他表中沒有的屬性定義在本表的外鍵中,否則會生辰一個錯誤; 在建表時,因 ...
熟悉Oracle上機環境及Oracle客戶端的配置;熟練掌握和使用DDL語言,建立、修改和刪除資料庫表、主鍵、外鍵約束關係和索引。
- (建立資料庫表) 建立教學資料庫的四個資料庫表,其中Student表中不包含SSEX(C,2) 欄位,Sname 欄位為Sname(C,8)且可為空。
create table student (sno char(5), sname varchar2(8), sage number(2) check(age between 12 and 60), sdept char(2), sclass char(2), constraint student_pk primary key(sno));
create table course (cno char(3) not null primary key, cname char(16), ctime number(3));
create table score ( Sno char(5), cno char(3), grade number(3), constraint score_pk primary key(sno,cno), constraint s_sno_fk foreign key(sno) references student(sno), constraint s_cno_fk foreign key(cno) references course(cno), constraint score_ck1 check (grade >= 0 and grade <= 100));
create table teach ( tname char(8) not null, tsex char(2) not null, cno char(3) not null , tdate date not null, tdept char(2) not null, constraint teach_pk primary key(cno), constraint teach_cno_fk foreign key(cno) references course(cno));
- (修改資料庫表) 在Student表中增加SEX(C,2) 欄位。
alter table student add(sex char(2));
- (修改列名) 將Student表中列名SEX修改為SSEX。
alter table student rename column sex to ssex;
modify(ssex char(2) check(ssex in ('男','女'))); - (修改資料庫表) 將Student表中把Sname 欄位修改為Sname(C,10)且為非空。
alter table student modify(sname char(10)not null);
- (建立索引) 為Score表按課程號升序、分數降序建立索引,索引名為SC_GRADE。
create index sc_grade on score(cno,grade desc);
- (刪除索引) 刪除索引SC_GRADE。
drop index sc_grade;
- (建立資料庫表) 建立資料庫表S1(SNO,SNAME,SD,SA),其欄位類型定義與Student表中的相應欄位(SNO,SNAME,SDEPT,SAGE)的數據類型定義相同。
create table s1(
sno char(5) not null,
sname char(10) not null unique,
sd char(2),sa number(2)); - (修改資料庫表) 刪除成績表Score的參照完整性約束關係。
alter table score drop constraint s_sno_fk;
alter table score drop constraint s_cno_fk; - (修改資料庫表) 添加成績表Score的參照完整性約束關係。
alter table Score add(constraint s_sno_fk foreign key(sno) references student(sno), constraint s_cno_fk foreign key(cno) references course(cno));
-
(修改資料庫表名) 將資料庫表S1改名為Student_Temp。
rename S1 to student_temp;
- 查看表的約束條件
select constraint_name, table_name, r_owner, r_constraint_name from all_constraints where table_name = 'score';
- 刪除表中的列
alter table student drop column spec;
- 查看用戶下所有的表名
select table_name from user_tables; //當前用戶的表 select table_name from all_tables; //所有用戶的表 select table_name from dba_tables; //包括系統表 select * from user_indexes //可以查詢出所有的用戶表索引
- 查看表中所有的列名
-
select column_name,data_type ,data_length,data_precision,data_scale from user_tab_columns where table_name='STUDENT';//表名必須大寫
//或者
desc student;
在定義外鍵約束條件時,不能把其他表中沒有的屬性定義在本表的外鍵中,否則會生辰一個錯誤;
在建表時,因為約束條件的名稱被重覆定義,導致表建不起來:改進方法,將課本上的約束條件名稱家上表名首碼,避免重覆性定義問題;
經常會遺漏分號,導致cmd中格式髒亂;
在設置一個屬性的類型時,如果設置為not null則不能再更改它的屬性為null;
在oracle中漢字占得是三個位元組,所以姓名出現四個字就超出了範圍,需要修改其範圍,性別應該修改為3個位元組;
姓名不可以設置為not null unique ,如果出現重名就會發生錯誤,因為當時設置了unique最後還得重建表,刪除此約束條件;
刪除表數據有兩種方法:delete和truncate。
delete的用法如下:
delete from <表名> [where條件]
truncate的用法如下:
truncate table <表名>
delete和truncate的區別如下:
1、delete可以刪除表中的一條或多條數據,也可以刪除全部數據;而truncate只能將表中的全部數據刪除。
2、delete刪除表數據後,標識欄位不能復用。也就是說如果你把id=10(假如id是標識欄位)的那行數據刪除了,你也不可能再插入一條數據讓id=10.
3、truncate刪除表數據後,標識重新恢復初始狀態。預設為初始值為1,也就是說,truncate之後,再插入一條數據,id=1.
但是在使用truncate刪除數據時可能受到外鍵的限制,必須從子集開始刪除,才可以刪除數據;
參考:http://www.cnblogs.com/laipDIDI/articles/2615210.html
http://www.jb51.net/article/82660.htm