【MYSQL】创建虚表来辅助数据库查询
在进行数据库查询时,有时需要用到对既有的数据表进行多表查询得出的临时条件的数据表,就可以暂时创建成为虚表,并赋予简单明了的字段名以及临时表名。
例题a:查询出每门课程低于平均成绩的学生姓名、课程名称、分数
分析:
1. 要完成题目,首先需要一张所有学生的课程及分数表,所需字段:学生姓名、课程名称、分数;
select a.Name as Name,b.C_name as C_name,b.Grade as Grade from students a,score b where a.Id=b.stu_id; #可以将临时创建的虚表定义为st,以备后用
2. 另外还需要一张各课程的平均分数的表,所需字段:课程名称、平均分数
select C_name,avg(Grade) as avgScore from score group by C_name; #创建虚表av
3. 利用新建的虚表st、av完成题目
select st.*,av.avgscore from
(select a.Name as Name,b.C_name as C_name,b.Grade as Grade
from students a,score b
where a.Id=b.stu_id) as st,
(SELECT C_name,avg(Grade) as avgScore from score group by C_name) as av
where st.C_name=av.C_name and st.Grade<av.avgScore;
例题b:查询同时参加计算机和英语考试的学生的信息
分析:
1. 要完成题目,分别需要所有学习计算机课程的学生id,以及所有学习英语课程的学生id,所需字段:学生ID,课程名称;
(SELECT stu_id AS stu_id1,c_name FROM score WHERE c_name = "计算机") AS computer;
(SELECT stu_id AS stu_id2,c_name FROM score WHERE c_name = "英语") AS english;
2. 通过各个表中的学生学号信息,找出同事参加计算机和英语考试的学生的信息
SELECT students.*
FROM
students,
(SELECT stu_id AS stu_id1,c_name FROM score WHERE c_name = "计算机") AS computer,
(SELECT stu_id AS stu_id2,c_name FROM score WHERE c_name = "英语") AS english
where computer.stu_id1=english.stu_id2 and students.id=computer.stu_id1;
【MYSQL】创建虚表来辅助数据库查询的更多相关文章
- C#与mysql做ASP.NET网页数据库查询速度测试
两种方法是:1,使用mysql数据库的存储过程:2,C#编码,做网页后台与mysql数据库连接,前台测试显示测试过结果下面我将分别讲解两种方法的具体实现. 1,使用mysql数据库的存储过程插入万条大 ...
- mysql 创建用户,授权,查询用户等
MySQL创建用户与授权 一. 创建用户 命令: CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 说明: username:你将创建的用 ...
- Mysql 创建普通用户、数据库、表、插入记录,用户赋权
C:\phpStudy\MySQL\bin>mysql -uroot -proot -h127.0.0.1 //创建用户 mysql> insert into mysql.user (ho ...
- Mysql创建、删除用户、查询所有用户等教程,提升您的MYSQL安全度!
建议您不要使用mysql的root账号来为您的web页面连接数据库,这可能会导致用户通过网页获取到您的数据库账号密码,存在严重的安全隐患. 建议新建一账号,权限设置基本够用,然后使用那新建的账号来连接 ...
- mysql 创建新用户、数据库、授权
创建用户 1.登录mysql mysql -uroot -p 2.创建本地用户(2.3选其一) #use mysql; //选择mysql数据库 #create user 'w ...
- 自定义mysql类用于快速执行数据库查询以及将查询结果转为json文件
由于每次连接数据库进行查询比较麻烦,偶尔还需要将查询结果转为json格式的文件, 因此暂时定义一个mysql的类,将这些常用的方法进行封装,便于直接调用(代码如下,个人用,没写什么注释). 注:导入了 ...
- mysql创建账号对应的数据库方法
增加一个用户mydb密码为123450, 让他只可以在(localhost/%)%表示可以支持远程上登录,并可以对数据库mydata5_db进行查询.插入.修改.删除的操作. grant select ...
- MySql创建指定字符集的数据库
以创建字符集为utf8的数据库为例: CREATE DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; CREAT ...
- mysql 创建用户并授权数据库
create user test identified by ‘password’:password 你要创建的用户对应的密码 grant all on database.* to test; ...
随机推荐
- msm8916 lcd 相关调试点指导
主要代码:LINUX\android\kernel\arch\arm\boot\dts\qcom\dsi-panel-trust-hx8379c-fwvga-video.dtsiLINUX\andro ...
- EI表达式和JSTL
JSP九大内置对象 WEB域内置对象(存值取值,传值数据用的) setAttribute/getAttribute; page 基本不用/ pageContext 只在本页面有效 ...
- uTenux-OS-Task再探
在第一节中我由于没有拿到开发板,所以被迫无奈,只能将uTenux操作系统移植到手中的一块STM32F103的开发板上,当时对于uTenux的理解还不够,只是看了一下文件架构和效果,虽然移植成功了,但是 ...
- 【leetcode❤python】206. Reverse Linked List
# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# s ...
- iOS各版本特性
iOS1 最大特性是具有其他手机无法比拟的触屏功能,使捏拉缩放和慢性滚动变得近乎完美.从而使应用的体验变得更加自然而即时. 缺点:1.不支持复制/粘贴文本. 2.无法在发邮件时添加附件. ...
- <转>如何改变讨好型人格 | 你根本不需要讨好任何人
在我过去二十多年的生命里一直是一个“讨好者”. 我总是活在别人对我的期待中,我总是不停的追逐着别人对我的认可,我总是像个卑微的奴才一样去满足别人的需求. 但就和大多数的“讨好者”一样,我们越是寻求别人 ...
- Gradle的配置实例
错过了Maven,但是遇到了Gradle. 网上关于Gradle的讲解和培训已经很多了. 我就直接贴几个我测试过的配置文件吧: ① 依赖maven资源库 repositories { mavenCen ...
- 机器学习——SVM详解(标准形式,对偶形式,Kernel及Soft Margin)
(写在前面:机器学习入行快2年了,多多少少用过一些算法,但由于敲公式太过浪费时间,所以一直搁置了开一个机器学习系列的博客.但是现在毕竟是电子化的时代,也不可能每时每刻都带着自己的记事本.如果可以掏出手 ...
- 7.mybatis一对多关联查询
和第5节一对一查询类似,但是不同的是,一对一使用的是association,而一对多使用collection. 实例: 1个班级Class,对应1个老师Teacher,对应多个学生Student 1. ...
- [转] Git SSH Key 生成步骤
Git是分布式的代码管理工具,远程的代码管理是基于SSH的,所以要使用远程的Git则需要SSH的配置. github的SSH配置如下: 一 . 设置Git的user name和email: $ git ...