DML語言
- 插入:insert
- 修改:update
- 刪除:delete
一、插入語句
方式一
語法
insert into 表名(列名,....)
values(值1,...) 值要與列名對應
1.插入的值類型要與列的類型一致或兼容
insert into beauty(id,name,sex,borndate,phone,photo,boyfriend_id)
values(13,'肥清','女','1990-4-23','1112332','1',2)
2.不可以爲null的列必須插入值,可以爲null的列插入值的方法有兩種
(1)直接在對應列加上null
(2)不顯式的給它賦值,系統將默認給其賦值爲null
3.列的順序可以調換
4.列數和值的個數必須一致
5.可以省略列名,默認所有列。而且列的順序和表種列的順序是一致的
方式二
語法
insert into 表名
set 列名=值,列名=值,...
兩種方法的區別
1.方式一可以插入多行,方式二不支持
insert into student
values(1,'張三','男'),
values(2,'李四','男');
2.方式一支持子查詢,方式二不支持
insert into student
select 26,'王五';
這個會將王五插入到表裏
3.在mysql從多個表中組合字段然後插入到一個新表中,通過一條sql語句實現。具體情形是:有三張表a、b、c,現在需要從表b和表c中分別查幾個字段的值插入到表a中對應的字段。對於這種情況,我們可以使用如下的語句來實現:
insert into db1_name(field1,field2) select field1,field2 from db2_name
對於多個表,需要將多個表先連接起來在使用select插入
二、修改語句
1.修改單表的記錄
語法:
update 表名
set 列 = 新值,....
where 篩選條件
修改beauty表中的姓唐的電話爲12345678911
update beauty phone ='12345678911'
where name like '唐%'
2.修改多表的記錄
sql92語法
update 表1 別名,表2 別名
set 列=值,....
where 連接條件
and 篩選條件
sql99語法
update 表1 別名,
inner|left|right join 表2 別名
on 連接條件
set 列=值
where 篩選條件
修改張無忌的女朋友的手機號爲114
update boys bo
inner join beauty b on bo.id = b.boyfriend_id
set b.phone =114
where bo.boyName ='張無忌'
這樣就會把beauty表裏的張無忌的女朋友的手機號修改爲114
修改沒有男朋友的女神的男朋友編號都爲2號
update beauty b
left join boy bo
on b.boyfriend = bo.id
set b.boyfriend = 2
where b.boyfriend is null
三、刪除語句
單表的刪除
方式一、delete
語法:
delete from 表名 where 篩選條件
方式二、truncate
truncate table 表名;
不能加where條件,一刪就全刪了,就可以跑路了。
多表的刪除
語法
delete 表一的別名,表二的別名//這裏想兩個都寫的話,是兩個表裏的相關信息都進行刪除
from 表一 別名 join 表二 別名 on連接條件
where 篩選條件
刪除張無忌的女朋友的信息
delete b
from boy bo join beauty b on bo.id = b.boyfriend_id
where b.boyName ='張無忌';
刪除黃曉明的信息以及他女朋友的信息
delete b,bo
from beauty b
inner join boy bo on b.boyfriend_id = bo.id
where bo.boyName = '黃曉明';
delete 和 truncate區別
1.delete支持where 但是truncate不支持
2.truncate刪除,效率比較高
3.假如要刪除的表中有自增長列,如果用delete刪除後,再插入數據,自增長列的值從斷點開始,
而truncate刪除後,再插入數據,自增長列的值從1開始
這個是什麼意思呢?
比如說,有一個學生表,
學號 | 姓名 |
1 | 張三 |
2 | 李四 |
NULL | NULL |
如果在表設置裏勾選了學號自增,那麼你在插入數據的時候,不需要註明學號,系統會自動給你將學號增1
那麼,如果使用delete刪除了上面這個表的話,在插入數據('王五')那麼此時雖然表裏只有一條數據,但是王五的學號是3
如果用的是truncate的話,插入的王五的號就是1
4.truncate刪除沒有返回值,而delete刪除有返回值
5.truncate不能回滾,delete刪除可以回滾