mysql三表查询sql语句
大家好,今日继续讲解VBA数据库解决方案,今日的内容是第70讲: 数据查询中,三个工作表联合查询的方法。在各种查询中,内连接,左外连接,右外连接等等,这些方法大家在工作中要多加利用,并且灵活利用,利用...
2024.11.20sql语句:增删改查,其中 增、删、改只用于单表
多表级联删除,级联更新有时候会出现(例如:删除父类别,子类别也会被删除)
多表查询:多表联查、子查询
建表语句: 一般不需要语句建表,语句了解认识即可,手动在mysql软件中 右键,点击设计表即可。
CREATE TABLE oper_user(id INT PRIMARY KEY,name VARCHAR(255) NOT NULL,);CREATE TABLE 表名(字段1 字段类型 字段条件,name VARCHAR(255) NOT NULL,);PRIMARY KEY // 关键字VARCHAR(255) // 字段精度NOT NULL // 不能为空举例 教室表和学生表 进行查询:
// 教室表:CREATE TABLE classroom(id INT PRIMARY KEY, // 教室idname VARCHAR(255) NOT NULL // 教室名字)// 学生表CREATE TABLE student(id INT PRIMARY KEY, // 学生idname VARCHAR(255) NOT NULL, // 学生名字score DOUBLE(10,2), // 学生成绩classid INT //教室id)// DOUBLE(10,2)表示 数字最大共10位,小数位最多有两位// 大写的单词代表关键字教室表:
id
name
1
教室一
2
教室二
学生表:
id
name
score
classid
1
张三
43
1
2
李四
54
1
3
王五
21
2
4
小二
12
2
多表联查:1。同时查询多张表:
笛卡尔积:(a表有m条记录,b表有n条记录,会返回m*n条记录);select * from `classroom`,`student` // 查两个表的所有字段 会返回全排列组合(没有意义)如果查询n张表,必须指定n-1个公共列的条件,否则就会产生笛卡尔积,上面教室表和学生表中教室id即为公共列select * from `classroom`,`student` where classroom.id=student.classid// 查询教室表中的id等于学生表中的classid的数据select classroom.id from `classroom`,`student` where classroom.id=student.classid// 查询教室表中的id等于学生表中的classid的教室idselect score from `classroom`,`student` where classroom.id=student.classid// 查询教室表中的id等于学生表中的classid的成绩,最好是用student.score查询教室一的学生信息:
select student.* from `classroom`,`student` where classroom.id=student.classid and classroom.name=‘教室一‘// 查询教室表和学生表中教室名叫 教室一 的,学生信息// student.* 即为只返回符合条件的学生表里的信息即// * 返回符合条件的学生表和教室表的信息// classroom.* 同理为返回符合条件的教室表里的信息查询张三的教室信息:
select classroom.* from `classroom`,`student` where classroom.id=student.classid and student.name=‘张三‘假如现在教室表又增加一个教室三:
id
name
1
教室一
2
教室二
3
教室三
但是学生表里没有在教室三的学生:
id
name
score
classid
1
张三
43
1
2
李四
54
1
3
王五
12
2
4
小二
21
2
//这个时候使用学生id和教室id对应是差不到教室三的select * from `classroom`,`student` where classroom.id=student.classid多表联查:2。左连接:以左表为基准(左表是主表)、左表中满足条件的记录会查询出来,不满足条件的也会被查询出来;
select * from `classroom` left join `student` on classroom.id=student.classid// 满足学生id和教室id相等的数据,教室没有学生的也会显示出来返回结果:
id
name
id1
name1
score
classid
1
教室一
1
张三
43
1
1
教室一
2
李四
54
1
2
教室二
3
王五
21
2
2
教室二
4
小二
12
2
3
教室三
null
null
null
null
多表联查:2。右连接:以右表为基准(右表是主表)、右表中满足条件的记录会查询出来,不满足条件的也会被查询出来;
select * from `student` right join `classroom` on classroom.id=student.classid// 满足学生id和教室id相等的数据,教室没有学生的也会显示出来结果同上
多表联查:3。内连接:查询满足条件的数据
select * from `student` inner join `classroom` on classroom.id=student.classid大家好,今日继续讲解VBA数据库解决方案,今日的内容是第70讲: 数据查询中,三个工作表联合查询的方法。在各种查询中,内连接,左外连接,右外连接等等,这些方法大家在工作中要多加利用,并且灵活利用,利用...
2024.11.20如果在生产环境中监控到Mysql数据库CPU使用率过高的情况,那么很有可能是查询语句中存在慢查询,那么如何定位慢查询呢?开启慢查询日志功能要定位慢查询,就需要开启慢查询日志功能。(1)首先登录数据库服...
2024.11.20MySQL“慢SQL”定位数据库调优我个人觉得必须要明白两件事1.定位问题(你得知道问题出在哪里,要不然从哪里调优呢)2.解决问题(这个没有基本的方法来处理,因为不同的问题处理的方式方法不一样,得从实...
2024.11.20概述由于mysql和oracle不太一样,不支持直接的sequence,所以需要创建一张table来模拟sequence的功能。1、创建sequence表CREATE TABLE `sequence`...
2024.11.20引言不啰嗦,直接入正题。问题是这样的。请问下面的sql语句,要想加快查询速度,该怎么创建索引?以下,以mysql数据库为准。select * from test where a=? and b>? o...
2024.11.20