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 35

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 #不可以
原文地址:https://www.cnblogs.com/qqwhsj/p/10766644.html