Skip to content

3, 7. 从表中查询数据

3.1 列查询

mysql > select * from mail;
mysql > select mail, name from mail;

3.2 指定行查询(条件筛选)

mysql > select mail, name from mail where name='zhao';
mysql > select mail, name from mail where name like 'zh%';
mysql > select mail, name from mail where name='zhao' and area ='beijing';

3.3 格式化显示查询结果

这里利用各种的函数来格式化相应的位置

CONCAT()     : 链接字符串
MONTHNAME()  : 月份名称
DayOfMonth() : 天
Year()      : 年份
DateFormat   : 日期格式化

使用 as 对列使用别名 列别名在 where 中不可用 使用 distinct 进行唯一性处理

3.4 调试比较表达式

# 这里的 name='good' 便是表达式
mysql > select mail, name = 'good' from name

3.5 null 值的比较

对于 null 值使用 null 的比较操作符 is null , is not null , <=> 这里有两个函数需要注意

If(expr1 is not null, expr1, expr2);
IfNull(expr1, expr2)

这两个函数等价.

3.6 排序/视图/多表查询

... order by a;
... order by a, b;
... order by a asc, b;

多表查询

... from profile
    inner join
        profile_contact
    on
        profile.id = profile_contact.profile_id

子查询

... from profile_contact
    where
        profile_id in (select id from profile where area='beijing')

查询头尾取出数据

... Limit 1
... Limit 2, 1

结果集再次排序

select * from
   (select name from profile order by birth desc limit 4) as t
   order by birth asc;

7.1 使用 Order By

# 标准
... Order By name [Desc][, title [Asc]];
# 表达式排序
... Order By Floor((size + 1023) / 1024)
# 时间排序
... Order By date;
# 可以根据字串的某部分进行排序
... Order By SubString_Index(bsn, '-', -3)

7.2 查询条件

# If
... Order By If(a=b, 0, 1);

7.3 按照用户自定义排序

# Field
... Order By Field(name, 'Zhang', 'Li', 'Wang')

7.4 Enum 排序

# 使用 Cast 进行转换为字串
# 默认 Enum 存储的是数值
... Order By Cast(day as Char);

说明

创建时间: 2023-01-15 00:29:00 , 最后编辑于 2023-12-08 00:56:00