mysql数据库中实现内连接、左连接、右连接
原文:http://www.cnblogs.com/xwdreamer/archive/2010/12/15/2297058.html
内连接:把两个表中数据对应的数据查出来
外连接:以某个表为基础把对应数据查出来
首先创建数据库中的表,数据库代码如下:
- /*
- Navicat MySQL Data Transfer
- Source Server : localhost_3306
- Source Server Version : 50150
- Source Host : localhost:3306
- Source Database : store
- Target Server Type : MYSQL
- Target Server Version : 50150
- File Encoding : 65001
- Date: 2010-12-15 16:27:53
- */
- SET FOREIGN_KEY_CHECKS=0;
- -- ----------------------------
- -- Table structure for `grade`
- -- ----------------------------
- DROP TABLE IF EXISTS `grade`;
- CREATE TABLE `grade` (
- `no` int(11) NOT NULL AUTO_INCREMENT,
- `grade` int(11) NOT NULL,
- PRIMARY KEY (`no`)
- ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
- -- ----------------------------
- -- Records of grade
- -- ----------------------------
- INSERT INTO grade VALUES ('', '');
- INSERT INTO grade VALUES ('', '');
- INSERT INTO grade VALUES ('', '');
- -- ----------------------------
- -- Table structure for `student`
- -- ----------------------------
- DROP TABLE IF EXISTS `student`;
- CREATE TABLE `student` (
- `no` int(11) NOT NULL AUTO_INCREMENT,
- `name` varchar(20) NOT NULL,
- PRIMARY KEY (`no`)
- ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
- -- ----------------------------
- -- Records of student
- -- ----------------------------
- INSERT INTO student VALUES ('', 'a');
- INSERT INTO student VALUES ('', 'b');
- INSERT INTO student VALUES ('', 'c');
- INSERT INTO student VALUES ('', 'd');
student表中的字段分别是no和name,grade表中的字段是no和grade。两张表中的no都代表的是学生的学号。
查询student表的结果:
- mysql> select * from grade;
- +----+-------+
- | no | grade |
- +----+-------+
- | 1 | 90 |
- | 2 | 80 |
- | 3 | 70 |
- +----+-------+
- rows in set
查询grade表的结果:
- mysql> select * from student s inner join grade g on s.no=g.no;
- +----+------+----+-------+
- | no | name | no | grade |
- +----+------+----+-------+
- | 1 | a | 1 | 90 |
- | 2 | b | 2 | 80 |
- | 3 | c | 3 | 70 |
- +----+------+----+-------+
- rows in set
左连接(左表中所有数据,右表中对应数据)
- mysql> select * from student as s left join grade as
- g on s.no=g.no;
- +----+------+------+-------+
- | no | name | no | grade |
- +----+------+------+-------+
- | 1 | a | 1 | 90 |
- | 2 | b | 2 | 80 |
- | 3 | c | 3 | 70 |
- | 4 | d | NULL | NULL |
- +----+------+------+-------+
- rows in set
右连接(右表中所有数据,左表中对应数据)
- mysql> select * from student as s right
- join grade as g on s.no=g.no;
- +----+------+----+-------+
- | no | name | no | grade |
- +----+------+----+-------+
- | 1 | a | 1 | 90 |
- | 2 | b | 2 | 80 |
- | 3 | c | 3 | 70 |
- +----+------+----+-------+
- rows in set
mysql数据库中实现内连接、左连接、右连接的更多相关文章
- 【转】mysql数据库中实现内连接、左连接、右连接
[转]mysql数据库中实现内连接.左连接.右连接 内连接:把两个表中数据对应的数据查出来 外连接:以某个表为基础把对应数据查出来 首先创建数据库中的表,数据库代码如下: /* Navicat MyS ...
- mysql数据库中的多表查询(内连接,外连接,子查询)
用两个表(a_table.b_table),关联字段a_table.a_id和b_table.b_id来演示一下MySQL的内连接.外连接( 左(外)连接.右(外)连接.全(外)连接). MySQL版 ...
- 通过JSP网页连接MySQL数据库,从MySQL数据库中读出一张表并显示在JSP网页中
1.安装所需软件 ①安装java和tomcat,建立JSP网页最基础的软件②安装MySQL数据库(下载地址:https://www.mysql.com/)③安装Navicat Premium来查看数据 ...
- Mysql一个非常有用的内置函数今天碰到要把MySQL数据库中的varchar转换成date类型进
Mysql一个非常有用的内置函数 今天碰到要把MySQL数据库中的varchar转换成date类型进行时间的比较和查询.在网上找了找,发现MySQL也跟其他数据库一样有自己内置的转换函数:str_to ...
- Linux系统下 MYSQL数据库中的数据库文件在本机内迁移 (需暂停服务的方式)
Linux系统下 MYSQL数据库中的数据库文件在本机内迁移 本机采用Ubuntu16.04系统,tar方式安装MySQL5.7.21 数据库安装文件夹为 /home/devil/mysql 现 ...
- PHP往mysql数据库中写入中文失败
该类问题解决办法就是 在建立数据库连接之后,将该连接的编码方式改为中文. 代码如下: $linkID=@mysql_connect("localhost","root&q ...
- MySQL存储引擎的实际应用以及对MySQL数据库中各主要存储引擎的独特特点的描述
MySQL存储引擎的实际应用以及对MySQL数据库中各主要存储引擎的独特特点的描述: 1.MySQL有多种存储引擎: MyISAM.InnoDB.MERGE.MEMORY(HEAP).BDB(Berk ...
- C#实现MySQL数据库中的blob数据存储
在MySQL数据库中,有一种blob数据类型,用来存储文件.C#编程语言操作MySQL数据库需要使用MySQL官方组件MySQL.Data.dll. Mysql.Data.dll(6.9.6)组件下载 ...
- 用JDBC把Excel中的数据导入到Mysql数据库中
步骤:0.在Mysql数据库中先建好table 1.从Excel表格读数据 2.用JDBC连接Mysql数据库 3.把读出的数据导入到Mysql数据库的相应表中 其中,步骤0的table我是先在Mys ...
随机推荐
- web-day16
第16章WEB16-Listener&Filter篇 今日任务 使用过滤器完成自动登录的案例 使用过滤器统一网站的字符集编码 教学导航 教学目标 了解常见的监听器 理解过滤器的生命周期 能够使 ...
- noip第13课作业
1. 排身高 [问题描述] 鹏鹏的班上一共有 n 个学生.刚好每个同学的身高互不相同.鹏鹏想知道,所有同学中身高第二高的是谁. 输入格式:输入共两行,第一行有一个整数 n(2≤n≤100),表示 ...
- 23种设计模式(1)-Facade设计模式
前记 曾经我遇见的一个需求是这样的,接口A有个方法void methodA(),类B需要实现接口A的methodA()方法,并且在类B中需要把methodA()方法内部处理逻辑获得的结果利用C类实例的 ...
- Xcode常见快捷键
在项目工作中,你每天都要和这些视图互动,所有这些视图在Xode中都是必不可少的.所以接下来江哥将教你如何快速通过热键来配置你的工作空间. Command (⌘):用来导航,主要用来控制导航区域. Al ...
- hdu 4542 打表+含k个约数最小数
http://acm.hdu.edu.cn/showproblem.php?pid=4542 给出一个数K和两个操作 如果操作是0,就求出一个最小的正整数X,满足X的约数个数为K. 如果操作是1,就求 ...
- django后台admin管理布局
在model模块里设置 class pc_info(models.Model): ip = models.CharField(max_length=64) sn = models.CharField( ...
- AngularJS $observe $watch
$observe $watch都可以用来监听值的变化,但是他们有显著的区别.$observe是用来监视DOM属性值的变化,而 $watch监视scope属性值的变化.AngularJS中的监听,都知道 ...
- spring中的两个数据库事务DataSourceTransactionManager 和 JtaTransactionManager区别
在spring与数据框架(mybatis或hibernate)容器的配置文件中通常会有 <!-- (事务管理)transaction manager, use JtaTransactionMan ...
- 从0开始学Python---01
1.开始 Vim test.py #!/usr/bin/python print "hello,world!"; chmod +x test.py ./test.py 2.基本知 ...
- cxgrid显示海量数据
cxgrid显示海量数据 在默认情况下,cxgrid显示几万条以上的数据会很慢.怎么办? 交下面的属性设为TRUE以后,速度飞快. 但速度是快了,自动计算列的合计值这些功能却失效了,正所谓有得必有失!