1. 程式人生 > >DDL與DML語句

DDL與DML語句

插入數據 指定 def 1.2 技術分享 不能 事務提交 alter date

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語句