資料操縱語言(DML)
資料操縱語(Data Manipulation Language),簡稱DML,
DML主要有如下幾個常用功能,
| 增 | 刪 | 改 |
|---|---|---|
| insert | delete | update |
# 創建資料庫
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;
結果如下:

修改資料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為物理洗掉(一旦洗掉就徹底沒有了)
- delete陳述句要配合where篩選,進行使用,否則洗掉的就是整張表的記錄,
-- delete from 表名 where 條件;
delete from student where sname="張三";
結果如下:

邏輯洗掉
注意:其實就是一個修改操作,以下兩個陳述句配合使用
-- 添加一個欄位
alter table `student` add `isdelete` enum(1,0) default 0;
-- 把不想看到資料 isDelete 設定為 1
update student set isdelete=1 where sid=6;
-- 然后顯示的時候把 isDelete=1 的值過濾
select * from student where isdelete=0;
注意:delete 屬于物理洗掉,一旦洗掉,資料就不存在,因此,重要資料建議用
邏輯洗掉,不重要資料采用 delete 洗掉
truncate和delete的區別
有如下表

- delete洗掉

- truncate清空

truncate和delete的區別:
-
都是不修改結構,只清除資料,
-
delete洗掉不釋放資源,truncate釋放表占用的空間(會重置主鍵自增),
-
delete是逐行洗掉,洗掉記錄是作為事務記錄在日志檔案中,可進行回滾操作,truncate一次性洗掉表中所有資料,洗掉記錄不會記錄在日志檔案中,無法恢復,洗掉效率高于delete,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/286053.html
標籤:MySQL
