DML语言

数据操作语言:

  • 插入:insert
  • 修改:update
  • 删除:delete

一、插入语句

(1)方式一:经典的插入方式
语法:
insert into 表名(列名,…)values(值1,…);

(2)方式二:
语法:
insert into 表名
set 列名=值,列名=值,…

两种方式大PK:
1、方式一 支持一次性插入多行数据,但方式二不支持
2、方式一支持子查询,但方式二不支持

# 一、插入语句# (1)方式一:经典的插入方式
# 语法:
#               insert into 表名(列名,...)values(值1,...);# 1.插入的值的类型要与列的类型一致或者兼容
INSERT INTO beauty(id,name,sex,borndate,phone,photo,boyfriend_id)
VALUES(13,'唐艺昕','女','1990-4-23','18988888888',null,2);
SELECT * FROM beauty;# 2.不可以为null的列必须插入值,但是可以为null的列如何才能达到不插入值的目的?# 方法一:该列对应的值用null填充。例如 phone 列,为其 赋值为null
INSERT INTO beauty(id,name,sex,borndate,phone,photo,boyfriend_id)
VALUES(13,'唐艺昕','女','1990-4-23','18988888888',null,2);# 方法二:干脆直接不写列名,省略该列名和该列对应的值。例如 直接将photo列名去掉
INSERT INTO beauty(id,name,sex,borndate,phone,boyfriend_id)
VALUES(14,'金星','女','1990-4-23','13888888888',9);# 3. 列的顺序可以调换,列数和值的个数必须保持一致,否则会报错
INSERT INTO beauty(name,sex,id,phone)
VALUES('蒋欣','女',16,'110');# 4. 可以省略列名,默认列名是所有列,并且列名的顺序和表中列名的顺序一致
INSERT INTO beauty
VALUES(18,'张飞','男',NULL,'119',NULL,NULL);# (2)方式二:
#  语法:
#               insert into 表名
#               set 列名=值,列名=值,...INSERT INTO beauty
SET id=19,name='刘涛',phone='999';
SELECT * FROM beauty;# 两种方式PK
# 1、方式一 支持一次性插入多行数据,但方式二不支持
INSERT INTO beauty
VALUES(23,'唐艺昕1','女','1990-4-23','18988888888',null,2)
,(24,'唐艺昕2','女','1990-4-23','18988888888',null,2)
,(25,'唐艺昕3','女','1990-4-23','18988888888',null,2)
,(26,'唐艺昕4','女','1990-4-23','18988888888',null,2);# 2、方式一支持子查询,但方式二不支持
INSERT INTO beauty(id,NAME,phone)
SELECT 35,'宋茜1','118098661';# 此处会报错,报错原因为id在表中被设置成了主键
INSERT INTO beauty(id,NAME,phone)
SELECT id, boyname ,'118098661'
FROM boys
WHERE id<3;

二、修改语句
1.修改单表的记录★
语法:
update表名set列=新值,列=新值,.…
where 筛选条件;

2.修改多表的记录【补充】
语法:

sql 92语法:
update 表1别名,表2别名set 列=值,.….
where 连接条件
and 筛选条件;

sql 99语法:
update 表1别名
inner/left/right join 表2 别名
on连接条件
where 筛选条件;

#1.修改单表的记录
#【案例1】 修改beauty表中姓唐的女神的电话为1389999999
UPDATE beauty
SET phone='1389999999'
WHERE name LIKE '唐%';SELECT * FROM beauty;#案例2:修改boys表中id好为2的名称为张飞,魅力值10
UPDATE boys
SET boyname='张飞',usercp=10
WHERE id=2;SELECT * FROM boys;# 2.修改多表的记录# 【案例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 bo.id IS NULL;SELECT * FROM beauty;

三、删除语句

方式一:delete
注意:
1、如果不加where筛选条件的话,delete会删除整张表中的数据(保留表的结构)
2、并且delete会记录日志,意味着删除后的数据还可以恢复,但是效率低。

语法:
1、单表的删除
delete from 表名
where 筛选条件;

2、多表的删除【补充】

sql 92语法:
delete表1的别名,表2的别名
from表1 别名,表2 别名
where 连接条件
and 筛选条件;

sql 99语法:
delete表1的别名,表2的别名
from表1别名
inner/left/right join表2 别名
on连接条件
where 筛选条件;

方式二: truncate

语法:truncate table 表名;

注意:
1、truncate不会记录日志,删除后的数据不能恢复,但是效率高;truncate不能用于有外键约束引用的表。
2、truncate语句后面不允许加筛选条件

#delete pk truncate:

1.delete 可以加where条件,truncate不能加
2.truncate删除,效率高一丢丢
3.假如要删除的表中有自增长列,如果用delete删除后,再插入数据,自增长列的值从断点开始,而truncate删除后,再插入数据,自增长列(比如索引)的值从1开始。
4.truncate 删除后没有返回值,而delete删除后有返回值(比如:删除了几行数据)
5.truncate 删除不能回滚,delete删除可以回滚

# 方式一:delete
#   1、单表的删除
# 【案例1】 删除手机号以9结尾的女神信息
DELETE FROM beauty
WHERE phone LIKE '%9';SELECT * FROM beauty;#   2、多表的删除
# 【案例2】 删除张无忌的女朋友的信息
DELETE b
FROM beauty b
LEFT JOIN boys bo
ON b.boyfriend_id = bo.id
WHERE bo.boyName = '张无忌';# 【案例3】 删除黄晓明的信息以及他的女朋友的信息(级联删除)
DELETE b,bo
FROM beauty b
INNER JOIN boys bo
ON b.boyfriend_id = bo.id
WHERE bo.boyName = '黄晓明';# 方式二:truncate语句# 【案例】 将魅力值 > 100 的男神信息删除
TRUNCATE TABLE boys;

数据的插入修改删除强化练习:

# 数据的插入修改删除强化练习
# 1、运行以下脚本创建表 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
);#2.   显示表my_employees的结构
DESC my_employees;#3.   向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,'Biri','Ben','Bbiri',1100),
(4,'Newman','Chad','Cnewman',750),
(5,'Ropeburn','Audrey','Aropebur',1550);
DELETE FROM 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.   向users表中插入数据
1   Rpatel  10
2   Bdancs  10
3   Bbiri   20
4   Cnewman 30
5   Aropebur    40INSERT INTO users
VALUES(1,'Rpatel',10),
(2,'Bdancs',10),
(3,'Bbiri',20);#5.将3号员工的last_name修改为“drelxer”
UPDATE my_employees SET last_name='drelxer' WHERE id = 3;#6.将所有工资少于900的员工的工资修改为1000
UPDATE my_employees SET salary=1000 WHERE salary<900;#7.将userid 为Bbiri的user表和my_employees表的记录全部删除
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.清空表my_employees
TRUNCATE TABLE my_employees;

六、MySQL DML数据操纵语言学习笔记(插入、修改、删除详解 + 强化复习)相关推荐

  1. 七、MySQL DDL数据定义语言 学习笔记(库和表的创建、修改、删除详解 + 强化复习)

    DDL语言 数据定义语言 库和表的管理: 一.库的管理: 创建.修改.删除 二.表的管理: 创建.修改.删除 创建: create 修改: alter 删除: drop 一.库的管理 1.库的创建: ...

  2. 【C语言学习笔记】SWAP函数详解

    SWAP函数详解 本篇文章通过swap函数来深入了解C语言中函数的用法,与指针的应用.参考资料来源于经典书籍与技术博客的分享. 在复习完生存期相关的知识点后(详情可转至此处),初步认识了函数与本地变量 ...

  3. C语言学习笔记 | 进阶 | 文件操作详解(万字精心制作)

  4. C语言学习笔记—P13(操作符详解<1>+图解+题例)

    目录 前言:●由于作者水平有限,文章难免存在谬误之处,敬请读者斧正,俚语成篇,恳望指教! --By 作者:新晓·故知 操作符详解<1>:​ 题例: 1. 操作符分类: 算术操作符 移位操作 ...

  5. C语言学习笔记—P14(操作符详解<2>+图解+题例)

    目录 前言:●由于作者水平有限,文章难免存在谬误之处,敬请读者斧正,俚语成篇,恳望指教! --By 作者:新晓·故知 ​ 6. 单目操作符 6.1  sizeof 和数组 注: 1.test(主函数中 ...

  6. java 检查bytebuf长度_Java学习笔记16-Netty缓冲区ByteBuf详解

    Java学习笔记16-Netty缓冲区ByteBuf详解 Netty自己的ByteBuf ByteBuf是为解决ByteBuffer的问题和满足网络应用程序开发人员的日常需求而设计的. JDK Byt ...

  7. 【学习笔记】线段树详解(全)

    [学习笔记]线段树详解(全) 和三个同学一起搞了接近两个月的线段树,头都要炸了T_T,趁心态尚未凉之前赶快把东西记下来... [目录] [基础]作者:\((Silent\)_\(EAG)\) [懒标记 ...

  8. spring学习笔记03-spring-DI-依赖注入详解(通过xml配置文件来配置依赖注入)

    spring学习笔记03-spring-DI-依赖注入详解 1.概念 2.构造函数注入 3.set方法注入 4.集合的注入 需要被注入的实体对象 package com.itheima.service ...

  9. [原创]Saltstack学习笔记:命令参数详解以及配置文件说明

    很久没有更新saltstack的文章了,今天还是来更新一点,又开始对saltstack复习了一下. 前边写了一点<saltstack入门概述(1)>以及<Saltstack如何安装( ...

最新文章

  1. 关于Java去连接HTTP地址的操作
  2. React开发(124):ant design学习指南之form中的属性isFieldTouched
  3. 【剑指offer - C++/Java】9、变态跳台阶
  4. Keepalived 添加脚本配置监控haproxy方案
  5. Hello Quartz (第一部分)
  6. C++顺序表(模板总结)
  7. 面试题之数据库事务隔离级别
  8. 软件测试记录表模版,简单软件测试报告模板.doc
  9. 分销系统的用户关系数据库设计~
  10. 简单的卷积神经网络编程,python卷积神经网络训练
  11. Vue实现拖拽拼图滑块验证
  12. 阿里云服务器ECS接入多IP_ECS绑定多个弹性公网IP搭建教程
  13. Linux面试题--1
  14. html怎么放边框,html怎么设置边框
  15. python 正方教务管理系统抢课脚本(仅供学习)
  16. matlab实验报告的总结,一些数字信号处理实例(学校实验报告总结)
  17. 复数和向量的函数运算
  18. 8. R语言画:散点图、直方图、条形图、箱线图、小提琴图、韦恩图
  19. learnpythonthehardway.org_Python学习笔记LearnPythonHardWay
  20. 计算机课是怎样查出勤的,基于计算机视觉技术的课堂自动考勤系统研究

热门文章

  1. parallels网络初始化失败_33 个神经网络「炼丹」技巧
  2. 【Python基础入门系列】第03天:Python 变量与数据类型
  3. 【Django】文件上传以及celery的使用
  4. 【机器学习】feature_importances_ 参数源码解析
  5. 机器学习中的数学基础相关知识总结
  6. .net core EPPlus npoi_2020 ASP.NET界面开发:DevExpress v20.1支持.NET Core设计时
  7. bsp的分析(其中使用buildroot文件夹建立rootfs)
  8. 终端mysql Operation not permitted错误解决方案
  9. jsp 中提交表单后在firefox、chrome 中中文显示为正常,但在IE中中文显示为乱码?...
  10. sql2000 版本号