目录

  • 一、插入数据记录
    • 1.1插入多条完整数据记录
    • 1.2插入多条部分记录
    • 1.3 插入一条记录
    • 1.4 不指定字段插入完整记录
    • 1.4 插入来自其他表的数据
  • 生词表

一、插入数据记录

在MySQL软件中可以通过 “INSERT INTO” 语句来实现插入记录,该SQL语句可以通过如下四种方式使用:

  • 插入完整数据记录
  • 插入数据记录一部分
  • 插入多条数据记录
  • 插入查询结果

插入完整数据记录, 插入数据记录一部分, 插入多条数据记录中,不论哪种插入方式,其语法形式都很接近,因此只要记住插入多条完整数据记录的语法形式,其他的就会了。

1.1插入多条完整数据记录

语法形式:

INSERT INTO table_name(field1,field2,……fieldn)VALUES(value11,value21,……valuen1),(value12,value22,……valuen2),…………(value1m,value2m,……valuenm);

参数 table_name 表示所要插入记录的表名,fieldn 表示字段名,记录 (value11,value21,……valuen1)表示要插入第一条记录的数值,以此类推。

注:

  • 在具体应用时参数 fieldn 与参数 valuen 应一一对应。
  • 由于我们指定了具体的 fieldn(字段) ,所以 field1, field2,……fieldn 的顺序可以与表中字段的顺序不一致。但是,必须满足上一条的要求。

例1:插入多条完整记录
首先创建一个名为 t_dept 的表,同时创建3个字段,并设置字段 deptno 为自动增加(AUTO INCREMENT)和 主键约束(PK),loc 字段设置默认值为 ‘shangxi’

mysql> #创建表#
mysql> CREATE TABLE t_dept(-> deptno INT PRIMARY KEY AUTO_INCREMENT,-> dname VARCHAR(20),-> loc VARCHAR(40) DEFAULT 'shangxi'-> );
Query OK, 0 rows affected (0.04 sec)

然后查看一下该表的字段

mysql> #查看表结构#
mysql> DESC t_dept;
+--------+-------------+------+-----+---------+----------------+
| Field  | Type        | Null | Key | Default | Extra          |
+--------+-------------+------+-----+---------+----------------+
| deptno | int         | NO   | PRI | NULL    | auto_increment |
| dname  | varchar(20) | YES  |     | NULL    |                |
| loc    | varchar(40) | YES  |     | shangxi |                |
+--------+-------------+------+-----+---------+----------------+
3 rows in set (0.02 sec)

插入多条完整记录

mysql> #插入2条完整记录#
mysql> INSERT INTO t_dept(deptno,dname,loc)-> VALUES(1,'cjgong1','shangxi1'),->          (2,'cjgong2','shangxi2');
Query OK, 2 rows affected (0.01 sec)
Records: 2  Duplicates: 0  Warnings: 0

效验:
插入了两条完整的记录

mysql> #效验是否插入成功#
mysql> SELECT * FROM t_dept;
+--------+---------+----------+
| deptno | dname   | loc      |
+--------+---------+----------+
|      1 | cjgong1 | shangxi1 |
|      2 | cjgong2 | shangxi2 |
+--------+---------+----------+
2 rows in set (0.00 sec)

例2:不按表的字段顺序进行插入完整记录
如果我们插入记录的时候,字段的顺序打乱一下,与表中的字段顺序不一致,只要保证数据与插入的字段一一对应,也可插入成功。

mysql> INSERT INTO t_dept(loc,dname,deptno)-> VALUES('shangxi3','cjgong3',3),-> ('shangxi4','cjgong4',4);
Query OK, 2 rows affected (0.01 sec)
Records: 2  Duplicates: 0  Warnings: 0
4 rows in set (0.00 sec)

效验:插入的第3、4条记录

mysql> SELECT * FROM t_dept;
+--------+---------+----------+
| deptno | dname   | loc      |
+--------+---------+----------+
|      1 | cjgong1 | shangxi1 |
|      2 | cjgong2 | shangxi2 |
|      3 | cjgong3 | shangxi3 |
|      4 | cjgong4 | shangxi4 |
+--------+---------+----------+

可以看出:只要插入语句中记录的数值与字段的参数对应即可插入成功。
例3:插入

1.2插入多条部分记录

如果在上面的语法形式中字段参数 field中 包含表中的部分字段,而不是全部字段,且 VALUES 参数的记录数据与其一一对应,就可以实现插入部分记录了。

例: 在 dname 字段中插入两条记录:cjgong5 和cjgong6

mysql> INSERT INTO t_dept(dname)-> VALUE('cjgong5'),-> ('cjgong6');
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

效验:
可以看出,虽然表中第5条与第6条是2条完整的记录,但是我们只操作了 dname 字段,deptno 字段的内容是因为该字段设置了自动增加(AUTO INCREMENT)约束,所以其数据是插入记录时自动分配的,而 loc 字段的内容,是因为我们在前面设置了其默认值为 ‘shangxi’ 的约束,它自动添加为该默认值。

mysql> SELECT * FROM t_dept;
+--------+---------+----------+
| deptno | dname   | loc      |
+--------+---------+----------+
|      1 | cjgong1 | shangxi1 |
|      2 | cjgong2 | shangxi2 |
|      3 | cjgong3 | shangxi3 |
|      4 | cjgong4 | shangxi4 |
|      5 | cjgong5 | shangxi  |
|      6 | cjgong6 | shangxi  |
+--------+---------+----------+
6 rows in set (0.00 sec)

注:
同样,插入多条部分记录时,插入的字段顺序也可以不按表中的顺序排列,只要插入的字段与插入的数据记录一一对应即可。

1.3 插入一条记录

插入一条记录同样分两种情况:插入一条完整记录、插入一条部分记录
语法形式与插入多条记录的一样,只是在 VALUES 参数处只有一组数据。
语法形式

INSERT INTO table_name(field1,field2,field3, …… fieldn)VALUES(value1,value2,value3 …… valuen)

例1:插入一条完整记录,并效验

mysql>##完整插入第7条记录##
mysql> INSERT INTO t_dept(deptno,dname,loc)-> VALUES (7,'cjgong7','shangxi7');
Query OK, 1 row affected (0.00 sec)mysql>##效验##
mysql> SELECT * FROM t_dept;
+--------+---------+----------+
| deptno | dname   | loc      |
+--------+---------+----------+
|      1 | cjgong1 | shangxi1 |
|      2 | cjgong2 | shangxi2 |
|      3 | cjgong3 | shangxi3 |
|      4 | cjgong4 | shangxi4 |
|      5 | cjgong5 | shangxi  |
|      6 | cjgong6 | shangxi  |
|      7 | cjgong7 | shangxi7 |
+--------+---------+----------+
7 rows in set (0.00 sec)

例2:插入一条部分记录并效验

mysql>##在 dname 字段处插入一条数据##
mysql> INSERT INTO t_dept(dname)-> VALUES ('cjgong8');
Query OK, 1 row affected (0.00 sec)mysql>## deptno 字段自动生成8 , loc 字段 默认 shangxi ##
mysql> SELECT * FROM t_dept;
+--------+---------+----------+
| deptno | dname   | loc      |
+--------+---------+----------+
|      1 | cjgong1 | shangxi1 |
|      2 | cjgong2 | shangxi2 |
|      3 | cjgong3 | shangxi3 |
|      4 | cjgong4 | shangxi4 |
|      5 | cjgong5 | shangxi  |
|      6 | cjgong6 | shangxi  |
|      7 | cjgong7 | shangxi7 |
|      8 | cjgong8 | shangxi  |
+--------+---------+----------+
8 rows in set (0.00 sec)

1.4 不指定字段插入完整记录

如果要插入完整记录,还可以不用指定字段名,但 VALUES 中的数据的顺序与数量必须与表中的字段顺序与数量一致

语法形式

INSERT INTO table_nameVALUES(value11,value21,……valuen1),(value12,value22,……valuen2),……(value1m,value2m,……valuenm);

例1:插入一条完整记录
插入时,VALUES中的数据的顺序为 deptno dname loc三个字段

mysql>##插入一条完整记录##
mysql> INSERT INTO t_dept-> VALUES(9,'cjgong9','shangxi9');
Query OK, 1 row affected (0.00 sec)

验证
添加成功第9条记录

mysql>##验证##
mysql> SELECT * FROM t_dept;
+--------+---------+----------+
| deptno | dname   | loc      |
+--------+---------+----------+
|      1 | cjgong1 | shangxi1 |
|      2 | cjgong2 | shangxi2 |
|      3 | cjgong3 | shangxi3 |
|      4 | cjgong4 | shangxi4 |
|      5 | cjgong5 | shangxi  |
|      6 | cjgong6 | shangxi  |
|      7 | cjgong7 | shangxi7 |
|      8 | cjgong8 | shangxi  |
|      9 | cjgong9 | shangxi9 |
+--------+---------+----------+
9 rows in set (0.00 sec)

1.4 插入来自其他表的数据

可以将另一个表中的查询结果插入表中,从而实现表数据值的复制功能。

语法形式

INSERT INTO table_name1(field11,field12,field13,……field1n)SELECT (field21,field22,field23,……field2n)FROM table_name2WHERE ……

解释:
将表table_name2中满足WHERE 条件的指定的字段(field21~ field2n)复制并插入到表 table_name1 中 field11~ field1n的字段中。
注:
参数 (field11,field12,field13,……field1n) 与参数 (field21,field22,field23,……field2n) 的个数与类型必须一致。

例:
向数据库 company 中的表 t_loader 插入部门表(t_dept)中关于字段 dname 和 loc 的查询结果。

1、首先建立 t_loader 表

mysql> CREATE TABLE t_loader(-> id INT,-> name VARCHAR(20),-> dname VARCHAR(20),-> loc VARCHAR(40)-> );
Query OK, 0 rows affected (0.04 sec)

2、查看 t_loader 表和 t_dept 表

mysql> ##查看 t_loader 表的记录##
mysql> SELECT * FROM t_loader;
Empty set (0.01 sec)mysql> ##查看 t_dept 表的记录##
mysql> SELECT * FROM t_dept;
+--------+---------+----------+
| deptno | dname   | loc      |
+--------+---------+----------+
|      1 | cjgong1 | shangxi1 |
|      2 | cjgong2 | shangxi2 |
|      3 | cjgong3 | shangxi3 |
|      4 | cjgong4 | shangxi4 |
|      5 | cjgong5 | shangxi  |
|      6 | cjgong6 | shangxi  |
|      7 | cjgong7 | shangxi7 |
|      8 | cjgong8 | shangxi  |
|      9 | cjgong9 | shangxi9 |
+--------+---------+----------+
9 rows in set (0.00 sec)

t_loader 表没有记录,t_dept 表有9条记录

3、复制表 t_dept 后三条记录至 表 t_loader 中

mysql> INSERT INTO t_loader(dname,loc)->  SELECT dname,loc->      FROM t_dept->          WHERE deptno>6;
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0

查询条件为 deptno字段中的数据 > 6 ,在表 t_dept 中只有第7、8、9条满足条件。

验证:

mysql> SELECT * FROM t_loader;
+------+------+---------+----------+
| id   | name | dname   | loc      |
+------+------+---------+----------+
| NULL | NULL | cjgong7 | shangxi7 |
| NULL | NULL | cjgong8 | shangxi  |
| NULL | NULL | cjgong9 | shangxi9 |
+------+------+---------+----------+
3 rows in set (0.00 sec)

表 t_loader 被插入了3条记录,涉及到2个字段(dname 与 loc)


生词表

单词 读音 译文 MySQL
Value 英 [ˈvæljuː] n. (商品)价值;(与价格相比的)值,划算程度;用途;积极作用;是非标准;值
Field 英 [fiːld] n.领域;田;地;牧场;(作某种用途的)场地;(覆盖…的或有…的)大片地方;专业;实地;运动场;守队;(比赛项目的)全体参赛者;行业;场;字段 字段

如有错误敬请高人指点,书写的易读性可否,希望大家多提意见。
上一篇【MySQL 索引的操作】
下一篇【MySQL 数据的操作二】

【MySQL数据的操作一】相关推荐

  1. 【MySQL 数据的操作二】

    目录 二.更新数据记录 2.1更新特定的数据记录 2.2更新所有数据记录 三.删除数据记录 3.1删除特定数据记录 3.2删除所有数据记录 生词表 二.更新数据记录 可以通过 UPDATE 语句来实现 ...

  2. mysql数据表操作_MySQL数据表基本操作实例详解

    本文实例讲述了MySQL数据表基本操作.分享给大家供大家参考,具体如下: 数据表的基本操作 1.主键约束要求主键列的数据唯一,并且不允许为空.主键能够唯一地识别表中的一条记录,可以结合外键来定义不同数 ...

  3. MYSQL数据库命令+操作----最详细的操作教程(测试木头人)

    今天木头人在闲暇之余,整理了一些往期的笔记,欢迎大家一起学习. 这里是一些基础的命令和操作,有错误的地方欢迎大家留言指出 目录 一.mysql安装 二.基本命令 三.MySQL数据库基本操作 四.My ...

  4. mysql 数据表操作 存储引擎介绍

    一 什么是存储引擎? 存储引擎就是表的类型. mysql中建立的库===>文件夹 库中建立的表===>文件 现实生活中我们用来存储数据的文件有不同的类型,每种文件类型对应各自不同的处理机制 ...

  5. python封装类连接mysql数据_python操作mysql数据库基本类封装

    # -*- coding: UTF-8 -*- import MySQLdb as mdb class MysqldbHelper(object): """操作mysql ...

  6. php操作mysql数据_PHP - 操作MySQL数据库

    第16章 PHP操作MySQL 学习要点: 1.PHP连接到MySQL 2.增删改查 3.其他常用函数 如果你已经具有了使用PHP.SQL和MySQL的丰富经验,现在就可以把所有这些技术组合在一起.P ...

  7. MySql数据库命令操作大全

    CREATE DATABASE dt55 CHARACTER SET utf8; DROP DATABASE dt55; USE dt55;#创建数据库 CREATE TABLE javaTab (s ...

  8. mysql数据表操作

    (1)插入数据 insert insert into 表(字段1,字段2,字段3 ... 字段n)values(值1,值2,值3 ... 值n) 注意: 1)如果要插入全部的字段,那么字段列表可以省略 ...

  9. 03、MySQL—数据表操作

    1.创建数据表 基本语法:create table 表名(字段名 字段类型 [字段属性], 字段名 字段类型 [字段属性],-) [表选项] 范例:创建数据表 以上错误说明:表必须放到对应的数据库下: ...

最新文章

  1. springboot中使用lua脚本+aop作限流访问案例代码
  2. txt文件可存储最大值_Verilog边码边学:十六进制文件读取$readmemh
  3. python数据结构-链表
  4. 多线程reactor模型
  5. C++之 Eigen-3.4.0 全方位教程:Chapter02-矩阵篇
  6. java聊天室类图怎么画,UML课程设计(java web网上聊天室附源码)
  7. minecraft服务器stats文件夹,《我的世界》文件夹目录作用讲述
  8. 360安全卫士企业版本 跳过卸载保护密码
  9. Decoder原理和浅解
  10. 《公安机关办理刑事案件电子数据取证规则》
  11. 基础篇——ROS入门:学习资料、基本介绍、安装配置、文件系统、包创建
  12. Java bean中字段命名潜规则,前两个字母要么都大写,要么都小写
  13. 解决:ValueError: multi_class must be in (‘ovo‘, ‘ovr‘)
  14. 小浣熊的咆哮!!好威武啊。
  15. PostgreSQL索引(一)
  16. 《你若安好 便是晴天【林徽因传】》读后感
  17. 小米6.0系统设备一键激活xposed框架的经验
  18. ImportError: cannot import name ‘calinski_harabaz_score‘ from ‘sklearn.metrics‘
  19. Huffman编码的Matlab实现--用于单导联ECG数据的压缩和解压缩
  20. 小程序源码:炫酷手持滚动弹幕生成小工具微信小程序-多玩法安装简单

热门文章

  1. 信不信由你!iPhone6屏幕宽度不一定是375px,iPhone6 Plus屏幕宽度不一定是414px
  2. Image captioning常用的指标
  3. java appkey_如何使用Microsoft Graph API获取AppKey
  4. 基于单链表的班级通讯录
  5. 【新鲜出炉】傻孩子大神关于IAP的一些闲聊
  6. 微信企业号开发 - 企业号配置
  7. python爬取网易云音乐歌单
  8. 梁宁《产品思维》17穿越生死线
  9. 个性化教育中的自然语言理解和生成
  10. 配置Maven镜像仓库,国内Maven镜像仓库,Maven中央仓库,国内Maven仓库大全的配置笔记记录