資料操縱語言(DML)

資料操縱語(Data Manipulation Language),簡稱DML

DML主要有四個常用功能。

insert delete update select
# 建立資料庫
create database if not exists stu;
# 使用資料庫
use stu;
# 建立一個表
create table student(
sid int primary key auto_increment,
sname varchar(20) not null,
sex varchar(10)
)charset=utf8;

下面的操作都是基於這個student表進行的。

增添資料(insert)

全列插入(全欄位插入)

-- insert into 表名 values(...);
insert into student values(0,'張三','男');

注意,表結構中有id欄位,雖然設定了主鍵、自增,MySQL可以自動維護,但是,在全列插入的時候,這個位置還必須寫(通常寫 0 ,插入後以實際為準),起到站位作用

結果如下:

部分列插入(插入部分列欄位)

-- insert into 表名(列1,列2,...) values(值1,值2,...);
insert into student(sname, sex) values('李四', '男');
insert into student(sname) values('王五');

結果如下:

同時插入多條資料

-- insert into 表名(列1,...) values(值1,...),(值2,...),(值3,...),...;
insert into student(sname,sex) values
("劉備","男"),("貂蟬","女"),("諸葛亮","男");

結果如下:

複製已有表,生成新表

複製已有表的結構和資料。

-- create table 新表名 select * from 已有表名;
-- 建立一個student1表,表的結構和資料均來自於student表。
create table student1 select * from student;

結果如下:

只複製已有表的結構(得到的是一個空結構表)。

-- create table 新表名 selsct * from 已有表名 where 0;
-- 建立一個student2表,只複製student表的結構,不要裡面的資料。
create table student2 select * from student where 0;

結果如下:

簡單的查詢語句(select)

全欄位查詢

-- srcect * from 表名;
-- * 表示全部
select * from student;

結果如下:

指定欄位查詢

-- select 列名 from 表名;
select sname from student;
select sname, sex from student;

結果如下:

帶條件的查詢

-- select 列名 from 表名 where 查詢條件;
-- 查詢sex為女的人
select sname from student where sex='女';

結果如下:

修改資料update

update語句要配合where篩選,進行使用,否則修改的就是整張表的記錄。

-- update 表名 set 列1=值1,列2=值2,列3=值3,…… where 條件;

-- 把sid為3的王五的姓名,改為趙六。
update student set sname="王八" where sid = 3; -- 把sid為6的諸葛亮的名字改為孔明,性別改為猛男。
update student set sname="孔明",sex="猛男" where sid=6;

結果如下:

刪除資料delete

  • delete為物理刪除(一旦刪除就徹底沒有了)
  • update和delete語句要配合where篩選,進行使用,否則刪除的就是整張表的記錄。
-- delete from 表名 where 條件;

delete from student where sname="張三";

結果如下:

truncate和delete的區別

有如下表

  • delete刪除

  • truncate清空

truncate和delete的區別:

  • 都是不修改結構,只清除資料。

  • delete刪除不釋放資源,truncate釋放表佔用的空間(會重置主鍵自增)。

  • delete是逐行刪除,刪除記錄是作為事務記錄在日誌檔案中,可進行回滾操作。truncate一次性刪除表中所有資料,刪除記錄不會記錄在日誌檔案中,無法恢復,刪除效率高於delete。