建表规范
- -- Normal Format, NF
- - 每个表保存一个实体信息
- - 每个具有一个ID字段作为主键
- - ID主键 + 原子表
- -- 1NF, 第一范式
- 字段不能再分,就满足第一范式。
- -- 2NF, 第二范式
- 满足第一范式的前提下,不能出现部分依赖。
- 消除符合主键就可以避免部分依赖。增加单列关键字。
- -- 3NF, 第三范式
- 满足第二范式的前提下,不能出现传递依赖。
- 某个字段依赖于主键,而有其他字段依赖于该字段。这就是传递依赖。
- 将一个实体信息的数据放在一个表内实现。
SELECT
- SELECT [ALL|DISTINCT] select_expr FROM -> WHERE -> GROUP BY [合计函数] -> HAVING -> ORDER BY -> LIMIT
- a. select_expr
- -- 可以用 * 表示所有字段。
- select * from tb;
- -- 可以使用表达式(计算公式、函数调用、字段也是个表达式)
- select stu, 29+25, now() from tb;
- -- 可以为每个列使用别名。适用于简化列标识,避免多个列标识符重复。
- - 使用 as 关键字,也可省略 as.
- select stu+10 as add10 from tb;
- b. FROM 子句
- 用于标识查询来源。
- -- 可以为表起别名。使用as关键字。
- SELECT * FROM tb1 AS tt, tb2 AS bb;
- -- from子句后,可以同时出现多个表。
- -- 多个表会横向叠加到一起,而数据会形成一个笛卡尔积。
- SELECT * FROM tb1, tb2;
- -- 向优化符提示如何选择索引
- USE INDEX、IGNORE INDEX、FORCE INDEX
- SELECT * FROM table1 USE INDEX (key1,key2) WHERE key1=1 AND key2=2 AND key3=3;
- SELECT * FROM table1 IGNORE INDEX (key3) WHERE key1=1 AND key2=2 AND key3=3;
- c. WHERE 子句
- -- 从from获得的数据源中进行筛选。
- -- 整型1表示真,0表示假。
- -- 表达式由运算符和运算数组成。
- -- 运算数:变量(字段)、值、函数返回值
- -- 运算符:
- =, <=>, <>, !=, <=, <, >=, >, !, &&, ||,
- in (not) null, (not) like, (not) in, (not) between and, is (not), and, or, not, xor
- is/is not 加上ture/false/unknown,检验某个值的真假
- <=>与<>功能相同,<=>可用于null比较
- d. GROUP BY 子句, 分组子句
- GROUP BY 字段/别名 [排序方式]
- 分组后会进行排序。升序:ASC,降序:DESC
- 以下[合计函数]需配合 GROUP BY 使用:
- count 返回不同的非NULL值数目 count(*)、count(字段)
- sum 求和
- max 求最大值
- min 求最小值
- avg 求平均值
- group_concat 返回带有来自一个组的连接的非NULL值的字符串结果。组内字符串连接。
- e. HAVING 子句,条件子句
- 与 where 功能、用法相同,执行时机不同。
- where 在开始时执行检测数据,对原数据进行过滤。
- having 对筛选出的结果再次进行过滤。
- having 字段必须是查询出来的,where 字段必须是数据表存在的。
- where 不可以使用字段的别名,having 可以。因为执行WHERE代码时,可能尚未确定列值。
- where 不可以使用合计函数。一般需用合计函数才会用 having
- SQL标准要求HAVING必须引用GROUP BY子句中的列或用于合计函数中的列。
- f. ORDER BY 子句,排序子句
- order by 排序字段/别名 排序方式 [,排序字段/别名 排序方式]...
- 升序:ASC,降序:DESC
- 支持多个字段的排序。
- g. LIMIT 子句,限制结果数量子句
- 仅对处理好的结果进行数量限制。将处理好的结果的看作是一个集合,按照记录出现的顺序,索引从0开始。
- limit 起始位置, 获取条数
- 省略第一个参数,表示从索引0开始。limit 获取条数
- h. DISTINCT, ALL 选项
- distinct 去除重复记录
- 默认为 all, 全部记录
(编辑:晋中站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|