A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 哈哈哈哈哼哼 于 2018-8-17 11:04 编辑


约束:
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数据库设计的范式
-------------------------------------------------------------------------------------------------------------------
今日内容
1DQL:查询语句
   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  countID>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; 第三页
3limit  是一个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   


































0 个回复

您需要登录后才可以回帖 登录 | 加入黑马