您好!欢迎访问家园网-www.jy.wang!

家园网

请举例对mysql语句操作中INSERT‌语句的语法结构进行讲解:INSERT INTO 表名 (列1,列2) VALUES (值1,值2)[, (值3,值4)...];

网络 作者:本站 点击:

语法结构解析

INSERT INTO 表名 (列1,列2) VALUES (值1,值2)[, (值3,值4)...];

逐词解析

  1. INSERT INTO‌:

    • INSERT:SQL关键字,表示要执行插入操作

    • INTO:可选关键字,用于提高可读性,表示数据将插入到哪个表中

  2. 表名‌:

    • 指定要插入数据的目标表名称

    • 例如:employeesproducts

    • 表名区分大小写(取决于MySQL服务器配置)

  3. (列1,列2)‌:

    • 括号内指定要插入数据的列名列表

    • 列名之间用逗号分隔

    • 可以省略,但必须为表中所有列提供值且顺序一致

  4. VALUES‌:

    • SQL关键字,表示后面跟随的是要插入的值

  5. (值1,值2)‌:

    • 对应前面列名的值列表

    • 值的数量必须与列数匹配

    • 值的顺序必须与列顺序一致

  6. [, (值3,值4)...]‌:

    • 可选部分,用于批量插入多行数据

    • 每组括号表示一行数据

    • 每组值必须与列定义匹配

完整示例

-- 向员工表插入单条记录
INSERT INTO employees (
    employee_id, 
    first_name, 
    last_name, 
    email, 
    hire_date, 
    job_id, 
    salary
) VALUES (
    207, 
    '张', 
    '三', 
    'zhangsan@example.com', 
    '2023-08-10', 
    'IT_PROG', 
    8500.00
);
-- 批量插入产品记录
INSERT INTO products (
    product_id, 
    product_name, 
    category_id, 
    price, 
    stock_quantity
) VALUES 
    (1001, '无线鼠标', 3, 99.99, 50),
    (1002, '机械键盘', 3, 299.99, 30),
    (1003, '蓝牙耳机', 4, 199.99, 20);

输出结果:


单条记录插入输出结果‌:

Query OK, 1 row affected (0.03 sec)

批量插入记录输出结果‌:

Query OK, 3 rows affected (0.05 sec)
Records: 3  Duplicates: 0  Warnings: 0

输出结果说明

  1. 单条插入‌:

    • 返回"Query OK"表示执行成功

    • "1 row affected"表示影响了一行数据

    • 括号内是执行时间

  2. 批量插入‌:

    • "3 rows affected"表示成功插入了3条记录

    • "Records: 3"表示处理了3条记录

    • "Duplicates: 0"表示没有重复记录

    • "Warnings: 0"表示没有警告信息


示例解析

单行插入示例解析

  1. INSERT INTO employees:指定要向employees表插入数据

  2. 列名列表:

    • employee_id:员工ID

    • first_name:名

    • last_name:姓

    • email:电子邮箱

    • hire_date:雇佣日期

    • job_id:职位ID

    • salary:薪资

  3. VALUES子句:

    • 207:员工ID值

    • '张':名字符串值

    • '三':姓字符串值

    • 'zhangsan@example.com':邮箱字符串值

    • '2023-08-10':日期字符串值

    • 'IT_PROG':职位ID字符串值

    • 8500.00:薪资数值

批量插入示例解析

  1. INSERT INTO products:指定要向products表插入数据

  2. 列名列表:

    • product_id:产品ID

    • product_name:产品名称

    • category_id:类别ID

    • price:价格

    • stock_quantity:库存数量

  3. 三组VALUES值:

    • 第一行:无线鼠标产品信息

    • 第二行:机械键盘产品信息

    • 第三行:蓝牙耳机产品信息

关键注意事项

  1. 列与值匹配‌:

    • 列数和值数必须相同

    • 数据类型必须兼容(字符串用引号,数字不用)

  2. 自增列处理‌:

    • 对于自增主键,可以指定NULL或0让MySQL自动生成值

    • 也可以完全省略自增列

  3. 默认值‌:

    • 如果列有默认值且插入时未指定,将使用默认值

    • 可以使用DEFAULT关键字显式指定使用默认值

  4. NULL值‌:

    • 允许NULL的列可以显式插入NULL

    • 不允许NULL的列必须提供有效值

  5. 性能考虑‌:

    • 批量插入比多次单行插入性能更好

    • 大容量插入考虑暂时禁用索引

标签: