day02总结

day02总结

一、视图的使用
使用视图增删查改数据库,表单等
在这里插入图片描述
二、表与表之间的关系

  1. 一对一(例:订单表-会员表)
  2. 一对多(例:部门表-员工表)
  3. 多对多(例:学生表-课程表)

三、链接查询

  1. .隐式内连接
    格式

    select * from A a ,B b where a.bid = b.bid; 
    
  2. 显示内连接
    格式
    select * from A a INNER JOIN B b ON a.bid = b.bid;

  3. 左外链接
    格式

select * from A a LEFT JOIN B b ON a.bid = b.bid;
  1. 右外链接
    格式
select * from A a RIGHT JOIN B b ON a.bid = b.bid;
  1. 子查询
    格式:分为在where关键字或from关键字后,用括号括起来,里面加select语句;
    例:
SELECT s.studentNo,s.StudentName,s.GradeID FROM student s WHERE s.gradeID=(SELECT g.GradeID FROM grade g WHERE g.GradeName="大一")
  1. 数据的备份以及恢复
    方法一:运用视图软件进行备份以及恢复
    方法二:用dos 窗口输入语句;
    备份:mysql -u用户名 -p密码 数据库名>生成的文件脚本路径及文件后缀名
    恢复:mysql -u用户名 -p密码 数据库名<文件脚本路径及文件后缀名
    PS:前提是实现创建好了数据库且数据库名称一致

索引:

//添加主键索引
ALTER TABLE dept ADD PRIMARY KEY(sid);
//增加唯一的索引(主键索引只能添加一个,唯一一个索引可以添加多个)
//常规的索引
ALTER TABLE dept ADD INDEX(sqwd);
//查看索引
SHOW INDEX FROM dept;
//删除索引
DROP INDEX spwd ON dept;
一般一张表里面什么字段会加上索引?:主键,这个字段经常被使用的时候,关联的数据一般不建议加索引。

实例:

#查询《数据库结构-1》的所有考试结果,并按成绩由高到低排列
SELECT sub.SubjectName,r.StudentResult FROM result r INNER JOIN subject sub ON r.subjectNo=sub.subjectNo WHERE sub.subjectName=“数据库结构-1” ORDER BY r.StudentResult DESC
在这里插入图片描述

#查询所有课程《数据库结构-2》的考试成绩,并按照由高到低的显示,同时把该成绩对应的学生的学号、姓名打印出来
SELECT s.studentNo,s.studentName,sub.SubjectName,r.StudentResult FROM student s INNER JOIN result r ON s.studentNo=r.studentNo INNER JOIN subject sub ON r.SubjectNo=sub.SubjectNo
WHERE sub.SubjectName=“数据库结构-2” ORDER BY r.studentresult DESC
在这里插入图片描述
#查询《C语言1》的前5名学生成绩信息
SELECT s.studentNo,s.studentName,sub.SubjectName,r.StudentResult FROM student s INNER JOIN result r ON s.StudentNo=r.StudentNo INNER JOIN subjectsub ON r.SubjectNo=sub.SubjectNo
WHERE sub.SubjectName=“C语言-1” ORDER BY r.StudentResult DESC LIMIT 0,5
在这里插入图片描述
#按照不同的课程,分别算出其平均分、最高分和最低分,对于低于60分平均分的不予显示
SELECT sub.subjectname AS “课程名” ,MAX(r.StudentResult) AS “最高分” ,MIN(r.StudentResult) AS “最低分” , AVG(r.StudentResult) AS “平均分”
FROM result AS r LEFT JOIN subject sub ON r.SubjectNo=sub.subjectNo GROUP BY sub.subjectNo HAVING AVG(r.StudentResult)>60
在这里插入图片描述

/查询密码长度不足6位的学员信息(学员编号、姓名、密码、年级名称)/
SELECT s.StudentNo,s.StudentName,s.LoginPwd,g.GradeName FROM student s INNER JOIN grade g ON s.GradeId=g.GradeID WHERE NOT s.LoginPwd LIKE ‘______’
在这里插入图片描述

/查找奥丹斯所有考试的成绩(科目名称、考试成绩)/
SELECT sub.SubjectName,r.StudentResult FROM subject sub INNER JOIN result r ON sub.SubjectNo=r.SubjectNo INNER JOIN student s ON s.studentNo=r.StudentNo WHERE s.studentName=“奥丹斯”
在这里插入图片描述
/使用表连接方式查询所有U1年级学员学号、姓名及年级名称/
SELECT s.studentNo,s.StudentName,g.GradeName FROM student s INNER JOIN grade g ON s.Gradeid=g.Gradeid AND g.GradeID=1
在这里插入图片描述
/使用子查询方式查询所有U1年级学员学号、姓名、年级ID/
#使用子查询此时是无法查询年级姓名的
SELECT s.studentNo,s.StudentName,s.GradeID FROM student s WHERE s.gradeID=(SELECT g.GradeID FROM grade g WHERE g.GradeName=“大一”)
在这里插入图片描述

/使用表连接方式查询“Java”课程至少一次考试刚好等于60分的学生姓名/

SELECT s.studentName FROM student s INNER JOIN result r ON s.StudentNo=r.StudentNo INNER JOIN subject sub ON r.SubjectNo=sub.SubjectNo
WHERE sub.SubjectName LIKE “%Java%” AND r.StudentResult=60
在这里插入图片描述
/使用子查询方式查询“Java”课程至少一次考试刚好等于60分的学生/
SELECT s.studentName FROM student s WHERE
s.StudentNo IN (SELECT r.StudentNo FROM result r WHERE r.SubjectNo IN (SELECT sub.SubjectNo FROM subject sub WHERE sub.SubjectName LIKE “%Java%”)AND r.StudentResult=60 )
在这里插入图片描述
/使用子查询方式+表连接方式混合查询“Java”课程至少一次考试刚好等于60分的学生/
SELECT s.studentName FROM student s INNER JOIN result r ON s.StudentNo=r.StudentNo WHERE r.SubjectNo IN (SELECT sub.SubjectNo FROM subject sub WHERE sub.SubjectName LIKE “%Java%”)AND r.StudentResult=60
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值