INSERT
INSERT INTO 往表里加新数据。一条 INSERT 语句包含三要素:目标表名、要填哪些列、各列的值。列名和值的顺序一一对应,如果你对表的列顺序了然于胸,也可以省略列名直接按顺序写值——但不推荐,因为表结构一改 SQL 就会卡住。
一次可以插入一行,也可以在 VALUES 后面跟多组括号一次插多行,效率高得多。值可以用表达式、函数(如 NOW()),甚至子查询。如果某列有 DEFAULT 约束,INSERT 时可以省略它,数据库会自动补默认值。
一切数据入库的起点都是 INSERT。飞翔科技新员工入职要加记录,飞翔小店上架新品要插一行,用户下单后要在订单表里生成记录。没有 INSERT,数据库就是个空壳。
标准写法:
-- 逐行插入,指定列名
INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...);
-- 批量插入
INSERT INTO 表名 (列1, 列2) VALUES (值A1, 值A2), (值B1, 值B2);
以飞翔科技为例:
-- 新员工翱翔入职技术部
INSERT INTO employees (emp_id, emp_name, dept_code, join_year, age,
basic_salary, performance_bonus, social_security, personal_tax, salary_grade)
VALUES (10001, '翱翔', 2, 2018, 28,
8888.88, 18888.88, 2320.00, 1666.66, 'B');
-- 飞翔小店批量上架商品
INSERT INTO products (product_id, product_name, price, stock, shop_name)
VALUES
(10086, 'A级商品', 188.88, 1000, '飞翔小店'),
(10087, 'B级商品', 88.80, 500, '飞翔小店'),
(10088, 'C级商品', 8.80, 2000, '飞翔小店');
三张表分别对应飞翔科技的三个真实业务:员工工资、电商商品、租房合同。数据和 example.md 中的场景完全吻合。