mysql 约束
1.排序:
select * from 表名 order by 字段名1 desc/asc,字段名2 desc/asc ;
注:asc(升序,默认的),desc(降序)。如果有多个排序条件,优先判断前面的排序。
2.聚合函数:(进行纵向的计算)
1.count:计算个数
2.max:最大值
3.min:最小值
4.avg:平均值
5.sum:求和
语法格式:select 聚合函数(列名) from 表名;
注:null不参与计算,需要用ifnull函数赋值
3.分组:
1.语法:select 字段1,字段2...from 表名 group by 分组字段【having 条件】;
2.where和having的区别:
where字句:先过滤再分组,where之后不可以使用聚合函数
having字句:先分组再过滤,where之后可以使用聚合函数
4.分页查询:
1.语法:SELECT * 字段列表 [as 别名] FROM 表名 [WHERE 子句] [GROUP BY 子句][HAVING 子句][ORDER BY 子句][LIMIT 子句];
简写语法:select * from 表名 limit 起始索引,每页查询条数;
2.公式:开始索引=(当前页码-1)*每页显示的条数;
5.数据库约束:
l主键约束 primary key:非空且唯一
语法:字段名 字段类型 primary key
添加主键:alter table 表名 add primary key(字段名)
或者:alter table 表名 modify 字段名 字段类型 primary key
删除主键:alter table 表名 drop primary key
自增: 直接在主键后面加上auto_increment(字段类型必须是整数)
删除自增:alter table 表名 modify 字段名 字段类型
添加自增:alter table 表名 modify 字段名 字段类型 auto_increment
注意:delete和truncate删除数据后,自增没有影响
l唯一约束 unique:一列数据不能有重复,注意null没有值,不存在重复的问题
语法:字段名 字段类型 unique
添加唯一约束:alter table 表名 modify 字段名 字段类型 unique
删除唯一约束:alter table 表名 drop index 字段名
l非空约束 not null:一列数据不能出现null
语法:字段名 字段类型 not null
添加非空约束:alter table 表名 modify 字段名 字段类型 not null
删除非空约束:alter table 表名 modify 字段名 字段类型
l外键约束 foreign key:让表于表产生关系,从而保证数据的正确性
语法:[CONSTRAINT] [外键约束名称] FOREIGN KEY(外键字段名) REFERENCES 主表名(主键字段名)
添加外键约束:ALTER TABLE 从表 ADD [CONSTRAINT] [外键约束名称] FOREIGN KEY (外键字段名) REFERENCES 主表名(主键字段名);
删除外键:ALTER TABLE 从表名 drop foreign key 外键名称;
l级联操作
语法:ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称) ON UPDATE CASCADE /ON DELETE CASCADE ;
1. 级联更新:ON UPDATE CASCADE
2. 级联删除:ON DELETE CASCADE |
|