小白MySQL学习-day04

目录

SQL语句

条件

通配符

映射

排序

取部分

分组

左右连表

联合(上下连表)


SQL语句

其中用到了聚合函数:主要有max()返回最大值,min()返回最小值,count()返回个数,sum()返回和,avg()返回平均数,聚合函数返回值的接收用having然后比大小 "having count(1)> 2"

 

条件:

where

算术关系:> = < !=(between and)

逻辑关系:and or (in (列表)) exists not

表示列的方法:直接id 或者加作用域? info.id

select * from info where age > 30;

select * from info where id between 2 and 4;   -- id大于等于2、且小于等于4

select * from info where name = '武沛齐' and age = 19;

select * from info where (name = '李杰' or email="pyyu@live.com")  and age=49;

select * from info where id not in (1,4,6);
select * from info where id in (select id from depart);

select * from info where not exists (select * from depart where id=5);

通配符:

用于模糊搜索

主要是%和_

select * from info where email like "%@live.com";                 --%可以占位多个字符

select * from info where email like "_upeiqi@live.com";         --_一个下划线占位1个字符

映射:

就是as

select id, name as NM, 123  from info;

select 
    id,
    name,
    666 as num,                                        --别名num
    ( select max(id) from depart ) as mid, -- max/min/sum
    ( select min(id) from depart) as nid,    -- max/min/sum
    age
from info;

#一般不用,效率低

select 
    id,
    name,
    ( select title from depart where depart.id=info.depart_id) as x1
from info;

case..when用法

then 类似于别名 end是列的名称(别名)

select 
    id,
    name,
    case depart_id when 1 then "第1部门" end v1
from info;

select 
    id,
    name,
    case depart_id when 1 then "第1部门" end v1,
    case depart_id when 1 then "第1部门" else "其他" end v2,
    case depart_id when 1 then "第1部门" when 2 then "第2部门" else "其他" end v3,
    case when age<18 then "少年" end v4,
    case when age<18 then "少年" else "油腻男" end v5,
    case when age<18 then "少年" when age<30 then "青年" else "油腻男" end v6
from info;

排序:

升序asc 降序desc

order by

select * from info order by age desc; -- 倒序
select * from info order by age asc;  -- 顺序

select * from info order by id desc;
select * from info order by id asc;
select * from info order by age asc,id desc; -- 优先按照age从小到大;如果age相同则按照id从大到小。

取部分:

limit (多少个)offset (起始位置)

select * from info order by id desc limit 3;                        -- 先排序,再获取前3条数据
select * from info where id > 4 order by id desc limit 3;            -- 先排序,再获取前3条数据


select * from info limit 3 offset 2;    -- 从位置2开始,向后获取前3数据

分组:

group by (条件)

select age,max(id),min(id),count(id),sum(id),avg(id) from info group by age;

select depart_id,count(id) from info group by depart_id having count(id) > 2;

select age,count(id) from info where id > 4 group by age having count(id) > 2;  -- 聚合条件放在having后面

左右连表:

left/right inner/outer join...on (条件)

关键是认清主从表

外接:展现出主表的所有数据(不论左接还是右接)

主表 left outer join 从表 on 主表.x = 从表.id

 

在两表有未联系的数据时出现不同

select * from info left outer join depart on info.depart_id = depart.id;

 select info.id,info.name,info.email,depart.title from info right outer join depart on info.depart_id = depart.id;

 

内接:展现出两个表有关联的数据

主表 left inner join 从表 on 主表.x = 从表.id 

联合(上下连表):

少用

union (all)

select id,title from depart 
union
select email,name from info;
-- 列数需相同

select id from depart 
union
select id from info;

-- 自动去重

select id from depart 
union all
select id from info;

-- 保留所有

小结:

已学习

  • 数据库

  • 数据表

  • 数据行

    • 增加

    • 删除

    • 修改

    • 查询(各种变着花样的查询,主要)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值