資料操縱語言(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。