码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • MySQL数据库 -- 表的增删查改


                           

           今天来讲MySQL数据库的表增删查改操作。今天主要是通过栗子来演示语法使用的,话不多说,直奔主题~

    表的增删查改:

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

    目录

    Create

    单行数据 + 全列插入 

    多行数据 + 指定列插入 

     插入否则更新

    替换

    ​编辑Retrieve

    select列 

    全列查询

    指定列查询

     查询字段为表达式

     结果去重

    where条件

    >, >=, <, <= 

    =, <=>

    BETWEEN a0 AND a1

     IN (option, ...)

    LIKE 

    语文成绩好于英语成绩的同学 

    总分在 200 分以下的同学 

     语文成绩 > 80 并且不姓孙的同学

     孙某同学,否则要求总成绩 > 200 并且 语文成绩 < 数学成绩 并且 英语成绩 > 80 

    NULL的查询 

    结果排序 

    同学及 qq 号,按 qq 号排序显示

    查询同学各门成绩,依次按 数学降序,英语升序,语文升序的方式显示 

    查询同学及总分,由高到低 

    查询姓孙的同学或者姓曹的同学数学成绩,结果按数学成绩由高到低显示 

    筛选分页结果 

    limit n

    limit s,n 

     limit n offset s

    Update

    将孙悟空同学的数学成绩变更为 80 分

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

    将总成绩倒数前三的 3 位同学的数学成绩加上 30 分 

    将所有同学的语文成绩更新为原来的 2 倍 

    Delete 

    删除数据

    删除孙悟空同学的考试成绩

    删除整张表数据 

    截断表

    delete from 和 truncate [table] 

    插入查询结果

    案例:删除表中的的重复复记录,重复的数据只能有一份

    聚合函数

     统计班级共有多少同学

    统计班级收集的 qq 号有多少 

     统计本次考试的数学成绩分数个数

    统计数学成绩总分 

    统计平均总分 

     返回英语最高分 

    统计平均总分 

    返回 > 70 分以上的数学最低分 

    group by子句的使用 

    测试数据导入

    如何显示每个部门的平均工资和最高工资 

    显示每个部门的每种岗位的平均工资和最低工资 

    显示平均工资低于2000的部门和它的平均工资 

    where 和having比较


    Create

    语法

    insert [into] table_name[(column [, column] ...)] values (value_list) [, (value_list)] ...

    创建案例:

    单行数据 + 全列插入 

    举个栗子:

    多行数据 + 指定列插入 

    举个栗子:

     插入否则更新

    由于 主键 或者 唯一键 对应的值已经存在而导致插入失败

    选择同步性更新语法:

    insert ... on duplicate key update column = value [, column = value] ...

    举个栗子:

            我们插入数据时有主键或者唯一键冲突了,我们使用on duplicate key update后,哪一个键先冲突,就更新那一行的数据内容,按照update后的内容进行更新。 

    替换

    -- 主键 或者 唯一键 没有冲突,则直接插入;
    -- 主键 或者 唯一键 如果冲突,则删除后再插入

    REPLACE INTO students (sn, name) VALUES (20001, '曹阿瞒');
    Query OK, 2 rows affected (0.00 sec)
    -- 1 row affected: 表中没有冲突数据,数据被插入
    -- 2 row affected: 表中有冲突数据,删除后重新插入

    举个栗子:

    多个列数据冲突时:

    Retrieve

    准备工作,创建表结构:

    select列 

    全列查询

    -- 通常情况下不建议使用 * 进行全列查询
    -- 1. 查询的列越多,意味着需要传输的数据量越大,会导致数据大量刷屏,效率降低;
    -- 2. 可能会影响到索引的使用。

    指定列查询

     查询字段为表达式

     结果去重

    举个栗子:

    注意distinct后面跟一个列名和多个列名的情况。 

    where条件

    关于比较运算符如下,我们下面通过场景来学习。

    >, >=, <, <= 

     

    注意,MySQL中比较等于时,是用=来比较的,和语言中的等号是不同的。 

    =, <=>

    那判断不为NULL呢?

            在这里判断是否为NULL虽说不止一种写法,但是我们只要使用is noll 和is not null来判断就好了,这样降低自己的学习成本,还看起来比较主观。 

    BETWEEN a0 AND a1

    逻辑运算符:

     IN (option, ...)

    LIKE 

    语文成绩好于英语成绩的同学 

    总分在 200 分以下的同学 

     我们要注意where和order by语句的执行顺序。

    where语句中不能取别名

     语文成绩 > 80 并且不姓孙的同学

     孙某同学,否则要求总成绩 > 200 并且 语文成绩 < 数学成绩 并且 英语成绩 > 80 

    NULL的查询 

    结果排序 

    同学及 qq 号,按 qq 号排序显示

    查询同学各门成绩,依次按 数学降序,英语升序,语文升序的方式显示 

    查询同学及总分,由高到低 

    查询姓孙的同学或者姓曹的同学数学成绩,结果按数学成绩由高到低显示 

    筛选分页结果 

    -- 起始下标为 0
    -- 从 0 开始,筛选 n 条结果
    SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;


    -- 从 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 n

    limit s,n 

          

     limit n offset s

    Update

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

    将孙悟空同学的数学成绩变更为 80 分

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

    将总成绩倒数前三的 3 位同学的数学成绩加上 30 分 

    将所有同学的语文成绩更新为原来的 2 倍 

    注意一个细节:

    Delete 

    删除数据

    DELETE FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]

    删除孙悟空同学的考试成绩

    删除整张表数据 

            我们使用delete from 表名删除表数据后,对于表结构是不改变的。 如auto_increment字段记录的默认值是不变的。

    截断表

    truncate [TABLE] table_name

    举个栗子:

    delete from 和 truncate [table] 

            delete from操作会被记录在bin log日志中,而truncate操作是不会记录在bin log记录中,说明后者是不适合数据备份的。 

    插入查询结果

    案例:删除表中的的重复复记录,重复的数据只能有一份

    去重操作:

    聚合函数

     统计班级共有多少同学

    统计班级收集的 qq 号有多少 

              

     统计本次考试的数学成绩分数个数

    统计数学成绩总分 

    统计平均总分 

     返回英语最高分 

    统计平均总分 

    返回 > 70 分以上的数学最低分 

    group by子句的使用 

    测试数据导入

    如何显示每个部门的平均工资和最高工资 

    显示每个部门的每种岗位的平均工资和最低工资 

    显示平均工资低于2000的部门和它的平均工资 

            注意,对于这种情况分组是排到第一步的,where使用就不合适了,因为where几乎是先执行的子句,这时候我们只能借助having来帮助我们筛选。 

    where 和having比较

     where和having可以一起配合使用

     给博主点个赞呗~

                                

  • 相关阅读:
    第2-1-5章 docker安装MinIO实现文件存储服务-springboot整合minio-minio全网最全的资料
    全国心力衰竭日:重症心衰的黑科技——永久型人工心脏
    使用Three.js实现神奇的3D文字悬浮效果
    crmeb从创建数据表到实现最基础增删改查的实现全过程【带附件】
    安全防御(第六次作业)
    libvirt 使用UEFI 设置 edk2-ovmf
    HCIP(第十六天)
    数据结构与算法编程题10
    12.ROS编程学习:ROS常用指令
    探索SPI:深入理解原理、源码与应用场景
  • 原文地址:https://blog.csdn.net/qq_58724706/article/details/127867457
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号