1、主键约束(primary key)
    primary key(主键1,主键2)主键两个的话只要其中一个不相同就能插入成功,但不能为空
    创建表时忘记添加主键 alter table 表名 add primary key(字段名);
    主键删除  alter table 表名 drop primary key;
    修改字段或添加约束  alter table 表名 modify 字段名 数据类型 primary key;
2、自增约束
     auto_increment与主键约束搭配使用
3、外键约束(foregin key)
    约束表(副表)的加外键字段的数据和主表的字段数据保持一致,主表被引用的字段数据不能被删除
	foregin key(字段1) referance 主表表名(字段)
	
3、唯一约束(unique修饰的字段数据不可以重复)
    unique(字段1,字段2)两个的话只要其中一个不相同就能插入成功
    给具体字段添加唯一约束alter table 表名 add unique(字段名);
	删除唯一约束 alter table 表明 drop index 字段名;
	修改字段或添加约束  alter table 表名 modify 字段名 数据类型 unique;
4、非空约束(not null修饰的字段不能为空)
    alter TABLE 表名 modify 字段名 数据类型 not null;
5、默认约束(default插入的字段值时,没有传值,就会生成默认值占位)
    修改字段或添加约束  alter table 表名 modify 字段名 数据类型 default 默认值;
数据库设计第一范式1NF
    地址拆分的越详细,对后面的操作可能更有利
数据库设计第二范式2NF
	满足第一范式的情况下,除主键外每一列必须完全依赖主键
	如果不是完全依赖,只可能发生在联合主键中就需要拆表了
数据库设计第二范式2NF
    必须满足第二范式,除主键其他列之间不能有传递依赖
查询
1、查询范围1到范围2之间的记录
select 字段/* from 表名 where 字段  between 范围1 and范围2;
select 字段/* from 表名 where 字段>范围1 and 字段<范围2;
2、查询字段含有值1、值2...的相应行记录 关系查询
select 字段/* from 表名 where 字段 in(值1、值2...);
3、查询字段1和字段含有值的记录
select 字段/* from 表名 where 字段1=值1 or 字段2=值2
4查询表记录,升序、降序
select 字段/* from 表名 order by 字段 asc;默认就是升序的可省略
select 字段/* from 表名 order by 字段 desc;
select 字段/* from 表名 order by 字段1 asc,字段2 desc;先按字段1升序相同的在一起,然后在相同部分对应降序
5、统计数量
select count(*) from 表名 where 字段=值;
6、查询字段中最高的数值
select max(字段) from 表名;
select 字段/* from 表名 order by 字段 desc limit 0,1;
7、查询字段的平均值 group by分组
select avg(字段1) from 表名 where  字段2=值;查询字段2值对应的字段1平均值
select 字段2,avg(字段1) from 表名 group by 字段2;查询所有字段2对应的字段1平均值
8、查询表中重复数值出现次数并以什么开头的数值和重复数值对应数值平均数   having(含有)   like(像)
select 字段1,avg(字段2) from 表名 group by 字段1 having count(字段1)>=2 and 字段1 like ‘%’;
9、in表示或者
select 字段/* from 表名 where 字段 int(值1,值2)
10、至少、大于其中至少一个 any
select * from 表名 where 字段1=值1 and 字段1>any(字段2中的数据)
11、all表示所有的数据
12、as取别名
13、union 求并集
14、not like
15、year(now())查询当前年份
year(出生日期字段)查询出生年份
year(now())-year(出生日期字段)查询当前年龄
16、max() min()最大最小值