• 《MySQL》增删查改(基础)


    《MySQL》增删查改(基础)

    前言:

    本章主要讲解基本的增删查改的基础与细节

    这里的增删查改都是在表上进行操作.

    1. 增(插入信息)

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

    第一种方式:直接插入(单行数据+多列插入)

    这里由于没有指定表的信息,所以必须插入一份这个表的所有元素的对应值

    例如:为学生表插入一个学生信息

    //创建一个表
    create table student(
     id int,
     name varchar(20),
     age int
    );
    insert into student values(1,"李白",18);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    第二种方式:多组插入(多行数据+多列插入)

    插入多份这个表的所有元素的对应值

    insert into student values(2,"白居易",18),(3,"李商隐",19),(4,"杜浦",16);
    
    • 1

    第三种方式:指定插入(单行数据+指定列插入)

    指定表的元素进行插入

    insert into student(id) values(5);
    
    • 1

    对于其他没有被插入的数据,会有一个默认值.

    第四种方式:指定插入(多行数据+指定列插入)

    insert into student(id) values(5),(6),(7);
    
    • 1

    2. 查(查询数据)

    第一种方式: 简单查询

    1. 全部查询

      select * from 表名;
      
      • 1

      例如:查询上述学生表的全部数据:

      select * from student;
      
      • 1

      在这里插入图片描述

    2. 指定列查询

      select id from student;
      
      • 1

      在这里插入图片描述

    3. 表达式查询

      select 10 from student;
      
      • 1

      在这里插入图片描述

      在这里意义不大,只对特定场景有意义

    4. 求值查询

      select age+10 from student;
      
      • 1

      在这里插入图片描述

      注意:

      这里的age+10并不会改变数据在硬盘中的存储,只是把age+10以后的数据以临时表的方式呈现出来

    5. 别名查询

      利用as关键字为所要查询的内容起一个别名

      select id+age as total from student;
      
      • 1

      在这里插入图片描述

    6. 去重查询

      select distinct (去重列) from (表名);
      
      • 1

      查询去除名字相同的表:

      select distinct name from student;
      
      • 1

      在这里插入图片描述

      同样的,这里也不会改变表的值,还是以临时表的形式呈现

    7. 排序查询

      查询的过程中,对查询到的结果进行排序(依然只是以临时表的形式呈现,不会改变磁盘中的数据)

      select 列名 from 表名 order by 列名 asc/desc;
      
      • 1

      asc以升序排序 默认不写也是以asc

      desc以降序排序

      在这里插入图片描述
      例如:查询年龄排序:

      select * from student order by age desc;
      select * from student order by age;
      
      • 1
      • 2

      在这里插入图片描述

      也可以使用别名进行查询:

    select id+age as total from student order by total; 
    
    • 1

    在这里插入图片描述

    也可以使用多个列进行排序,先以第一个列为标准,如果第一列不分上下的时候,就以第二列作为标准.依次类推

    select * from student order by id desc,age;
    
    • 1
    1. 条件查询

      我们可以自定义按照我们的想法查询到我们想要的数据.只需要给足足够的条件即可,

      可以理解为对查询结果进行遍历,如果满足条件则显示,不满足条件则不显示

      语法为:

      select * from 表名 where 条件;
      
      • 1

      查询年龄小于18的学生:

      select * from student where age<18;
      
      • 1

      在这里插入图片描述

      想要真正学会条件查询,需要理解sql中的运算符.

    2. 模糊查询

      即我们查询的结果不需要十分准确,只要满足一部分特征即可.

      模糊查询需要使用到通配符:

      %: 可以表示任意个任意字符

      _: 可以表示一个任意字符

      使用like关键字:

      select * from 表名 wherelike 模糊条件
      
      • 1

      查找姓李的同学:

      select * from student where name like "李%";
      
      • 1

      在这里插入图片描述

    3. 分页查询

      当我们在实际工作中接触的表十分大时,分页查询可以使得我们不需要长久地等待机器显示出所有的数据,可以只显示其中的几行.

      我们需要明确的是,select 查询本来就是一个比较危险的操作,在一份超级大表数据面前,即使加上where 条件依然可能把数据库弄挂,所以在查询数据建议多使用分页查询,防止意外情况导致的数据库崩溃.

      语法为

      查询n条数据,从m行开始查询

      select * from 表名 limit N offset M;
      
      • 1

      查询从学生表第二行开始的三行数据:

      select * from 表名 limit 3 offset 2;
      
      • 1

      在这里插入图片描述

    当然select 不止以上操作,还有更加复杂的操作.上面是最基础基本的查询操作.

    SQL中的运算符:(一般用于条件查询)

    1. / > < <= >=

      基础的大于小于,大于等于,小于等于.

    2. =

      等于, 对null不安全,无法比较一个值到底是不是null,null = null 的结果不是true,而是null.

    3. <=>

      等于,对null 安全,可以比较出一个值是否为null, null = null 的结果是true

    4. != <>

      不等于

    5. between a1 and a2

      范围匹配,表示在[a1,a2],注意为闭区间,若a1<=value<=a2,则返回true

    6. in (option)

      数值匹配,如果数字在option集合中的任意一个,则返回true

    7. is null

      判断是否为null,是则返回true,不是则返回flase

    8. is not null

      判断是否为null,是则返回flase,不是则返回true

    9. like

      模糊匹配

    10. and

      多个条件必须都为true,最终返回结果才为true

    11. or

      多个条件中只要有一个为true,最终结果就为true

    12. not

      条件为true,结果为flase

    3.改

    语法:

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

    例如: 创建学生成绩表并插入学生成绩信息:

    create table exam_result (
     id int ,
     name varchar(20),
     chinese decimal (3 , 1),
     math decimal (3 , 1),
     english decimal (3 , 1)
    );
    insert into exam_result (id,name, chinese, math, english) VALUES
     (1 , '李一' , 67 , 98 , 56),
     (2 , '李二' , 87.5 , 78 , 77),
     (3 , '李三' , 88 , 98.5 , 90),
     (4 , '李四' , 82 , 84 , 67),
     ( 5 ,'李五' , 55.5 , 85 , 45),
     (6 , '李六' , 70 , 73 , 78.5),
     (7 , '李七' , 75 , 65 , 30);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    例子1:将李一的数学成绩改为80;

    update exam_result set math = 80 where name = "李一";
    
    • 1

    在这里插入图片描述

    例子2:将李二的数学成绩改为80,语文成绩改为90;

    update exam_result set math = 80,chinese = 90 where name = "李二";
    
    • 1

    在这里插入图片描述

    例子3:将总成绩的前三名同学的数学成绩减30分 (limit作为限制条件)

    update exam_result set math = math - 30 order by chinese + math + english limit 3;
    
    • 1

    修改操作也是十分危险的操作,一旦修改,数据将无法回复,只能通过备份重置数据

    4.删

    语法

    delete from 表名 where 字句
    
    • 1

    例如 : 删除名字为李四的成绩

    delete from exam_result where name = "李四";
    
    • 1

    执行完这条语句后:
    在这里插入图片描述

    一样十分危险,一旦删除数据无法恢复,只能通过备份了.

    总结

    mysql基础的增删查改是十分重要的,mysql的学习不能停留在表面,而要通过不断地练习sql语句去熟系,并学会灵活运用.

  • 相关阅读:
    133道Java面试题及答案(面试必看)
    Vue3+Ts实现父子组件间传值的两种方式
    【无标题】51单片机人体反应速度测试仪带万年历功能LCD1602 DS1302
    RS-485接口协议详解
    机器学习(七)模型选择
    【每日一题】1146. 快照数组
    nginx的下载安装配置(Window)
    【配置环境】Visual Studio 配置 OpenCV
    园区运营效率提升,小程序容器技术加速应用平台化管理
    Mac无法打开CORE Keygen
  • 原文地址:https://blog.csdn.net/simple_person/article/details/126346554