mysql基础

关于mysql的简单学习,还要一堆关键字没加进来。。。

关键字

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


LICENSED UNDER CC BY-NC-SA 4.0
Comment