MySQL笔记(三)[聚集函数、分组查询、唯一非空、主键、外键]

一、聚集函数

  1. 什么是聚集函数:Eecel表格。求数量,求和,平均值,最大值,最小值。
  2. 聚集函数操作的都是某一列的数据。
  3. 聚集函数
    1. count()---求数量
    • select count(*) | count(列名) from 表;------某一列数据行的总数
    • 练习
      (1)统计一个班级共有多少学生?
      select count(*) from stu;
      select count(id) from stu;
      (2)统计数学成绩大于90的学生有多少个?
      select count(math) from stu where math > 60;
      select username,count(math) from stu where math > 60;-------不会这样查询
    1. sum()--求某一列数据的和
    • sum 注意:没有sum(*),求的某一列,sum对数值类型起作用。
    • 练习
      (1)统计一个班级数学总成绩
      select sum(math) from stu;
      (2)统计一个班级语文、英语、数学各科的总成绩
      select sum(chinese)+sum(english)+sum(math) from stu;
      (3)统计一个班级语文、英语数学的总成绩总和
      select sum(chinese)+sum(engish)+sum(math) from stu;
      select sum(chinese+english+math) from stu;
      (4)统计一个班级语文总成绩平均分
      select sum(chinese)/count(*) from stu;
    • 注意的地方
      (1)sum函数可以忽略null值。
      (2)编写一条修改语句
      update stu set math = null where username = '小花';
    1. avg()-----求平均值
      • select avg(字段) from stu;
      • 练习
        (1)求一个班级语文平均分?
        select avg(chinese) from stu;
        (2)求一个班级总分平均分
        select avg(math+english+chinese) from stu;
    2. 最大值和最小值
      • max()
      • min()
      • 练习
      • 求班级最高分和最低分
        select max(math+english+chinese) from stu;
        select min(math+english+chinese) from stu;

二、分组查询概念

  1. 分组产生效果?聚集函数与分组效果。
  2. select * from stu; ------查询所有的数据。默认是一组。
  3. 可以使用关键字 group by sex 根据字段进行分组
  4. 练习
    create table orders(
     id int,
     product varchar(20),
     price float
    );
    insert into orders(id,product,price) values(1,'电视',900);
    insert into orders(id,product,price) values(2,'洗衣机',100);
    insert into orders(id,product,price) values(3,'洗衣粉',90);
    insert into orders(id,product,price) values(4,'电视',900);
    insert into orders(id,product,price) values(5,'洗衣粉',90);
    insert into orders(id,product,price) values(6,'洗衣粉',90);
    图片说明

查询结果如下:
图片说明
图片说明

三、唯一和非空约束

  1. 唯一的约束
  • 可以把某个字段声明成唯一的值。
  • 使用该关键字 unique
  1. 非空
  • 可以把某个字段声明成非空的
  • 值是不能为空值
  • 使用关键字 not null
  1. 练习
    create table person(
     id int primary key auto_increment,
     username varchar(30) uniqne,
     email varchar(30) not null
    );

四、单表的约束(主键)

图片说明
图片说明

五、多表约束(外键)

  1. 外键的约束:目的保证表结构中的数据的完整性。
  2. 模拟的过程
  3. 创建表的结构
    create table dept(
     did int primary key auto_increment,
     dname varchar(30)
    );
    create table emp(
     eid int primary key auto_increament,
     ename varchar(30),
     sal double,
     dno int
    );
  4. 向部门表中添加一些数据
  • insert into dept values (1, '研发部' );
  • insert into dept values (2, '人事部');
  1. 想添加几个员工?员工属于哪一个部门?
  • insert into emp values (1,'美美' ,5000,2);------美美员工属于人事部
  • insert into emp values (2,'小凤' 6000,2);
  • insert into emp values (3,'能大,16000,1);
  • insert into emp values (4, '能二',16005,1);
  1. 想直接删除掉部门?
  • delete from dept where did = 1;
  • 部门可以被删除,需要使用外键对两张表做约束! !
  1. 直接删除掉部门,程序是可以删除的,但是不合理。通过设置外键的约束来避免这一 类的问题的发生。
  2. 保证数据的完整性! !
  3. 外键多表的关系
    • 使用关键字foreign key (dno) references dept (did);
    • 相当于dno字段作为emp表的外键,值是从dept表中did取值。
      图片说明
全部评论

相关推荐

06-10 21:15
门头沟学院 Java
宁阿:好多这种没🧠的公司,他们估计都不知道毕业的人不能给安排实习岗
实习吐槽大会
点赞 评论 收藏
分享
避坑恶心到我了大家好,今天我想跟大家聊聊我在成都千子成智能科技有限公司(以下简称千子成)的求职经历,希望能给大家一些参考。千子成的母公司是“同创主悦”,主要经营各种产品,比如菜刀、POS机、电话卡等等。听起来是不是有点像地推销售公司?没错,就是那种类型的公司。我当时刚毕业,急需一份临时工作,所以在BOSS上看到了千子成的招聘信息。他们承诺无责底薪5000元,还包住宿,这吸引了我。面试的时候,HR也说了同样的话,感觉挺靠谱的。于是,我满怀期待地等待结果。结果出来后,我通过了面试,第二天就收到了试岗通知。试岗的内容就是地推销售,公司划定一个区域,然后你就得见人就问,问店铺、问路人,一直问到他们有意向为止。如果他们有兴趣,你就得摇同事帮忙推动,促进成交。说说一天的工作安排吧。工作时间是从早上8:30到晚上18:30。早上7点有人叫你起床,收拾后去公司,然后唱歌跳舞(销售公司都这样),7:55早课(类似宣誓),8:05同事间联系销售话术,8:15分享销售技巧,8:30经理训话。9:20左右从公司下市场,公交、地铁、自行车自费。到了市场大概10点左右,开始地推工作。中午吃饭时间大约是12:00,公司附近的路边盖饭面馆店自费AA,吃饭时间大约40分钟左右。吃完饭后继续地推工作,没有所谓的固定中午午休时间。下午6点下班后返回公司,不能直接下班,需要与同事交流话术,经理讲话洗脑。正常情况下9点下班。整个上班的一天中,早上到公司就是站着的,到晚上下班前都是站着。每天步数2万步以上。公司员工没有自己的工位,百来号人挤在一个20平方米的空间里听经理洗脑。白天就在市场上奔波,公司的投入成本几乎只有租金和工资,没有中央空调。早上2小时,晚上加班2小时,纯蒸桑拿。没有任何福利,节假日也没有3倍工资之类的。偶尔会有冲的酸梅汤和西瓜什么的。公司的晋升路径也很有意思:新人—组长—领队—主管—副经理—经理。要求是业绩和团队人数,类似传销模式,把人留下来。新人不能加微信、不能吐槽公司、不能有负面情绪、不能谈恋爱、不能说累。在公司没有任何坐的地方,不能依墙而坐。早上吃早饭在公司外面的安全通道,未到上班时间还会让你吃快些不能磨蹭。总之就是想榨干你。复试的时候,带你的师傅会给你营造一个钱多事少离家近的工作氛围,吹嘘工资有多高、还能吹自己毕业于好大学。然后让你早点来公司、无偿加班、抓住你可能不会走的心思进一步压榨你。总之,大家在找工作的时候一定要擦亮眼睛,避免踩坑!———来自网友
qq乃乃好喝到咩噗茶:不要做没有专业门槛的工作
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务