柯基笔记:MySQL语句及高级用法

  • 作者:柯基大佬
  • 日期:2021-08-13
  • 类型:Java
  • 说明:本文源于 柯基 手写摘要,如需转载请带上链接或注明出处!

符号

注释:
使用双中划线,-- xxx

通配符:
一般用作条件,查询或修改某字段对应的值

  • %:占位符,代表任意长度,任意内容;举例:like %xxx%

  • _:占位符,代表一个长度,任意内容;举例:like x_

  • like:模糊匹配;举例:

    • like ‘s%’:模糊匹配以s开头任意长度、任意内容的值
    • like ‘s_’:模糊匹配s后一个长度、任意内容的值
    • like ‘%s%’:模糊匹配s两头任意长度、任意内容的值
  • or:两个以上或条件;举例:name = ‘张三’ or age = 18

  • and:两个以上与条件;举例:name = ‘张三’ and age = 18

  • in:两个以上包含条件;举例:age in(1,3,6)

查询:SELECT

  • 常用基本查询

    select * from 表名
    select 字段1,字段2... from 表名
  • where:查询条件约束

    select * from 表名 where 字段名=‘值’
  • limit:查询个数约束(分页)

    select * from 表名 limit 2

    limit 2:查询count限制n数据
    limit 1,2:查询下标1~2的数据
    limit 0,-1:查询所有数据,高版本已不可用
  • count:表的总行数查询

    select count(*) from 表名
  • distinct:不重复的总行数查询(去重查询)

    -- 写法1
    select count(distinct 字段名) from 表名

    -- 写法2,省略count()
    select distinct 字段名 from 表名
  • length:查询约束长度

    value是中文的情况下查询时需注意:

    • 在utf-8编码下,一个汉字占3个长度;

    • 在gbk编码下,一个汉字占2个长度;

    • 在Oracle的gbk编码下,一个汉字占1个长度

    -- 如果值是纯中文,以下语句查询到的会是2个汉字以上的条件
    select * from 表名 where length(字段名) >= 6

    -- CHAR_LENGTH() 能够做到一个汉字一个字符,以下语句查询到的是6个汉字或字符以上的条件
    select * from 表名 where char_length(字段名) >= 6

插入:INSERT INTO

注意:不可空字段是必传的

  • 字段名与值一一对应

    insert into 表名(字段1, 字段2 ...) value(字段1值, 字段2值 ...)
  • 无关字段名,必须传入所有字段

    insert into 表名 value(字段1值,字段2值 ...)

修改:UPDATE

  • 无条件修改所有该字段的值

    update 表名 set 字段 = 值
  • 加条件修改某字段的值

    update 表名 set 字段1=字段1where 字段2=字段2or 字段3=字段3

删除:DELETE

  • 清空表

    delete from 表名
  • 加条件删除字段

    delete from 表名 where 字段1=字段1

高级用法

别名:AS
别名不修改原字段,只是在查询结果中显示

-- 表别名
select 字段 from 表名 as xxx
select xxx.字段1, xxx.字段2 from 表名 as xxx

-- 字段别名
select 字段1 as 别名1, 字段2 别名2 from 表名

时间

-- yyyy-MM-dd HH:mm:ss
select NOW()
select SYSDATE()

-- yyyy-MM-dd
select CURRENT_DATE

排序:ORDER BY
(asc是升序(默认),desc是降序)

-- 升序
select 字段 from 表名 order by 字段条件

-- 降序
select 字段 from 表名 order by 字段条件 desc

分组:GROUP BY

select 字段 from 表名 group by 字段条件

区间:BETWEEN、OR、IN

-- BETWEEN,查询区间的值
select 字段 from 表名 where 字段条件 betweenstart值’ ANDend值’

-- OR,查询符合的其中一个值
select 字段 from 表名 where 字段1=字段1or 字段2=字段2

-- IN,查询包含的值
select 字段 from 表名 where 字段条件 in(1, 3, 5)

聚合函数

  • SUM:总数

    select sum(字段) from 表名
  • AVG:平均数

    select avg(字段) from 表名
  • MAX:最大值

    select max(字段) from 表名
  • MIN:最小值

    select min(字段) from 表名

参考:https://www.cmonbaby.com/posts/sql.html