一、数据库范式
1.概念:
制定表的原则。
2.应用数据库范式带来的好处:
(1)减少数据冗余;
(2)消除异常;
(3)让数据组织更加和谐。
3.五个范式:
(1)第一范式(1NF):字段不可再分,属性具有原子性(每一列保持原子特性);
(2)第二范式(2NF):每一列都和主键相关,除主键外的所有列都依赖于主键;
(3)第三范式(3NF):除主键外的所有列都依赖于主键;
(4)BC范式(BCNF):每个表只有一个候选键(候选键:不重复的属性);
(5)第四范式(4NF):消除表中的多值依赖。
4.并不是范式越高越好。范式越高,表越多,表多了会出现的问题:
(1)查询时需要连接多个表,增加了SQL查询的复杂度;
(2)查询时需要连接多个表,降低了数据库查询性能。
二、基本查询语句
1.查询所有字段:select * from 表名 where.....;
2.查询指定字段:
select 属性名1,属性名2,...... from 表名;
三、单表查询语句
1.带in关键字的查询
select * from 表名 where ...... in(元素1,元素2,......);
2.带between and的范围查询
select * from 表名 where ...... between 取值1 and 取值2;
3.带like的字符匹配查询
select * from 表名 where ......like ' ....';
4.查询空值
select * from 表名 where ...... is null;
5.多条件查询
select * from 表名 where 条件表达式1 and 条件表达式2;
6.带or 的多条件查询
select * from 表名 where 条件表达式1 or 条件表达式2;
7.查询结果不重复
select distinct 属性名 from 表名;
8.对查询结果排序
select * from 表名 order by 属性名(asc/desc);
asc:升序 desc:降序
9.分组查询
(1)单独使用 group by ,结果只显示一个分组
select *from 表名 group by 属性;
(2)group by 关键字与group_concat()函数一起使用时,每个分组中指定字段都显示出来
select 属性,group concat( …)from 表 group by …;
(3)group by 与集合函数
例如用count():
select 属性,count(......) from 表名 group by......;
集合函数包括:count()、sum()、avg()、max()和min()
(4)group by和having 一起使用
加上having可限制输出结果。
(having 表达式作用于分组后的记录,用于选择满足条件的组;where 作用于表或视图,是表和视图的查询条件)
10.用limit 限制查询结果的数量
select * from 表名 limit 记录数;