1、如何判断数据库中null的数据?
(1)= 或 <> 不能用于判断null值
(2)is null 或 is not null 可以判断 null
2、<=> : 安全 等于
(1)既可以判断 NULL值,也可以判断普通的数据
(2)可读性比较差
(3)对比学习:
①is null 或者 =
3、运算符优先级
(1)() 优先级最高
(2)从高到低顺序
①算术运算符
②比较运算符
③特殊比较运算符
1)Between and、in、like、is null 等
④逻辑运算符
1)NOT
2)AND
3)OR
4、排序查询:order by
(1)语法:
Select 查询列表 ③
From 表名 ①
【Where 筛选条件】 ②
Order by 排序列表 【asc|desc】 ④
(2)特点:
①asc:升序(默认) desc:降序
②Order by 后面的排序列表,可以是单个字段 或 多个字段 或 别名 或 表达式 或 函数
5、函数:
(1)类似于 java 方法
(2)好处:
①提高代码的重用性
②隐藏实现细节
(3)分类:
①单行函数
②分组函数(聚合函数)
6、单行函数
(1)IFNULL
(2)单行函数:=》字符
①length
②concat
③upper/lower
④substr
⑤replace
⑥lpad/rpad
⑦Instr
⑧trim
(3)数学函数
①round :四舍五入
②Ceil: 向上取整
③Floor:向下取整
④Mod: 取余
⑤Truncate:截断
(4)日期函数:
①Now:返回当前的系统日期+时间
②Curdate:返回当前的日期
③Curtime:返回当前时间
④获取指定的 年、月、日、时、分、秒
1)Year
2)Month
3)等
⑤Str_to_date: 将字符串 转化 为 日期类型
⑥Date_format: 将日期转换为字符串
7、分组函数:
(1)主要分类
①Sum :求和
②Avg:求平均值
③Max:最大值
④Min:最小值
⑤Count:统计个数
(2)特点:
①Sum、avg 一般处理数值型
②Max、min、count 可以处理任何类型
③分组函数 都会忽略null
(3)统计个数的区分
①MYISAM存储引擎下,count() 效率比较高
②INNODB存储引擎下,count(1)和count() 效率几乎相同,
比count(字段)效率高一些
8、分组查询
(1)语法:
select 分组函数,列
from 表
【where 筛选条件】
group by 分组的列表
【having 分组的筛选条件】
【order by 子句】
(2)注意:
①查询列表中,要求是分组函数和group by 后面出现的字段
(3)分组核心关键字
①group by
1)按照某个字段或某些字段进行分组
②having
1)对分组之后的数据进行再次的条件筛选
(4)特点:
9、连接查询
(1)连接查询可以理解为 多表查询
(2)例如:查看每个员工对应的部门名称及工资等级
(3)连接查询是在多个表之间通过一定的连接条件,使表之间发生关联,进而能从多个表中获取数据。
(4)多表查询的语法(92版)
Select 查询列表
From 表1,表2,…
Where 表关联条件 与 筛选条件
(5)多表查询的语法(99版)
select 查询列表
From 表1 join 表2
on 表的关联条件
where 筛选条件
(6)连接查询的分类
①年份进行划分
1)SQL92
a.比较老的语法
2)SQL99
a.比较新的语法
②根据表的连接方式进行划分:
1)内连接 INNER JOIN
a.等值连接
a)使用 =
b.非等值连接
a)in、between.and、not in、is null 等
c.自连接
a)自己连接自己
2)外连接 OUTER JOIN
a.左外连接(左连接)
b.右外连接(右连接)
3)全连接—
(7)笛卡尔积现象
①现象:表1,有m行,表2有n行,结果 m*n行
②出现的原因:没有设置其连接条件
③如何避免:设置其连接条件
(8)内连接==》等值连接
① 使用等号 设置的条件
(9)内连接==》非等值连接
①使用 in、between.and、not null、is null 等
(10)内连接==》自连接
①自己连接自己