mysql数据库入门(下)

这篇博客详细介绍了MySQL数据库的多表查询、三种连表方式、子查询的使用,并探讨了视图、触发器、存储过程的概念及应用。还涉及到了权限管理、PyCharm远程连接MySQL的注意事项以及SQL注入问题的防范。
摘要由CSDN通过智能技术生成

My S Q L 数据库(二)

一、多表查询

要实现多表查询首先要回连表操作。

# 根据where只能筛选到有关联的数据,无关联的就略过了。
select * from employee,department where employee,dep_id = department,id;

二、三种连表方式:

  • 内连接:支取两张表共同的部分
select * from employee inner join department on employee.dep_id = department.id;


  • 左连接:在内连接的基础上 保留左表 的记录。
select * from employee left join department on employee.dep_id = department.id;

  • 右连接:在内连接的基础上 保留右表 的记录。
select * from employee right join department on employee.dep_id = department.id;

  • 全外连接:在内连接的基础上保留左右两表没有对应的记录。
select * from employee left join department on employee.dep_id = department.id;
union
select * from employee right join department on employee.dep_id = department.id;

A INNER JOIN B ON……:内联操作,将符合ON条件的A表和B表结果均搜索出来,然后合并为一个结果集。

A LEFT JOIN B ON……:左联操作,左联顾名思义是,将符合ON条件的B表结果搜索出来,

然后左联到A表上,然后将合并后的A表输出。

A RIGHT JOIN B ON……:右联操作,右联顾名思义是,将符合ON条件的A表结果搜索出来,

然后右联到B表上,然后将合并后的B表输出。

三、子查询

指的是一样表数据加括号以用于查询另一张表

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E12VOWdH-1619403899268)(MySQL数据库(二).assets/image-20210405220453350.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0fEbhtz1-1619403899270)(MySQL数据库(二).assets/image-20210405221646869.png)]

  • where加记录名加运算符。

  • exists 是指子查询的结果是否存在,存在就返回正确值。不存在就返回False.

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XjIarRD4-1619403899271)(MySQL数据库(二).assets/image-20210405221639241.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y2q9SrAb-1619403899273)(MySQL数据库(二).assets/image-20210406113322246.png)]

综合练习

image-20210408132628617
1、查询所有的课程的名称以及对应的任课老师姓名
select teacher.tname,course.cname from teacher inner join course on teacher.tid = course.teacher_id;

2、查询学生表中男女生各有多少人
select gender,count(sid) from student group by gender;

3、查询物理成绩等于100的学生的姓名
select sname from student where sid in (select student_id from score where num=100 and course_id=2);

4、查询平均成绩大于八十分的同学的姓名和平均成绩
mysql> select sname from student where sid in (select student_id from score group by student_id having avg(num)>80);
+--------+
| sname  |
+--------+
| 张三   |
| 刘三   |
+--------+
2 rows in set (0.00 sec)

mysql> select student_id,avg(num) from score group by student_id having avg(num)>80;
+------------+----------+
| student_id | avg(num) |
+------------+----------+
|          3 |  82.2500 |
|         13 |  87.0000 |
+------------+----------+
2 rows in set (0.00 sec)

5、查询所有学生的学号,姓名,选课数,总成绩
select sid,sname from student 


6、 查询姓李老师的个数

7、 查询没有报李平老师课的学生姓名

8、 查询物理课程比生物课程高的学生的学号

9、 查询没有同时选修物理课程和体育课程的学生姓名

10、查询挂科超过两门(包括两门)的学生姓名和班级

11 、查询选修了所有课程的学生姓名

12、查询李平老师教的课程的所有成绩记录
 
13、查询全部学生都选修了的课程号和课程名
select 
	cid,cname 
from 
	cou
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值