前6次筆記,都是表的查詢操作,查詢作為資料庫的一個基本操作,我們花了不少的時間。那麼本次筆記我們學習,對錶的建立和管理,建立表、刪除表、修改表、重新命名表和清空表。
常見的資料庫物件: 表,視圖,序列,索引,同義字
之前查詢所使用的表emp 、dept 都是Oracle內建的資料庫。本次就使用SQL語句來建立我們自己的表。
建立表之前,先瞭解一下資料庫的幾種資料類型和表的命名規則。
資料類型:
varchar2 表示的是一個字串。
number number(n) :表示的是一個整數,數位長度是n 。
number(n,2)表示的是一個小數,小數點後可以保留兩位小數。
date 表示日期的類型,按照標準的日期格式進行存放。
clob 字元資料,最大可達到4G。
blob 表示位元據,最大可以存放4G,例如,存放電影,圖片。
表名和列名的命名規則:
必須以字母開頭;
必須在1-30個字元之間;
必須只能包括含有A-Z ,a-z, 0-9,_,$和#;
不能和使用者定義的其他對象重名;
必須不能是Oracle的保留字;
建表的文法:
CREATE TABLE table_name(
列名稱1 資料類型 [DEFAULT 預設值] ,
列名稱2 資料類型[DEFAULT 預設值] ,
列名稱3 資料類型[DEFAULT 預設值] ,
...
)
例:建立emp1表
SQL> create table emp1(
2 id number(10),
3 name varchar2(20),
4 salary number(12 ,2 ),
5 hiredate date
6 );
Table created
表emp1建立成功。
除了上面的這這種建表的方式,還有第二種方法,該方法依託於已經存在的表。
基本文法:
CREATE TABLE table_nameAS(子查詢) ;
在子查詢中,如果寫的是select * from emp ,或者是 select enamel , sal , hiredate , (具體的列名) from emp ;除了將emp表中列的結構複製過來,連表中的資料也一起複製過來。如果我們只是想複製一個表的結構,而不複製表的內容,則要添加where 條件,即:select * from emp where 1 = 2 ; 此時,只複製表的結構,不會複製表的內容。
修改表 (ALTER TABLE)
使用alter table 語句可以完成:追加新的列,修改現有的列,為新追加的列定義預設值,刪除列,重新命名表的
列名等操作。
追加新的列
基本文法:
ALTER TABLE table_name
add ( 列名 資料類型 預設值) ;
例:為表emp1 ,添加email ,20個字元 ,並設定預設值--無地址
SQL> alter table emp1
2 add(email varchar2(20)) ;
Table altered
SQL> desc emp1 ;
Name Type Nullable Default Comments
-------- ------------ -------- ------- --------
ENAME VARCHAR2(10) Y
SAL NUMBER(7,2) Y
HIREDATE DATE Y
EMAIL VARCHAR2(20) Y
修改現有的列
基本文法:
ALTER TABLE emp1
MODIFY (列名 ,資料類型 ) ;
例:將表emp1 中列salary 的資料類型長度改為50
ALTER TABLE emp1
MODIFY (salary number(50) ) ;
刪除列
基本文法
ALTER TABLE emp1
DROP cloumn 列名 ;
例:刪除上次添加的email列
ALTER TABLE emp1
DROP cloumn email ;
重新命名列
基本文法:
ALTER TABLE table_name
RENAME column old_column_name TO new_column_name ;
例:將emp1表中的列salary重新命名為sal
ALTER TABLE emp1
RENAME cloumn salary TO sal ;
在一般的開發中,很少會對錶的結構進行修改操作,因為在開發的初期,已經對資料庫中表的結構進行了充分的設計。
表的刪除
基本文法:
DROP TABLE table_name ;
例:刪除emp1 表 --- DROP TABLE emp1 ;
表的重新命名:
基本文法:
RENAME old_table_name TO new_table_name ;
清除表
基本文法:
TRUNCATE TABLE table_name ;
如果想保留表的結構,但是清除表中的記錄,可以使用上面的語句,該操作不可恢複。