一丶
1.学习MySQL主要还是学习通用的SQL语句,那么SQL
语句包括增删改查,那么SQL语句是怎么分类的呢?
DQL(数据查询语言):查询语句,凡是select都是DQL。
DML(数据操作语言):insert,delete,update,对表中的数据进行增删改。
DDL(数据定义语言):create,drop,alter,对表的结构进行增删改。
二丶
简单的查询语句(DQL)
语法格式:
select 字段名1,字段名2,字段名3 。。。。from 表名;
提示:
1.任何一条sql语句以分号结尾。
2.sql语句不区分大小写。
3.给查询结果的列重命名:
select 字段名1,字段名2,字段名3 as 重新命名的名字 。。。。from 表名;
4. 别名中有中文:select 字段名1,字段名2,字段名3 as 重新命名的名字(用单引号修饰) 。。。。from 表名;
5.查询所有的字段:
select * from 表名;
三丶
条件查询
- 语法格式:
select
字段 字段。。。
from
表名
where
条件;
执行顺序:先from,然后where,在select。
2.between 。。。 and。。。。。 限制了一个范围。(是一个闭区间)
3. is null。
4. and 表示的是既干这个,又干那个,表示并且,or表示的是或者,表示既有也有。建议不确定运算符的优先级,就加小括号。
5. in等同于or。 in(1000,5000)in后面的不是区间,是具体的值,表示找出工资是1000和工资是5000的。
6. 模糊查询:like,在模糊查询中,必须掌握两个特殊的符号,一个是%,一个是——(下划线)%代表任意多个字符,_代表任意一个字符。若是想要查找有下划线的,则需要‘%_%’,通过转意,将其转化成正常的下划线。
三丶排序
(升序和降序)
按照工资的升序,找出员工名和薪资
select 字段名
from
表名
order by
工资字段名
注意:默认是升序,怎么指定升序和降序呢?acs表示升序,desc表示降序
select
字段
from
表名
where
条件
order by(表示通过这个排序)
工资字段名
acs
(指定升序排)
其中order by是最后执行的。
四丶
分组函数?
count 取得记录数
sum 求和
avg 求平均
max 取最大的数
分组函数自动忽略null
注意:所有的分组函数都是对某一组数据进行操作的。有一个null进行了运算,那么结果一定是null。
一个工具: ifnull(可能为nill的数据,被当做什么处理)空处理函数
思考以上的错误信息,无效的使用了分组函数?
原因:sql语句中有一个语法规则,分组函数不可直接使用在where字句当中。why??
count()和count(字段名)的区别?
解释: count ():不是统计某个字段中数据的个数,而是统计总记录条数,和某个字段无关
count(字段名) 表示字段名中不为null的总数量。
五丶
groupby 和having
group by:是按照某个字段或者是某些字段进行分组
注意:记住一个规则,当一条语句中有group by的时候,select后面只能跟分组函数和参与分组的字段
having:是对分组之后的数据再进行过滤
注意:能在where过滤的一定先在where中过滤