Mysql从入门到入魔——7. 插入、更新和删除

  • 1. 插入数据
    • 1.1 插入完整行
    • 1.2 插入部分行
    • 1.3 插入检索出的数据
    • 1.4从一个表复制到另一个表
  • 2.更新数据
    • 2.1 更新单行单列
    • 2.2 更新单行多列
    • 2.3 更新所有行
    • 2.4 删除列中的值
  • 3. 删除数据
    • 3.1 删除单行
    • 3.2 删除所有行

❤ 系列内容 ❤

Mysql从入门到入魔——1. 数据准备(起航篇)
Mysql从入门到入魔——2. 操纵数据库和表
Mysql从入门到入魔——3. 查询、排序、WHERE过滤
Mysql从入门到入魔——4. 通配符、计算字段、函数
Mysql从入门到入魔——5. 聚集、分组、子查询
Mysql从入门到入魔——6. 表联结、组合查询
Mysql从入门到入魔——7. 插入、更新和删除
Mysql从入门到入魔——8. 视图、存储过程、事务处理
Mysql从入门到入魔——9. 游标、高级SQL特性
Mysql从入门到入魔——10. 知识点速记(完结)


本篇主要内容

插入数据的几种方式,更新数据和删除数据。如果对文中表结构不理解的可以查看系列首页。话不多说,进入正题!



1. 插入数据

1.1 插入完整行

使用 INSERT 插入完整行它要求指定表名和插入到新行中的值。

mysql> INSERT INTO Customers-> VALUES('1000000006',->        'Toy Land',->        '123 Any Street',->        'New York',->        'NY',->        '11111',->        'USA',->        NULL,->        NULL);
Query OK, 1 row affected (0.54 sec)

注意:

  • 必须每列提供一个值,空值使用 NULL
  • 各列必须以它们在表定义中出现的次序填充

1.2 插入部分行

INSERT 推荐的插入方法是明确给出表的列名。这样还可以省略列,即只给某些列提供值,给其他列不提供值。

省略的列必须满足以下某个条件:

  • 该列定义为允许 NULL 值(无值或空值)。

  • 在表定义中给出默认值(如果不给出值,将使用默认值)。

如果表中不允许有 NULL 值或者默认值,这时却省略了表中的值, DBMS 就会产生错误消息,相应的行不能成功插入。

现在同样在 Customers 表中插入一行。

mysql> INSERT INTO Customers(cust_id,->                       cust_name,->                       cust_address,->                       cust_city,->                       cust_state,->                       cust_zip,->                       cust_country)-> VALUES('1000000006',->        'Toy Lnad',->        '123 Any Street',->        'New York',->        'NY',->        '11111',->        'USA');
Query OK, 1 row affected (0.24 sec)

不管使用哪种INSERT 语法,VALUES 的数目都必须正确。如果不提供列 名,则必须给每个表列提供一个值;如果提供列名,则必须给列出的每个列一个值。否则,就会产生一条错误消息,相应的行不能成功插入。

1.3 插入检索出的数据

INSERT 还存在另一种形式,可以利用它将 SELECT 语句的结果插入表中。

首先创建一个新 New_Customers 表。

-- 创建表
CREATE TABLE New_Customers
(cust_id      char(10)  NOT NULL ,cust_name    char(50)  NOT NULL ,cust_address char(50)  NULL ,cust_city    char(50)  NULL ,cust_state   char(5)   NULL ,cust_zip     char(10)  NULL ,cust_country char(50)  NULL ,cust_contact char(50)  NULL ,cust_email   char(255) NULL
);-- 插入数据
INSERT INTO new_customers(cust_id, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country, cust_contact, cust_email)
VALUES
('1000000001', 'Village Toys', '200 Maple Lane', 'Detroit', 'MI', '44444', 'USA', 'John Smith', 'sales@villagetoys.com'),
('1000000006', 'Toy Land', '123 Any Street', 'New York', 'NY', '11111', 'USA', NULL, NULL);

现在把 New_Customers 表中的顾客列合并到 Customers 表中。

mysql> INSERT INTO Customers(cust_id,->                       cust_contact,->                       cust_email,->                       cust_name,->                       cust_address,->                       cust_city,->                       cust_state,->                       cust_zip,->                       cust_country)-> SELECT cust_id AS id,->        cust_contact,->        cust_email,->        cust_name,->        cust_address,->        cust_city,->        cust_state,->        cust_zip,->        cust_country-> FROM New_Customers-> WHERE New_Customers.cust_id NOT IN (SELECT cust_id FROM Customers);
Query OK, 1 row affected (0.16 sec)
Records: 1  Duplicates: 0  Warnings: 0

在 插入 时, 不应该使用已经在 Customers 中用过的 cust_idPRIMARY KEY ) 值,上面使用子查询的方式过滤掉重复的 cust_id 。插入时并不关注 SELECT 返回的列名,而是使用列的位置,所以可以使用别名。

1.4从一个表复制到另一个表

有一种数据插入不使用 INSERT 语句。要将一个表的内容复制到一个全新的表(运行中创建的表)。

mysql> CREATE TABLE CustomersCopy AS-> SELECT * FROM Customers;
Query OK, 6 rows affected (0.59 sec)
Records: 6  Duplicates: 0  Warnings: 0
  • 任何 SELECT 选项和子句都可以使用,包括 WHEREGROUP BY

  • 可利用联结从多个表插入数据。

  • 不管从多少个表中检索数据,数据都只能插入到一个表中。

主要用途:它是试验新 SQL 语句前进行表复制的很好工具。先进行复制,可在复制的数据上测试 SQL 代码,而不会影响实际的数据。


2.更新数据

使用 UPDATE 语句,更新(修改)表中的数据。

有两种使用 UPDATE 的方式:

  • 更新表中的特定行
  • 更新表中的所有行

使用时要明确是 更新特定行 还是 更新所有行

UPDATE 语句中可以使用子查询,使得能用 SELECT 语句检索出的数据 更新列数据。

2.1 更新单行单列

将客户 1000000005 的电子邮件地址更新为 kim@thetoystore.com

mysql> UPDATE Customers-> SET cust_email = 'kim@thetoystore.com'-> WHERE cust_id = '1000000005';

2.2 更新单行多列

在更新多个列时,只需要使用一条 SET 命令,每个“列=值”对之间用逗号分隔(最后一列之后不用逗号)。

mysql> UPDATE Customers-> SET cust_contact = 'Sam Roberts',->     cust_email = 'sam@toyland.com'-> WHERE cust_id = '1000000005';

2.3 更新所有行

不使用 WHERE 限制条件,即更新表中所有行。

mysql> UPDATE Customers-> SET cust_contact = 'Sam Roberts',->     cust_email = 'sam@toyland.com';

2.4 删除列中的值

假如表定义允许 NULL 值,要删除某个列的值,可设置它为 NULL。(要注意删除列值(保留列结构)和删除列(完全删除)的区别)

mysql> UPDATE Customers-> SET cust_email = NULL-> WHERE cust_id = '1000000005';

3. 删除数据

使用 DELETE 语句,删除表中的数据。

有两种使用 DELETE 的方式:

  • 删除表中的特定行
  • 删除表中的所有行

使用时要明确是 删除特定行 还是 删除所有行

3.1 删除单行

删除 Customers 表中 cust_id1000000006 的行。

mysql> DELETE FROM Customers-> WHERE cust_id = '1000000006';

3.2 删除所有行

删除 Customers 中的所有行。不删除表本身。

mysql> DELETE FROM Customers;

如果想从表中删除所有行,推荐使用 TRUNCATE TABLE 语句,它完成相同的工作,而速度更快(因为不记录数据的变动)。

但要注意: TRUNCATE 属于数据定义语言( DDL ),且 TRUNCATE 命令执行后无法回滚,使用 TRUNCATE 命令之前最好对当前表中的数据做备份。

mysql> TRUNCATE TABLE Customers;

这就是本文所有的内容了,如果感觉还不错的话。❤ 点个赞再走吧!!!❤


后续会继续分享《Mysql从入门到入魔》系列文章,如果感兴趣的话可以点个关注不迷路哦~。

Mysql从入门到入魔——7. 插入、更新和删除相关推荐

  1. mysql插入第一_mySQL教程 第5章 插入 更新与删除数据

    第5章 插入 更新与删除数据 使用SQL Manager管理工具连接到schoolDB.由于三张表都设置了主键,因此,以下练习中插入的记录,主键不能重. 插入数据 1. 练习:为表的所有字段插入数据 ...

  2. mySQL教程 第5章 插入 更新与删除数据

    第5章 插入 更新与删除数据 使用SQL Manager管理工具连接到schoolDB.由于三张表都设置了主键,因此,以下练习中插入的记录,主键不能重. 插入数据 1. 练习:为表的所有字段插入数据 ...

  3. python查询mysql数据库_python针对mysql数据库的连接、查询、更新、删除操作示例...

    本文实例讲述了python针对mysql数据库的连接.查询.更新.删除操作.分享给大家供大家参考,具体如下: 连接 一 代码 import pymysql # 打开数据库连接 db = pymysql ...

  4. mySQL 插入,更新和删除数据

    插入数据: 语法: INSERT INTO table_name ( field1, field2,...fieldN )VALUES( value1, value2,...valueN ); 如果数 ...

  5. vue excel导入mysql详细教程_Vue前端上传EXCEL文件,后端(springBoot+MyBatis+MySQL)解析EXCEL并批量插入/更新数据库...

    文章目录 Vue前端 后端 controller层 service层:如何解析Excel文件 MyBatis:实现批量插入 在mysql中设置唯一索引Unique Index MySQL中的inser ...

  6. mysql bulk update_使用SqlBulkCopy批量插入/更新数据

    usingSystem;usingSystem.Collections.Generic;usingSystem.Data;usingSystem.Data.SqlClient;usingSystem. ...

  7. mysql插入删除_mysql插入、更新与删除

    数据库增删改查都是要熟练掌握的. 这部分就来看看前面3个比较简单的部分,增,删,改. 插入数据 为表的所有字段插入数据 insert into table_name (column_list) val ...

  8. mysql删除新添加数据,MySQL添加、更新与删除数据

    添加.更新与删除数据 添加数据 为表中所有字段添加数据 INSERT INTO 表名(字段名1,字段名2,--) VALUES(值1,值2,--); insert into 表名 values(值1, ...

  9. [MySQL光速入门]020 事务

    TCL 事务控制语言 SQL的四种语言 DDL(Data Definition Language)数据库定义语言 建表, 建库, 修改表结构 DML(Data Manipulation Languag ...

最新文章

  1. 【直播】林锦弘:CV赛事高分经验分享
  2. UML类图、接口、包、关系
  3. python—迭代器
  4. linux mysql 5.6.22_linux下MySQL5.6.2安装过程
  5. 病人排队(信息学奥赛一本通-T1183)
  6. AchartEngine绘图引擎
  7. Python让繁琐工作自动化——chapter15 保持时间、计划任务和启动程序
  8. 匹配网页里的zip_ZIP 也能边下载边解压?流式解压技术揭秘
  9. iis服务器转发消息至服务端,IIS服务器配置NXLog进行syslog转发
  10. PHP+Swoole实现的网页即时聊天通讯工具:PHPWebIM
  11. JavaScript 基础概念
  12. bat批处理之清理系统垃圾
  13. 中国石油大学《输气管道设计与管理(含课程设计)》第三阶段在线作业
  14. chrome浏览器打开base64图片
  15. MATLAB 中的 mod() 函数
  16. 推荐系统 | 基础推荐模型 | 逻辑回归模型 | LS-PLM | PyTorch实现
  17. 洛谷P1563 [NOIP2016 提高组] 玩具谜题 C语言 通俗易懂解法
  18. Anaconda安装及使用
  19. python识图自动化_Python自动化测试-验证识别
  20. shiro登录验证原理

热门文章

  1. 静态局部变量(static)用法
  2. 为图表添加达标线:Excel图表学习记第12课
  3. [转载]打工辛酸路:我是一朵飘零的花之67
  4. docker+网桥+redis主从+哨兵模式
  5. js中常用的打印输出语句
  6. 一些总结与思考(聊聊最近,希望对大家有所帮助)
  7. ssr手机_钢铁之心——DC评水月雨SSR“超级银船”
  8. 设置ListBox默认全选并读取ListBox选中项目的数量显示于TextBox中
  9. K线形态识别_倒锤头线和射击之星(流星、扫帚星)
  10. mysql对数据进行增删改查(crud)的操作