在学习了怎么从表中查询数据后,我们如果希望自己向数据中添加新的数据如何操作呢?这就需要用到我们的INSERT INTO
语句了。
INSERT INTO 语句用于向表中插入新记录。
语法
INSERT INTO 语句可以有两种编写形式。
第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:
INSERT INTO table_name
VALUES (value1,value2,value3,...);
第二种形式需要指定列名及被插入的值:
INSERT INTO table_name (column_name,column_name,column_name,...)
VALUES (value1,value2,value3,...);
其中
value1,value2,……
为对应插入数据表中的值,如果指定了列的名称,每个值需要插入对应的列,否则,需要按照表中列名的顺序书写插入的值
1 INSERT INTO 实例
假设我们要向 "courses" 表中插入一个新行。
我们可以使用下面的 SQL 语句:
INSERT INTO courses VALUES (13, 'Python','400','2021-05-23',3);
执行输出结果
mysql> INSERT INTO courses VALUES (13, 'Python','400','2021-05-23',3);
Query OK, 1 row affected (0.01 sec)
mysql> SELECT * FROM courses;
+----+-------------------------+----------------+-------------+------------+
| id | name | student_count | created_at | teacher_id |
+----+-------------------------+----------------+-------------+------------+
| 1 | Senior Algorithm | 88 | 2020-06-01 | 4 |
| 2 | System Design | 135 | 2020-07-18 | 3 |
| 3 | Django | 78 | 2020-02-29 | 3 |
| 4 | Web | 34 | 2020-04-22 | 4 |
| 5 | Big Data | 70 | 2020-09-11 | 1 |
| 6 | Artificial Intelligence | 166 | 2018-05-13 | 3 |
| 7 | Java P6+ | 78 | 2019-01-19 | 3 |
| 8 | Data Analysis | 50 | 2019-07-12 | 1 |
| 10 | Object Oriented Design | 30 | 2020-08-08 | 4 |
| 12 | Dynamic Programming | 200 | 2018-08-18 | 1 |
| 13 | Python | 400 | 2021-05-23 | 3 |
+----+-------------------------+----------------+-------------+------------+
11 rows in set (0.00 sec)
练习题: 插入数据 Ⅰ
题目描述,向课程表courses
插入一条新的课程信息,课程id
设置为14,课程名称name
设置为SQL,上课学生人数student_num
设置为200,开课日期created_at
设置为'2021-02-25',上课老师id
为1。
-- write your sql here
INSERT INTO `courses` VALUES (14, 'SQL', 200, '2021-02-25', 1);
2 在指定的列插入数据
我们也可以在指定的列插入数据。
下面的 SQL 语句将插入一个新行,但是只在 "name"、"student_number" 、'create_time'和 "teacher_id" 列插入数据(id 字段会自动更新):
INSERT INTO courses (name, student_count, created_at, teacher_id) VALUES ('Flash Sale','100','2018-01-01',5);
执行输出结果
mysql> INSERT INTO courses (name, student_count, created_at, teacher_id) VALUES ('Flash Sale','100','2018-01-01',5);
Query OK, 1 row affected (0.01 sec)
mysql> SELECT * FROM courses;
+----+-------------------------+----------------+-------------+------------+
| id | name | student_count | created_at | teacher_id |
+----+-------------------------+----------------+-------------+------------+
| 1 | Senior Algorithm | 88 | 2020-06-01 | 4 |
| 2 | System Design | 135 | 2020-07-18 | 3 |
| 3 | Django | 78 | 2020-02-29 | 3 |
| 4 | Web | 34 | 2020-04-22 | 4 |
| 5 | Big Data | 70 | 2020-09-11 | 1 |
| 6 | Artificial Intelligence | 166 | 2018-05-13 | 3 |
| 7 | Java P6+ | 78 | 2019-01-19 | 3 |
| 8 | Data Analysis | 50 | 2019-07-12 | 1 |
| 10 | Object Oriented Design | 30 | 2020-08-08 | 4 |
| 12 | Dynamic Programming | 200 | 2018-08-18 | 1 |
| 13 | Python | 400 | 2021-05-23 | 3 |
| 14 | Flash Sale | 100 | 2018-01-01 | 5 |
+----+-------------------------+----------------+-------------+------------+
12 rows in set (0.00 sec)
练习题:指定列插入数据
题目描述:向教师表teachers
插入一条教师信息,教师姓名name
为 'XiaoFu',邮箱email
为 XiaoFu@lintcode.com,年龄age
为20,国家country
为 'CN'
-- write your sql here
INSERT INTO teachers (name,email,age,country) VALUES ('XiaoFu',20,'XiaoFu@lintcode.com','CN');