【SQL】(MySQL)DML——INSERT


选取表的信息:

+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| number | char(11)    | YES  |     | NULL    |       |
| name   | varchar(50) | YES  |     | NULL    |       |
| age    | int(11)     | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+

有number,name,age三种属性。

Empty set (0.00 sec)

当前为一个空表。

插入所有列

语法:INSERT INTO 表名 VALUES(
   值1 值2 ···
   );

1.不写全各列对应的值(插入失败)

输入语句:

mysql> INSERT INTO tb_stu VALUES(
    -> 1,'java'
    -> );

输出结果:

ERROR 1136 (21S01): Column count doesn't match value count at row 1

因为省略了插入列,默认为建表顺序的所有列,不写全会出现不匹配的报错。

2.写全各列对应的值(插入成功)

输入语句:

mysql> INSERT INTO tb_stu VALUES(
    -> 1,'java',25
    -> );

运行结果:

Query OK, 1 row affected (0.00 sec)

查看表中各行的值:

+--------+------+------+
| number | name | age  |
+--------+------+------+
| 1      | java |   25 |
+--------+------+------+

插入部分列

语法:INSERT INTO 表名 (
   列名1 列名2 ···
   )
   VALUES(
   值1 值2 ···
   );
输入语句:

mysql> INSERT INTO tb_stu(
    -> number,name
    -> )
    -> VALUES(
    -> 2,'c'
    -> );

运行结果:

Query OK, 1 row affected (0.00 sec)

查看表中各行的值:

+--------+------+------+
| number | name | age  |
+--------+------+------+
| 1      | java |   25 |
| 2      | c    | NULL |
+--------+------+------+

未插入的其余列用NULL表示。

插入多条数据

语法:INSERT INTO 表名 (
   列名1 列名2 ···
   )
   VALUES
   (值1 值2 ···),
   (值1 值2 ···),
   ···
   (值1 值2 ···);
输入语句:

mysql> INSERT INTO tb_stu(
    -> name,age
    -> )
    -> VALUES
    -> ('python',29),
    -> ('cpp',41);

运行结果:

Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

查看表中各行的值:

+--------+--------+------+
| number | name   | age  |
+--------+--------+------+
| 1      | java   |   25 |
| 2      | c      | NULL |
| NULL   | python |   29 |
| NULL   | cpp    |   41 |
+--------+--------+------+
发布了143 篇原创文章 · 获赞 140 · 访问量 27万+

猜你喜欢

转载自blog.csdn.net/qq_43733499/article/details/104370081