【MySQL数据的操作一】
目录
- 一、插入数据记录
- 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数据的操作一】相关推荐
- 【MySQL 数据的操作二】
目录 二.更新数据记录 2.1更新特定的数据记录 2.2更新所有数据记录 三.删除数据记录 3.1删除特定数据记录 3.2删除所有数据记录 生词表 二.更新数据记录 可以通过 UPDATE 语句来实现 ...
- mysql数据表操作_MySQL数据表基本操作实例详解
本文实例讲述了MySQL数据表基本操作.分享给大家供大家参考,具体如下: 数据表的基本操作 1.主键约束要求主键列的数据唯一,并且不允许为空.主键能够唯一地识别表中的一条记录,可以结合外键来定义不同数 ...
- MYSQL数据库命令+操作----最详细的操作教程(测试木头人)
今天木头人在闲暇之余,整理了一些往期的笔记,欢迎大家一起学习. 这里是一些基础的命令和操作,有错误的地方欢迎大家留言指出 目录 一.mysql安装 二.基本命令 三.MySQL数据库基本操作 四.My ...
- mysql 数据表操作 存储引擎介绍
一 什么是存储引擎? 存储引擎就是表的类型. mysql中建立的库===>文件夹 库中建立的表===>文件 现实生活中我们用来存储数据的文件有不同的类型,每种文件类型对应各自不同的处理机制 ...
- python封装类连接mysql数据_python操作mysql数据库基本类封装
# -*- coding: UTF-8 -*- import MySQLdb as mdb class MysqldbHelper(object): """操作mysql ...
- php操作mysql数据_PHP - 操作MySQL数据库
第16章 PHP操作MySQL 学习要点: 1.PHP连接到MySQL 2.增删改查 3.其他常用函数 如果你已经具有了使用PHP.SQL和MySQL的丰富经验,现在就可以把所有这些技术组合在一起.P ...
- MySql数据库命令操作大全
CREATE DATABASE dt55 CHARACTER SET utf8; DROP DATABASE dt55; USE dt55;#创建数据库 CREATE TABLE javaTab (s ...
- mysql数据表操作
(1)插入数据 insert insert into 表(字段1,字段2,字段3 ... 字段n)values(值1,值2,值3 ... 值n) 注意: 1)如果要插入全部的字段,那么字段列表可以省略 ...
- 03、MySQL—数据表操作
1.创建数据表 基本语法:create table 表名(字段名 字段类型 [字段属性], 字段名 字段类型 [字段属性],-) [表选项] 范例:创建数据表 以上错误说明:表必须放到对应的数据库下: ...
最新文章
- springboot中使用lua脚本+aop作限流访问案例代码
- txt文件可存储最大值_Verilog边码边学:十六进制文件读取$readmemh
- python数据结构-链表
- 多线程reactor模型
- C++之 Eigen-3.4.0 全方位教程:Chapter02-矩阵篇
- java聊天室类图怎么画,UML课程设计(java web网上聊天室附源码)
- minecraft服务器stats文件夹,《我的世界》文件夹目录作用讲述
- 360安全卫士企业版本 跳过卸载保护密码
- Decoder原理和浅解
- 《公安机关办理刑事案件电子数据取证规则》
- 基础篇——ROS入门:学习资料、基本介绍、安装配置、文件系统、包创建
- Java bean中字段命名潜规则,前两个字母要么都大写,要么都小写
- 解决:ValueError: multi_class must be in (‘ovo‘, ‘ovr‘)
- 小浣熊的咆哮!!好威武啊。
- PostgreSQL索引(一)
- 《你若安好 便是晴天【林徽因传】》读后感
- 小米6.0系统设备一键激活xposed框架的经验
- ImportError: cannot import name ‘calinski_harabaz_score‘ from ‘sklearn.metrics‘
- Huffman编码的Matlab实现--用于单导联ECG数据的压缩和解压缩
- 小程序源码:炫酷手持滚动弹幕生成小工具微信小程序-多玩法安装简单