• MySQL 表中数据的增删改查操作


    文章目录

    一、在表中插入数据

    (1)单条数据插入

    (2)插入多条数据

    二、删除表中数据

    三、修改表中数据

    四、查询表中的数据(单表查询)

    1.去重查询 distinct

    2.别名查询

    3.计算列

    4.选择查询(条件查询) where

    运算符

    (1)带and或or的多条件查询

    (2)范围搜索条件:between and 子查询

    (3)列表搜索条件:带 in 关键字的子查询

    (4)使用like关键字的通配符匹配查询

    (5)空值查询

    5.聚合函数

    6.行数限定查询 limit

    7.数据分组 group by

    分组条件 having

    8.对结果排序 order by


    数据操纵语言(DML)包括三大语句,insert(插入)、delete(删除)、update(更新),也就是我们常说的增删改操作,主要用于改变数据库数据。

    一、在表中插入数据

    insert命令可以对表进行新增记录

    (1)单条数据插入

    1. 格式:
    2. insert into 表名(属性1,属性2,...) values (值1,值2,...);

    注意:插入的值和属性要保持 一 一对应的关系。

    1. 如果表中的属性太多,也可以将表名后的属性名省略不写,
    2. 但注意插入的数据必须和属性一一对应,以免出错。
    3. insert into 表名 values(值1,值2,...,值n);

    (2)插入多条数据

    1. insert into 表名(属性1,属性2, ... ,属性n)
    2. values
    3. (值1,值2,...,值n),
    4. (值1,值2,...,值n),
    5. ...,
    6. (值1,值2,...,值n);

    二、删除表中数据

    delete命令可以对表的数据进行删除。

    delete与drop的区别:

    两者都是删除的意思,delete是对表中的数据进行删除,不会删除表的结构,删除表中数据后表依然存在

    drop是将表以及表中的数据一并删除。

    1. 格式一:删除表中全部的数据
    2. delete from 表名;
    3. 格式二:删除表中符合条件的数据
    4. delete from 表名 where 条件;

    例如🌰:

    删除教师表:delete from teacher;

    删除学生表中张三这个学生的信息:

    delete from student where name='张三';

    注意:

    关键词and和or

    当有多个条件需要同时满足时,用and关键字进行连接.

    当有多个条件,只需要满足其中一个条件即可,就用or进行连接.

    delete from 表名 where 条件1 and 条件2 and条件3....;

    三、修改表中数据

    update命令可以对表的数据进行修改。

    1. 格式一:对整个列的值都进行修改
    2. update 表名 set 属性名=值;
    3. 格式二:对表中多个列的值进行修改
    4. update 表名 set 列名1=1,列名2=2,...;
    5. 格式三:有条件的修改
    6. update 表名 set 列名=where 条件;

    也可以在原有的基础上进行修改:

    例如:把教师表的工资在原有的基础上增加1000

    update teacher set salary=salary+1000;

    四、查询表中的数据(单表查询

    DQL(Data Query Languag): 数据查询语言,用来查询数据库中表的记录(数据) 。关键字:select, where 等

    查询:就是对已经存在于数据库中的数据按特定的组合、条件或次序进行检索;查询功能是数据库最基本也是最重要的功能。MySQL中使用SELECT语句来查询数据。

    基本的语法结构:select 属性 from 表名;

    *:表示所有的

    例如:查看student表中所有的列  select * from student;

    查询多个列的格式:

    select 列名1,列名2,列名3 from 表名;

    1.去重查询 distinct

    删除重复行,可以在SELECT子句中使用DISTINCT关键字

    1. 格式:
    2. select distinct 属性名 from 表名;

    例如:学生信息表中的数据如图

     对籍贯进行去重复之后的结果为:

    2.别名查询

    使用select语句查询数据时,可使用别名的方法根据需要对数据的标题进行修改

    注意:别名查询只是对查询出来的结果进行属性名的修改,并不会修改数据表中的属性名称。

    1. 格式1
    2. select 属性名 '别名' from 表名;

    例:select 姓名 'Name', 性别 'Sex' from 学生信息表;

    1. 也可以使用as关键字来连接列名和指定的别名
    2. 格式2
    3. select 属性名 as '别名' from 表名;

    3.计算列

    计算列:指的是对已经查询出来的结果,再进行计算。

    例如:查询成绩表中学生的成绩,在原有的基础上加上10分之后的结果

    select 学号,课程编号,成绩,成绩+10  '新成绩'  from 成绩表;

    成绩表为:

     计算列之后的数据表为:

    4.选择查询(条件查询) where

    选择查询:也称条件查询,一般查询并不是针对全表的所有行进行查询,只是从整个表中选出满足指定条件的内容,这就要用到WHERE子句

    1. 格式:
    2. select 列名 from 表名 where 条件;

    例如:查询籍贯是北京的学生信息:

    select 学号,姓名,籍贯 from 学生信息表 where 籍贯=‘北京’;
    

    运算符

    在选择查询时,经常会用到一些运算符。

    例如:在成绩表score中,查询成绩不及格的学生信息

    select * from score where grade<60;

    比较运算符

    逻辑运算符

    • and:连接多个条件,这些条件必须同时满足
    • or:连接多个条件,这些条件只需要满足其中一个即可

    (1)带and或or的多条件查询

    1. 格式:
    2. select 列名 from 表名 where 条件1 and|or 条件2

    (2)范围搜索条件:between and 子查询

    范围搜索条件,针对查询的结果满足某个范围内的数据; 范围搜索返回的是介于两个指定值之间的所有值,可分为包括范围和排除范围两种类型,用between ,not between

    1. 在某个范围之内:用between and
    2. 不在某个范围之内的数据:not between and
    3. selec 列名 from 表名 where 列名 [not] between 开始值A and 结束值B;

    查询结果中包含开始值和结束值,是闭区间[A,B]

    (3)列表搜索条件:带 in 关键字的子查询

    通过in关键字,可以将条件与数据表中任意值来做匹配,只要满足其中一个就会有查询结果

    1. 格式:
    2. select 列名 from 表名 where 列名 [not] in(值1,值2,...);

    表示将in后面存在的元素都查询出来;

    not in:剔除存在的元素。

    (4)使用like关键字的通配符匹配查询

    like匹配查询:也称为模糊查询

    like是用来匹配某个字符串,如果不想要某个字符串就用 not like

    1. 格式:
    2. select 属性名 from 表名 where 属性名 [not] like '字符串'

    like后面的字符串可以携带通配符

         %:表示0个或者多个字符

         _ : 表示一个字符

    (5)空值查询

    select 属性名 from 表名 where 属性名 is [not] null;
    

    5.聚合函数

    聚合函数也称合计函数

    • sum(列名):对某个列进行求和
    • avg(列名):计算列值的平均值
    • max(列名):对某个列求最大值
    • min(列名):对某个列求最小值
    • count(*):统计数据表中元组个数【即统计一个表有多少行】
    • count(列名):统计某个列有多少个值
    1. 格式:
    2. select 聚合函数 from 表名;

    例如:从sc表中计算这个班的总成绩   select sum(grade) from sc;

    注意:上述函数中除count(*)外,其他函数在计算过程中均忽略null值。 

    6.行数限定查询 limit

    limit查询:直接限定要查询第几行到第几行的数据内容

    1. 格式:
    2. select 列名 from 表名 limit [index,]num;

    limit后面的第一个参数index,指定起始位置,即指的是从第几行开始,如果不写默认从0号位置开始,mysql数据库中行数是从0开始的,0号位置就指的是第一行,1号位置就指的是第二行,类似于数组下标一样,每一行的位置=行数-1

    参数num:记录数,指查询的总行数

    例:limit 10,5:指的是从满足要求的第11行开始查询5行

    7.数据分组 group by

    数据分组:使用group by语句结合聚合函数,对查询出来的结果进行分组

    思想:

    1. 先查询结果:先统计出相关的总数或者总和
    2. 统计出来之后,再进行分组【一定是依据某个列来进行的分组】
    1. 格式:
    2. select 列名 聚合函数 from 表名 group by 列名

    例子🌰:统计每个年级的学生总人数,以及班级总数:

    分析:

    1. 先求出整个学校的总人数
    2. 求出总人数后,再依据年级进行分组,即group by 年级

    统计总人数与班级总数→涉及到的表是:班级信息表

    班级信息表的内容为:

    1. select 年级,sum(人数) '总人数',count(*'班级总数'
    2. from 班级信息表
    3. group by 年级;

    分组后的结果为:

     

    分组条件 having

    having 关键字:在分组中进行条件限制,与where的作用类似,但having只能与group by一起使用,用来制定分组时的搜索条件。

    注意:

    • having必须和group by 一起使用,不可以单独使用。
    • having子句中可以包含聚合函数,但where不可以。
    1. 格式:
    2. select 列名 from 表名 group by 列名 having 条件;
    3. 【一般情况下,都是聚合函数当做条件】

    例子:查看每个学生的总成绩,要求是总成绩大于200

    成绩表为:

    1. select 学号,sum(成绩)
    2. from 成绩表
    3. group by 学号
    4. having sum(成绩)>200

    查询分组后的结果为:

     

    8.对结果排序 order by

    ORDER BY 语句用于对指定的结果集进行排序。

    ASC:升序、order by 语句默认是升序排序

    DESC:降序

    1. 格式:
    2. select 列名 from 表名 order by 列名 [asc |desc] ;

    例子🌰:

    查询成绩表并对成绩进行排序:select * from 成绩表 order by 成绩 [desc];

  • 相关阅读:
    双线路捆绑
    登录页(-- 郑郑日上项目【vue-element-admin】【PC 端】【后台管理系统】)
    记录一次rust浮点数计算没有java速度快的例子
    Addressable使用指南
    猿创征文|深度学习基于ResNet18网络完成图像分类
    STL源码阅读笔记-对象的构造与析构
    CCC联盟——UWB MAC(一)
    大数据Hadoop入门教程 | (一)概论
    [C++] std::format应用自定义类型
    智能座舱供应链的“新主角”
  • 原文地址:https://blog.csdn.net/qq_49129184/article/details/126556565