关键字
in
a in (a, b, c)
between
等价于 value<a and value>b
like
%任意字符
_下划线任意一个字符
REGEXP通配符
^开头 $结尾
.任意一个字符
[0-9] [a-z] [abc]
null
不能用‘null’判断
is null
order by
排序 默认升序 asc,desc 实现降序
多列的话,在后面加列名
if语句的使用
IF(expr1,expr2,expr3)
if(id=1, '男', '女')
group by语句
聚合:将相同值的列合在一起,然后进行处理
having count(列名) > 10
Union
合并两个结果,默认去除重复记录,不想去重使用union all
intersect
查询交集
except
查询差集
子查询
where使用子查询
select * from player where level > (select avg(level) from player)
select使用子查询
select level, round((select avg(level) from player)) as average from player
创建新表
create table new_player select * from player where level < 5
插入表
insert into new_player select * from player where level between 6 and 10
exists
存在
关联
inner join
返回两张表都有的数据
inner join 关联表
on 两张表的关联数据
select * from player
inner join equip
on player.id = equip.player_id
查询出来的是既包含玩家信息又包含装备信息的记录
left join
只返回左表的数据和右表符合的数据,没有的数据用null填充
select * from player
left join equip
on player.id = equip.player_id
查询出来的所有玩家信息以及玩家对应的装备信息,如果没有装备用null填充
right join
只返回右表的数据和左表符合的数据,没有的数据用null填充
select * from player
right join equip
on player.id = equip.player_id
包含装备的所有信息,以及有装备的玩家信息。
索引
//创建索引
create [unique|fulltext|spatial] index index_name on tbl_name (index_col_name)
//删除
drop index index_name on tbl_name
视图
虚拟存在的表,所谓查询语句
create view top10 as select * from player order by level desc limit 10
修改视图
alter view 10
as
select * from player order by level limit 10
删除视图
drop view top10