数据库-mysql数据连接

一:Mysql 连接的使用

在前几章节中,我们已经学会了如果在一张表中读取数据,这是相对简单的,但是在真正的应用中经常需要从多个数据表中读取数据。

本章节我们将向大家介绍如何使用 MySQL 的 JOIN 在两个或多个表中查询数据。

你可以在 SELECT, UPDATE 和 DELETE 语句中使用 Mysql 的 JOIN 来联合多表查询。

JOIN 按照功能大致分为如下三类:

  • INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
  • LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
  • RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。
  • full join 全连接  两个表并集,mysql并没有直接支持,而是通过unicon实现

二:内连接

  两个表的交集

  

MariaDB [test2]> select * from a;
+------+
| name |
+------+
|    1 |
|    2 |
|    3 |
|    4 |
+------+
4 rows in set (0.00 sec)

MariaDB [test2]> select * from b;
+------+
| name |
+------+
|    3 |
|    4 |
|    5 |
|    6 |
+------+
4 rows in set (0.00 sec)
MariaDB [test2]> select * from a inner join b on a.name=b.name;
+------+------+
| name | name |
+------+------+
|    3 |    3 |
|    4 |    4 |
+------+------+
2 rows in set (0.00 sec)

MariaDB [test2]> select * from a,b where a.name=b.name;
+------+------+
| name | name |
+------+------+
|    3 |    3 |
|    4 |    4 |
+------+------+
2 rows in set (0.00 sec)

三:LEFT JOIN

MySQL left join 与 join 有所不同。 MySQL LEFT JOIN 会读取左边数据表的全部数据,即便右边表无对应数据。

MariaDB [test2]> select * from a left join b on a.name=b.name;
+------+------+
| name | name |
+------+------+
|    3 |    3 |
|    4 |    4 |
|    1 | NULL |
|    2 | NULL |
+------+------+
4 rows in set (0.00 sec)

四: RIGHT JOIN

MySQL RIGHT JOIN 会读取右边数据表的全部数据,即便左边边表无对应数据。

MariaDB [test2]> select * from a right join b on a.name=b.name;
+------+------+
| name | name |
+------+------+
|    3 |    3 |
|    4 |    4 |
| NULL |    5 |
| NULL |    6 |
+------+------+
4 rows in set (0.00 sec)

五:full join

  两个表的并集

  

MariaDB [test2]> select * from a left join b on a.name =b.name union select * from a right join b on a.name =b.name;
+------+------+
| name | name |
+------+------+
|    3 |    3 |
|    4 |    4 |
|    1 | NULL |
|    2 | NULL |
| NULL |    5 |
| NULL |    6 |
+------+------+
6 rows in set (0.00 sec)
时间: 2024-10-24 17:24:22

数据库-mysql数据连接的相关文章

如何实现MindManager数据库导入数据连接

思维导图有时候也是需要数据来进行补充支持,对于MindManager思维导图来说,与数据库的链接使得功能更为强大,那么在MindManager数据库中又是如何导入数据呢. 一个数据库连接到数据源(Mindjet的CSV文件的数据库或文件夹).您可以浏览数据源和你的导图来进行内容的添加. 添加数据库连接后,在打开的窗口中,选择连接类型,你可以连接到下面的数据库类型: 微软Access 微软Excel 微软SQL服务器 MySQL服务器 逗号分隔值(CSV文件的文件夹中的每个文件作为一个表) 而且您

PHP数据库--MySQL的连接

数据库——>按照数据结构来组织.存储和管理数据的容器 常用函数,要用什么函数可以上手册查,很方便,主要先会一些基础的就可以 mysql函数--(mysql貌似会被废弃,推荐使用mysqli或PDO): 1.面向过程:连接一个MySQL服务器--mysql_connect($servername, $username, $passwd); 例如: //生成一个连接$con = mysql_connect( 'localhost', 'root', '123456' ); if(!$con){die

数据库-mysql数据的增删改查

一:mysql 数据的插入 语法 以下为向MySQL数据表插入数据通用的 INSERT INTO SQL语法: INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN ); 如果数据是字符型,必须使用单引号或者双引号,如:"value". MariaDB [test2]> desc student; +--------+----------+------+-----

java中ATM与数据库Mysql的连接

import java.sql.*; import java.util.*; public class ATM1 { String code; int pass; double money; int i=1; //检查登录 public void checkLogin(){ int i=1; while(i<=3){ System.out.print("请输入您的卡号:"); Scanner sc=new Scanner(System.in); String code_=sc.n

通过DriveManager类实现数据库MySQL的连接

1.加载驱动 String drivername="com.mysql.jdbc.Driver";   //数据库驱动类路径 try{   Class.forName(drivername);                        //创建驱动   System.out.println("创建驱动成功!");  }catch(ClassNotFoundException e){   e.printStackTrace();  } 2.定义URL String

Python下Mysql数据连接池——单例

# coding:utf-8 import threading import pymysql from DBUtils.PooledDB import PooledDB from app.common.file_config import get_config class DbPool(object): _instance_lock = threading.Lock() def __init__(self): if not hasattr(DbPool, "pool"): DbPool

Python-Web框架之 - 利用SQLALchemy创建与数据库MySQL的连接, 详解用Flask时会遇到的一些大坑 !

经过这个小项目算是对Django与Flask这两个web框架有了新的认识 , Django本身的轮子非常齐全 , 套路也很固定 , 新手在接触Django框架时 , 不会陷入到处找轮子的大坑 ; 那么在使用Flask这个框架的时候会碰到哪些大坑呢 , 首先Flask是一个轻量级的web框架 , 之所以说它轻量级是因为它本身并没有多少轮子 , 那是不是就代表这些轮子需要我们自己来造呢 , 那倒不必 , 但是需要我们去找这些轮子 , 这恰恰是锻炼你的思维的时候 , 你要找轮子之前 , 你必须得知道需

phpstudy mysql数据连接不上(#1130)解决办法

问题:无论输什么密码,都显示#1130,找半天在终于在百度知道找到了,其他帖子都是水贴,暂时不知道为什么要这么加,反正加了重置服务就好了,重新打开phpMyAdmin 输入默认密码root既可 解决办法: 找到phpstudy安装目录下的my.ini我的在D:\phpStudy\PHPTutorial\MySQL\my.ini在[mysqld]新增一行skip-grant-tables 参考地址:https://zhidao.baidu.com/question/1238790926829885

mysql基本认识【关系型数据库和nosql、mysql操作流程和体系,库操作,表操作,数据的操作,字符集的操作,以及php作为client操作数据库】对连接本身没有疑问

1.关系型数据库永久性保存数据的仓库php的变量只是php脚本执行期间,临时性保存变量的空间[使用内存空间临时保存] 关系型数据库:利用二者的关系来描述实体的信息.[利用二维表字段名和字段值来进行描述][关系型数据库根本不是可以使用外键将两个表构建成关联的意思,而是实现描述实体的二维表的形式] nosql:not only sql[sql表示操作关系型数据的语言]所以nosql指的就是非关系型数据库[典型的是键值对型的数据(redis.memcache)][nosql可以视情况添加信息,不需要对