选取表的信息:
+--------+-------------+------+-----+---------+-------+
| 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 |
+--------+--------+------+