DDL與DML語句
1. DDL語句
SQL語句:結構化查詢語句,使用SQL與數據庫“溝通”,完成相應的數據庫操作。
l DDL:數據定義語言,用來維護數據庫對象
1.1 創建表
? CREATE:創建表
演示:創建員工表
CREATE TABLE employee( id NUMBER(4), name VARCHAR2(20), gender CHAR(1), birth DATE, salary NUMBER(6,2), job VARCHAR2(30), deptno NUMBER(2) ); |
? DESC:查看表的數據結構
演示:查看創建的員工表
DESC employee; |
? DEFAULT:設置默認值
可以通過DEFAULT子句給列指定默認值
演示:建表時給gender默認值為”M”
CREATE TABLE emptest( id NUMBER(4), name VARCHAR2(20), gender CHAR(1) DEFAULT ‘M‘, birth DATE ); |
? NOT NULL:非空
默認情況下,任何列都允許有空值。非空(NOT NULL)是一種條件約束,用於確保字段值不為空,當某個字段被設置了非空約束條件,這個字段中必須存在有效值,即:當執行插入數據操作時,必須提供這個列的數據;當執行更新操作時,不能給這個列的值設置為NULL。
演示:創建員工表設置那麽為非空字段
CREATE TABLE emptest( id NUMBER(4) , name VARCHAR2(20) NOT NULL, gender CHAR(1) DEFAULT ‘M‘, birth DATE ); |
1.2 修改表
? RENAME:修改表名
演示:修改表名
RENAME emptest to testemp; |
? ALTER TABLE的ADD子句
增加列,列只能增加在最後,不能插入現有的列中。
演示:在testemp表下面增加hiredate列,並將默認值設置為當前時間
ALTER TABLE testemp ADD(hiredate DATE DEFAULT sysdate); |
? ALTER TABLE的DROP子句
刪除列,刪除字段需要從每行中刪掉該字段占據的長度和數據,並釋放在數據塊中占據的空間,如果表記錄比較大,刪除字段可能需要比較長的時間。
演示:刪除testemp表下的hiredate
ALTER TABLE testemp DROP (hiredate); |
? DROP刪除表
DROP TABLE emptest; |
? ALTER TABLE的MODIFY子句
修改列,使用MODIFY可以改變表中列的數據類型、長度和默認值,註意這種修改僅對以後插入的數據有效。另外如果表中已經有數據的情況下,把長度由大改小,有可能不成功,比如原來類型是VARCHAR2(100),其中已經存放了100字節長度的數據,如果改為80字節,則不會修改成功。
演示:修改testemp表中name的長度為30
ALTER TABLE testemp MODIFY(name VARCHAR2(30)); |
2. DML語句
l 用於增刪改表中數據,DML是伴隨TCL事務控制的。
? INSERT
INSERT語句用來給數據表增加記錄,每次增加一條記錄。所有的DML操作,需要再執行事務提交語句COMMIT才算真正確認了此操作。
演示:想testemp中插入一條記錄
INSERT INTO testemp (id,name,gender) VALUES (1,‘張三‘,‘M‘); COMMIT; |
插入數據時忽略字段則是全列插入,順序不能錯誤,如下:
INSERT INTO testemp VALUES (10,‘李四‘,‘F‘,sysdate); COMMIT; |
? UPDATE
更新表中的記錄,需要配合WHERE子句使用,否則全表的數據都會被更新。
演示:更新testemp表中張三的ID為2
UPDATE testemp SET id=2 WHERE name=‘張三‘; COMMIT; |
同時修改兩個類型:
UPDATE testemp SET id=5,name=‘王五‘ WHERE name=‘李四‘; COMMIT; |
? DELETE
刪除表中的記錄,和UPDATE一樣,需要配合WHERE子句使用,不然會將全表數據刪除。
演示:將testemp表中id為2的記錄刪除
DELETE FROM testemp WHERE id=2; |
清空表:
DELETE FROM testemp; |
DDL與DML語句