黑马程序员技术交流社区

标题: MYSQL约束与设计 [打印本页]

作者: 厦门校区    时间: 2018-7-12 21:41
标题: MYSQL约束与设计
1.having和where的区别?
2.什么情况下会用到group by分组函数?
3.什么情况下会用到一对多,什么情况下会用到多对多?
作者: 夜太美    时间: 2018-7-12 21:46
贾宗虎

1.having和where的区别?

where 的判断条件,会在分组前,符合条件的数据会被分到组里
having 会在分组后,判断符合条件的数据被查询出来

2.什么情况下会用到group by分组函数?

当查询的数据,需要进行分组统计的时候,例如查询班级男生个数的时候.

3.什么情况下会用到一对多,什么情况下会用到多对多?

一对多,例如部门和员工,所有员工有且只能有一个部门,而一个部门可以有多名员工的时候,用一对多
多对多,例如学生和课程,一名学生可以选择多门课程,而一门课程也可以有多名学生来上课.这个时候用多对多.





作者: 刘思聪    时间: 2018-7-12 21:47
1.having和where的区别?
where 用于在group by分组前,不符合where后面条件的记录不会参与分组。
having用在group by分组后,不符合having条件的分组将不会被显示。

2.什么情况下会用到group by分组函数?
当需要进行和聚合函数相关(大多数是统计相关的查询,比如平均数、最大最小值,计数等)等需要分类统计的时候,会使用gourp by

3.什么情况下会用到一对多,什么情况下会用到多对多?
一对多的话即在一个记录对应另一个表中的多个记录有关,比如部门和员工,一个部门可以有多个员工
多对多,则是在类似于学生选课的场景,一个学生可以选多门课程,而一门课程也可以有多人选择。
作者: a3939889    时间: 2018-7-12 21:47
吴佳更

1.having和where的区别?
2.什么情况下会用到group by分组函数?
3.什么情况下会用到一对多,什么情况下会用到多对多?
1.where在分组之前进行限定,如果不符合判断,就不进入分组,having在分组之后进行限定,如果不符合判断就不显示.where后面不能加聚合函数,having可以
2.分组的时候.可以根据某项属性进行分组,一般是为了统计,跟聚合函数一起使用比较多.
3.部门与员工情况下一般是一对多.多对多比如淘宝收藏东西,或者学生选课和学生
作者: 杨权    时间: 2018-7-12 21:48
1.having和where的区别?
where用于组创建之前,如果不满足条件,则不参与分组where后不可以用聚合函数
having用于组创建之后,如果不满足则不进行展出,having可以用聚合函数

2.什么情况下会用到group by分组函数?
需要按照特定条件进行查询的时候会用到group by分组函数

3.什么情况下会用到一对多,什么情况下会用到多对多?
关于一对多和多对多主要是看表与表之间的对应关系来决定
作者: 1NightStand    时间: 2018-7-12 21:49
1.having和where的区别?
where是在分组字段前限定的条件,不满足条件则不参与分组. where不可以使用聚合函数
having是在分组字段后限定的条件,不满足则不查询处理. having后面可以使用聚合函数

2.什么情况下会用到group by分组函数?
当表内的字段重复性较高时可以用分组函数,例如:分成男女组,各不同的部门分组.

3.什么情况下会用到一对多,什么情况下会用到多对多?
当一个数据可以对应多个数据的时候就使用一对多(多对一),例如:班级号对学生
当数据可以对应多个数据,被对应的数据同时也可以对应多个数据时可以用到多对多,例如:学生和课程





作者: 刘宵    时间: 2018-7-12 21:49
1.having和where的区别?

where在group by 的前面,而having是在后面,并且它后面可以添加聚合函数。

2.什么情况下会用到group by分组函数?

在需要对结果进行分组的时候。

3.什么情况下会用到一对多,什么情况下会用到多对多?

当两张表的关系是一对多的时候,用到一对多,比如学生和班级 的关系, 一个班级对应多个学生。
多对多的应用场景比如 共享单车和人的关系, 一个人可以骑很多共享单车,而一辆共享单车可以对应多个人骑。
作者: 明月照大姜    时间: 2018-7-12 21:49
杨银万
1.having和where的区别?
having的判断在分组之后,若条件不满足就不会被查询出来
where的判断在分组之前,若条件不满足就不会加入分组中
2.什么情况下会用到group by分组函数?
当需要用某个字段的值来分别进行查询时,可以使用分组查询
3.什么情况下会用到一对多,什么情况下会用到多对多?
当一张表代表的一个实体可以包含另一张表代表的多个实体时,使用一对多
当一张表代表的一个实体可以包含另一张表代表的多个实体时,而另一张表代表的一个实体也可以包含这张表代表的多个实体时,用多对多





作者: Travis_Lin    时间: 2018-7-12 21:50
====林传伟=====
1.having和where的区别?
having用在group by后 where用在group by前,having后可以跟聚合函数where不行

2.什么情况下会用到group by分组函数?
需要对字段进行分组的时候,例如性别

3.什么情况下会用到一对多,什么情况下会用到多对多?
例如一个班级有多个学生,多个学生在一个班级,就用到一对多,一个班级有多名老师任教,一个老师可以教多个班级,这就需要用到多对多





作者: abaoo2018    时间: 2018-7-12 21:50
梁端刚
1.having和where的区别?
having和where都是判断语句
having使用在group by后,在分组后判断,可以对聚合函数判断
where使用在groupby 前,先判断后分组,不可判断聚合函数

2.什么情况下会用到group by分组函数?
当某些列具有共同的特性时,可以以此特性进行分组
3.什么情况下会用到一对多,什么情况下会用到多对多?
1对多 比如公司与员工,一个公司可以有多个员工,但每个员工只对应一个公司
多对多比如学生和课程,一个学生可以选多个课程,同时一个课程也可以被多个学生选择

作者: 蔡超凡    时间: 2018-7-12 21:51

1.having和where的区别?
where用在group by前面,having放在放在group by后面,having后面的条件可以包含聚合函数
2.什么情况下会用到group by分组函数?
需要把相同的数组作为一组的时候
3.什么情况下会用到一对多,什么情况下会用到多对多?
[1]类似一个人属于一个部门,一个部门有多个人
[2]类似学生与课程的关系,一个学生可以选择多门课程,一个课程可以有很多人

作者: xiguahx    时间: 2018-7-12 21:51
黄希

1.having和where的区别?
        1、where是在分组前进行筛选,having是在分组后进行过滤;
        2、where后面不能进行聚合函数的判断,having后面可以进行聚合函数的判断。

2.什么情况下会用到group by分组函数?
        1、与distinct作用一样,去除重复记录;
        2、需要使用聚合函数计算分组后的数据,例如count求记录数、max求最大值、min求最小值、sum求和、avg求平均值。

3.什么情况下会用到一对多,什么情况下会用到多对多?
        例如班级与学生,是一对多的关系
        例如学生与课程,是多对多的关系


作者: 想不出名字Snail    时间: 2018-7-12 21:52
洪文生
1.having和where的区别?
1,where 用在分组前对表中数据进行限定,不满足就不参与分组;having用在分组之后的限定,如不满足就不查询;
2,having后能跟聚合函数,where后不能。

2.什么情况下会用到group by分组函数?
在对表中的数据按照 某一字段进行分析时

3.什么情况下会用到一对多,什么情况下会用到多对多?
部门和个人情况下就是一对多;
学生和课程就是多对多情况;
作者: wangyuchen    时间: 2018-7-12 21:53
王宇晨
1.having和where的区别?
having在分组之后进行限定,如果不满足结果则不会被查询出来,后面可以跟聚合函数的判断。
where在分组之前进行限定,如果不满足条件则不参与分组,后面不可以跟聚合函数。
2.什么情况下会用到group by分组函数?
当表中有很多数据重复时,可以把结果中相同的字段分为一组,可以减少代码的冗余。
3.什么情况下会用到一对多,什么情况下会用到多对多?
当一个数据对应多个数据时会用到一对多,例如部门和员工,班级和学生。
当多个数据与多个数据相互对应时会用到多对多,例如老师和学生,学生和课程






作者: 康春达    时间: 2018-7-12 21:53
1.        having和where的区别?
from orders group by product where sum(price) > 30;
运行有误, group by 后面不能出现 where,使用 having
先where条件进行判断 后用group by 分组 后用 having 筛选 可以使用聚合函数
2.        什么情况下会用到group by分组函数?
一般与聚合函数一起使用
3.什么情况下会用到一对多,什么情况下会用到多对多?
一对多:最常用的关系 部门和员工
多对多:学生选课表 和 学生表, 一门课程可以有多个学生选
一对一:相对使用比较少。员工表 简历表, 公民表 护照表

作者: 郑宗航    时间: 2018-7-12 21:53
1.having和where的区别?
having判定条件在分组之后,如果不满足条件,则不会被查询出来,并且可以在having字句后使用聚合函数
where判定条件要在分组之前,如果不符合条件,则不参与分组,而且在where后不可以使用聚合函数

2.什么情况下会用到group by分组函数?
当我们查询需要对不同的情况进行查询的时候会使用到分组查询 例如性别分组 部门分组等这些情况...

3.什么情况下会用到一对多,什么情况下会用到多对多?
例如部门与员工的关系 一个部门下有很多的员工 很多的员工对应的是一个部门  再比如客户与订单 一个客户有很多的订单 很多的订单是一个客户的这种情况下会使用一对多
例如学生与老师,一个学生可以有多个老师 而一个老师也会有多个学生 这种的就是多对多的情况



作者: 598170337    时间: 2018-7-12 21:55
官启文
1.having和where的区别?
先过滤在分组  where后不能有聚合函数
分组后过滤,先分组后过滤 having后面可以使用聚合函数
2.什么情况下会用到group by分组函数?
分组查询
3.什么情况下会用到一对多,什么情况下会用到多对多?
一个任务,有人多可以同时使用,一对多
多对多 多个任务多人交叉使用
作者: 苏华清    时间: 2018-7-12 21:56
1.having和where的区别?
having 用在分组之后,可以使用聚合函数,where使用在分组之前,不符合条件的数据会被排除出分组,having只是不显示不符合条件的数据
2.什么情况下会用到group by分组函数?
查询的数据具备相同属性可以使用分组函数,方便进行查询
3.什么情况下会用到一对多,什么情况下会用到多对多?
两个表之间,A表可以对应B表多组数据  为一对多
多对多 例如课程与学生  两个表可以互相对应多组数据





作者: 厦门黑马王子    时间: 2018-7-12 21:57
郑雪平

DQL查询语句是经常使用的一种语句,它分为四种类型:一.排序查询,语法是:order by 子句,排序的方式有两种:asc自然排序,也叫升序。另一种是desc降序,需要注意的是如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件。二.聚合函数:将一列数据作为一个整体,进行纵向的计算。1. count:计算个数;2. max:计算最大值;3. min:计算最小值;4. sum:计算和;5. avg:计算平均值。需要注意聚合函数的计算,排除null值。三.分组查询: 使用的语法:group by  四: 分页查询, 语法:limit 开始的索引,每页查询的条数;  约束概念:对表中的数据进行限定,保证数据的正确性、有效性和完整性。分为四大类:一。主键约束:primary key;2. 非空约束:not null;3. 唯一约束:unique;4. 外键约束:foreign key;主键的约束:1. 在创建表时,添加主键约束;2.删除主键; 3.创建完表后,添加主键;二。非空约束:not null,某一列的值不能为null;三:唯一约束:unique,某一列的值不能重复;四:外键约束:foreign key,让表于表产生关系,从而保证数据的正确性。一。数据库的设计与 多表之间的关系:1. 一对一;2. 一对多(多对一);3. 多对多关系。 多表之间的实现关系:1. 一对一;2. 一对多(多对一);3. 多对多关系。二。数据库设计的范式:设计数据库时,需要遵循的一些规范。要遵循后边的范式要求,必须先遵循前边的所有范式要求,目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF)
作者: bihu2018    时间: 2018-7-12 21:59
1.having和where的区别?having 可以放在聚合函数前面而where不能


2.什么情况下会用到group by分组函数?
要进行同数据的统计或计算时,一般配合聚合函数使用

3.什么情况下会用到一对多,什么情况下会用到多对多?

一对多一般像员工和部门的例子,一个部门可以有多个员工,而一个员工却不能有多个部门,
多对多好比学生上课,一个学生可有多个课程,而一个课程也可以有多个学生

作者: 王_叔叔    时间: 2018-7-12 21:59

王博

1.having和where的区别?
分组查询中where在分组之前判断, 如果不满足则不参与分组, having在分组之后进行判断, 如果不满足则不会被查询出来
where后不可以跟聚合函数,having可以进行聚合函数的判断

2.什么情况下会用到group by分组函数?
将字段进行分组时


3.什么情况下会用到一对多,什么情况下会用到多对多?
例如一个旅游类型中,可以有多个旅游线路,一个线路对应一个类型,这样就用一对多
例如一个用户可以收藏多个旅游线路,一个线路也可以被多个用户收藏,这样就用多对多



作者: 就叫那个谁    时间: 2018-7-12 22:00
谢精良

1.having和where的区别?
where 在分组之前进行限定   where 后不可以进行跟聚合函数的判断
having在分组之后进行限定  having可以进行聚合函数的判断

2.什么情况下会用到group by分组函数?
需要按照某个字段进行分类的时候

3.什么情况下会用到一对多,什么情况下会用到多对多?
一对多在例如 一个部门有多个员工,一个员工只能对应一个部门
多对多在例如 一个学生可以选择很多门课程,一个课程也可以被很多学生选择
作者: 杨银龙    时间: 2018-7-12 22:00
1.having和where的区别?
  having用在分组之后,条件可以是聚合函数;
  where在分组之前,条件不能是聚合函数
2.什么情况下会用到group by分组函数?
  当要将一列数据分情况查看时
3.什么情况下会用到一对多,什么情况下会用到多对多?
  当表中部分数据冗余,多方关联冗余部分数据能简化时;
  当两部分数据互相关联多方 ,能建立第三方简化时
作者: 阿二木    时间: 2018-7-12 22:02
1.having和where的区别?

heaving 后可以有聚合函数并且在分组之后;
where在分组判断之前,并且后面不可以跟聚合函数 只是条件判断

2.什么情况下会用到group by分组函数?

想以某个字节段为准,并且这个字段有可以做分组的条件
做数据处理或者其他操作时

3.什么情况下会用到一对多,什么情况下会用到多对多?

比如一个学科可以对应多个学生时就可以用到一对多;


比如一个学科可以对应多个学生,一个学生也可以对应多个学科时就可以
用到多对多
作者: 丶犯二    时间: 2018-7-12 23:55
1.having和where的区别?
having可用于分组后进行判断,满足条件进入分组,否则不进,可使用聚合函数
where只能在分组前进行判断,且无法使用聚合函数

2.什么情况下会用到group by分组函数?
不知道怎么解释,百度了一下,有个词讲得很好.分类汇总
当需要对数据进行分类汇总的时候用

3.什么情况下会用到一对多,什么情况下会用到多对多?
比如班级和学生,一个班级包含多个学生,一个学生只能在一个班级,此时就可用到一对多
多对多,  比如大学课程,一名学生可以自选多门课程,一门课程也可被多个学生所选,此时就可用多对多,





作者: 彭东亮    时间: 2018-7-13 10:10
彭东亮
1.having和where的区别?
having后面可以跟聚合函数,当不满足条件时,则不会被查询;
where后面不能跟聚合函数,当不满足条件时,则不参与分组。
2.什么情况下会用到group by分组函数?
当需要提取的信息按某个条件进行分组时则需要用到group by;
3.什么情况下会用到一对多,什么情况下会用到多对多?
一对多可以应用在如部门和员工类似的情况,一个员工只能对应一个部门,而一个部门可以对于多个员工;
多对多可以应用在如学生和课程的情况,一名学生可以选择多门课程,而一门课程也可以有多名学生来上课。
作者: 陈绍飞.    时间: 2018-7-13 23:48
1.where先把数据过滤了在进行分组,后面不可以使用聚合函数。having是先分组在过滤数据,后面可以使用聚合函数。

2.一般使用到统计从而用到group by将分组字段相同的内容作为一组,一般也会跟聚合函数一起使用。

3.一对多:如部门和员工的关系,多对多:如学生选择课程和学生。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2