mysql的select语句笔记

select [distinct 去重] */ 列名1,列名2
from 表名
where 条件
【多表】and 表间关联
[去重必须两条数据完全相同才会去重]


模糊查询 like 
%:表示0到多个任意字符
_:表示单个任意字符


查询表结构
desc 表名

select * from 表名
order by 排序字段(asc默认 小到大)|desc(需要定义 大到小)


分页查询

select * from 表名 limit start,rows
从start+1开始取,取出rows行,start从0开始计算
select * from 表名  
LIMIT每页显示记录数*(第几页-1),每页显示记录数


count去重
select count (distinct 统计字段)
from 表名


多表查询的自连接 left
把同一张表当作两张表使用,需要给表取别名【select...from 表名 表别名,表名 表别名  即可】
如果列名不明确 可以指定列别名 列名 as 列别名


子查询 
    单列子查询

查出 表1 满足 条件 的 字段1 的其他信息
select * from 表1 
where 字段1 = ([以下即使子查询]
    select 字段1 
    from 表名
    where 条件
    )

all 和 any
 查询出 表1 中 字段1 大于 子查询内所有 字段1的结果的内容(字段5,6...)
  或者去掉>all 给子查询的字段1用max包起来即可
select 字段5,字段6,..
from 表1
where 要比较的字段1 > all(
    select 字段1 
    from 表名
    where 条件
    )

 查询出 表1 中 字段1 大于 子查询内某一个 字段1的结果的内容(字段5,6...)
  或者去掉>any 给子查询的字段1用min包起来即可
select 字段5,字段6,..
from 表1
where 要比较的字段1 > any(
    select 字段1 
    from 表名
    where 条件
    )

    多列子查询

查询表1 中和 满足条件 字段2 = 'XX' 的 字段9,字段8 相等的内容 并排除条件中的行
select * from 表1 
where (字段9,字段8,...)=(
    select 字段9,字段8,...
    from 表1
    where 字段2 = 'XX'
    ) and 字段2 <>'XX'


外连接
 为了使没有关联的表数据也可以被查询出来
     左外连接 的意思即是 左 边的表如果和 右 边的的表没有匹配的会显示 左 边表的所有记录
     右外连接 的意思即是 右 边的表如果和 左 边的的表没有匹配的会显示右边表的所有记录
     1.左外连接(如果左侧的表完全显示我们就说是左外连接)
    🐹语法:select... from 左表1 left join 右表2 on 条件
     2.右外连接(如果右侧的表完全显示我们就说是右外连接)
    🐹语法:select... from 左表1 right join 右表2 on 条件
·
原始方法 无法获取 字段2 不相同 无法匹配到的信息 
select 无相同字段1,表1.有相同的字段2,无相同的字段3...
 from 表1,表2
where 表1.有相同的字段2 = 表2.有相同的字段2

改成左外连接 
显示了 表1 内即使和表2无关联的字段   而且表2的字段3列为 null
select 无相同的表1的字段1,表1.有相同的字段2,无相同的表2的字段3...
 from 表1 left join 表2
on 表1.有相同的字段2 = 表2.有相同的字段2

改成右外连接 
显示了 表1 内即使和表2无关联的字段   而且表2的字段3列为 null
select 无相同的表1的字段1,表1.有相同的字段2,无相同的表2的字段3...
 from 表1 right join 表2
on 表1.有相同的字段2 = 表2.有相同的字段2


绝大多数情况下 用的最多的还是内连接(就是最常用那种连接)


select last_day(now()) #查看当前月的最后一天 now()也可以写日期年月日

last_day (日期) - 2得到日期该月份的倒数第3天


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值