mysql进阶之MySQL查询

一、MySQL多表查询和子查询

别名:as

       表别名

       字段别名

       查询结果亦可命名别名

 

联结查询:事先将两张或多张表join,根据join的结果进行查询。

交叉联结(cross join):第一张表的每一行与第二张表的每一行做交叉相乘。

自然联结,也叫等值联结、内联结。两张表中的字段做等值关联。

自联结:

外联结:

       左外联结:只保留出现在左外联结运算之前左侧的关系中的元组。以左表为尊,右侧没有,右侧留空。

       右外联结:只保留出现在左外联结运算之前右侧的关系中的元组。以右表为尊,左侧没有,左侧留空。

mysql> select s.name,c.class from students as
s LEFT JOIN classes as c on s.classid=c.classid; 
+---------------+----------------+
| name| class          |
+---------------+----------------+
| Shi Zhongyu| Emei Pai       |
| Shi Potian| Shaolin Pai    |
| Xie Yanke| Emei Pai       |
| Ding Dian| Wudang Pai     |
| Yu Yutong| QingCheng Pai  |
| Shi Qing| Riyue Shenjiao |
| Xi Ren| QingCheng Pai  |
| Lin Daiyu| Ming Jiao      |
| Ren Yingying| Lianshan Pai   |
| Yue Lingshan| QingCheng Pai  |
| Yuan Chengzhi | Lianshan Pai   |
| Wen Qingqing| Shaolin Pai    |
| Tian Boguang| Emei Pai       |
| Lu Wushuang| QingCheng Pai  |
| Duan Yu| Wudang Pai     |
| Xu Zhu| Shaolin Pai    |
| Lin Chong| Wudang Pai     |
| Hua Rong| Ming Jiao      |
| Xue Baochai| Lianshan Pai   |
| Diao Chan| Ming Jiao      |
| Huang Yueying | Lianshan Pai   |
| Xiao Qiao| Shaolin Pai    |
| Ma Chao| Wudang Pai     |
| Xu Xian| NULL           |
| Sun Dasheng| NULL           |
+---------------+----------------+
25 rows in set (0.00 sec)

mysql> select s.name,c.class from students as s RIGHT JOIN classes as c on s.classid=c.classid;
+---------------+----------------+
| name          | class          |
+---------------+----------------+
| Shi Potian| Shaolin Pai    |
| Wen Qingqing| Shaolin Pai    |
| Xu Zhu| Shaolin Pai    |
| Xiao Qiao| Shaolin Pai    |
| Shi Zhongyu| Emei Pai       |
| Xie Yanke| Emei Pai       |
| Tian Boguang| Emei Pai       |
| Yu Yutong| QingCheng Pai  |
| Xi Ren| QingCheng Pai  |
| Yue Lingshan| QingCheng Pai  |
| Lu Wushuang| QingCheng Pai  |
| Ding Dian| Wudang Pai     |
| Duan Yu| Wudang Pai     |
| Lin Chong| Wudang Pai     |
| Ma Chao| Wudang Pai     |
| Shi Qing| Riyue Shenjiao |
| Ren Yingying| Lianshan Pai   |
| Yuan Chengzhi | Lianshan Pai   |
| Xue Baochai| Lianshan Pai   |
| Huang Yueying | Lianshan Pai   |
| Lin Daiyu| Ming Jiao      |
| Hua Rong| Ming Jiao      |
| Diao Chan| Ming Jiao      |
| NULL| Xiaoyao Pai    |
+---------------+----------------+

24 rows in set (0.00 sec) 

子查询:在查询中嵌套查询,mysql子查询性能优化一般,应尽量避免使用,可使用联结查询替代。

       1、用于比较表达式(WHERE)中的子查询,其返回值只能唯一。

       2、用于EXISTS中的子查询,判断存在与否

       3、用于ININ list))中的子查询,判断存在与指定列表中。

       4、用于FROM中的子查询

              select
Alias_name.col1,Alias_name.col2… from (selectclause ) As Alias_name Where condition;
 

MySQL视图(view):存储下来的select语句,用于限定查询结果,隐藏表中的某些信息。将限定的查询结果从原表中获取,客户的查询 被限制在限定的结果中。

mysql> create VIEW testview as select
name,age from students;
mysql> show tables;
+-------------------+
| Tables_in_hellodb |
+-------------------+
| classes           |
| coc               |
| courses           |
| scores            |
| students          |
| teachers          |
|testview          |
| toc               |
+-------------------+
8 rows in set (0.01 sec)

查看视图中

mysql> select * from testview;
+---------------+-----+
| name| age |
+---------------+-----+
| Shi Zhongyu|  22 |
| Shi Potian|  22 |
| Xie Yanke|  53 |
| Ding Dian|  32 |
| Yu Yutong|  26 |
| Shi Qing|  46 |
| Xi Ren|  19 |
| Lin Daiyu|  17 |
| Ren Yingying|  20 |
| Yue Lingshan|  19 |
| Yuan Chengzhi |  23 |
| Wen Qingqing|  19 |
| Tian Boguang|  33 |
| Lu Wushuang|  17 |
| Duan Yu|  19 |
| Xu Zhu|  21 |
| Lin Chong|  25 |
| Hua Rong|  23 |
| Xue Baochai|  18 |
| Diao Chan|  19 |
| Huang Yueying |  22 |
| Xiao Qiao|  20 |
| Ma Chao|  23 |
| Xu Xian|  27 |
| Sun Dasheng| 100 |
+---------------+-----+

视图的状态与table的状态是有区别的,但其可以被当作表来使用,在插入数据或更新数据时,不应该基于view来实现。

mysql> show table status like
"testview"\G
*************************** 1. row
***************************
Name: testview
Engine: NULL
Version: NULL
Row_format: NULL
Rows: NULL
 Avg_row_length: NULL
Data_length: NULL
Max_data_length: NULL
Index_length: NULL
Data_free: NULL
 Auto_increment: NULL
Create_time: NULL
Update_time: NULL
Check_time: NULL
Collation: NULL
Checksum: NULL
 Create_options: NULL
        Comment: VIEW
1 row in set (0.00 sec)

删除视图,使用drop

mysql进阶之MySQL查询

select name,age from students where age > (select avg(age) from students);
select students.name,courses.course from students,courses,scores where students.StuID = scores.StuID 
and scores.CourseID = courses.CourseID and courses.courseid in (1,2,4,7);
select s.name,s.classid from (
select classid from students group by classid having count(ClassID)>=3) as
c,students as s where c.classid=s.classid and age>(select avg(age) from
students);
select s.name,s.classid,s.age
from students as s where classid is not null and s.age>(select avg(age) from
students) ;

来自为知笔记(Wiz)

原创文章,作者:M20-1钟明波,如若转载,请注明出处:http://www.178linux.com/59639

(0)
M20-1钟明波M20-1钟明波
上一篇 2016-11-18
下一篇 2016-11-18

相关推荐

  • Apache通过mod_proxy模块连接Tomcat并使用Memcached+MSM做Tomcat会话保持

    一 实验目的 本实验使用Apache的mod_proxy模块连接Tomcat, Nginx在前端做负载均衡,并使用Memcahced+MSM的方式保持Tomcat的会话,实现会话共享。 二 实验拓扑 说明:为测试方便,Memcached与Tomcat安装在同一机器中,正式环境应该安装在不同机器中。 三 实验环境 主机 IP 安装组件 node1 192.16…

    Linux干货 2017-01-17
  • 第六周小练习

    详细总结vim编辑器的使用并完成一下练习 vim编辑器的基本使用 vim模式: 1、编辑模式(命令模式) 2、输入模式 3、末行模式  一、打开文件 vim /path/to/somefile 打开单个文件 如果文件存在为打开,否则保存退出时为新建 vim /path/to/somefile vim +# : 打开文件…

    Linux干货 2016-12-19
  • linux基础命令1

    内容包含:文件管理、重定向和管道、用户组和权限管理、文本处理工具

    Linux干货 2017-11-19
  • Linux网络

    网络概念 OSI模型网络设备TCP/IPIP地址   什么是网络 资源共享的功能和优点数据和应用程序资源网络存储备份设备 常见的网络物理组件 网络应用程序Web 浏览器(Chrome、IE、Firefox等)即时消息(QQ、微信、钉钉等)电子邮件(Outlook、foxmail 等)协作(视频会议、VNC、Netmeeting、WebEx 等)we…

    Linux干货 2017-08-19
  • 推荐-LVS专题: LVS的工作模型和调度算法介绍

    LVS专题: LVS的工作模型和调度算法介绍 LVS专题: LVS的工作模型和调度算法介绍 前言 什么是负载均衡? 什么是LVS? LVS的架构: LVS的实现模型: NAT实现原理: DR实现原理: TUN实现原理: FULLNAT实现原理: LVS的调度算法 静态调度算法(4种) 动态调度算法(6种): 总结 前言 本文大概介绍一下LVS的工作方式和实现…

    Linux干货 2016-04-05
  • M22 程序员偷懒战法

    前段时间有个外国的程序猿走红网络,这个哥们可以说是懒到了极点,上班请假给领导发短信写脚本,下班晚回家给老婆发短信写脚本,甚至于接个咖啡也要写脚本。这个哥们离职之后,他的同事在他的办公电脑上发现了这些脚本,并公布到了网上,引起众程序猿纷纷膜拜。最近我刚好学到shell脚本部分,就让我分析其中的一个跟领导请假的脚本吧。 #!/bin/sh -e # Exit e…

    Linux干货 2017-04-06