6 1 1

数据的插入、修改和删除操作——插入数据(1)

ZAESKY
2020-1-27 2262

数据插入操作可以向表中添加记录,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');

插入成功后查看数据

SELECT * FROM goods;

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 插入成功后查看数据

SELECT * FROM goods;

查看数据的结果如下:

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');

步骤2 插入成功后查看数据

SELECT * FROM goods;


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表中idnameprice字段的数据插入到test_goods表中

INSERT INTO test_goods(g_id,g_name,g_price) 
SELECT id,name,price FROM goods;

步骤3 插入成功后查看数据,结果如下所示

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语句中的字段顺序可以与表中的字段顺序不同,但两张表中的字段顺序必须一一对应。

请先登录后发表评论!

最新回复 (6)
  • ZAESKY 2020-2-10
    2

    1
  • 1 2020-2-16
    3

    快速回复有问题 无法快速回复

    0
  • ZAESKY 2020-2-16
    4

    1 快速回复有问题 无法快速回复
    快速回复主要是在评论多的时候找回复框很难翻到,点击快速回复直达回复框的功能

    0
  • 1 2020-2-16
    5

    ZAESKY 快速回复主要是在评论多的时候找回复框很难翻到,点击快速回复直达回复框的功能
    可以写个判断语句,当没有登陆的时候点击跳转到登陆页面,有登陆则跳转到直达回复框

    0
  • ZAESKY 2020-2-16
    6

    1 可以写个判断语句,当没有登陆的时候点击跳转到登陆页面,有登陆则跳转到直达回复框
    谢谢建议

    0
  • 1 2020-2-16
    7

    ZAESKY 谢谢建议
    跳转到输入框可以用data-tid 这样能直接回复了

    0
返回
请先登录后发表评论!
6
1