请登录后探索更多精彩内容!
数据插入操作可以向表中添加记录,MySQL中执行数据插入操作的关键字是INSERT。
常见的数据插入操作主要包括:向表中所有字段插入数据,向表中指定字段插入数据,同时插入多条数据和将其他表中数据插入到表中。
1.向表中所有字段插入数据
向表中所有字段插入数据有两种方式,一种是指定所有字段及其相对应的值,另一种是不指定字段只列出字段值。
1)指定字段及其值
INSERT INTO table_name(col_name1,col_name2,……col_namen) VALUES(value1,value2,……valuen);
实例1:向goods表中插入一条新记录
步骤1 执行以下语句,选择数据库db_shop
USE db_shop;
步骤2 执行以下语句,向goods表中插入一条新记录
INSERT INTO goods(id,type,name,price,num,add_time) VALUES(1,'书籍','西游记',50.4,20,'2018-01-01 13:40:40');
提示:当插入值的数据类型为字符串时,需要将值包含在英文格式的引号中。
步骤3 插入成功后执行SQL语句,查看表中的所有记录
SELECT * FROM goods;
2)不指定字段只列出字段值
INSERT INTO table_name VALUES(value1,value2,……,valuen);
实例2:向goods表中插入一条新记录
选择数据库db_shop后,执行以下语句向goods表中插入一条新记录
INSERT INTO goods VALUES(2,'糖类','牛奶糖',7.5,200,'2018-02-02 13:40:40');
插入成功后查看数据
u指定所有字段及其对应的值时,字段可以不按照表中字段的顺序排列,但字段要和值一一对应。
u不指定字段只列出字段值时,值的顺序要与表中字段的顺序相同,当表中的字段顺序发生改变时,值的插入顺序也要随之改变。
2.向表中指定字段插入数据
向数据表中插入数据时,也可以只指定一部分字段的值,语法形式为:
INSERT INTO table_name(col_name1,col_name2,……,col_namen) VALUES(value1,value2,……,valuen);
实例3:向goods表中指定字段插入数据
步骤1 选择数据库db_shop后,执行以下语句向goods表中插入记录
INSERT INTO goods(type,name,price) VALUES('糖类','水果糖',2.5);
步骤2 插入成功后查看数据
查看数据的结果如下:
mysql> SELECT * FROM goods; +----+--------+-----------+---------+------+------------------------------+ | id | type | name | price | num | add_time | +----+--------+-----------+---------+-------+-----------------------------+ | 1 | 书籍 | 西游记 | 50.40 | 20 | 2018-01-01 13:40:40 | | 2 | 糖类 | 牛奶糖 | 7.50 | 200 | 2018-02-02 13:40:40 | | 3 | 糖类 | 水果糖 | 2.50 | 0 | NULL | +----+--------+-----------+----------+-------+----------------------------+ 3 rows in set (0.00 sec)
由查询结果可以看出,向表中指定字段插入数据时,对于没有指定值的字段,系统会根据其自身情况设置不同的值:
u当字段没有设置约束时,系统会将字段值设置为NULL,如goods表中的add_time字段。
u当字段设置自增约束时,系统会将字段值设置为自增后的序列值,如goods表中的id字段。
u当字段设置默认约束时,系统会将字段值设置为默认值,如goods表中的num字段。
3.同时插入多条数据
使用INSERT关键字还可以同时向数据表中插入多条数据,语法形式为:
INSERT INTO table_name(col_name1,col_name2,……,col_namen) VALUES(value1,value2,……,valuen), …… (value 1,value2,……,valuen);
实例4:向goods表中插入多条记录
步骤1 选择数据库db_shop后,执行以下语句向goods表中插入多条记录
INSERT INTO goods(id,type,name,price,num,add_time) VALUES(4,'服饰','休闲西服',800,null,'2016-04-04 13:40:40'), (5,'饮品','果汁',3,70,'2016-05-05 13:40:40'), (6,'书籍','论语',109,50,'2016-06-06 13:40:40');
4.将其他表中的数据插入到表中
在实际应用中,有时需要将一张表的数据插入到另一张表中,此项操作也可以使用INSERT关键字实现,语法形式为:
INSERT INTO table_name1(table_name1_col_list) SELECT table_name2_col_list FROM table_name2;
实例5:创建new_goods表,并插入记录
步骤1 选择数据库db_shop后,执行以下语句创建new_goods表,其表结构与goods表相同
CREATE TABLE new_goods ( id INT(11) PRIMARY KEY AUTO_INCREMENT, type VARCHAR(30) NOT NULL, name VARCHAR(30) UNIQUE, price DECIMAL(7,2) UNSIGNED, num INT(11) DEFAULT 0, add_time DATETIME );
步骤2 执行以下SQL语句,将goods表中的数据插入到new_goods表中
INSERT INTO new_goods(id,type,name,price,num,add_time) SELECT id,type,name,price,num,add_time FROM goods;
步骤3 插入成功后查看数据,结果如下所示
mysql> SELECT * FROM new_goods; +----+--------+--------------+---------+----------+---------------------------------------+ | id | type | name | price | num | add_time | +----+--------+--------------+---------+----------+---------------------------------------+ | 1 | 书籍 | 西游记 | 50.40 | 20 | 2018-01-01 13:40:40 | | 2 | 糖类 | 牛奶糖 | 7.50 | 200 | 2018-02-02 13:40:40 | | 3 | 糖类 | 水果糖 | 2.50 | 0 | NULL | | 4 | 服饰 | 休闲西服 | 800.00| NULL | 2016-04-04 13:40:40 | | 5 | 饮品 | 果汁 | 3.00 | 70 | 2016-05-05 13:40:40 | | 6 | 书籍 | 论语 | 109.00| 50 | 2016-06-06 13:40:40 | +----+--------+--------------+---------+----------+---------------------------------------+ 6 rows in set (0.00 sec)
某些情况下,只需要将表中部分字段的数据插入到另一张表中,此时可以通过以下方法实现
实例6:创建新表test_goods,并插入数据
步骤1 选择数据库db_shop后,执行以下语句创建test_goods表,其表结构与goods表相同。
CREATE TABLE test_goods( g_id INT(11) PRIMARY KEY AUTO_INCREMENT, g_name VARCHAR(30) UNIQUE, g_price DECIMAL(7,2) UNSIGNED );
步骤2 执行以下语句,将goods表中id,name和price字段的数据插入到test_goods表中
INSERT INTO test_goods(g_id,g_name,g_price) SELECT id,name,price FROM goods;
mysql> SELECT * FROM test_goods; +------------+--------------+-----------------------+ | g_id | g_name | g_price | +------------+--------------+-----------------------+ | 1 | 西游记 | 50.40 | | 2 | 牛奶糖 | 7.50 | | 3 | 水果糖 | 2.50 | | 4 | 休闲西服 | 800.00 | | 5 | 果汁 | 3.00 | | 6 | 论语 | 109.00 | +------------+--------------+-----------------------+ 6 rows in set (0.00 sec)
将查询结果插入到表中时应注意以下几点:
u两张表的字段名可以不一样,但数据类型必须一样。
u插入数据时,SQL语句中的字段顺序可以与表中的字段顺序不同,但两张表中的字段顺序必须一一对应。
快速回复有问题 无法快速回复
1 快速回复有问题 无法快速回复
ZAESKY 快速回复主要是在评论多的时候找回复框很难翻到,点击快速回复直达回复框的功能
1 可以写个判断语句,当没有登陆的时候点击跳转到登陆页面,有登陆则跳转到直达回复框
ZAESKY 谢谢建议
请先登录后发表评论!