DML(Data Manipulation Language)資料操縱語言,SQL的分類之一,此外還有DDL(Data Definition Language)資料定義語言 (Data Definition Language)和DCL(Data Control Language)資料控制語言。DML包括:INSERT、UPDATE、DELETE。注意,select語句屬於DQL(Data Query Language)。
- DML(Data Manipulation Language – 資料操作語言) 可以在下列條件下執行:
- • 向表中插入資料
- • 修改現存資料
- • 刪除現存資料
- 1、插入語句
- 使用 INSERT 語句向表中插入資料。
- INSERT INTO table [(column [, column...])]
- VALUES (value [, value...]);
- 使用這種文法一次只能向表中插入一條資料
- //向users表中插入一條完整的記錄
- SQL> insert into users(username,password,name,address,zip) values('rrmy','1234','紅軍','北京',100089);
- 備忘:如果是字串加’’ 如果是數字可與加’’也可以不加===>一般不加
- SQL> commit;
- 注意:Oracle資料庫在DOS命令中執行插入,修改等操作時,必須手動完成提交。否則不會(正真)插入成功。
- 在插入完整的記錄是users()中的表對應的欄位可以省略不寫.但一定要與資料庫中表的結構對應才行。
- //向users表中插入一條非完整的記錄
-
- SQL> insert into users(username,password) values('mj','123');
- //注意:在插入部分子段的時候,必須滿足的表的約束條件,否則會出現如下異常資訊。
- insert into users(username,password) values('mj','123')
- RA-01400: 無法將 NULL 插入 ("RED"."USERS"."NAME")
- SQL> insert into users(username,password,name) values('mj','123','馬傑');
- 1 row inserted
- SQL> commit; //必須手動提交
- Commit complete
- 以上簡單總結如下:
- 為每一列添加一個新值。
- 按列的預設順序列出各個列的值。
- 在 INSERT 子句中隨意列出列名和他們的值。
- 字元和日期型資料應包含在單引號中。
-
- 補充知識點:
- 隱式方式: 在列名表中省略該列的值
- SQL> insert into users(username,password,name) values('mj','123','馬傑');
- 顯示方式: 在VALUES 子句中指定空值。
- SQL> insert into users values('test','123','test',null,null);
-
- 常見面試題:
- //備份一張表
- SQL> create table usess as select * from users;
- //清空表中的記錄
- SQL> delete from usess;
- //使用插入語句把users表中記錄插入到usess中
- SQL> insert into usess(username,password,name,address,zip) select username,password,name,address,zip from users;
- SQL> commit
- 注意:
- 不必書寫 VALUES 子句。
- 子查詢中的值列表應於 INSERT 子句中的列名對應
-
-
- 2、更新資料
- 採用update文法進行更新資料:
- 文法如下:
- UPDATE table
- SET column = value [, column = value, ...]
- [WHERE condition];
- 備忘:一次可以更新多條記錄
- //更新資料:更新users表 重新設定了passwrod 條件是唯一(主鍵是唯一)的條件。
- SQL> update users set password='redarmy' where username='redarmy';
- SQL> commit
- 注意:當更新多個欄位時,可以採用逗號進行區分.舉例如下:
- SQL> update users set password='redarmy' , name='陳紅軍' where username='rrmy';
- SQL> commit
- 備忘:如果省略WHERE子句,則表中的所有資料都將被更新
- SQL> update users set password='redarmy' , name='陳紅軍';
- 6 rows updated
- SQL> commit;
- Commit complete
- SQL> select * from users;
- USERNAME PASSWORD NAME ADDRESS ZIP
- -------------------- -------------------- -------------------- -------------------- -------
- huxz redarmy 陳紅軍 北苑家園 100012
- liucy redarmy 陳紅軍 清華園 100084
- redarmy redarmy 陳紅軍 北京 100089
- rrmy redarmy 陳紅軍 北京 100089
- mj redarmy 陳紅軍
- test redarmy 陳紅軍
- 6 rows selected
-
- 補充:在update語句中使用子查詢
- //更新huxz的郵編與使用者liucy的郵編一致
- SQL> update users set zip=(select zip from users where username='liucy') where username='huxz';
- //備忘:在更新資料的時候 where條件中也可以使用子查詢。
- 3、刪除資料
- 在表中如果某些資料不在需要就可以使用delete語句進行刪除,並釋放該資料所佔用的儲存空間刪除文法如下:
- DELETE [FROM] table
- [WHERE condition];
- 備忘:delete語句只是從表中刪除資料,不會刪除表結構.刪除表結構採用drop語句。
- 注意:刪除表中的資料時,一定要考慮表的約束(否則會出現一些異常資訊)
- //清空表 delete from 表名 ||delete 表名
- //刪除資料 where條件與更新一致,必須保證唯一性(主鍵是唯一)條件
- SQL> delete from users where username='test';