列属性:主键,自增加,惟一键。php
关系:一对一,一对多,多对多spa
三层范式:设计
1NF:字段设计必须符合原子性排序
2NF:不存在部分依赖(没有复合主键)it
3NF:不存在传递依赖(实体单独成表)class
逆规范化:效率磁盘空间博弈;效率
高级数据操做:select
新增操做:主键冲突(更新与替换),蠕虫复制循环
更新操做:限制更新数量:limit分页
删除操做:限制删除数量:limit。清空表结构:truncate
查询操做:select选项;
字段别名: 数据源(单表,多表,子查询[别名])
Where子句(条件判断:从磁盘)
Group by子句(判断结构,针对分组统计结果)
Order by子句(排序,多字段排序)
Having 子句 (判断结果,针对分组进行统计结果)
Limit子句 (限制记录数,分页)
链接查询:将多张表(能够大于2张)进行记录的链接(按照某个指定条件进行数据拼接)
最终结果:记录数有可能变化,字段数必定会增长(至少两张表合并)
链接查询的意义:用户查看数据的时候,须要现实的数据来自多张表。
Sql将链接查询分为四类:外连接,天然链接,内链接,交叉链接
链接查询:join,使用方式 左表join 右表;
左表;在join关键字左边的表;
右表:在join 关键字右边的表;
Cross join从一张表中循环取出每一条记录,每张记录都去另外一张表进行匹配。
匹配必定保留(没有条件匹配),而链接自己字段就全增长(保留),最终会造成的结果叫作笛卡尔积
左表 cross join 右表;==from 左表,右表;
笛卡尔积没有意义:应该尽可能避免(交叉查询没用)交叉链接的价值:保证链接结构的完整性。
例:select * from my_stu cross join my_class;
内链接:[inner] join;
从左表中取出没一条记录去右表中全部记录进行匹配,匹配必须是某个条件,在左表中与右表中相同的最终会保留,不然不保留。
左表 [inner] 右表 on 左表.字段=右边.字段;
On 表示链接条件;
条件字段就是表明相同的业务含义
如:内链接
Select *from my_stu a join my_class b
On a.c_id=b.id;
在php中会覆盖:
字段别名以及表别名对的使用:在查询数据的时候,不一样表有同名字段,这个时候须要加上表名才能区分,而表名太长,一般使用别名。
内链接可使用where 代替on关键字(where没有on效率高)
外连接:outer join ,以某张表为主,取出里面全部的记录,而后每条与另外一表进行链接,无论能不能匹配上条件,最终都会保留。
能匹配,正确保留,不能匹配其余字段制空null;
外链接分为两种:以某张表为主
以左表为主: left join :左外链接
以右表为主 right join :右外链接
左表 left/right join 右表 on 左表.字段=右表.字段;
例: select * from My_stu a left/right join My_class b
On a.c_id=b.id;
虽然左链接和右链接有主表差别,可是显示的结果永远是左表数据在左边,右表数据在右边,左链接和右链接能够相互转
Natural join :自动匹配链接条件,系统以字段名为匹配模式(同名字段做为条件,多个同名字段做为条件)
天然链接分为天然内链接。天然外链接
天然内链接 :select * from My_stu
Natural join my_class;
天然外链接 :左表 natural left/right join 右表
例:select * from my_stu natural left/right join my_class;
其实 内链接与外链接均可以模拟天然链接!!!!!!!!!