• MySQL(二):表的增删改查



    增删改查的前提是,已经将数据库创建好,并选中数据库,同时表也创建好了

    一、 新增数据

    【SQL语句】

    insert into 表名 values(,,..);
    
    • 1

    【说明】:

    • into可以省略
    • 值的个数要和该表中的列的个数相匹配
    • 值的类型也要和列的类型相匹配

    【使用示例】:
    在这里插入图片描述【补充】:

    在SQL中,字符串既可以用’ ’ 也可以用 " " 来引用, 同时在SQL中没有字符类型

    【指定列插入】
    其他未被指定插入的列,填入默认值

    insert into 表名 (列名) values();
    
    • 1

    【使用示例】
    在这里插入图片描述
    【insert语句一此插入多条记录】
    在values的后面,带有多组( ),每组括号之间用,分隔

    【使用示例】
    在这里插入图片描述

    【性能比较】

    在MySQL中一次插入一条记录,分多次插入,相比于一次插入多条记录要慢上很多,因为MySQL是一个客户端-服务器的程序,每次在客户端输入的命令sql都是通过网络进行传输的,同时在MySQL服务器中是通过一系列复杂的数据结构来组织数据的,每次插入操作都是比较耗时的(在数据结构中进行一定的遍历找到合适的位置),分多次插入自然就会更耗时

    二、 查询数据

    2.1 全列查询

    把整个表中的数据全部都查询出来
    【SQL语句】

    select * from 表名;
    
    • 1

    *是通配符,表示匹配任意的列

    【使用示例】
    在这里插入图片描述
    查询过程:
    在这里插入图片描述
    大数据量带来的问题:

    如果数据库中的数据特别多(上亿条数据),执行select * 会发生什么情况呢?
    服务器先读取磁盘,把这些数据查询出来,在通过网卡把数据传输给客户端,但由于数据量非常大,很有可能就把磁盘IO吃满或者把网络带宽吃满,IO吃满或网络带宽吃满,都会导致服务器卡顿,如果当前操作的数据库是生产环境的数据库,因为select *就可能导致生产环境服务器的卡顿,从而影响到用户的体验

    2.2 指定列查询

    【SQL语句】

    select 列名,列名... from 表名;
    
    • 1

    【使用示例】
    在这里插入图片描述
    当省略调一些不必要的列时,就可以节省大量的磁盘IO 和网络带宽

    2.3 查询字段为表达式

    查询时带有表达式,让查询的结果进行一些计算
    表达式查询,其中的运算都是指列和列之间的运算,而对于行和行之间的运算有其他方法

    【代码示例1】
    在查询结果中让每个同学的语文成绩都多10分
    在这里插入图片描述
    【代码示例2】
    在这里插入图片描述

    2.4 查询后起别名

    为查询结果中的列指定别名,表示返回的结果集中,以别名作为该列的名称
    【SQL语句】

    select 列名或表达式 as 别名 from 表名
    
    • 1

    【代码示例】
    在这里插入图片描述

    2.5 去重查询

    使用distinct关键字对某列数据进行去重
    【SQL语句】

    select distinct 列名 from 表名
    
    • 1

    【代码示例】
    在这里插入图片描述
    如果distinct后面指定多个列,必须多个列的值都想同才会进行去重,否则不去重
    【代码示例】
    在这里插入图片描述

    2.6 排序查询

    在查询过程中,对查询到的结果进行排序(针对临时表排序,对于数据库上原有的数据没有影响)

    【SQL语句】

    select 列名 from 表名 order by 列名;
    
    • 1

    【使用示例1】:升序排序
    在这里插入图片描述
    【使用示例2】:降序排序
    在这里插入图片描述
    【注意】:

    • 默认情况下是升序排序(asc),如果想要降序排序需要在末尾加上desc
    • 没有order by 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序
    • NULL 数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面
    • SQL中,如果用NULL和其他类型进行混合运算结果仍然是NULL

    【使用示例3】:使用表达式和别名排序
    在这里插入图片描述
    【使用示例4】:可以根据多个字段进行排序,排序优先级随书写顺序、
    在这里插入图片描述

    2.7 条件查询

    指定条件,对于查询结果,进行筛选

    比较运算符:
    在这里插入图片描述
    逻辑运算符:
    在这里插入图片描述
    【SQL语句】

    select * from 表名 where 条件;
    
    • 1

    【注意】:

    1. WHERE条件可以使用表达式,但不能使用别名。
    2. AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分

    【使用示例1】:基本查询
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    【使用示例2】:AND 和 OR
    在这里插入图片描述

    【使用示例3】:观察AND 和 OR 的优先级

    在这里插入图片描述
    在这里插入图片描述
    【使用示例4】:范围查询(between…and…)
    在这里插入图片描述
    【补充】:

    我们使用and也可以实现范围查询,为什么还要有between…and…呢?
    这就涉及到了MySQL中自身实现的优化手段,相比于使用and来说,between…and…是更好的进行优化的

    【使用示例5】:范围查询(IN)
    在这里插入图片描述
    【使用实例6】:模糊查询(LIKE)

    在这里插入图片描述
    【使用示例7】:NULL的查询
    在这里插入图片描述

    2.8 分页查询

    使用limit关键字限制返回的结果条数,使用offset来确定从第几条开始进行返回

    在查询结果中,只取出其中的一部分,从而降低开销,加快查询速度。
    例如,论坛类的网站,展示帖子的时候,往往会有分页展示的效果,一个论坛可有成千上万条帖子,在我们刚打开页面的时候,只能先看到其中的一小部分,点击翻页后能看到后续的内容

    【SQL语句】

    select 列名 from 表名 limit N offset M;	
    
    • 1
    select 列名 from 表名 limit M,N; 
    
    • 1

    上述两种写法等价,从第M条开始查询,最多返回N条记录
    当offset M省略时,表示从第0条记录开始返回
    【使用示例1】:
    在这里插入图片描述

    limit也可以和where、order by搭配使用的

    【使用示例2】:
    在这里插入图片描述

    在上面我们提到像select * 这样的操作,容易将数据库的服务器弄挂了,但是除了select* 之外,只要返回的记录足够多,就算是进行了where 的条件筛选后的查询也同样是有风险的,更稳妥的办法是加上limit

    三、 修改数据

    修改数据,是针对数据库服务器中的数据进行修改

    【SQL语句】

    update 表名 set 列名=,列名=.... where 子句;
    
    • 1

    【使用示例1】:
    在这里插入图片描述
    【使用示例2】:
    在这里插入图片描述
    【使用示例3】:
    在这里插入图片描述

    修改操作是针对条件筛选之后,剩下的数据进行的修改,如果没写条件,意味着就是针对所有行进行修改

    【使用示例4】:
    在这里插入图片描述

    四、 删除数据

    【SQL语句】:

    delete from 表名 where 条件;
    
    • 1

    删除符合条件的行

    delete from 表名;
    
    • 1

    把表里面的记录都删了,表只剩下一个空的表了,当表还在
    drop table 表名;是将整个表都删掉了

    【使用示例】:
    在这里插入图片描述

  • 相关阅读:
    双十一运动装备选购清单,今年最值得入手的运动好物
    每日一个设计模式之【适配器模式】
    知识点6--Docker的镜像命令
    【Android】实验二 Android GUI开发
    vue中用xlsx、xlsx-style、file-saver插件实现用表格原始数据打印excel文件
    ScheduledExecutorService与ExecutorService区别
    给Fetch添加超时功能
    深入理解计算机网络-4信号编码与调制2
    每日4道算法题——第021天
    Flink基础概念入门
  • 原文地址:https://blog.csdn.net/m0_60631323/article/details/126762443