1,使用group by 关键字
1)不带条件分组查询
select columnName ‘alias’ , groupFunction from tableName group by columnName;
createdatabase studentsql;use studentsql;createtable student(
id intprimarykeyauto_increment,
name varchar(10),
sex varchar(5),
math int,
english int);insertinto student(name ,sex,math ,english)values('suki','female',87,90),('bea','male',85,62),('candy','female',82,75),('poppy','female',87,88),('lily','female',80,90),('bob','male',78,83),('anni','female',66,87),select
sex'性别',avg(math)from
student
groupby
sex;
2)带条件分组查询
select columnName ‘alias’,groupFunction from tablename where condition group by columnName;
select
sex'性别',sum(english)from
student
where
english >70groupby
sex;
2,having
select columnName‘alias’,groupFunction from tableName where condition group by columnName having condition;
应用场景:按学生性别分组,获得每个性别的数学平均分,过滤掉性别人数少于2个的
select
sex'性别',
avg(math)'数学平均分'count(id)人数
from
student
where
math >70groupby
sex
having
人数>2;
注意事项:
group by 后面不可以跟聚合函数
having 后面可以跟聚合函数
where条件语句必须在group by前面
二、分页查询(关键字 select…limit start, rows)
关键字解释:表示从start+1行开始取,取出rows行,start从0开始计算
语法:select
显示的字段
from
表名
limit 起始行数,每页显示的记录数;
起始行数=每页显示的记录数*(页数-1)
注意:当select语句同时含有group by, having, order by, limit时,使用顺序如下:
select column1,column2... from table
group by column
having condition
order by column
limit start,rows;
createtable st(
id intprimarykeyauto_increment;
name varchar(10),
email varchar(11));
复合主键语法:primary key(column1,column2)
createtable stu(
id int,
name varchar(10),
email varchar(20),primarykey(id,name));
给表中字段添加主键自增长约束
语法:alter table tableName modify fieldName type primary key auto_increment;
给表中字段删除主键自增长约束
第一步删除自增长约束
语法:alter table tableName modify id int;
第二步删除主键索引
语法:alter table tableName drop primary key;
注意:此时只删除了主键非重复索引,非空约束依然存在,需要单独去除非空
第三步删除非空约束
alter table tableName modify fieldName type;
特点与细节:主键列的值非空并不重复,如有重复,添加不进去(通常用于非业务字段)
但可以是复合主键(复合主键的字段值不能同时相同)
一张表最多只能有一个主键或复合主键
主键定义方式两种:字段类型后追加;字段全部定义完后,单独添加
可以使用desc 表名,查看主键情况
auto_increment:自增长
自增长使用细节:自增长可以配合primary key 或者unique使用
自增长修饰的字段为整数类型(虽小小数也可以,但是很少这样使用)
自增长默认从1开始,可以通过以下方式修改
alter table tableName auto_increment=值;
或者在创建表时指定自增长起始值
2.默认约束(关键字default)
当字段值为null时,显示默认值
语法:columnName type default value
给表中字段添加默认约束
语法:alter table tableName modify fieldName type defalult;
给表中字段删除默认约束
语法:alter table tableName modify fieldName type;
3.非空约束(关键字not null )
字段值不能为null,否则报错
语法:columnName type not null
给表中字段添加非空约束
语法:alter table tableName modify fieldName type not null;
给表中字段删除非空约束
语法:alter table tableName modify fieldName type;
4.unique(唯一约束–一种索引)
语法:columnName type unique;
给表中字段添加唯一约束
alter table tableName modify fieldName type unique;
给表中字段删除唯一约束
alter table tableName drop index columnName;
(唯一约束的索引名就是字段名)
特点与细节:
只能有一个具体的值,不能重复
空值不是具体的值,可以有多个null
一张表可以有多个unique字段