zoukankan      html  css  js  c++  java
  • Mysql中其余知识点使用

     1. replace

    replace(字段名,“需要替换的值”,“替换后的值”),一般结合 update一起使用:update table_name set attribute = REPLACE( attribute, 旧内容, 新内容) where id = value ;

    2.更改数据表的信息

    alter table 表名 change 原列名 新列名  类型; --修改表的列属性名
    alter table 表名 modify 列名 类型 ;  --修改表的类类型
    alter table 表名 drop 列名;  --删除表的某一列
    alter table 表名 add  列名 类型;--添加某一列
    alter table 表名 rename 新表名; --修改表名

    或者在 Mysql 中也支持: 

    rename table ‘旧名字’ to ‘新名字’

     3.左连接,没有在右边查询到的一般用左连接(将左边表的所有记录都查询出来,右边表只显示和左边表对应的数据或者 null

    select p.id, p.name, t.content 
    from person p LEFT JOIN task t   --左连接
    on p.id = t.person_id    --根据这两个属性进行连接
    ORDER BY p.id   -- 对结果进行升序排序

    结果如下:

                  

    4. order by 与 Grouo by 的关系

    SELECT user_id, max(date) as d FROM login
    GROUP BY user_id
    ORDER by date DESC    --错误的方式

    以上为错误的方式!!!

    不能用order by date 来试图获取每个组内的最大日期,因为 order by 在执行的时候 group by 已经执行了,也就是说此时已经分组完毕每组只携带了默认的第一个记录,所以此时 order by 只是在组与组的维度进行排序

    正确写法为:

    SELECT user_id, max(date) as d FROM login
    GROUP BY user_id
    ORDER by user_id    -- 正确写法

    5.order by 与 Grouo by 、保留小数点后几位 ROUND(牛客SQL-77)

    SELECT job, ROUND(AVG(score), 3) AS `avg` FROM grade    --保留小数点后三位
    GROUP BY job 
    ORDER BY `avg` DESC    --可以使用 select 计算之后的参数作为排序,因为分组之后执行多行函数的结果是一个值

    还是上面那个问题,group by 执行后,每组只携带一个记录,而 AVG(score) 之后,每组也只存在一个平均值,所以可以进行排序

    ROUND(x, n) 表示保留小数 x 的后 n 位结果。

    6. YEAR 筛选年份值(牛客 SQL-84)

    SELECT job, SUM(num) AS cnt FROM resume_info
    WHERE date >= '2025-01-01' AND date <= '2025-12-31'    --筛选 时间为2025年一整年的数据
    GROUP BY job
    ORDER BY cnt DESC   --同理5,可以对多行函数后的值排序

    上面的时间可以修改为如下:

    SELECT job, SUM(num) AS cnt FROM resume_info
    WHERE YEAR(date) = '2025'   --筛选时间的年份值
    GROUP BY job
    ORDER BY cnt DESC
  • 相关阅读:
    操作系统进程通信
    操作系统进程调度
    java中的变量
    java移位运算符
    String, StringBuffer, StringBuilder 的区别
    多线程相关问题汇总
    java内存管理与GC机制(二)
    java内存管理与GC机制(一)
    进程与线程的理解
    Liferay7使用maven引入第三方jar包
  • 原文地址:https://www.cnblogs.com/luo-c/p/15336913.html
Copyright © 2011-2022 走看看