我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL快速回顾:插入操作

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL快速回顾:插入操作

MySQL快速回顾:插入操作

前提要述:参考书籍《MySQL必知必会》

《MySQL必知必会》是先讲了查询,但是没有记录就无法查询,所以先将如何添加数据。

表已经知道怎么创建了,随便创两张。

5.1 插入数据

MySQL使用 INSERT来插入(或添加)行(记录)到数据库表中。插入可用以下几种方式使用:

  • 插入完整的行(记录);
  • 插入行的一部分;
  • 插入多行;
  • 插入某些查询结果。

5.2 插入完整的行(记录)

什么叫完整的行,即插入的有效数据都可以对应表中的每一列。

把数据插入表中,最简单的方法是使用基本的INSERT语法,需要指定表名和被插入到新行中的值,格式:

# 写法:
INSERT INTO  VALUES(value1,value2,...);
# 规范写法:
INSERT INTO (field1, field2, ...) VALUES(value1,value2,...);

解释:

  • 如果使用第一种写法,虽然很简单,但是并不安全,应该尽量避免使用。因为该语句高度依赖于表中列的次序,并且还依赖其次序容易获得的信息。即使可得到这种次序信息,也不能保证下次表结构变动后各个列保持完全相同的次序。所以在开发中如果这样写,那么就是把插入语句写死了。因为数据库表中的列的顺序有可能可能会改变,一旦改变,就会出现致命错误,比如:一个varchar类型的可能会被插入到char中,如果超长度可能会报错,而且varchar是大范围而char是小范围,可能会导致数据丢失;而如果一个浮点型的数据因为列顺序的改变插入到了一个整型的列中,这又不会报错,所以也很难找错。
  • 推荐使用规范写法,特别是在开发时编写sql语句。因为一旦指定列名,那么VALUES必须以其指定的次序匹配指定的列名,不一定按各个列出现在实际表中的次序。 所以即使表的结构改变,此INSERT语句仍然可以正确工作。
  • 第一种写法必须完整的给出表中的全部列的值,并且还得按照表中列的次序;而规范写法不用,因为会根据(field1, field2, ...)来进行赋值,即使跟表中的列的次序不一样,或者一些列不想赋值。

例子:在学生表中插入数据

INSERT INTO student(stu_id, stu_name, stu_sex)  VALUES(1, '张三', '男');

注意:字符串或字符需要使用""(单引号)圈起来。

输出:如果成功的话

Query OK, 1 row affected (0.01 sec)

而如果在主键使用了自增长(AUTO_INCREMENT),那么则可以这样写

INSERT INTO student(stu_id, stu_name, stu_sex)  VALUES(null, '张三', '男');

或者,不写主键:

INSERT INTO student(stu_name, stu_sex)  VALUES('张三', '男');

也就是插入时,在主键的位置直接插入null或者不写默认就是赋给null,MySQL会因为AUTO_INCREMENT自己给它赋值。


  • 如果对表中不允许NULL值且没有默认值的列不给出值(插入时省略了),则MySQL将产生一条错误信息,并且相应的行插入不成功。
  • 规范写法哪些列可以省略不写:
    • 该列定义为允许NULL值(无值或空值);
    • 在表定义中给出默认值。也就表示如果在插入时不给出值,就会使用默认值;
    • 使用AUTO_INCREMENT的列。
  • INSERT操作可能很耗时(特别是有很多索引需要更新时),而且它可能降低等待处理的SELECT语句的性能。如果数据检索是最重要的,则可以通过在INSERT和INTO之间添加关键字LOW_PRIORITY,指示MySQL降低INSERT语句的优先级。
INSERT LOW_PRIORITY INTO
  • UPDATE操作和DELETE操作也适用。

5.3 插入多个行

INSERT可以插入一行到一个表中,也可以插入多行到一个表中,第一种方式就是写多条INSERT语句,还有一种方式就是在一条INSERT语句中插入多行。

语法:

INSERT INTO (
    field1,
    field2,
    ...
    )
    VALUES(
        valueA1,
        valueA2,
        ...
        ),
        (
        valueB1,
        valueB2,
        ...
    );

此写法可以提供INSERT的性能,因为MySQL用单条INSERT语句处理多个插入比使用多条INSERT快。

5.4 插入检索出的数据

INSERT语句可以利用一条SELECT语句查询的结果插入到表中。也就是所谓的INSERT SELECT,它是由一条INSERT语句和一条SELECT语句构成。

比如我需要把一张表的数据复制到另一张表,语法:

INSERT INTO (field1, field2, ...) 
    SELECT field1, field2 FROM ;
# 或 也就是列名可以不同
INSERT INTO (field1, field2, ...) 
    SELECT f1, f2 FROM ;

注意:如果新表不存在则报错。
解释:

  • 先使用SELECT语句从旧表中查询出数据,然后再使用INSERT语句把查询的结果插入到新表中。
  • SELECT列出的每一个列对应于后所跟的列表中的每一个列。
  • 如果为空,即没有行可以插入也不会报错。
  • 如果能保证从旧表导入到新表(假设新表有数据)的主键值不会重复,那么插入时可以省略这主键,比如有AUTO_INCREMENT的主键就可以省略。
  • 在INSERT和SELECT语句中使用相同的列名,但是不一定要求列名匹配。实际上,MySQL甚至不关心SELECT返回的列名。它使用的是列的位置,因此SELECT中的第一列(不管列名)将用来填充表列中指定的第一个列,第二列将用来填充表列中指定的第二列等。
  • INSERT SELECT中SELECT语句可包含WHERE子句以过滤插入的数据。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL快速回顾:插入操作

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL快速回顾:插入操作

前提要述:参考书籍《MySQL必知必会》《MySQL必知必会》是先讲了查询,但是没有记录就无法查询,所以先将如何添加数据。表已经知道怎么创建了,随便创两张。5.1 插入数据MySQL使用 INSERT来插入(或添加)行(记录)到数据库表中。插入可用以下几种方式
MySQL快速回顾:插入操作
2016-05-13

MySQL快速回顾:高级查询操作

8.1 排序数据检索出的数据并不是以纯粹的随机顺序显示的。如果不排序,数据一般将以它在底层表中出现的顺序显示。这可以是数据最初添加到表中的顺序。但是,如果数据后来进行过更新或删除,则此顺序将会受到MySQL重用回收存储空间的影响。因此,如果不明确控制的话,不能
MySQL快速回顾:高级查询操作
2019-02-26

快速回顾MySQL:简单查询操作

利用空闲时间花几分钟回顾一下7.1 检索数据为了查询出数据库表中的行(数据),使用SELECE语句。格式:# 第一种SELECT * FROM ;# 第二种SELECT field1,field2,... FROM ;第一种写法使用*通配符,会把表中行的列全部
快速回顾MySQL:简单查询操作
2016-03-21

MySQL快速回顾:简单查询操作

利用空闲时间花几分钟回顾一下7.1 检索数据为了查询出数据库表中的行(数据),使用SELECE语句。格式:# 第一种SELECT * FROM ;# 第二种SELECT field1,field2,... FROM ;第一种写法使用*通配符,会把表中行的列全部
MySQL快速回顾:简单查询操作
2019-10-09

MySQL快速回顾:数据库和表操作

前提要述:参考书籍《MySQL必知必会》利用空闲时间快速回顾一些数据库基础。4.1 连接在最初安装MySQL,可能会要求你输入一个管理登录(通常为root)和一个口令(密码)。连接MySQL需要以下信息:主机名(计算机名)——如果连接到本地MySQL服务器,为
MySQL快速回顾:数据库和表操作
2021-02-09

MySQL快速回顾:更新和删除操作

前提要述:参考书籍《MySQL必知必会》6.1 更新数据为了更新(修改)表中的数据,可使用UPDATE语句。可采用两种方式使用UPDATE:更新表中特定的行;更新表中所有的行。UPDATE语法的结构由3部分组成:要更新的表;列名和它们的新值;确定要更新行的过滤
MySQL快速回顾:更新和删除操作
2017-11-27

快速回顾MySQL:汇总和分组

10.3 汇总数据我们经常需要汇总数据而不用把它们实际检索处出来,为此MySQL提供了专门的函数。使用这些函数,MySQL查询可用于检索数据,以便分析和报表的生成。这种类型的检索例子有以下几种:确定表中的行数(或者满足某个条件或包含某个特定值的行数)。获得表中
快速回顾MySQL:汇总和分组
2019-05-18

MySQL快速回顾:计算字段与函数

9.1 计算字段存储在数据库表中的数据一般不是应用程序所需要的格式。比如:如果想要在一个字段中既显示公司名,又显示公式的地址,但这两个信息一般包含在不同的表列中。城市、州和邮政编码存储在不同的列中,但邮件标签打印程序却需要把它们作为一个恰当格式的字段检索出来。
MySQL快速回顾:计算字段与函数
2019-07-24

MySQL快速插入一亿测试数据

目录1、建表1.1 建立测试表 t_user1.2 创建临时表2、生成数据2.1 用 python生成 【一亿】 记录的数据文件(这个确实稍微花点时间)2.2 将生成的文件导入到临时表tmp_table中3、以临时表为基础数据,插入数据到t
2022-05-19

MySQL数据库(五)插入操作

前提要述:参考书籍《MySQL必知必会》《MySQL必知必会》是先讲了查询,但是没有记录就无法查询,所以先将如何添加数据。表已经知道怎么创建了,随便创两张。5.1 插入数据MySQL使用 INSERT来插入(或添加)行(记录)到数据库表中。插入可用以下几种方式
MySQL数据库(五)插入操作
2016-04-14

MySQL怎么快速批量插入1000w条数据

这篇文章主要介绍MySQL怎么快速批量插入1000w条数据,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!小编发现插入10000条数据用了0.9s, 插入10w条数据用了4.7s, 插入100w条数据用了58s左右,1
2023-06-14

编程热搜

目录