SQL課堂隨筆第三章
1.資料字典:存放資料庫裡的基本資訊,主要是oracle自己維護 基表: user_*** :當前登入賬號所創關鍵的表 all_ :當前資料庫中有訪問許可權的表 dba_*** :dba維護的表 select * from ***_tables;==>show tables 檢視使用者建立的表 select * from user_tables; SELECT table_name FROM user_tables ; 檢視使用者定義的各種資料庫物件 SELECT DISTINCT object_type FROM user_objects ; 檢視使用者定義的表, 檢視, 同義詞和序列 SELECT * FROM user_catalog ;
檢視: 2.使用者自己定義的表 表名和列名: 必須以字母開頭,在1-30個字元之間
建立表:create 必須具備: CREATE TABLE許可權 使用子查詢建表: CREATE TABLE my_employee AS SELECT employee_id, last_name, salary*12 ANNSAL, hire_date FROM employees WHERE department_id = 80;
ALTER TABLE 語句 追加:add 修改:modify 刪除:drop ALTER TABLE my_employee ADD (job_id VARCHAR2(9));
刪除表 drop:可以回滾操作,不會釋放表空間 truncate語句會釋放表空間,且不能回滾 truncate table 可以使用 DELETE 語句刪除資料,可以回滾 rollback;回滾操作
rename語句改變表名,必須是表的擁有者才可進行此操作 RENAME my_employee TO new_employee;
INSERT 語句語法 一次只能向表中插入一條資料。 (1)INSERT INTO departments(department_id, department_name, manager_id, location_id) VALUES (71, ‘Public Relationss’, 101, 1700); (2)INSERT INTO employees VALUES (114, ‘Den’, ‘Raphealy’, ‘DRAPHEAL’, ‘515.127.4561’, TO_DATE(‘FEB 3, 1999’, ‘MON DD, YYYY’), ‘AC_ACCOUNT’, 11000, NULL, 100, 30); (3)INSERT INTO departments (department_id, department_name, location_id) VALUES (&department_id, ‘&department_name’,&location); &會通過彈窗的方式新增資料 從其他表中拷貝資料不必寫VALUE語句
更新資料:UPDATE UPDATE employees SET department_id = 70 WHERE employee_id = 113; 在 UPDATE 語句中使用子查詢 UPDATE employees SET job_id = (SELECT job_id FROM employees WHERE employee_id = 205), salary = (SELECT salary FROM employees WHERE employee_id = 205) WHERE employee_id = 114;
刪除資料 delete
事物:一組邏輯操作單元,使資料從一組狀態變換到另一種狀態 資料庫事務由以下部分組成: 一個或多個DML語句,一個DDL語句,一個DCL語句 以第一個 DML 語句的執行作為開始 以下面的其中之一作為結束: COMMIT 或 ROLLBACK 語句 DDL 語句(自動提交) 使用者會話正常結束 系統異常終止
回滾到保留點 SAVEPOINT ROLLBACK TO SAVEPOINT
約束 有以下五種約束 1.NOT NULL非空約束 2.UNIQUE唯一約束 3.PRIMARY KEY主鍵約束 4.FOREIGN KEY外來鍵約束 5.CHECK檢查約束 分為:列級約束 表級約束 非空約束只能定義在列上 constraint 約束名稱 約束內容 約束命名習慣:表名_列名_約束型別(nn pk fk uk) 例:CONSTRAINT emp_hire_date_nn
ON DELETE CASCADE(級聯刪除): 當父表中的列被 刪除時,子表中相對應的列也被刪除 ON DELETE SET NULL(級聯置空): 子表中相應的列 置空 CHECK 約束 CONSTRAINT emp_salary_min CHECK (salary > 0), ALTER只能新增或刪除約束,但是不能修改約束 新增 NOT NULL 約束要使用modify 從表 my_employee5中刪除約束 alter table my_employee5 drop constraint my_employee5_sal_ck; enable啟用約束 disable使約束失效
檢視 檢視是一種虛表 CREATE VIEW salvu50 AS SELECT employee_id ID_NUMBER, last_name NAME, salary*12 ANN_SALARY FROM employees WHERE department_id = 50; 刪除檢視 DROP VIEW empvu80;
索引 通過指標加速 Oracle 伺服器的查詢速度 CREATE INDEX emp_last_name_idx ON employees(last_name); 刪除索引 DROP INDEX index;
序列 主要用於提供主鍵值 定義一個序列 CREATE SEQUENCE dept_deptid_seq INCREMENT BY 10 START WITH 120 MAXVALUE 9999 NOCACHE NOCYCLE; 序列在下列情況下出現裂縫: 回滾 系統異常 多個表同時使用同一序列 刪除序列 DROP SEQUENCE dept_deptid_seq;