大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说mysql(二),希望您对编程的造诣更进一步.
1 外键的创建(多对多)学生表,课程表,和成绩表之间的关系
代码块
CREATE DATABASE ec14;
USE ec14;
CREATE TABLE student(
id int PRIMARY key auto_increment,
stu_name varchar(10) not null
);
CREATE TABLE subj(
id int PRIMARY key auto_increment,
sub_name varchar(10)
);
CREATE TABLE score(
id int PRIMARY key ,
stu_id int,
sub_id int,
score int not null,
CONSTRAINT stu_fk FOREIGN key (stu_id) REFERENCES student(id) on DELETE CASCADE on UPDATE CASCADE,
CONSTRAINT sub_fk FOREIGN key (sub_id ) REFERENCES subj (id) on DELETE CASCADE on UPDATE CASCADE
);
select from score;
代码100分
2.表查询的执行顺序(重点中的重点)非常重要
from——where——group by——having——select——distinct——order by——limit
代码100分代码块
select * from student where class='ec14' group by gender having age>18 order by name desc LIMIT 5
1.找到表:from
2.拿着where指定的约束条件,去文件/表中取出一条条记录
- 将取出的一条条记录进行分组group by,如果没有group by,则整体作为一组
4.将分组的结果进行having过滤
5.执行select
6.去重distinct
7.将结果按条件排序:order by(asc/desc)
8.limit前多少条
3 关于分组group by的知识点
分组之后只能查询分组的字段,如果想查询组内的其它字段的信息,必须要借助聚合函数
max()
min()
avg()
sum()
count()
代码块
1.查询岗位名以及岗位包含的所有员工名字
select job_name ,GROUP_CONCAT(name) from employee GROUP BY job_name;
2.查询平均薪水大于10000的岗位及岗位平均薪资
select job_name, AVG(salary) from employee GROUP BY job_name having avg(salary)>10000;
3.查询平均薪水大于10000的岗位和岗位平均薪资,并按照岗位薪资降序排列
select avg(salary) ,job_name from employee GROUP BY job_name HAVING avg(salary)>10000 ORDER BY avg(salary) DESC;
4.查询雇员表所有信息,先按照年龄升序排列,再按照id降序排列
select * from employee ORDER BY age asc,id desc;
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/10332.html