MySQL_DML語言(數據的刪、改、增)

# DML語言
/*
數據操作語言:
插入:insert
修改:update
刪除:delete
*/

# 一、插入語句(方式一)
/*
語法:

insert into 表名 (列名1,列名2,...) values(值1,值2,,...);


1.插入的值的類型要與列的類型一致或兼容
*/


# 1.插入的值的類型要與列的類型一致或兼容
INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUES(13,'唐藝昕','女','1990-4-23','13988118888',NULL,2);

SELECT * FROM beauty;

# 2.不可以爲null的列必須插入值,可以爲null的列,如何插入值

# 方式一(列名寫着,null填充
# 直接寫null):
# 如上例所示

# 方式二(列名和值都省略
# 沒填的值如果有默認值,就爲默認值,如果沒有默認值,就是null):
INSERT INTO beauty(id,NAME,sex,borndate,phone,boyfriend_id)
VALUES(14,'金星','女','1980-4-23','13964518888',2);

INSERT INTO beauty(id,NAME,sex,phone)
VALUES(15,'娜扎','女','13978918888');

# 3.列的順序是否可以調換
INSERT INTO beauty(NAME,sex,id,phone)
VALUES('蔣欣','女',16,'110');

# 4.列數和值的個數必須一致

# 5.可以省略列名,默認是所有列,而且列的順序和表中的順序一致
INSERT INTO beauty
VALUES(18,'張飛','男',NULL,'119',NULL,NULL);

# 方式二:
/*
語法:
insert into 表名
set 列名=值,列名=值1,...
*/

INSERT INTO beauty
SET id=19,NAME='劉濤',phone='999';

# 兩種方式VS

# 1.方式一支持插入多行,但方式二不支持
INSERT INTO beauty
VALUES(20,'張飛1','男',NULL,'119',NULL,NULL)
,(21,'張飛2','男',NULL,'119',NULL,NULL)
,(22,'張飛3','男',NULL,'119',NULL,NULL);

# 2.方式一支持子查詢,但方式二不支持
INSERT INTO beauty(id,NAME,phone)
SELECT 23,'宋茜','18354534';

# 修改語句

/*
1.修改單表的記錄

語法:
update 表名
set 列=新值,列=新值,...
where 篩選條件;

2.修改多表的記錄

語法:
sql92語法:
update 表1 as 別名, 表2 別名
set 列=值,...
where 連接條件
and 篩選條件

sql99語法:
update 表1 as 別名, 表2 別名
inner|left|right join 表2 別名
on 連接條件
set 列=值,...
where 篩選條件
*/

# 1.修改單表的記錄
# 案例1:修改beauty表中姓張的女神的電話爲123456789

UPDATE beauty
SET phone='123456789'
WHERE NAME LIKE '張%';

# 案例2:修改boys表中id爲2的名稱爲張飛,魅力值爲3

UPDATE boys SET boyName='張飛',usercp=10
WHERE id=2;

# 2.修改多表的記錄
# 案例1:修改張無忌的女朋友的手機號爲114

UPDATE boys AS bo
INNER JOIN beauty AS b
ON bo.`id`=b.`boyfriend_id`
SET b.`phone`='114'
WHERE bo.`boyName`='張無忌';

# 案例2:修改沒有男朋友的女神的男朋友編號都改爲2號

UPDATE boys AS bo
RIGHT JOIN beauty AS b
ON bo.`id`=b.`boyfriend_id`
SET b.`boyfriend_id`=2
WHERE b.`boyfriend_id` IS NULL;

# 三、刪除語句
/*
方式一:delete
語法:

1.單表的刪除
delete from 表名 where 篩選條件

2.多表的刪除
sql92語法:
delete 表1的別名(表2的別名)
from 表1 as 別名,表2 as 別名
where 連接條件
and 篩選條件;

sql99語法:
delete 表1的別名(表2的別名)
from 表1 as 別名
inner|left|right join 表2 別名
on 連接條件
where 篩選條件;

方式二:truncate
語法:truncate table 表名;


*/

# 方法一:delete
# 1.單表的刪除
# 案例1:刪除手機號以9結尾的女神信息

DELETE FROM  beauty WHERE phone LIKE '%9';
SELECT * FROM beauty;

# 2.多表的刪除
# 案例:刪除張無忌女朋友的信息

DELETE b
FROM beauty AS b
INNER JOIN boys AS bo
ON b.`boyfriend_id`=bo.`id`
WHERE bo.`boyName`='張無忌';

# 案例:刪除黃曉明的信息以及他女朋友的信息
DELETE b,bo
FROM beauty AS b
INNER JOIN boys AS bo
ON b.`boyfriend_id`=bo.`id`
WHERE bo.`boyName`='黃曉明';

# 方式二:truncate 語句
TRUNCATE TABLE boys;
# 一刪全刪

# delete vs trunca
/*
1.delete 可以加where條件,truncate不能加
2.truncate如果清空表效率會高一些
3.假如要刪除的表中有自增長列,如果用delete剔除後,再加入數據,自增長列的值從斷點開始,
 而truncate刪除後,再插入數據,自增長列的值從1開始。
4. truncate刪除後沒有返回值,delete刪除後有返回值
5.truncate刪除不能回滾,delete刪除後可以回滾

*/

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章