• 表的增删改查


    在这里插入图片描述

    1. Create(创建)

    1.1 insert

    在这里插入图片描述
    下面我们用这个表来操作:
    在这里插入图片描述
    单行数据 + 全列插入:
    在这里插入图片描述
    注意:这里在插入的时候,也可以不用指定id(当然,那时候就需要明确插入数据到那些列了),那么mysql会使用默认的值进行自增。

    多行数据 + 指定列插入:
    在这里插入图片描述
    这里就没有指定qq的插入。

    1.2 插入否则更新

    由于 主键 或者 唯一键 对应的值已经存在而导致插入失败,可以选择性的进行同步更新操作语法:
    在这里插入图片描述
    ON DUPLICATE KEY 当发生重复key的时候。

    举个例子:
    在这里插入图片描述
    在这里插入图片描述
    我们可以看到主键为2的字段,被更新成了张三。
    在这里插入图片描述
    在这里插入图片描述

    1.3 替换

    主键 或者 唯一键 没有冲突,则直接插入。主键 或者 唯一键 如果冲突,则删除后再插入
    在这里插入图片描述
    在这里插入图片描述
    可以看到,我们把张三删除了,然后换成了王五。

    在这里插入图片描述

    2. Retrieve(查询)

    在这里插入图片描述
    在这里插入图片描述
    在这里创建了一个学生成绩表。并在里面插入了一些测试数据。
    在这里插入图片描述

    2.1 SELECT 列

    全列查询:
    上面的方式就是全列查询,通常情况下不建议使用 * 进行全列查询,1. 查询的列越多,意味着需要传输的数据量越大。 2. 可能会影响到索引的使用。

    指定列查询:
    指定列的顺序不需要按定义表的顺序来
    在这里插入图片描述
    这里的意思是只查询名字和数学的列。

    查询字段为表达式:
    表达式包含一个字段:
    在这里插入图片描述
    每个人的数学成绩都加上了10。

    表达式包含多个字段:
    在这里插入图片描述
    为查询结果指定别名:
    在这里插入图片描述
    在这里插入图片描述
    结果去重:
    在这里插入图片描述
    98 分重复了,我们可以在查询的时候进行去重。
    在这里插入图片描述
    加上一个distinct就可以了。

    2.2 WHERE 条件

    比较运算符:
    在这里插入图片描述
    如果我们想要查询数学成绩在80分以上的同学:
    在这里插入图片描述
    如果我们想要查询数学成绩在70到85之间的同学:
    在这里插入图片描述
    查询在集合里的数据:
    在这里插入图片描述
    我们也可以查询英语不及格的同学的语文成绩如何:
    在这里插入图片描述
    姓孙的同学 及 孙某同学:
    % 匹配任意多个(包括 0 个)任意字符
    在这里插入图片描述
    如果我们查询除了姓孙的:
    在这里插入图片描述
    _ 匹配严格的一个任意字符,__匹配严格的二个任意字符
    在这里插入图片描述
    语文成绩好于英语成绩的同学:
    在这里插入图片描述
    条件中比较运算符两侧都是字段。

    总分在 200 分以下的同学:
    在这里插入图片描述

    那么我们该如何去筛选一个NULL的字段和空字符串呢
    筛选空字符串,我们可以使用=符号,但是筛选NULL,不能使用=号,可以采用<=>和IS来筛选。

    逻辑运算符:
    在这里插入图片描述
    语文成绩 > 80 并且不姓孙的同学:
    在这里插入图片描述

    2.3 结果排序

    在这里插入图片描述
    注意:没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序

    按数学成绩升序和降序显示:
    在这里插入图片描述
    查询同学各门成绩,依次按 数学降序,英语升序,语文升序的方式显示:
    在这里插入图片描述
    多字段排序,排序优先级随书写顺序。

    查询同学及总分,由高到低,ORDER BY 子句中可以使用列别名:
    在这里插入图片描述

    2.4 筛选分页结果

    语法:起始下标为 0
    从 0 开始,筛选 n 条结果。SELECT … FROM table_name [WHERE …] [ORDER BY …] LIMIT n;

    假设我们要筛选总分前3名的:
    在这里插入图片描述
    从 s 开始,筛选 n 条结果。SELECT … FROM table_name [WHERE …] [ORDER BY …] LIMIT s, n;

    从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用。SELECT … FROM table_name [WHERE …] [ORDER BY …] LIMIT n OFFSET s;
    在这里插入图片描述
    建议:对未知表进行查询时,最好加一条 LIMIT 1,避免因为表中数据过大,查询全表数据导致数据库卡死

    3. Update(更新)

    语法:

    UPDATE table_name SET column = expr [, column = expr ...]
    [WHERE ...] [ORDER BY ...] [LIMIT ...]
    
    • 1
    • 2

    将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分:

    查看原数据:
    在这里插入图片描述
    在这里插入图片描述
    我们一定要加上where条件筛选,不然所有的成绩都会被修改。

    将总成绩倒数前三的 3 位同学的数学成绩加上 30 分:
    在这里插入图片描述
    数据更新,不支持 math += 30 这种语法
    在这里插入图片描述
    更新后数据,不可以按总分升序排序取前 3 个了。
    在这里插入图片描述

    4. Delete(删除)

    4.1 删除数据

    在这里插入图片描述
    在这里插入图片描述
    删除整张表数据:
    在这里插入图片描述
    我们在这准备测试表来删除数据。
    在这里插入图片描述
    插入数据之后,我们就可以删除这个表了。
    在这里插入图片描述
    删除表之后,我们再插入一条数据,可以看到它的id还是会自增的。
    在这里插入图片描述
    查看表结构,AUTO_INCREMENT项一直记录。

    4.2 截断表

    在这里插入图片描述
    然后我们还按照上面的操作:
    在这里插入图片描述
    然后我们截断表:
    在这里插入图片描述
    截断整表数据,注意影响行数是 0,所以实际上没有对数据真正操作。
    在这里插入图片描述
    在这里插入图片描述

    5. 插入查询结果

    在这里插入图片描述
    删除表中的的重复记录,重复的数据只能有一份
    在这里插入图片描述
    思路:创建一张空表 no_duplicate_table,结构和 duplicate_table 一样
    在这里插入图片描述
    只能拷贝表的结构,不能把数据也拷贝过来。

    将 duplicate_table 的去重数据插入到 no_duplicate_table
    在这里插入图片描述
    DISTINCT这个是查询时可以去重。
    通过重命名表,实现原子的去重操作
    在这里插入图片描述

  • 相关阅读:
    远程调用--Feign
    CAPL实现CRC8的几种方式
    pytorch之诗词生成--2
    postgresql创建只读权限的用户
    React报错之React Hook useEffect has a missing dependency
    【ARM Trace32(劳特巴赫) 使用介绍 2.2 -- TRACE32 进阶命令之 DIAG 弹框命令】
    路由与交换技术-18-热备份路由选择协议HSRP
    Spring Boot中Spring MVC的表单标签库与数据绑定讲解与实战(附源码 超详细必看)
    数据结构与算法【Java】03---栈
    项目生命周期
  • 原文地址:https://blog.csdn.net/qq_52154068/article/details/133135071