oracle數據庫SQL開發之創建和維護表
一、數據定義語言
–數據定義語言: (Data Definition Language,DDL) 是SQL語言集中負責數據結構定義與數據庫對象定義的語言,由create、alter與drop,rename,truncate語法所組成。
二、數據庫對象
–數據庫對象,是數據庫的組成部分,有表、約束、索引、視圖、序列、同義詞、觸發器、存儲過程、函數等
Oracle中數據庫對象命名原則
– 必須由字母開始,長度在 1–30個字符之間。
– 名字中只能包含 A–Z, a–z, 0–9, _ (下劃線),$ 和 #。
– 同一個Oracle服務器用戶所擁有的對象名字不能重複。
– 名字不能爲Oracle的保留字。
– 名字是大小寫不敏感
三、創建表
(一)創建數據表 create table 表名
1.直接創建
CREATE TABLE course(表名)
(
course_no NUMBER(4),
course_name VARCHAR(20),
tearcher VARCHAR(12),
credit NUMBER(2) DEFAULT 4 --默認值
)
2…用子查詢語法創建表
CREATE TABLE dept10
AS
SELECT empno, ename, sal +1000 newSalary
FROM emp
WHERE deptno = 10;
Select列表中的表達式列需要給定別名,如果沒有別名會產生錯誤
(二)數據類型
字符(串)型
(1)char(size) 固定長度字符型數據,長度的大小以字節爲單位,默認和最小長度爲1;最大長度爲 2000;
(2)varchar2(aize) 可變長度字符數據,最小長度是 1;最大長度是4000
(3)clob 可變長度字符數據,最大可存儲4G數據
數值型
(1)number 數值型:可以表示整數,也可以表示小數,表數範圍- 10的 125次方到10的126次方。
(2)number(n) 整型
(3)number(p,s) 數值型:總長度爲p,小數位最大爲s位 ,整數位最大爲p-s位,p的 範圍從1到38,s的範圍從-84到127
日期型
(1)date 包括年月日時分秒
(2)timestamp 精度比DATE更高一些,可以精確到毫秒
圖片類型
(1)blob 最大可存儲4G二進制的數據,可以存放圖片,聲音 ,文件
四、修改表(列數據) --alter table 表名
1.新增列 alter table…add… --不能指定新添加列的位置,新列會成爲最後一列。
alter table dossier add (sex CHAR(1));
2. 修改列 alter table…modify(列名 …) --列的修改可以修改列名,數據類型,長度,及默認值
8i版本之後,可以修改列名字
– alter table 表名 rename column 原有列名 to 新列名 。
把dossier表性別(sex) 列,修改爲長度爲2 ----alter table dossier modify (sex char(2));
添加默認值
-alter table dossier modify (sex default ‘ 男’);
3.刪除列 alter table…drop…
刪除列原則:
• 列可以有也可以沒有數據。
• 表中至少保留一列。(要有表的樣子)
• 列被刪除後,不能再恢復。
• 被外鍵引用的列,不能被刪除
五、刪除表 drop table(表名)
– 刪除表權限:
• 只有表的創建者
• 或具有drop any table權限的用戶才能刪除表
– 刪除表原則:
• 表中所有的數據和結構都被刪除。
• 任何視圖和同義詞被保留但無效。
• 所有與其相關的約束和索引被刪除。
• 任何未完成的事務被提交。
六、重新命名錶
必須是對象的所有者(權限問題)
**rename 舊錶名 to 新表名;**
七、截斷表 ----truncate table 表名;
• 執行truncate語句的前提,必須是表的所有者
• 或者有delete any table系統權限來截斷表。
truncate 和delete區別:
– truncate是DDL,只能刪除表中所有記錄,釋放存儲空間,使用rollback不可以回滾。
– delete是DML,可以刪除指定記錄,不釋放存儲空間,使用rollback可以回滾。
八、數據字典 ----由Oracle 服務器創建和維護的表
數據字典表的數據是由oracle自動維護的相關數據字典
– 查詢數據字典
select table_name from user_tables
– 查看數據字典結構
desc user_tables