MySQL精讲之二:DML数据操作语句
文章目录
- 一、插入insert
- 二、修改update
- 三、删除delete/truncate
- 四、DML语句练习题
一、插入insert
方式一:insert into 表名(列名,...) values(值1,...);
方式二: insert into 表名 set 列名=值,列名=值...
| 比较 | 是否支持插入多行 | 是否支持子查询 |
|---|---|---|
| 方式一 | √ | × |
| 方式二 | √ | × |
【插入方式一】# 1.插入的值的类型要与列的类型一致或兼容INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)VALUE(13,'双笙','女','1999-02-15','13868666666',NULL,2);# 2.列的顺序可以调换INSERT INTO beauty(NAME,id,sex,borndate,phone,photo,boyfriend_id)VALUE('徐婕',14,'女','1999-02-16','13868666661',NULL,2);# 3.可以省略列名,列的顺序和表中列的顺序一致INSERT INTO beautyVALUE(16,'金克斯','女','2000-02-16','13868666661',NULL,2);# 4.支持子查询INSERT INTO beauty(id,NAME,phone)SELECT id,boyname,'110'FROM boys WHERE id<3; # 本例需将beauty表的主键删除---------------------------------------------------------------【插入方式二】INSERT INTO beauty SET id=19,NAME='花花',phone='666';
二、修改update
1、修改单表的记录语法:
update 表名set 列=新值,列=新值,...where 筛选条件;
执行顺序:update > where > set
2、修改多表的记录语法:update 表1 别名[inner|left|right] join 表2 别名on 连接条件set 列=新值,列=新值,...where 筛选条件;
【修改单表的记录】# 修改beautty表中姓周的女生电话为15888888888UPDATE beautySET phone='15888888888'WHERE NAME LIKE '%周%';【修改多表的记录】# 将张无忌的女朋友的电话号改为2333UPDATE boys b1JOIN beauty b2 ON b1.id=b2.boyfriend_idSET b2.phone='2333'WHERE b1.boyName='张无忌';
三、删除delete/truncate
delete
单表删除:delete from 表名 where 筛选条件
多表删除:delete 表1别名,表2别名from 表1 别名inner|left|right join 表2 别名 on 连接条件where 筛选条件;
truncate
清空单表:truncate table 表名;
注意:truncate删除没有返回值,delete删除有返回值。
| 比较 | 是否可以加where条件 | 是否可以回滚 | 是否有返回值 | 效率 | 表中有自增长列时 |
|---|---|---|---|---|---|
| delete | √ | √ | √ | 一般 | 用delete删除,再插入数据,自增长的值从断点开始 |
| truncate | × | × | × | 略高于delete | 用truncate删除,再插入数据,自增长的值从1开始 |
【delete】# 1.单表删除# 删除以9结尾的女生信息DELETE FROM beauty WHERE phone LIKE '%9';# 2.多表删除# 删除黄晓明的信息以及他女朋友的信息DELETE b1,b2FROM beauty b1INNER JOIN boys b2ON b1.boyfriend_id=b2.idWHERE b2.boyName='黄晓明';【truncate】# 仅支持单表删除全部数据TRUNCATE TABLE boys;
四、DML语句练习题
学习了DML语言语句的增删改,尝试完成下面的习题:
答案:1、执行下面的sql语句
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
);2.
DESC my_employees3.
方式一:
INSERT INTO my_employees
VALUES(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);
TRUNCATE TABLE my_employees;
方式一:
INSERT INTO my_employees
SELECT 1,‘patel’,‘Ralph’,‘Rpatel’,895 UNION
SELECT 2,‘Dancs’,‘Betty’,‘Bdancs’,860 UNION
SELECT 3,‘Biri’,‘Ben’,‘Bbiri’,1100 UNION
SELECT 4,‘Newman’,‘Chad’,‘Cnewman’,750 UNION
SELECT 5,‘Ropeburn’,‘Audrey’,‘Aropebur’,1550;4.
INSERT INTO users
VALUE(1,‘Rpatel’,10),
(2,‘Bdancs’,10),
(3,‘Bbiri’,20),
(4,‘Cnewman’,30),
(5,‘Aropebur’,40);5.
UPDATE my_employees
SET Last_name=‘drelxer’
WHERE id=3;6.
UPDATE my_employees
SET salary=1000
WHERE salary<900;7.
DELETE u,e
FROM users u
JOIN my_employees e ON u.userid=e.userid
WHERE u.userid=‘Bbiri’;8.
DELETE FROM my_employees;
DELETE FROM users;9.
SELECT * FROM my_employees;
SELECT * FROM users;10.
TRUNCATE TABLE my_employees;
上一篇:mysql中 datatime与timestamp的区别说明
栏 目:其它数据库
下一篇:PostgreSQL判断字符串是否包含目标字符串的多种方法
本文标题:MySQL精讲之二:DML数据操作语句
本文地址:https://zz.feitang.co/shujuku/34826.html
您可能感兴趣的文章
- 12-31hiredis从安装到项目实战操作
- 12-31phpmyadmin登录时怎么指定服务器ip和端口
- 12-31MySQL线上死锁分析实战
- 12-31MySQL 触发器的使用和理解
- 12-31MySQL 字段默认值该如何设置
- 12-31Redis主从同步配置的方法步骤(图文)
- 12-31MySQL 字符串拆分操作(含分隔符的字符串截取)
- 12-31redis 交集、并集、差集的具体使用
- 12-31MySQL精讲之二:DML数据操作语句
- 12-31PostgreSQL判断字符串是否包含目标字符串的多种方法


阅读排行
推荐教程
- 12-23PL/SQL登录Oracle数据库报错ORA-12154:TNS:无法解析指定的连接标识符
- 12-23使用imp和exp命令对Oracle数据库进行导入导出操作详解
- 12-11mysql代码执行结构实例分析【顺序、分支、循环结构】
- 12-08添加mysql的用户名和密码是什么语句?
- 12-23详解Oracle游标的简易用法
- 12-20PhpMyAdmin出现错误数据无法导出怎么办?
- 12-19Redis中实现查找某个值的范围
- 12-15浅析mysql迁移到clickhouse的5种方法
- 12-15CentOS7 64位下MySQL5.7安装与配置教程
- 12-14Mysql大型SQL文件快速恢复方案分享






