MySQL数据库多表查询,子查询
写博客的第四天,今天来点数据库的操作,温故而知新,在前进的路上,多看看自己曾经走过的路,不要忘了自己是怎么一步一步走过来的,对于前方未知的道路,不要轻言放弃.
今天的内容全部是MySQL里面的语句,基本都是查询语句,当时为了学习这些语句,可是费了不少脑袋,一条SQL语句能写的比孙悟空的金箍棒还长,哈哈哈,来,上才艺:
-- 查询student表的所有记录
SELECT COUNT(*) FROM student
count(*):表示查询数据表中总共有多少条数据.
-- 查询student表第2条到第4条
SELECT id,NAME,sex,birthday,department,address FROM student LIMIT 1,4
limit:行数限定,分页操作最多,后面跟着的可以理解为起始位置,或者是在索引1的位置上,向后裁取4条数据
-- 从student表中查询计算机系和英语系的学生的信息
SELECT id,NAME,sex,birthday,department,address FROM student WHERE department='计算机系' OR department='英语系'
-- 从score表中查询每个科目的最高分
SELECT c_name,MAX(grade) FROM score WHERE c_name='计算机'
SELECT c_name,MAX(grade) FROM score WHERE c_name='英语'
SELECT c_name,MAX(grade) FROM score WHERE c_name='中文'
max:表示取最大值.
-- 查询李四的考试科目和考试成绩
SELECT s.id,s.name,s.department,sc.c_name,sc.grade FROM student s,score sc WHERE s.name='李四' AND s.id=sc.stu_id
多表查询,from后面是数据表,跟着的是对该表起的别名,这里要注意笛卡尔积.
笛卡尔积是指在数学中,两个集合X和Y的笛卡尔积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员.
解决的方法是,表明1.列名1=表明2.列名2;
-- 计算每个考试科目的平均成绩
SELECT sc.c_name,AVG(sc.grade) FROM score sc GROUP BY sc.c_name
AVG:函数表示取平均值. group by:表示根据什么进行分组.
-- 查询同时参加计算机和英语考试的学生信息
SELECT sc.stu_id,s.name,s.sex,s.birthday,s.department,s.address,sc.c_name,b.c_name FROM (SELECT sc.stu_id,sc.c_name FROM score sc WHERE sc.c_name='计算机') sc,(SELECT sc.stu_id,sc.c_name FROM score sc WHERE sc.c_name='英语') b,student s WHERE b.stu_id=sc.stu_id AND s.id=b.stu_id
这里用到了子查询,子查询就是以查询出来的数据当做值或条件,或者以查询出来的数据当做临时表
-- 将计算机考试成绩按从高到低进行排序
SELECT sc.stu_id,sc.c_name,sc.grade FROM score sc WHERE sc.c_name='计算机' ORDER BY grade DESC
order by:以什么为主进行排序. desc:降序 asc:升序
-- 查询姓张或者姓王的同学的姓名、院系和考试科目及成绩
SELECT s.name,s.department,sc.c_name,sc.grade FROM student s,score sc WHERE s.id=sc.stu_id AND s.name LIKE'张%' OR s.name LIKE'王%'
模糊查询:like '%张%':like是语法,后面跟着的是以什么为条件进行查询,只要包括这个字体就返回,百分号%表示多个占位,比如在不知道该物的名称是多少字的时候,就可以在前后加上%,下划线_表示一个占位,比如两位数的名称就可以写一个条件字再加一个下划线,比如'张_'.
-- 计算每个学生的总成绩
SELECT s.id,s.name,s.sex,s.department,scc.总成绩 FROM (SELECT sc.stu_id,SUM(sc.grade)总成绩 FROM score sc GROUP BY sc.stu_id) scc,student s WHERE s.id=scc.stu_id
sum函数:求和.
这里因为我们使用的是来自子查询的表,所以在我们想显示子查询的内容时,应当以子查询中的查询显示为列名,不然会找不到,比如我在子查询中用了sum(sc.grade)总成绩,我后面跟的总成绩就是要去显示的列名,你在调用我时,不能调用我之前定义的列名,应调用子查询中被你定义的列名.
总结:数据库中查询是最复杂多样的,也是最容易被使用的,而且面试时多为多表查询用法,这一章好像全是查询内容吧,做了一个小时,其实查询的话,只要你思路清晰,逻辑合适,那么查询就很简单,如果有哪里的思路不清晰了,连查询出来的结果都不能在脑子中推算出来的话,那么查询简直就像地狱,因为你根本就不知道查询出什么东西,就没有办法去构思,在查询.一定要想好自己写出的代码是什么作用,写下之后会运行什么结果,那么你的思路就会出奇的清晰.那今天就到这里了,有哪里做的不好,或者有什么更好的建议,欢迎留言吐槽,有哪里不懂的可以留言给我,我会一一答复,源码私信找我拿,感谢耐心观看,明天再见!
MySQL数据库多表查询,子查询相关推荐
- mysql upload_关于mysql数据库里的 upload子查询问题
报错原因:mysql规定了:upload子查询问题,不能像我这样写,这是mysql目前的版本缺陷 我是这样写道:UPDATE vote_items set times=((SELECT times f ...
- MYSQL优化派生表(子查询)在From语句中的
Mysql 在5.6.3中,优化器更有效率地处理派生表(在from语句中的子查询): 优化器推迟物化子查询在from语句中的子查询,知道子查询的内容在查询正真执行需要时,才开始物化.这一举措提高了性能 ...
- Oracle/MySQL数据库的表间关联查询_多表关联查询的SQL语句详解
文章目录 内连接 inner join 示例 外连接 outer join left outer join 左外连接 示例 right outer join 右外连接 示例 full outer jo ...
- mysql外表内表_mysql 子查询 将最外表带入子查询内2层 的另一种解决方法
SELECT ( select count(*) from BORROW_LIST where DELETE_FLAG=0 and BORROW_ID=c.BORROW_ID group by ...
- mysql数据库多表查询(内连接,外连接,自连接,子查询及案例分析)
mysql数据库多表查询 之前接触的项目或者自己涉及的部分对于多表查询的使用都比较的少,常常是自己更具案例进行学习,最近见到的比较的多,所以今天就好好的总结一下,为下一步学习做准备! 1.多表查询关系 ...
- sql 基础语法 创建数据库和数据表 数据增删改查 分组查询 子查询回顾
参考链接: SQL教程 MySQL教程 一.创建数据库语法 --用master数据库 use master --判断数据库是否存在,若存在则删除 if exists (select * from sy ...
- 数据库 day60,61 Oracle入门,单行函数,多表查询,子查询,事物处理,约束,rownum分页,视图,序列,索引
1. oracle介绍 ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的 ...
- 数据库学习之MySQL (十七)—— SQL99 主查询 与 子查询 子查询分类之WHERE的子查询
文章目录 主查询 子查询 纲举目张--子查询的分类 WHERE语句后的 子查询 主查询 子查询 概念集中于SELECT语句 之前我们所学习的所有,都是SELECT作为独立的一句 是主干,是爸爸 后面跟 ...
- mySQL学习记录(局域网连接/基础查询/条件查询/常见函数/窗口函数/表连接/子查询/插修删建表)
一些基础概念 DB 数据库 存储数据的容器 DBMS 数据库管理系统 又称数据库软件.产品如mysql/oracle/db2/sqlserver SQL 结构化查询语言 是所有的DBMS都使用的一种D ...
最新文章
- 御剑情缘服务器维护,御剑情缘10月31日安卓区部分服务器数据互通公告 10.31合服名称与时间[图]...
- linux 连接远程命令行,screen命令行远程连接
- 安装php时,make步骤报错make: *** [ext/gd/gd.lo] Error 1
- 当装了两个tomcat后,如何修改tomcat端口
- tq3358 linux 串口驱动编程,TQ335x——spidev驱动的生成
- 【Redis】redis 主从复制
- android 百度室内地图开发,androidsdk | 百度地图API SDK
- Tensorflow的快速安装(张量图例)
- spring-test测试demo
- 什么?print 函数还可以打印彩色围棋局面?
- WebToLayers如何将网页转换为PSD文档?
- CEF内嵌浏览器 编译
- Genymotion启动报错:VT-x/AMD-V硬件加速在您的系统中不可用
- 如何利用python监控主机存活并邮件、短信通知
- 交叉编译libxcb与X11
- 金笛邮件倒入专题之Umail倒入
- CSS实现炫酷动画背景
- 同位语从句 vs 定语从句 区别
- DIY电脑检测软件大集中
- Java面试八股文整理