• MySQL表的增删改查


    一、新增数据

    1.全列插入

    表示所有字段都要插入值,且插入的顺序是表定义时的顺序

    语法:insert into 表名 values(字段1 要插入的值,字段二要插入的值,...)

    (整形会设置一个默认长度)

    根据上面创建的表来全列插入:

     2.指定列插入

    语法:insert into 表名(要插入的字段1,要插入的字段2,...)values (要插入的值1,要插入的值2,...)

    只插入需要的数据,其他没有插入的字段就是null

    2.1插入多行数据

    (1)执行多条insert语句;

    (2)执行一条;

    语法:

    insert into 表名 (要插入的字段1,要插入的字段2,...) values

    (要插入的值1,要插入的值2,...),

    (要插入的值1,要插入的值2,...);

    二、查询数据

    1.各种查询操作

    • 查询该表所有字段,所有数据(自己查数据用,写代码不要用)

    select * from 表名;

    • 查询给定的字段

    select 查询列1,查询列2 from 表名;

    • 查询的字段可以进行计算(字段是数值型)

    •  字符串:MySQL中字符串拼接不能使用+,需要使用concat(str1,str2,...)函数

    正确语法:

    表或字段别名:如果查询字段进行了计算等操作,查询返回的字段就不是数据库定义的字段名,此时一般要使用别名

    也可以写成如下,都是使用别名:

    select id as i,username as u, amount*2  as a from student;

    • 表的别名:

    select ... from 表名 [as] 表的别名;

    字段要指定为--->表的别名.字段名

    • 别名的作用:
    • (1)简洁一点;
    • (2)规则一点(进行计算就不规则了);
    • (3)可能需要查询多张表的数据,及多张表的字段(可能有重复的字段),此时可以从别名来进行区分;
    • 日期的操作

    year(日期的值),month(日期的值),day(日期的值)

    (日期的运算操作要使用复杂的函数)

    2.去重操作

    distinct

    对下列表进行去重

    (1)只去重一列--->id列

    (2)去重两列(这两列结合起来去重)--->id和username

    3.排序操作

    • 单列排序

    操作结果(按照id排序):

     可能会出现字段相同时,排序不是我们希望的

    • 多列排序

    按多个字段顺序来排序,先按第一个字段来排序,如果第一个字段相同才按照第二个,以此类推。如果第一个字段没有相同的,后面的就没用;

    asc--->升序(可以忽略不写);desc--->降序; 

    select id,username,amount from student order by id,amount desc;--->先按照id排好序,再根据amount升序/降序;

    注意事项:

    (1)排序可以是多个字段

    但是需要前面的字段值相同,后面的字段才会排序;

    (2)null:升序最前,降序最后

     (3)排序的字段,也可以使用表达式计算或者别名

    4.条件查询

    创建一个成绩表:

    • 查询英语成绩小于60的

     若要查询表中为空的数据--->select * from 表名 where 字段名 is null;

                                            --->select * from student where birthday is null;

    若使用比较运算符(=),会返回空的结果集;

    • 范围匹配:

    语法:字段名 between 起始值 and 结束值

     上述语法等同于:

    逻辑运算符:

    and--->与;(Java中的&&)

    or--->或;(Java中的||)

    not--->非;(Java中的!)

    • in-->匹配小括号中的任意一个就可以返回:

     where条件查询,可以是有多个条件进行逻辑运算,是一整个条件的结果来返回查询结果集

    • 模糊匹配--->like

    %--->匹配多个字符;_--->匹配一个字符

    (以某个字符开头,以孙开头)

    匹配中间的字符:

    匹配最后一个字符:

    (注意以上查询方法的%的位置 )

    孙后跟两个下划线,则查询到孙悟空;跟一个下划线则查询到孙权;

    遍历所有数据,对于每条数据来说,所有条件执行的结果为true就会包含在结果集中,如果为false就不包含。

    • 分页查询:limit

    一般来说,一个查询结果集的行数时确定的,给定每页的数量进行分页,就可以确定页数。

    数据库中的实现,不是按页数来实现的,时按起始的索引+每页的数量

    limit s,n --->从整个结果集进行过滤,从下标s开始,找n条(每行数据下标从0开始,找下标s)

    结果集顺序不同,分页的结果就可能不同;

    分页是按照最终结果集再进行分页,如果有条件过滤,那是以条件过滤后的结果集再进行分页;

    三、修改数据

    关键字:update

    • update 表名 set 字段1=要修改的值1,字段2=要修改的值2,...  where 条件 order by...

    update修改操作是可以修改多条数据的,如果只要修改某一条或者每一部分数据那么要给定条件,如果不加条件那么就会修改整个表的数据。

    修改需要谨慎操作!!!(建议先把update替换成select语句,先看是不是想要修改的数据)

    四、删除操作

    • delete from 表名 where 条件 order by...

    按照条件过滤后的结果全部删除,如果没有条件就是全表删除。所以建议:要删除某些条件,但条件复杂是,一定先使用select验证

  • 相关阅读:
    Llama2开源大模型的新篇章以及在阿里云的实践
    课程2 第3周 TensorFlow入门
    MobileNet系列论文阅读笔记(MobileNetV1、MobileNetV2和MobileNetV3)
    Java并发基础
    基于MTCNN和FaceNet的实时人脸检测识别系统
    码农的转型之路-这款轮子可以造吗?
    谁在遥遥领先
    Stream Collectors.groupingBy的四种用法 解决分组统计(计数、求和、平均数等)、范围统计、分组合并、分组结果自定义映射等问题
    node版本问题:Error: error:0308010C:digital envelope routines::unsupported
    Java 并发详解<二>
  • 原文地址:https://blog.csdn.net/m0_58272200/article/details/133316860