目錄
DML語言(Data Manipulation Language)
數據操作語言:
插入:insert
修改:update
刪除:delete
插入語句
方式一
語法:
insert into 表名(列名...) values (值1,.....);
#1、插入的值的類型要與列的類型一致或兼容
INSERT INTO `beauty` (`id`, `name`, `sex`, `borndate`, `phone`, `photo`, `boyfriend_id`)
VALUES(13, '唐嫣', '女', '1990-09-21', '15137745620',NULL, 2)
#2、不可以爲null的列,必須插入值,可以爲null的列如何插入值?兩種方式
方式一:插入的值直接爲空
INSERT INTO `beauty` (`id`, `name`, `sex`, `borndate`, `phone`, `photo`, `boyfriend_id`)
VALUES(13, '唐嫣', '女', '1990-09-21', '15137745620',NULL, 2)
方式二:可以爲空的那一列忽略
INSERT INTO `beauty` (`id`, `name`, `sex`, `borndate`, `phone`, `boyfriend_id`)
VALUES(14, '甄姬', '女', '1990-09-21', '15137745620', 2)
#3、列的順序是否可以顛倒 ? 可以
INSERT INTO `beauty` (`phone`, `borndate`, `name`, `id`, `sex`, `boyfriend_id`)
VALUES('15912347510', '1990-09-21', '妲己', 15, '女', 1)
#4、列數和值的個數必須一致
#5、可以省略列名、默認所有列,而且列的順序和表的順序一致
INSERT INTO `beauty`
VALUES(16, '孫尚香', '女', '1997-09-11', '15942647024', NULL, 2)
方式二
語法:
insert into 表名 set 列名=值, 列名=值,....
insert into `beauty`
set id=17, name='虞姬', sex='女', borndate='1998-06-15', phone='14562384
兩種插入方式的比較
1、方式一支持插入多行
INSERT INTO `beauty`
VALUES(18, '阿珂', '女', '1998-09-11', '15942000704', NULL, 2)
,(19, '瑤', '女', '1999-09-11', '15942678024', NULL, 3)
,(20, '娜可露露', '女', '1910-09-11', '15942457024', NULL, 4)
2、方式一支持子查詢(去掉values),方式二不支持
INSERT INTO `beauty`(id, `name`, phone)
SELECT 21, '小喬', '15144547120'
修改語句
修改單表的記錄
語法:
update 表名
set 列=新值, 列=新值,...
where 篩選條件
案例1:修改beauty表中姓唐的人的電話號爲15137742650(單個信息的修改)
UPDATE
`beauty`
SET
`phone` = '15137742650'
WHERE NAME LIKE '唐%'
案例2:修改boys表中id號爲2的名稱爲張飛,魅力值爲10
UPDATE
`boys`
SET
boyName = '久森',
userCP = 900
WHERE id = 2
修改多表的記錄【瞭解】
語法:
sql92語法
update 表1 別名, 表2, 別名
set 列=值,...
where 連接條件
and 篩選條件
sql99語法:
update 表1 別名
inner | left | right join 表2 別名
on 連接條件
set 列=值, ...
where 篩選條件
案例1:修改張無忌的女朋友的手機號爲114
UPDATE
`beauty` b
INNER JOIN `boys` bo
ON b.`boyfriend_id` = bo.`id` SET `phone` = '114'
WHERE bo.`id` = 1
案例2:修改沒有男朋友的女神的男朋友編號都爲2號
update
`beauty` b
left outer join `boys` bo
on b.`boyfriend_id` = bo.`id` SET `boyfriend_id`=2
where bo.`id` is null
刪除語句
方式一:delete
1、單表的刪除【牢記】
delete from 表名 where 篩選條件;
案例1:刪除手機號以9結尾的女生的信息
DELETE
FROM
`beauty`
WHERE phone LIKE '%9'
2、多表的刪除【補充】
sql92語法:
delete 表1的別名 / 表2的別名
from 表1 別名, 表2, 別名
where 連接條件
and 篩選條件
sql99語法
delete 表1的別名 / 表2 的別名
from 表1 別名
inner | left | right join 表2 別名 on 連接條件
where 篩選條件
案例:刪除張無忌的女朋友的信息(單表刪除)
delete
b
from
`beauty` b
inner join `boys` bo
on b.`boyfriend_id` = bo.`id`
where bo.`id` = 1
案例:刪除黃曉明的信息以及他女朋友的信息(多表刪除)
DELETE
b, bo
FROM
`beauty` b
INNER JOIN `boys` bo
ON b.`boyfriend_id` = bo.`id`
WHERE bo.`boyName`='黃曉明'
方式二 :truncate
truncate table 表名; -- 清空/刪除表數據
delete與truncate的比較【重要】
1、delete可以加WHERE條件,TRUNCATE不能加
2、truncate刪除,效率高一點
3、假如要刪除的表中有自增長列,
如果用delete刪除後,再插入數據,自增長列的值從斷點開始,
而truncate刪除後,再插入數據,自增長列的值從1開始
4、truncate刪除沒有返回值,delete刪除有返回值
5、truncate刪除不能回滾,delete刪除可以回滾
案例練習
運行以下腳本創建表my_employees
USE `myemployees` ;
CREATE TABLE My_employees(
ID INT(10),
first_name VARCHAR(10),
last_name VARCHAR(10),
Userid VARCHAR(10),
Salary DOUBLE(10,2)
);
CREATE TABLE users(
id INT,
userid VARCHAR(10),
department_id INT
);
#習題1:顯示錶my_employees的結構
DESC `my_employees`
#習題2:向my_employees表中插入下列數據
ID FIRST_NAME LAST_NAME USERID SALARY
1 patel Ralph Rpatel 895
2 Dancs Betty Bdancs 860
3 Biri Ben Bbiri 1100
4 Newman Chad Cnewman 750
5 Ropeburn Audrey Aropebur 1550
INSERT INTO `my_employees`
VALUES(1,'patel', 'Ralph', 'Rpatel', 895),
(2,'Dancs', 'Betty', 'Bdancs', 860),
(3,'Bin', 'Ben', 'Bbiri', 1100),
(4,'Newman', 'Chad', 'Cnewman', 750),
(5,'Ropeburn', 'Audrey', 'Aropebur', 1550)
方式2:
INSERT INTO `my_employees`
SELECT 1,'patel', 'Ralph', 'Rpatel', 895 UNION
SELECT 2,'Dancs', 'Betty', 'Bdancs', 860 UNION
SELECT 3,'Bin', 'Ben', 'Bbiri', 1100 UNION
SELECT 4,'Newman', 'Chad', 'Cnewman', 750 UNION
SELECT 5,'Ropeburn', 'Audrey', 'Aropebur', 1550
習題3:向user表中插入數據
向user表中插入數據
1 Rpatel 10
2 Bdancs 10
3 Bbiri 20
4 Cnewman 30
5 Aropebur 40
INSERT INTO `users` -- 注意中文空格
VALUES(1, 'Rpatel', 10),
(2, 'Bdancs', 10),
(3, 'Bbiri', 20),
(4, 'Cnewman', 30),
(5, 'Aropebur', 40)
習題4:將3號員工的last_name修改爲'drelxer'
UPDATE
`my_employees`
SET
`last_name` = 'drelxer'
WHERE ID = 3
習題5:將所有工資少於900 的員工的工資修改爲1000
UPDATE
`my_employees`
SET
`Salary` = 1000
WHERE `Salary` < 900
習題6:將userid爲Bbiri 的user表和my_employees表的記錄全部刪除
思路:先根據userid連接兩個表,然後再加上刪除條件就OK
DELETE
m,
u
FROM
`my_employees` m
INNER JOIN `users` u
ON m.`Userid` = u.`userid`
WHERE u.`userid`='Bbiri';
習題7:刪除所有數據
DELETE FROM `my_employees`;
DELETE FROM `users`;
習題8:檢查所有的修改
SELECT * FROM `my_employees`;
SELECT * FROM `users`;
習題9:清空my_employees表結構
TRUNCATE TABLE `my_employees`;