Mysql进阶
必备sql语句
1 | select * from info where id between 2 and 4; -- id大于等于2、且小于等于4 |
通配符
- 不适合大数据量的搜索
1 | 分别有: '%' 和 '_' 其中'%'表示n个字符 '_'表示一个字符 |
映射
1 | -- 查询info表中id和name,返回的时候表头name会被改成NM,还会新曾一列123(填充的数据也都是123)并修改表头为age |
case/when
1 | select |
排序
1 | select * from info order by age desc; -- 基于age进行倒叙排列大到小 |
优先级:
在sql语句中,会先执行条件命令再执行排序命令
取部分数据
1 | select * from info limit 5; -- 获取前5条数据 |
分组
1 |
|
连表
左右连表
1 | .... from 主表 left outer join 从表 on 主表.x = 从表.x |
左右连表会依主表的数据为主,若从表没有依然会展示只不过数据会填充成NOLL
简写:
select * from info left join
内连接
1 | -- from 表 inner join 表 on 条件 |
- sql优先级
1 | join -- 连表 |
上下连表
1 | -- 取出depart表中的id和title和info中的id,name然后上下拼接起来表中的id和title和info中的id,name然后上下拼接起来(表头为上面哪个表)(即使数据类型不一致也可以连接起来)[会自动去除重复] |
表关系
外键约束
- 在创建表的时候写(被约束的是主表)
1 | create table info( |
后面再添加(被约束的是主表)
1
alter table 表名 add constraint fk_主表名_关联表 foreign key 主表名(列名) references 副表名(列明)
删除外键
1 | alter table 主表名 drop foreign key 外键名; |