DDL和DML


DDL (Data Definition Language 數據定義語言)
create table 創建表    
alter table  修改表   
drop table 刪除表   
truncate table 刪除表中所有行    
create index 創建索引   
drop index  刪除索引 
當執行DDL語句時,在每一條語句前后,oracle都將提交當前的事務。如果用戶使用insert命令將記錄插入到數據庫后,執行了一條DDL語句(如create table),此時來自insert命令的數據將被提交到數據庫。當DDL語句執行完成時,DDL語句會被自動提交,不能回滾。 
DML (Data Manipulation Language 數據操作語言)
insert 將記錄插入到數據庫 
update 修改數據庫的記錄 
delete 刪除數據庫的記錄 
當執行DML命令如果沒有提交,將不會被其他會話看到。除非在DML命令之后執行了DDL命令或DCL命令,或用戶退出會話,或終止實例,此時系統會自動發出commit命令,使未提交的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;

clip_image002

Ø 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

);

clip_image004

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;

clip_image006

插入數據時忽略字段則是全列插入,順序不能錯誤,如下:

INSERT INTO testemp VALUES (10,'李四','F',sysdate);

COMMIT;

Ø UPDATE

更新表中的記錄,需要配合WHERE子句使用,否則全表的數據都會被更新。

演示:更新testemp表中張三的ID為2

UPDATE testemp SET id=2 WHERE name='張三';

COMMIT;

clip_image008

同時修改兩個類型:

UPDATE testemp SET id=5,name='王五' WHERE name='李四';

COMMIT;

Ø DELETE

刪除表中的記錄,和UPDATE一樣,需要配合WHERE子句使用,不然會將全表數據刪除。

演示:將testemp表中id為2的記錄刪除

DELETE FROM testemp WHERE id=2;

清空表:

DELETE FROM testemp;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM