SQL學習筆記系列(三)DML語言的學習

插入

插入方式一語法

insert into 表名(字段名/列名,...)
values(值1,...);

特色

#1.字段類型和值類型一致或兼容,並且一一對應(插入的值的類型要與列的類型一致或兼容)
INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUE(13,'唐藝昕','女','1990-4-23','1898888888',NULL,2);
SELECT *
FROM beauty

#2.不能夠爲null的列必須插入值,能夠爲空的字段,能夠不用插入值,或用null填充
#用null填充
INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUE(13,'唐藝昕','女','1990-4-23','1898888888',NULL,2);

#不插入
INSERT INTO beauty(id,NAME,sex,borndate,phone,boyfriend_id)#直接刪去photo,沒有輸入的會自動輸入默認值
VALUE(14,'金星','女','1990-4-23','1398888888',2);

#3.列的順序能夠調換,須要一一對應
INSERT INTO beauty(NAME,sex,id,phone)
VALUES('蔣欣','女',16,'110')

#4.列數和值的個數必須一致
INSERT INTO beauty(NAME,sex,id,phone,boyfriend_id)
VALUES('關曉彤','女',17,'110');#會報錯,列數和值的個數不一致

#5.能夠省略列名,默認全部列,並且列的順序和表中的順序一致
INSERT INTO beauty
VALUES(18,'張飛','男',NULL,'119',NULL,NULL);

插入方式二語法

insert into 表名(字段名/列名,...)
set 列名=值,列名=值,...

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

兩種方式pk

#1.方式一支持插入多行,方式二不支持
INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUE(23,'唐藝昕1','女','1990-4-23','1898888888',NULL,2),(24,'唐藝昕2','女','1990-4-23','1898888888',NULL,2),(25,'唐藝昕3','女','1990-4-23','1898888888',NULL,2);

#2.方式一支持子查詢,方式二不支持
insert into beauty(id,name,phone)
select 26,'宋茜','11809866';

修改

修改單表語法(重點)

update 表名 
set 字段=新值,字段=新值;
【where 篩選條件】

#案例1 修改beauty表中姓唐的女神的電話爲13899888899
UPDATE beauty 
SET phone='13899888899'
WHERE NAME LIKE'唐';

#案例2 修改boys表中的id號爲2的名稱爲張飛,魅力值爲10
UPDATE boys
SET boyname='張飛',usercp=10
WHERE id=2;

修改多表語法(補充用,量力而爲)

#92語法
update 表1 別名1,表2 別名2
set 字段=新值,字段=新值
where 鏈接條件
and 篩選條件

#99語法
update 表1 別名1
inner/left/right joiin 表2 別名2
on 鏈接條件
set 列=新值,列=新值
where 篩選條件
and 篩選條件

#案例1:修改張無忌的女友手機號爲114
UPDATE boys bo
INNER JOIN beauty b 
ON bo.id=b.`boyfriend_id`
SET b.`phone`='114'
WHERE bo.`boyName`='張無忌'

#案例2:修改沒有男友的女神的男友編號都爲2號
UPDATE boys bo
RIGHT JOIN beauty b 
ON bo.`id`=b.`boyfriend_id`
SET b.`boyfriend_id`=2
WHERE b.`id` IS NULL;

刪除

方式1:delete語句

單表的刪除 ★

delete 
from 表名 
【where 篩選條件】

#案例1 刪除手機號以9結尾的女神信息
DELETE 
FROM beauty
WHERE phone LIKE'%9';

多表的刪除

#92語法
delete 別名1,別名2
from 表1 別名1,表2 別名2
where 鏈接條件
and 篩選條件;

#99語法
delete 表1的別名,表2的別名
from 表1 別民
inner/left/right join 表2 別名 
on 鏈接條件
where 篩選條件

#案例1:刪除張無忌的女友的信息
DELETE b
FROM beauty b
INNER JOIN boys bo
ON b.`boyfriend_id`=bo.`id`
WHERE bo.`boyName`='張無忌'

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

方式2:truncate語句

truncate table 表名#所有表的數據都刪除

#案例:將魅力值>100的男神信息刪除
TRUNCATE TABLE boys;#實際上這樣行不通,	truncate table不能加where,只能全刪

兩種方式的區別【面試題】

#1.truncate不能加where條件,而delete能夠加where條件

#2.truncate的效率高一丟丟

#3.truncate 刪除帶自增加的列的表後,若是再插入數據,數據從1開始(truncate 刪除再插入能夠理解爲刪除後建立新表)
#delete 刪除帶自增加列的表後,若是再插入數據,數據從上一次的斷點處開始(delete 刪除再插入能夠理解爲刪除後續表)

#4.truncate刪除沒有返回值,delete刪除有返回值,告訴你有多少行受影響)

#5. truncate刪除不能回滾,delete刪除能夠回滾
相關文章
相關標籤/搜索