oracle 數據庫基本操作——數據定義語言
熟悉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),
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
create table teach ( tname char(8) not null, tsex char(2) not null, cno char(3) not null , tdate date not null, tdept
- (修改數據庫表) 在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
oracle 數據庫基本操作——數據定義語言