这篇文章总结了mysql中的insert语句,delete、update、select等DML语句将会在其他文章中单独总结。

在本博客中,”mysql”是一个系列文章,这些文章主要对mysql/mariadb的常用知识点进行了总结,每一篇博客总结的知识点有所不同,具体内容可参考mysql文章列表。

mysql文章列表直达链接:mysql知识点总结

insert常用语句

mysql中insert语句的语法如下

insert into tablename(字段1名称,字段2名称,…) values(字段1值,字段2值,…)

示例如下:

向表tb1中插入一条数据,插入数据对应的字段为name和age,name的值为tom,age为33。

insert into tb1 (name,age) values('tom',33);

向表tb1中插入多条数据,具体含义同上,只不过是插入多条语句。

insert into tb1 (name,age) values('jerry',22),('naruto',28);

也可以不指定字段,表示对应每个字段都会有插入的数据。

insert into tb1 values (4,'Sasuke',28),(5,'hinata',25);

其实,除了使用上述的语法插入数据,我们还能够使用如下语法

insert into tablename set 字段1名称=字段1值,字段2名称=字段2值

示例如下:

insert into tbl2 set id=2,name="test",age=18,gender='M';

聪明如你一定发现了,上述两种语法的不同之处在于,字段名称与字段值是否分开了,使用set的方式字段名与字段值是在一起的。

除了这一点不同之处,其实,他们还有另外一点不同,就是,使用set的方式插入数据时,insert语句中字段的顺序可以与表中字段的顺序不同,而第一种语法中,字段顺序必须与表中字段的顺序相同。

还需要注意的是,mysql默认的sqlmode为宽松模式,这意味着即使插入的数据并不是完全符合数据类型的要求,也有可能也能插入数据。示例如下:

可以从上图中看到,tb表中的name字段的数据类型为char(5),也就是说name字段最多只能插入5个字符,当我们插入的数据为naruto时,超过了5个字符的长度,但是仍然插入成功了,插入的数据自动被截取为narut,少了一个字母”o”,同理,age字段的值的最大取值为255,当我们插入大于255的数据时,数据自动变为了255,这样虽然能够插入数据,但是跟我们预期不一样,这种情况就属于对数据的校验不严格导致的,我们再看另一种情况,如下图:

tb1表中的name字段是不允许为空的,并且name字段没有对应的默认值,但是我们如果不对name字段设置对应的值,数据也能插入,mysql自动将其值设置为了空字符串,如果按照严格的标准,这样应该不允许插入数据。上述两种情况都属于对数据的校验不严格造成的。

如果我们不期望这样的事情发生,可以通过设置sql_mode参数的值进行严格限制,我们可以通过运行时设置的方式(参考”mysql数据库变量(参数)管理“)与修改配置文件的方式设置sql_mode, 此时,如果你想要在不重启的mysql情况让以后的所有连接都遵循严格的限制,需要先在运行时设置中,将global.sql_mode变量的值设置为TRADITIONAL(使用的存储引擎为innodb),同时在配置文件中设置sql_mode=TRADITIONAL(使用的存储引擎为innodb),以免重启后失效。

sql_mode最常用的几种重要模式如下:

ANSI:宽松模式,对插入数据进行校验,如果不符合定义类型或长度,对数据截断保存,报警告信息,默认应该就是这种。

STRICT_TRANS_TABLES:只在事务型表中进行严格限制。

STRICT_ALL_TABLES:对所有表进行严格限制。

TRADITIONAL :严格模式,当插入数据时,进行数据的严格校验,错误的数据将不能被插入,报error错误。用于事物时,会进行事物的回滚,官方提醒我们说,如果我们使用的存储引擎是非事务型的存储引擎(比如myisam),当我们使用这种模式时, 如果执行非法的插入或更新数据操作时,可能会出现部分完成的情况。

sql_mode更多模式可以官方文档

mariadb不能导入与mysql可以,mysql/mariadb知识点总结(12):insert语句总结相关推荐

  1. 将mysql表数据拼接成oracle的insert语句

    (1)将表名传入下面的select,将生成的sql复制出来执行就可以得到insert语句 select CONCAT('select CONCAT(\'INSERT INTO ',TABLE_NAME ...

  2. mysql数据库insert语句怎么写_MySQL数据库Insert语句7种写法

    简介 很多开发人员工作了几年之后,都会自嘲,自己啥技术都没学到,就会CRUD,可是我要说的是,CRUD你真的都会吗,你在MySQL数据库中,会几种insert语句写法呢.在这里我会7种写法,下面我就来 ...

  3. mysql数据库使用一条insert语句同时插入多条数据

    我们常见的MySQL数据库插入数据的方法是insert语句,例如: INSERT INTO student(name,no,age,address) VALUES ('张三','1001',20,'上 ...

  4. 如何在 MySQL / MariaDB 中导入导出数据,导入导出数据库文件、Excel、CSV

    文章目录 本教程将详细讲解 1. MySQL / MariaDB 数据库数据「导出」 2. MySQL / MariaDB 数据库数据「导入」 3. 使用「卡拉云」一键导入导出 MySQL / Mar ...

  5. mariadb mysql同步_MySQL(Mariadb)主从同步基础

    一.准备阶段 两台linux虚拟机centos7版本,都安装了mariadb 5.5.6 进行主从同步配置: 首先防火墙要开放3306端口, 主库服务器ip:192.168.211.100 从库服务器 ...

  6. MySQL迁移至MariaDB

    为什么要用MariaDB来代替MySQL MariaDB是MySQL社区开发的分支,也是一个增强型的替代品.它由MySQL前开发者们带头组织的基金会开发,使用起来和MySQL完全一样.自从Oracle ...

  7. mysql迁移到mariadb_项目从MYSQL迁移至MARIADB教程

    准备数据库(MySQL),若已有MySQL,可忽略. build MySQL table; 连接MySQL; mysql -u root -p 创建数据表; mysql> create data ...

  8. Mysql数据库迁移Mariadb完整方案

    Mysql数据库迁移Mariadb方案 一.       文档描述 l  目的:测试window和linux上MariaDB支持性. l  原则:window下保留原有Mysql ,安装MariaDB ...

  9. mariadb 没有mysql表_数据未插入mySQL表(MariaDB)

    我目前正在尝试实现一个python脚本,它将在我的SQL数据库(MariaDB)的表中插入两个虚拟值.我在我的覆盆子皮上使用拉伸操作系统.在 我首先在MariaDB的现有数据库中成功地创建了一个表.在 ...

最新文章

  1. HDU1089-1096 A+B for Input-Output Practice 系列问题(输入输出格式练习)
  2. 三点弯曲弹性模量怎么计算公式_拉力试验机常用力学计算公式
  3. 应用Rational 工具简化基于J2EE的项目(二)启动项目
  4. markdown 表格对齐方式、换行、内嵌列表、...
  5. LeetCode 110平衡二叉树-简单
  6. ride中for循环的使用_robotframework-ride使用(Builtin标准库)
  7. 中国天然金红石市场趋势报告、技术动态创新及市场预测
  8. c++ floor 赋值_C++之floor函数
  9. 【译】BMP格式与JPG格式之间的区别
  10. 分布式架构入门心得小结(1)
  11. 【优化预测】基于matlab粒子群算法优化BP神经网络(多输入多输出)【含Matlab源码 1418期】
  12. sklearn库里几种回归模型
  13. matlab取整函数与取余函数
  14. 关于升级短信源码开发接入SMPP通道
  15. 目标检测yolo, voc, coco的BBox格式转换
  16. 监控树莓派Raspberry Pi的CPU/GPU的温度
  17. 简单实现dom4j解析xml
  18. 各种线上推广手段的投入产出比数字公布
  19. form表单的action属性设置相对路径
  20. 订阅号微信公众号历史文章爬虫php,2019.9月最新爬取微信公众号历史文章的办法...

热门文章

  1. WinSocket模型的探讨——完成端口模型
  2. 杨元庆:出身中国是联想吸引国际用户的障碍
  3. 程序员:你的效率可以提高三倍
  4. 代码的简单就在于——直接能看懂
  5. 面试了一个 39 岁程序员,全程让我都感觉有点慌.....
  6. Google推出了Python最牛逼的编辑器,你知道吗?
  7. 想都不敢想!这8个神奇“黑科技”原来已经有人弄出来了
  8. sql去重复查询distinct_SQL的简单查询
  9. Nature公开1300多篇论文工厂论文的期刊分布,这个杂志高居榜首
  10. 给地球上的22.8万种植物建立图像索引