MySQL基础知识总结2/3(DML)

目录

插入语句

方式一

方式二

两种插入方式的比较 

修改语句

修改单表的记录

修改多表的记录【了解】

删除语句

方式一:delete

1、单表的删除【牢记】

2、多表的删除【补充】

方式二 :truncate

delete与truncate的比较【重要】

案例练习 


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`;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值