通过ORDER BY子句,可以将查询出的结果进行排序
SELECT 字段名 FROM 表名 WHERE 字段=值 ORDER BY 字段名 [ASC|DESC];
ASC:升序,默认值
DESC:降序
单列排序:只按某一个字段进行排序,单列排序
select * from Student order by age desc
组合排序:同时对多个字段进行排序,如果第一个字段相等,则按第二个字段排序,往后推
SELECT 字段名 FROM 表名 WHERE 字段=值 ORDER BY 字段名 1 [ASC|DESC], 字段名 2 [ASC|DESC];
select * from student order by age desc,score asc;
聚合函数是纵向查询,是对一列的值进行计算,然后返回结果。
聚合函数会忽略空值NULL,解决:我们可以选择不包含非空的列计算,或者使用IFNULL函数
IFNULL(列名,默认值) 如果列名不为空,返回这列的值。如果为 NULL,则返回默认值。
select ifnull(id,0) from student;
聚合函数
对查询信息进行分组,相同数据作为一组
SELECT 字段 1,字段 2... FROM 表名 GROUP BY 分组字段 [HAVING 条件];
where和having的区别
1.where在分组之前进行限定,如果条件不满足,则不参与分组
having在分组之后进行限定,如果不满足结果,则不会被查询
2.where后不可跟聚合函数,having可以进行聚合函数的判断
select sex ,avg(english) from student group by sex;
select sex ,avg(english), count(id) from student group by sex;
select sex,avg(score),count(id) from student where score >=60 group by sex;A
select sex,avg(score),count(id) from student where score>=60 group by sex having count(id)>3;
limit语句
LIMIT 的作用就是限制查询记录的条数。
SELECT *|字段列表 [as 别名] FROM 表名 [WHERE 子句] [GROUP BY 子句][HAVING 子句][ORDER BY 子句][LIMIT 子句];
格式
LIMIT offset,length;
-- offset:起始行数,从0开始,默认为0
-- length:返回的行数
-- 查询学生表信息,从第3行开始显示,显示5条
select * from student limit 2,5;
分页查询
limit 开始的索引,每页查询的条数;
开始的索引 = (当前的页码 - 1) * 每页显示的条数
SELECT * FROM student LIMIT 0,4;
SELECT * FROM student LIMIT 4,3;
SELECT * FROM student LIMIT 7,3;
-
主键的作用:用来唯一标识数据库的每一条记录
-
通常不用业务字段作为主键,一般每张表会单独设计一个id字段,把id作为主键。主键是给数据库和程序服务的,不是给客户使用的
-
主键的特点:非空(not null) 、唯一(不重复)
-
主键自增:数据库自动生成主键字段的值,AUTO_INCREMENT 表示自动增长(字段类型必须是整数类型)
创建主键
1.创建表时添加主键
字段名 字段类型 primary key
2.在已有表中添加主键
alter table 表名 add primary key(字段名);
create table stu(
id int primary key,
name varchar(20),
age int
)
desc stu;
alter table stu drop primary key;
alter table stu add primary key(id);
修改自增长的默认起始值
默认自增长开始值是1,但是可以进行修改
创建表的起始值
create table 表名(
列名 int primary key auto_increment,
)auto_increment=起始值;
create table stu1 (
id int primary key auto_increment,
name varchar(20)
) auto_increment = 100;
insert into stu1 values (null, '轩月');
select * from stu1;
结果: id name
100 轩月
alter table stu1 modify id int;
alter table stu1 modify id int auto_increment;