约束:
DQL:查询语句
1,排序查询
2,聚合函数
3,分组查询
#DQL:查询语句
1,排序查询
*语法 ORDEY BY 子句
排序方法
ASC 升序,默认的
DESC:降序
[Java] 纯文本查看 复制代码
select count (enguif
select min(math)student;
[b][color=rgb(223, 64, 42)][font=Calibri][size=10.5pt]select fe;[/size][/font][/color][/b][/align][align=left]
聚合函数
[Java] 纯文本查看 复制代码
selectf count (ID)feom student3;
数据库的设计
1,多表之间的关系,
例如:
一对一,如:人和身份证,一个人一个身份证
一对多(多对一)
多对多,
2数据库设计的范式
-------------------------------------------------------------------------------------------------------------------
今日内容
1,DQL:查询语句
1,排序查询
2,聚合函数
3,分组查询
4,分页查询
2.约束
3.多表之间的关系
4.范式
5,数据库的备份和还原
DQL:查询语句
1,排序查询
语法 : order by 子句
order by 排序字段1 排序方式2 , 排序字段2 排序方式2.。。。
排序方式:
ASC:升序,默认的
DESC :降序
注意:
如果有多个排序条件,则当前边 的条件值一样时,才会判断第二条件。
2,聚合函数 :将一列数据作为一个整体,进行纵向的计算。
1.count :计算个数
1.一般选择非空的列:主键
count(*)
2.max:计算最大值
3.min:计算最小值
4.sum:计算和
5.avg:计算平均值
注意:聚合函数的计算,排除null值
解决方案:
1.选择不包含非空的列进行计算
2.IFNULL函数
3.分组查询:
1.语法:group by分组字段
2.注意:
1.分组之后查询的字段,分组字段。聚合函数
2.shere 和having 的区别
1.where在分组之前进行限定,如果不满足条件,则不参与分组,having在分组之后进行限定,如果不满足结果,则不会被查询出来。
2.where 后不可以跟聚合函数,having 可以进行聚合函数的判断
-- 按照性别分组。分别查询男、女同学的平均分
[AppleScript] 纯文本查看 复制代码
select sex ,avg (math)from student group by sex;
-- 按照 性别分组。分别查询男、女同学的平均分,人数
[AppleScript] 纯文本查看 复制代码
select sex,avg(math),count (id )from student group by sex;
-- 按照性别分组。分别查询男。女同学的平均分,人数 要求 :分数低于70分的人,不参与分组
[AppleScript] 纯文本查看 复制代码
select sex ,avg (math),count (id)from student where math >70 group by
(计算平均值) (计算个数) (分数低于70)
sex having count(ID)>2;
(having在分组之后进行限定)
-- 按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与要分组,分组之 后,人数要大于2个人
[AppleScript] 纯文本查看 复制代码
SELECT sex, AVG(math),COUNT (ID)人数 FROM student WHERE math>70 BY
sex HAVING COUNT (id)>2;
SELECT sex ,AVG(math),COUNT(ID) 人数FROM student WHERE math >70
BY sex HAVING 人数 >2;
4,分页查询
1,语法:limit 开始的索引,每页查询的条数
2,公式: 开始的索引=(当前的页码-1)*每页显示的条数
-- 每页显示3条记录
SELECT *FROM student LIMIT 0 ,3 -- 第一页
SELECT*FROM student LIMIT 3,3 --第二页
SELECT * FROM student 6,3; 第三页
3,limit 是一个MySQL “方言”
约束
*概念 :对表中的数据进行限定,保证数据的正确性,有效性和完整性
*分类:
1,主键约束: primary key
2,非空约束 not null
3.唯一约束 unique
外键 约束:foreign key
非空约束:not null 某一列的值不能为null
1, 创建表时 添加约束
[AppleScript] 纯文本查看 复制代码
CREATE TABLE ([/align] id INT ,
NAME VARCHAR (20 ) NOT NULL -- name 为非空
);
2.创建表完后,添加非空约束
ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL;
3,删除name的非空约束
ALTER TABLE stu MODIFY NAME VARCHAR(20);
唯一约束:
unique 某一列的值不能重复
1,注意
*唯一约束可以有u'll值,但是只能有一条记录为ull
2.在创建表时,添加唯一约束
[AppleScript] 纯文本查看 复制代码
CREATE TABLE stu(
id INT,
phone_number VARCHAR (20) UNIQUE-- 手机号
);
3,删除唯一约束
[AppleScript] 纯文本查看 复制代码
alter table stu drop index phone_number;
4,在表创建完后,添加唯一约束
[AppleScript] 纯文本查看 复制代码
alter table stu modify phone_number varchar(20) unique;
主键约束 :primary key
1,注意:1,含义:非空且唯一
2.一张表只能有一个字段为主键
3,主键就是表中记录的唯一标识
2.在创建表时,添加主键约束
[AppleScript] 纯文本查看 复制代码
create table stu(
id int primary key,--给id添加主键约束
name varchar (20)
);
3.删除主键
[AppleScript] 纯文本查看 复制代码
alter table stu modify id int promary key;
4,创建表后,添加主键
[AppleScript] 纯文本查看 复制代码
alter table stu modify id int primary key;
5,自动增长:
1,概念:如果某一列时数值类型的,使用auto_increment 可以来完成值得自动增长
2,[AppleScript] 纯文本查看 复制代码
在创建表时 ,添加主键约束,并且完成主键自增长 create table stu([/align]id int primary key auto_increment ,--给id 添加主键约束
name varchar (20)
);
3.删除自动增长
[AppleScript] 纯文本查看 复制代码
alter teble stu modify id int;
4添加自己增长
[AppleScript] 纯文本查看 复制代码
alter table stu modify id int auto_incremnt ;
外键约束 :foreign key 让表于表产生关系,从而保证数据的正确性
*语法 :
[AppleScript] 纯文本查看 复制代码
create table 表名(
。。。。
外键列
constraint 外键名称 foreign key (外键列名称 )references 主表名称 (主表列名称)
);
2,删除外键
ALTER TABLE 表名 drop foreign key 外键名称;
3,创建表之后,添加外键
[AppleScript] 纯文本查看 复制代码
alter table 表名 add constraint 外键名称 foreign key (外键字段名称) references
主表名称(主表列名称);
4,级联操作
[AppleScript] 纯文本查看 复制代码
1.添加级联操作
语法 :Alter table 表名 add consteaint 外键名称
foreign key (外键字段名称 )
references 主表名称(主表列名称)on update cascade on delete cascade;
排序:order by
asc :默认的 升序
desc:降序
-- 日期类型 的 字段是可以排序的 ,理我么最近的日期大的 反之是小的
分组 : group by
-- 按照什么字段进行分组 ,那 select 后面就可以出现什么字段,除此外还可以出现聚合函数,在每一组之内的聚合
-- 如果加where 条件,在分组之前的条件,分组之后的条件判断用 having
[AppleScript] 纯文本查看 复制代码
select
sex ,count(math),from student group by sex having min(math)>70
分页 :linit a, b a:从哪开始查 b:查询多少
select*from student limit 3,相当于 limit 0,3
整体的顺序:
select distinct 。。。。。。。from 。。。。 where 。。。。group by
。。。。having 。。。。order by 。。。。 limit