表的創建及管理
對於數據庫而言實際上每一張表都表示的是一個數據庫對象,而在數據庫對象值的就是DDL定義的所有操作,例如:表、視圖、序列、約束等,都屬於對象的操作,所以表的建立就是對象的建立,而對象的操作主要分為以下三類語法:
.創建對象:Create 對象名稱...;
.刪除對象:Drop 對象名稱...;
.修改對象:Alter 對象名稱...;
1、常用的數據字段
No 數據類型 描述
1 varchar(n) 其中n表示字符串所能保存的最大長度,基本上200個左右的內容
2 number(n) 表示最多為n位整數,有時候可以使用INT代替
3 number(n,m) 其中m為小數位,n-m為整數位,有時候也可以使用Float代替
4 date 存放日期-時間
5 clob(大文本) 可以存儲海量文字(容量為4G),例如:<<三國>>、<<紅樓夢>>
6 blob(大對象) 存放二進制數據(電影、音樂、圖片、文字)
綜上:一般在開發之中使用最多的:varchar\number\date\clob,對於blob字段一般使用較少,首先blob可以存放4G的二進制數據,但是存放了,一是數據庫過於龐大,二是讀取不方便;其實可以用另一個替代。
表的創建:Create table 表名稱(
字段1 數據類型 [default 默認值],
字段2 數據類型 [default 默認值],
... ...
字段n 數據類型 [default 默認值]
);
范例:Create table student ( name varchar(50) default '無名', age number(3), birthday Date Default SYSDATE,
content clob );表創建成功后,向表中增加數據:
insert into student(name,age,birthday,content) values('張三',20,TO_DATE('1990-08-12'),'一個好人');
insert into student(age,content) values(20,'一個好人');表的創建屬於數據庫對象的創建,所以使用的是Create語法。
---------------------
表的復制語法: create table 復制表 as 子查詢;
范例:create table emp2 as select * from emp;
范例:現在要求只復制表的結構,不要數據,只需寫一個滿足不了的條件即可。
Create table empNull select * from emp where 1=2;
以上這些語法只是Oracle數據庫特有的操作,其他的數據庫有些區別。
---------------------
為表重命名
在Oracle之中,所有的數據實際上都是通過數據字典保存,而在Oracle中,提供了三種類型的數據字典,最常用的是:dba_、user_,所以下面查詢一個user_tables數據字典:select * from user_tables;
也就是說Oracle中的所有的數據都是按照文件保存的,那么所有的內容都會在數據字典中注冊,既然這樣,所謂的修改表名稱
Rename 原表名 to 新表名;
---------------------
截斷表
曾經用過刪除表數據的操作,使用的是Delete操作,但是這種刪除操作本身有一個特點,即:可以進行事務的回滾,也就是說刪除之后並不會立刻釋放數據的資源,如果現在希望徹底釋放掉一張表所占用的全部資源(表空間、索引等)就可以使用截斷表的語法,此語法如下:Truncate table 表名;(oralce特有的語法操作)。
---------------------
表的刪除
表的刪除操作指的是數據庫對象的刪除,既然是刪除則使用Drop語句,刪除表的語法如下:
drop table 表名;
---------------------
Oracle 的新特性閃回技術
在10g之后,為了預防用戶的誤刪表操作,專門提供了回收站的功能,用戶所刪除的表默認情況下會在一個回收站之中保存,而用戶也可以通過回收站,進行表的恢復,因此稱為閃回(flashback);
范例:查看回收站
show RECYCLEBIN;這個時候可以發現所有已經刪除的表都在回收站之中保存,那么下面就可以使用如下的語法恢復表: FlashBack table 表 to BEFORE DROP;
范例:恢復myemp表
flashback table myemp to before drop;當然,現在也可以直接刪除掉回收站中的一些數據,語法如下:purge table 表名;
范例:刪除回收站中的student表
purge table student;
范例:清空回收站
purge RECYCLEBIN;
如果現在希望刪除一張表,而又不希望其進入到回收站之中,則可以在刪除的時候增加purge。
范例:drop table 表名 purge;(10g后有的閃回技術
--------------------
修改表的結構實際上就是數據庫對象的修改操作,使用Alter指令完成:例如有一張表:
Create table member(
mid number, name varchar(10) );
現在要想對該表進行增加字段,有以下語法完成:
Alter table 表名 Add(列名 數據類型 [default 默認值][, 列名 數據類型 [default 默認值],...]);
范例:為member表增加字段
Alter table member add( age number(3), birthday date default SYSDATE);
如果增加的數據列沒有默認值,則所有已有的數據的列的內容都是null,而如果增加的列指定了default默認值的話,則所有已有的數據列都是沒有設置的默認值。
同時也可以修改已有的表結構,此時語法如下:
Alter table 表名 modify(列名 數據類型 [default 默認值] [,列名 數據類型 [default 默認值],...]);
范例:將name字段的默認值定義為無名
Alter table member modify( name varchar(10) default '無名');
對於平台受限的數據庫來說,性能最好的是Db2,而對於跨平台的數據庫來說,性能最好的是Oracle,同時在db2中是不允許修改表結構的,即:表建立完成后就不能修改了,所以在開發之中盡可能不要去修改表結構。
提醒:關於軟件項目開發的基本流程:
1、獲取需求--->從客戶中獲取需求(軟件銷售)
2、需求分析--->根據客戶需求
3、業務分析,數據庫及接口設計;-->數據表設計
4、編碼實現-->業務梳理
5、軟件測試
6、軟件培訓及項目維護
----------------------------------------------
編寫數據庫腳本的格式要求如下:
1、腳本文件名稱的后綴必須是“.sql“;
2、先刪除相應的數據表;
例如:drop table nation purge;
3、編寫創建表的語句;
例如:Create table nation( name varchar(10));
4、增加測試數據;
例如:insert into nation(name) values('中國');
insert into nation(name) values('美國');
insert into nation(name) values('巴西');
insert into nation(name) values('荷蘭');
5、事務提交
例如:commit;
----------------------------------------------
