/*Table structure for table `course` */DROPTABLEIFEXISTS`course`;//检测是否存在表`course`,存在删掉,不存在不执行CREATETABLE`course`(`cs_id`int(11)NOTNULLCOMMENT'课程编号',`cs_name`varchar(50)NOTNULLCOMMENT'课程名称',`cs_credit`tinyint(255)unsignedDEFAULTNULLCOMMENT'课程学分',`cs_type`char(12)DEFAULTNULLCOMMENT'课程类别',`cs_depart`char(6)DEFAULTNULLCOMMENT'院系名称',PRIMARYKEY(`cs_id`))ENGINE=InnoDBDEFAULTCHARSET=utf8;/*Data for the table `course` */insertinto`course`(`cs_id`,`cs_name`,`cs_credit`,`cs_type`,`cs_depart`)values(5200313,'数据库原理及应用',4,'核心专业','信工'),(5203314,'计算机导论',4,'通识教育','信工'),(5219314,'数据结构',5,'专业核心','信工'),(5223013,'大学物理',4,'专业基础','信工'),(5227614,'毕业实习',4,'集中实践','信工'),(5230912,'云计算',2,'共同选修','信工'),(5236212,'机器学习',2,'共同选修','信工'),(5237514,'c语言',4,'专业基础','信工'),(5245112,'区块链',2,'任意选修','信工'),(7200422,'知识产权法',2,'任意选修','文法'),(20201833,'概率论',3,'专业基础','基础'),(20202336,'高等数学',6,'专业基础','基础'),(29299131,'劳动教育',1,'集中实践','学务');/*Table structure for table `student` */DROPTABLEIFEXISTS`student`;//检测是否存在表`student`,存在删掉,不存在不执行CREATETABLE`student`(`stu_id`bigint(11)unsignedNOTNULLCOMMENT'学号',`stu_name`char(12)NOTNULLCOMMENT'姓名',`stu_sex`enum('男','女')DEFAULTNULLCOMMENT'性别',`stu_age`tinyint(255)unsignedDEFAULTNULLCOMMENT'年龄',`stu_major`char(9)DEFAULTNULLCOMMENT'专业',`stu_college`char(12)DEFAULTNULLCOMMENT'学院',PRIMARYKEY(`stu_id`))ENGINE=InnoDBDEFAULTCHARSET=utf8;/*Data for the table `student` */insertinto`student`(`stu_id`,`stu_name`,`stu_sex`,`stu_age`,`stu_major`,`stu_college`)values(201804550101,'郭奎','男',22,'计科','信工学院'),(201804550102,'吕宇航','男',18,'计科','信工学院'),(201804550103,'张豪辉','女',19,'计科','信工学院'),(201804550107,'丁志杰','男',17,'金融学','金贸学院'),(201804550109,'范伟','男',19,'金融学','金贸学院'),(201804550116,'张依婷','女',17,'大数据','信工学院'),(201804550120,'张维','男',19,'计科','信工学院'),(201804550121,'朱柳阳','女',20,'计科','信工学院'),(201804550144,'谭兵炎','男',20,'大数据','信工学院'),(201804550153,'杨志强','男',17,'大数据','信工学院');
mysql>selectavg(cs_credit)from course where cs_depart='信工';+----------------+|avg(cs_credit)|+----------------+|3.4444|+----------------+1rowinset(0.01 sec)
/*错误示例*/
select cs_depart 开课单位,cs_name 课程名称,count(*) 课程门数 from course grouroup by cs_depart having count(*)<2;ERROR1055(42000): Expression #2ofSELECT list is not inGROUPBY clause and contains nonaggregated column 'homework.course.cs_name' which is not functionally dependent on columns inGROUPBY clause;this is incompatible with sql_mode=only_full_group_by
//错误大致解释:“ONLY_FULL_GROUP_BY”表示对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中/*解决方法1:将需要查询的列全部写在group by后【此方法有一定可能查询结果不正确】*//*解决方法2:修改MySQL配置文件(添加"sql_mode"参数)【推荐此方法】*/[root@localhost ~]# vim /etc/my.cnf //修改MySQL配置文件
sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"[root@localhost ~]# systemctl restart mysqld //重启MySQL服务