六、總計
1、 查詢其他用戶的表
a) 其他用戶的表不屬於本用戶的空間
b) 如果要查詢其他用戶下的表,要使其他用戶的用戶名作爲前綴。
i. Select * from userB.employees;
ii. Select * from userA.employees;
2、 Default值或者是僞列都是非法的
a) 執行insert操作時,可以爲其指定默認值
b) 值、表達式和sql語句都可以作爲默認值
c) 其他的列名
d) 默認值的類型必須和該列的類型一致
CREATE TABLE hire_dates (hire_date DATE DEFAULT SYSDATE);
3、 創建表
a) 語法
CREATE TABLE dept(deptno NUMBER(2),
dname VARCHAR2(14),
loc VARCHAR2(13));
b) 確認
DESCRIBE DEPT
4、 數據類型
5、 使用子查詢創建表
a) 使用As subquery 選項,創建表和插入數據結合起來
1. CREATE TABLE table [(column ,clumn …)]
As subquery;
b) 指定的列和子查詢中的列要一一對應
c) 通過列名的默認值定義列
例:CREATE TABLE dept80
AS
SELECT employee_id, last_name,
salary*12 ANNSAL,
hire_date
FROM employees
WHERE department_id = 80;
Table created.
6、 ALTER TABLE語句
a) 追加新的列
ALTER TABLE talbe ADD(column datatype [DEFAULT expr] [,column datatype]…);
b) 修改現有的列
ALTER TABLE talbe MODIFY(column datatype [DEFAULT expr] [,column datatype]…);
c) 爲新追加新的列定義默認值
ALTER TABLE talbe DROP(column datatype [DEFAULT expr] [,column datatype]…);
d) 刪除一個列
ALTER TABLE table_name rename column old_column_name to new_column_name
7、 刪除表
a) 數據和結構都被刪除
b) 所有正在運行的相關事務被提交
c) 所有相關索引被刪除
d) DROP TABLE 語句不能回滾
8、 改變對象的名稱
a) 執行RENAME語句改變表,視圖,序列,或同義詞的名稱
RENAME dept TO detail_dept Table renamed
b) 必須是對象的擁有者
9、 清空表
a) TRUNCATE TABLE 語句
i. 刪除表中所有的數據
ii. 釋放表的存儲空間
TRUNCATE TABLE detail_dept;
Table truncated。
b) TRUNCATE語句不能回滾
c) 可以使用DELETE語句刪除數據
10、 約束
a) 約束是表一級的限制
b) 如果存在依賴關係,約束可以防止錯誤的刪除數據
c) 約束的類型
i. NOT NULL
ii. UNIQUE
iii. PRIMARY KEY
iv. FOREIGN KEY
1. FOREIGN KEY: 在子表中,定義了一個表級的約束
2. REFERENCES: 指定表和父表中的列
3. ON DELETE CASCADE: 當刪除父表時,級聯刪除子表記錄
4. ON DELETE SET NULL: 將子表的相關依賴記錄的外鍵值置爲null
4.
v. CHECH
1. 引用CURRVAL, NEXTVAL, LEVEL, 和ROWNUM
2. 調用SYSDATE, UID, USER, 和USERENV 函數
3. 另一個表的查詢記錄
11、 約束規則
a) 用戶可以自定義約束,也可以使用Oracle Server的sys_cn格式命名約束
b) 約束創建的時機:
i. 創建表的時候,同時創建約束
ii. 表結構創建完成後
C) 約束可以定義在列一級,或者是表一級
D)通過數據字典看約束