mysql基础--Select语句-单表查询

Select语句-单表

基本

  • 语法

    SELECT [DISTINCT] *|{column1, column2,column3..} FROM tablename;

  • 注意事项

    • Select指定查询哪些列的数据
    • column指定列名
    • *代表查询所有列
    • FROM指定查询哪张表
    • DISTINCT可选,显示结果是否去重
  • 使用表达式堆查询的列进行运算

    SELECT *|{column1 | expression, column2 | expression, ....} FROM tablename

  • 使用as语句

    SELECT columnname as 别名 from 表名

  • WHERE子句

  • ORDER BY子句

    SELECT column1,column2,column3.. FROM table; order by column asc|desc, ...

    • Order by指定排序的列,排序的列既可以时表中的列名,也可以是select语句后as的列名
    • Asc升序(默认)、Desc降序
    • ORDER BY 子句应位于SELECT语句的结尾
  • GROUP BY子句

    SELECT column1,column2,column3.. FROM table; group by column

    • 对查询结果分组统计(类似把源数据拆分不同地方,再做统计,返回结果),支持多列,注意多列时嵌套分组

    • having 子句

      SELECT column1,column2,column3.. FROM table; group by column having ....

      • HAVING 限制分组显示结果

函数

  • 亚元表

  • 系统表,可以作为测试表使用,主要辅助函数使用在select语句中

  • 合计/统计函数

    注意NULL值不会统计

    • count

      Select count(*) | count(列名) from tablename [where where_definition]

      • count(*) 返回满足条件的记录行数
      • count(列名) 统计满足条件的某列有多少个,但是会排除null
    • SUM:合计

    • AVG:平均

    • MAX:最大

    • MIN:最小

  • 字符串函数

    • charser(string):返回字符串字符集
    • concat(string[,...]):链接字符串
    • instr(string, substring):返回substring在string中出现的位置,没有返回0
    • ucase(string):转换大写
    • lcase(string):转换小写
    • left(string,length):从string左边起取length个字符
    • rigth(string,length):从string右边起取length个字符
    • char_length()/character_length() :string字符长度
    • length(string): string字节长度
    • replace(string,search_string, replace_string):在string中用replace_string替换search_string
    • strcmp(string1,string2):逐个字符比较两个字串大小
    • substring(string,position[,length]):从string的position开始[从1开始计算],取length个字符
    • ltrim(string):去除前空格
    • rtrim(string):去除后空格
    • trim(string):去除前后空格
  • 数学函数

    • ABS(num):绝对值
    • BIN(decimal_number): 十进制转二进制
    • ceiling(num) : 向上取整,得到比num大的最小整数
    • floor(num):向下取整,得到比num小的最大整数
    • conv(number,from_base, to_base):进制转换
    • format(num, decimal_places):保留小数位
    • HEX(decimal_places):转十六进制
    • LEAST(number, number2[,....]):求最小值
    • MOD(numerator,denominator):求余
    • Rand([seed]):其范围为0<=v<=1.0
  • 时间日期函数

    • current_date() : 当前日期
    • current_time() : 当前时间
    • current_tomestamp() : 当前时间戳
    • date(datetime) :返回datetime的日期部分
    • date_add(date, interval d_value d_type) : 在date中加上日期或时间;d_value 是数量,d_type是单位,可以有:year minute second hour day等
    • date_sub(date, interval d_value d_type):在date上减去一个时间;d_value 是数量,d_type是单位,可以有:year minute second hour day等
    • datediff(date1,date2):两个日期差(结果是天);date1减去date2,可以取负数
    • timediff(date1,date2):两个日期差(结果是小时分钟秒);date1减去date2,可以取负数
    • now() : 当前时间
    • last_day(now()): 获取日期中月份的最后一天
    • Year|Month|DATE(datetime):取出年、月、日
    • unix_timestamp() :返回1970-1-1到现在的秒数
    • from_unixtime(123456426, ‘%Y-%m-%d %H:%i:%s’) :将时间戳转换为固定格式(用于使用整数来存储时间)
  • 加密与系统函数

    • user(): 查询用户
    • database(): 查询数据库名称
    • MD5(str):为字符串算出一个MD5 32的字符串,用户密码加密
    • password(str):从原文密码str计算返回密码字符串,通常用于堆mysql数据库的用户密码加密
  • 流程控制函数

    • IF(expr1,expr2,expr3): 如果expr1为True,则返回expr2否则返回expr3
    • IFNULL(expr1,expr2):如果expr1不为空null,则返回expr1,否则返回expr2
    • select case when expr1 then expr2 when expr3 then expr4 else expr5 END:如果expr1为true,则返回expr2,如果expr3为真,返回expr4,否则返回expr5

增强

  • 日期类型可以直接比较,需要注意格式:select * from emp where hiredate > '1992-01-01'

  • like操作符支持模糊查询,%-表示0到多个字符,_-表示单个字符:select ename sal from emp where ename like '_S%'

  • 判断值是否为null,使用 is null

  • DESC 表名,来查询表结构

  • ORDER BY可以嵌套排序索引:order by column1 asc|desc, column2 asc|desc

  • 分页查询

    Select ... limit start, rows 表示从start+1行开始取,取出rows行,start从0开始计算

    • 公式:limit 每页显示记录数*(第几页-1) , 每页显示记录数
  • 由于SQL非常灵活,需要我们动脑筋,实际应用将各个函数进行灵活组合,技巧:尝试写-》修改-》尝试

  • 多子句查询顺序

    select column1.... from table
    group by column
    having column
    order by column
    limit start, rows;
    
posted @   邵泽龙  阅读(380)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示