• 单表内容的增删改查


    操作表内容

    注册一个表

    create table d1(id int ,name varchar(12));
    insert into d1(id,name) values
    (1,'小珊珊'),
    (2,'小白白'),
    (3,'小嘿嘿');
    

    增删改

    增加
    普通版    
    insert into 表名 values (内容1,内容2),(内容1,内容2);
    实列
    insert into user values(2,'wusir'),(3,'太亮');
    推荐版
    insert into 表名 (字段1,字段2) values 
    (内容1,内容2);
    实列
    insert into staff_info (id,name,age,sex,phone,job) values (1,'Alex',83,'female',13651054608,'IT');
    
    
    删除
    delete from d1;  # 清空表 不用  删除所有的数据,但是不会重置自增字段的数据号
    delete from 表名 where 条件;
    truncate 表名;  自增字段会重置
    举例
    delete from d1 where id = 3;
    
    修改 #注意语法,可以同时来修改多个值,用逗号分隔
    update 表名 set 修改内容;  # 不用 修改所有
    update 表名 set 修改内容 where 查找条件;
    举 例
    update d1 set name = 'alex',id = 2 where id = 1;
    
    
    自定义显示格式 concat用法
    相当拼接
    select concat('姓名: ',name,'  年薪: ', salary*12)  AS Annual_salary from employee;
    

    查看表中内容

    显示模式

    四则运算:
        SELECT salary*12 FROM employee;
    
    自定义显示格式 concat用法
        SELECT CONCAT('姓名: ',name,'  年薪: ', salary*12)  AS Annual_salary FROM employee;
    

    查表顺序

    查看
    select * from 表名; 
    举例
    select * from d1;
    查询全部表内容
    select * from d1;
    进阶版查询
    1.找到表:
    实列
    select * from d1;
    2.拿着 where 指定的约束条件,去文件/表中取出一条条记录
    实列
        select * from d1 where hoppy='玩';
    3.将取出的一条条记录进行分组group by,如果没有group by,则整体作为一组
    # 实列 找到爱好是玩的 将年龄分组
        select * from d1 where hoppy='玩' group by age ;
    5.将分组的结果进行having过滤
    实列 找到爱好是玩的 将年龄分组 且id>3
        select * from d1 where hoppy='玩' group by age having count(id)>3;
    6将结果排序asc(升序从小到大)desc(降序 从大到小)
    实列
        select * from d1 where hoppy='玩' group by age having count(id)>3 order by price;
    7限制结果的显示条数
    实列 去前6个
        select * from d1 where hoppy='玩' group by age having count(id)>3 order by price limit 6;
    
    
    
    
    
    having 对组过滤 必须先分组 在组的后面
    就是一个对组进行筛选的条件
    要部门人数大于3个人的部门 count(id)>3
    select post from employee group by post having count(id)>3;
    
    order by 排序
        order by 字段 (默认升序)
        order by 字段 asc(升序从小到大)
        order by 字段 desc(降序  从大到小)
    
        order by 字段1,字段2
        order by 字段 asc,字段2 desc
        order by 字段 desc,字段2 asc
        order by 字段 desc,字段2 desc
    
    limit 取一个区间
    1.显示分页
    limit m,n(耗内存)
          表示从m+1开始,取n条
          limit 0,6 表示从1开始取6条
          limit 6,6 表示从7开始取6条
          limit 12,6 表示从13开始取6条
          limit 18,6 表示从19开始取6条
    2.取前n名
        limit n   m默认为0
        跟order by一起用
    limit n offset m :从m+1开始,取n条
    

    where 初级筛选

    where:
            范围
                > < = <= >= !=/<>
                between and 举例 between 80 and 100
                in (a,b,c) not in
            模糊查询
                         like
                            %任意长度任意内容   _一个长度任意内容
                        regexp  正则
                            放正则
                    身份运算符 -->null
                        is , is not
                    逻辑运算符
                        and or not
    

    group by分组 与聚合

    分组 group by 与聚合函数
    select * from 表 group by 字段名
        分组 group by(生成一个新表)
        根据某个重复率比较高的字段进行的
        这个字段有多少种可能就分成多少个组
            根据性别分组 : 男的一组 女的一组
            根据部门分组 : 销售一组 教学一组 ...
        去重
        一旦分组了就不能对具体某一条数据进行操作了
            永远都是考虑 这组 xxx
        group_concat : 只用来做最终的显示,不能结果操作其他数据(属于这个组的所有人)
    与聚合 联系 聚合函数
        99.99%的情况都是和分组一起用的
        如果没有和分组一起用,默认一整张表是一组
        count(id)  / count(*) 计数 :每个组对应几条数据
        max 求最大值: 这个组中某字段的最大值
        min 求最大值: 这个组中某字段的最小值
        avg 求平均值
        sum 求和值
    

    having对组过滤

    # having 对组过滤 必须先分组 在组的后面
    # 就是一个对组进行筛选的条件
    # 要部门人数大于3个人的部门 count(id)>3
    # select post from employee group by post having count(id)>3;
    

    distinct 去重

    示例:
         select distinct post from employee;
    注意问题:select的字段必须写在distinct的后面,并且如果写了多个字段,比如:
        select distinct post,id from employee;这句话,意思就是post和id两个组合在一起同时重复的才算是重复数据
    

    order by 排序

    #     order by 字段 (默认升序)
    #     order by 字段 asc(升序从小到大)
    #     order by 字段 desc(降序  从大到小)
    #
    #     order by 字段1,字段2
    #     order by 字段 asc,字段2 desc
    #     order by 字段 desc,字段2 asc
    #     order by 字段 desc,字段2 desc
    

    limit 取一个区间

    limit 取一个区间
    1.显示分页
    limit m,n(耗内存)
          表示从m+1开始,取n条
          limit 0,6 表示从1开始取6条
          limit 6,6 表示从7开始取6条
          limit 12,6 表示从13开始取6条
          limit 18,6 表示从19开始取6条
    2.取前n名
        limit n   m默认为0
        跟order by一起用
    limit n offset m :从m+1开始,取n条
    

    查询步骤

    select distinct 字段1 as a,字段2... from 库名.表名 (如果没有use连接到某个库,需要写上库名)
        where 条件 
        group by 分组依据字段
        having 分组后再过滤
        order by 排序  order by 字段 asc,字段 desc;
        limit  limit 3   limit 5,5 从索引为5的记录(第六条)开始算上这一条取5条
    
  • 相关阅读:
    Spring Boot 结合 Redis 序列化配置的一些问题
    基于SpringBoot的代码在线运行的简单实现
    将Spring实战第5版中Spring HATEOAS部分代码迁移到Spring HATEOAS 1.0
    用Spring Security, JWT, Vue实现一个前后端分离无状态认证Demo
    使用最新AndroidStudio编写Android编程权威指南(第3版)中的代码会遇到的一些问题
    C# 内存管理优化畅想----前言
    C# 内存管理优化实践
    C# 内存管理优化畅想(三)---- 其他方法&结语
    C# 内存管理优化畅想(二)---- 巧用堆栈
    C# 内存管理优化畅想(一)---- 大对象堆(LOH)的压缩
  • 原文地址:https://www.cnblogs.com/saoqiang/p/12388389.html
Copyright © 2020-2023  润新知