mysql实践(一)--查询
1.查询是常见的增删改查操作中最为复杂的一段。
2.常见格式
select [查询内容] from [表名] where [查询条件]
3.去重(distinct)
select distinct [查询内容] from [表名] where [查询条件]
使用关键字distinct来去除重复的内容(注意:指查询结果所有内容重复的元组),在mysql中不只是distinct可以去重,也可以使用group by 自带的去重。
4.排序(order by)
select [查询内容] from [表名] where [查询条件] order by [属性组] [desc]
使用用order by 会根据你属性组的分量进行排序,默认情况下是由小到大的顺序,可使用desc来倒序。
5.去部分值(limit)
select [查询内容] from [表名] where [查询条件] limit 3,5
limit中参数3代指从第3个起(包括3在内),5代表显示5条数据
6.as
select [查询内容] from [select 查询语句] as table_1 where [查询条件] select [查询内容] as new_name from [表名] where [查询条件]
当我们需要再次使用一些无法再次表达的内容时,可以使用as将他命名,可以是命名为属性,也可以是表。
7.连接使用(join)
select [查询内容] from table_1 inner join table_2 on [连接内容] where [查询条件]
select [查询内容] from table_1 left outer join table_2 on [连接内容] where [查询条件]
无论是自然连接,内连接还是外连接只使用在from中,用于多表关联,on后的连接内容可以是等于也可以是between on等关键字。
8.in/not in
select [查询内容] from [表名] where 属性名 in (select [查询结果] from [表名] where [查询条件])
这些关键字使用与where语句,常用于子表查询操作,不过值得注意的是,属性名与查询结果应该是对应的。
9.all/any
select [查询内容] from [表名] where [属性名]>all(select...)
select [查询内容] from [表名] where [属性名]>any(select...)
使用基本与in的使用方法类似,主要在于all与any的意思。>all代表大与所有人则取最高值,>any代表大与任何一个人就行则取大与最低值;<all代表小于所有人,取最低值。<any代表小于任何一个人,取最高值。
10.having
having与where极其相似,都可以看做是一个条件判断语句,或者说是一个过滤器
区别主要有三点:
having | where | |
执行时间 | 先执行前面语句将数据读到内存中在使用having过滤 | 根据where语句过滤,再将过滤后的结果放入内存 |
是否可以使用字段别名 | 可以使用 | 不可以使用 |
是否可以使用统计函数 | 可以使用 | 不可以使用 |
select eno as e from emp having e>50 #可以 select eno as e from emp where e>50 #不可以 select eno as e from emp group by eno having e>50 #可以 select eno as e from emp where e>50 group by eno #不可以