【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; ...
随机推荐
- 在JSP页面中输出完整的时间
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- Apache-Shiro+Zookeeper系统集群安全解决方案之缓存管理
上篇[Apache-Shiro+Zookeeper系统集群安全解决方案之会话管理],解决了Shiro在系统集群开发时安全的会话共享问题,系统在使用过程中会有大量的权限检查和用户身份检验动作,为了不频繁 ...
- python_way day16 DOM
Python_way day16 1.Dom (找到html中的标签) 一.DOM 1.查找元素 直接查找 document.getElementById 根据ID获取一个标签 --->这里是 ...
- C# 线程(六):定时器
From : http://kb.cnblogs.com/page/42532/ Timer类:设置一个定时器,定时执行用户指定的函数. 定时器启动后,系统将自动建立一个新的线程,执行用户指定的函数. ...
- "npm ERR! Error: EPERM: operation not permitted"问题解决
在基于macaca进行自动化测试的时候,遇到如下问题: E:\AutoTest\Macaca\LocalTEST\macaca-test-sample\macaca-test>macaca do ...
- Backbone简介
backbone-------一个实现了web前端MVC模式的JS库-------官方地址 backbone库要建立在underscore库的基础上---------------官方中文地址----- ...
- 转 Cocos网络篇[3.2](3) ——Socket连接(1)
Cocos网络篇[3.2](3) ——Socket连接(1) 2015-03-05 22:24:13 标签:network http socket cocos [唠叨] 在客户端游戏开发中,使用HTT ...
- Maven聚合与继承
分别为两种不同形式的聚合 相关代码如下: https://github.com/humeng126/account-parent_1 https://github.com/humeng126/acco ...
- iOS - Alamofire 网络请求
前言 Alamofire 是 Swift 语言的 HTTP 网络开发工具包,相当于 Swift 实现 AFNetworking 版本.当然,AFNetworking 非常稳定,在 Mac OSX 与 ...
- ubuntu_ar命令(操作 ?.deb文件)
1. -x 从自备存文件中取出成员文件. 1.1. “root@zc33-desktop:/home# ar -x libstdc++6_4.7.2-5_i386.deb” 这样的话,它会把 lib ...