mysql dba系统学习(23)必须明白的sql知识

必须明白的sql知识

一,两表外连接查询

现有两个表A,B内容如下

mysql> select * from A;
+------+------+
| id   | Col1 |
+------+------+
|    1 | AA   |
|    2 | BB   |
|    3 | CC   |
+------+------+
3 rows in set (0.00 sec)
mysql> select * from B;
+------+------+
| id   | Col2 |
+------+------+
|    2 | DD   |
|    3 | EE   |
|    4 | FF   |
+------+------+
3 rows in set (0.01 sec)

1,A表和B表左连接

先将左表(A)数据查出,然后根据on后面的条件,将右表中凡是id与左表id相等的记录都查出来,与匹配的左表记录依次排成一行或多行,若无匹配的记录,则显示null。

mysql> select * from A left join B on A.id=B.id;
+------+------+------+------+
| id   | Col1 | id   | Col2 |
+------+------+------+------+
|    1 | AA   | NULL | NULL |
|    2 | BB   |    2 | DD   |
|    3 | CC   |    3 | EE   |
+------+------+------+------+
3 rows in set (0.00 sec)
mysql> select A.id ID ,A.Col1 C1 ,B.Col2 C2  from A left join B on A.id=B.id;
+------+------+------+
| ID   | C1   | C2   |
+------+------+------+
|    1 | AA   | NULL |
|    2 | BB   | DD   |
|    3 | CC   | EE   |
+------+------+------+
3 rows in set (0.00 sec)

下面的结果也是一样的

2,A表和B表右连接

先将右表(B)数据查出,然后根据on后面的条件,将左表中凡是id与右表id相等的记录都查出来,与匹配的左表记录依次排成一行或多行,若无匹配的记录,则显示null

mysql> select * from A right join B on A.id=B.id;
+------+------+------+------+
| id   | Col1 | id   | Col2 |
+------+------+------+------+
|    2 | BB   |    2 | DD   |
|    3 | CC   |    3 | EE   |
| NULL | NULL |    4 | FF   |
+------+------+------+------+
3 rows in set (0.07 sec)
mysql> select A.id ID ,A.Col1 C1 ,B.Col2 C2  from A right  join B on A.id=B.id;
+------+------+------+
| ID   | C1   | C2   |
+------+------+------+
|    2 | BB   | DD   |
|    3 | CC   | EE   |
| NULL | NULL | FF   |
+------+------+------+
3 rows in set (0.00 sec)

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索mysql
, select
, null
, 多行
, id
from
,以便于您获取更多的相关知识。

时间: 2024-10-27 19:26:53

mysql dba系统学习(23)必须明白的sql知识的相关文章

mysql dba系统学习(22)数据库事务详解

上个星期去面试数据库管理员的工作,笔试通过之后就是直接的面试,他问了我一个问题,叫我介绍哈数据库的事务的看法和理解,但是不知所错的没有章法的乱答一气,唉唉,基础不扎实啊. 下面来好好的学习哈mysqlinnodb引擎的事务相关的知识 一,我们为什么需要数据库事务呢? 这个问题看似很简单,但是真的能够说明白还是要看看我们的基本功是不是扎实 例如,用户A给用户B通过ATM机转账1000元,那么A账户上就会少1000元,而B用户会多1000元 在这个过程中,两个环节是关联的.第一个账户划出款项必须保证

mysql dba系统学习(20)mysql存储引擎MyISAM

mysql存储引擎MyISAM 1,创建myisam表 mysql> create table t (id int , name varchar(30) , msg varchar(100)) engine = MyISAM; mysql> show table status like "t" \G ; *************************** 1. row *************************** Name: t Engine: MyISAM

mysql dba系统学习(10)innodb引擎的redo log日志的原理

在InnoDB中,bufferpool里面的dirtypage一方面可以加快数据处理速度,同时也会造成数据的不一致(RAMvsDISK).本文介绍了dirtypage是如何产生,以及InnoDB如何利用redolog如何消除dirtypage产生的数据不一致. 当事务(Transaction)需要修改某条记录(row)时,InnoDB需要将该数据所在的page从disk读到bufferpool中,事务提交后,InnoDB修改page中的记录(row).这时bufferpool中的page就已经和

mysql dba系统学习(8)查询日志文件功能

查询日志的作用是记录所有客户端发来的sql语句,也就是记录客户端的所有操作 Log参数将要过时,现在用general_log来代替 打开查询日志功能 mysql> showvariables like "%log"; +----------------+-------+ | Variable_name| Value | +----------------+-------+ | back_log| 50| | general_log| OFF| | log| OFF| | rela

mysql dba系统学习(2)了解mysql的源码目录及源文件

了解mysql的源码目录 包括客户端代码,服务端代码,测试工具和其他库文件 Mysql源码结构 Bdb 伯克利DB表引擎 BUILD 构建工程的脚本 Client 客户端 Cmd-line-utils 命令行工具 Config 构建工程所需的一些文件 Dbug Fred Fish的调试库 Docs 文档文件夹 Extra 一些相对独立的次要的工具 Heap HEAP表引擎 Include 头文件 Innobase INNODB表引擎 Libmysql 动态库 Libmysql_r 为了构建线程安

mysql dba系统学习(1)mysql各版本编译安装

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司.MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性.MySQL的SQL语言是用于访问数据库的最常用标准化语言.MySQL软件采用了双授权政策(本词条"授权政策"),它分为社区版和商业版,由于其体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库.由于其社区

mysql dba系统学习(21)mysql存储引擎InnoDB

mysql存储引擎InnoDB 1,主体系结构: 默认7个后台线程,4个io thread(insert buffer.log.read.write),1个master thread(优先级最高),1个锁(lock)监控线程,1个错误监控线程.可以通过show engine innodb status来查看.新版本已对默认的read thread和write thread分别增大到4个,可通过show variables like 'innodb_io_thread%'查看. 存储引擎组成: 缓

mysql dba系统学习(19) 实现Mysql读操作负载均衡

配置mysql+lvs+keeplived实现Mysql读操作的负载均衡 环境: test1192.168.46.131master test2192.168.46.130slave备份test库 test3调度器 1.安装与配置Keepalived 首先在节点test1.test2上安装Keepalived软件,软件安装非常简单. [root@test1 ]# yum install -y openssl-devel [root@test1 ~]# wget http://www.keepal

mysql dba系统学习(18)mysql主从复制的实现

mysql主从复制的实现 1.MySQL复制的实现原理 MySQL支持单向.双向复制.异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入一个二进制日志文件中,并创建一个索引文件以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,日志文件会通知主服务器,从服务器在日志中读取的最后一次成功更新的位置.接着,从服务器在上次成功更新的位置处开始进入更新操作.更新完成后从服务器开始进入等待状态,等待主服务器后续的更新.需要注意