[MySQL][表的增删查改][一][Create]详细讲解


0.CRUD

  • Create(创建), Retrieve(读取),Update(更新),Delete(删除)

1.Create

1.基础语法:

INSERT [INTO] table_name [(column [, column] ...)] VALUES (value_list) [, (value_list)] ...
value_list: value, [, value] ...
  • 示例:
    -- 创建一张学生表
    CREATE TABLE students (
     id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
     sn INT NOT NULL UNIQUE COMMENT '学号',
     name VARCHAR(20) NOT NULL,
     qq VARCHAR(20)
    );
    

2.单行数据+全列插入

  • 插入两条记录,value_list数量必须和定义表的列的数量及顺序一致
  • 注意,这里在插入的时候,也可以不用指定id(当然,那时候就需要明确插入数据到那些列了),那么MYSQL会使用默认的值进行自增
    INSERT INTO students VALUES (100, 10000, '唐三藏', NULL);
    Query OK, 1 row affected (0.02 sec)
    
    INSERT INTO students VALUES (101, 10001, '孙悟空', '11111');
    Query OK, 1 row affected (0.02 sec)
    
    // 查看插入结果
    SELECT * FROM students;
    +-----+-------+--------+-------+
    | id  | sn    | name   | qq    |
    +-----+-------+--------+-------+
    | 100 | 10000 | 唐三藏 | NULL  |
    | 101 | 10001 | 孙悟空 | 11111 |
    +-----+-------+----- --+-------+
    2 rows in set (0.00 sec)
    

3.多行数据 + 指定列插入

  • 插入两条记录,value_list数量必须和指定列数量及顺序一致
    INSERT INTO students (id, sn, name) VALUES (102, 20001, '曹孟德'),(103, 20002, '孙仲谋');
    Query OK, 2 rows affected (0.02 sec)
    Records: 2 Duplicates: 0 Warnings: 0
    
    // 查看插入结果
    SELECT * FROM students;
    +-----+-------+--------+-------+
    | id  | sn    | name   | qq    |
    +-----+-------+--------+-------+
    | 100 | 10000 | 唐三藏 | NULL  |
    | 101 | 10001 | 孙悟空 | 11111 |
    | 102 | 20001 | 曹孟德 | NULL  |
    | 103 | 20002 | 孙仲谋 | NULL  |
    +-----+-------+----- --+-------+
    4 rows in set (0.00 sec)
    

4.插入否则更新

  • 由于主键或者唯一键对应的值已经存在而导致插入失败
    # 主键冲突
    INSERT INTO students (id, sn, name) VALUES (100, 10010, '唐大师');
    ERROR 1062 (23000): Duplicate entry '100' for key 'PRIMARY'
    
    # 唯一键冲突
    INSERT INTO students (sn, name) VALUES (20001, '曹阿瞒');
    ERROR 1062 (23000): Duplicate entry '20001' for key 'sn'
    
  • 可以选择性的进行同步更新操作,语法:
    • ON DUPLICATE KEY当发生重复key的时候
    INSERT ... ON DUPLICATE KEY UPDATE column = value [, column = value] …
    
  • 示例:
    INSERT INTO students (id, sn, name) VALUES (100, 10010, '唐大师')
    ON DUPLICATE KEY UPDATE sn = 10010, name = '唐大师';
    Query OK, 2 rows affected (0.47 sec)
    
    -- 0 row affected: 表中有冲突数据,但冲突数据的值和 update 的值相等
    -- 1 row affected: 表中没有冲突数据,数据被插入
    -- 2 row affected: 表中有冲突数据,并且数据已经被更新
    
    # 通过MySQL函数获取受到影响的数据行数
    SELECT ROW_COUNT();
    +-------------+
    | ROW_COUNT() |
    +-------------+
    | 2           |
    +-------------+
    

5.替换

  • 主键 或者 唯一键 没有冲突,则直接插入
  • 主键 或者 唯一键 如果冲突,则删除后再插入
    REPLACE INTO students (sn, name) VALUES (20001, '曹阿瞒');
    Query OK, 2 rows affected (0.00 sec)
    
    -- 1 row affected: 表中没有冲突数据,数据被插入
    -- 2 row affected: 表中有冲突数据,删除后重新插入
    
  • 17
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DieSnowK

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值