MySQL-6-多表操作

news2024/12/24 8:50:31

一、复制表

  • 格式
create table 表名 select查询语句
  • 注意:复制成新表时,键值(pri,index等等)索引不会同步复制
  • 案例
mysql> create table t2 select name,sex,age from user;

二、多表查询

2.1、 多表查询–>连接查询

  • 将2个或2个以上的表按某个条件连接起来,从中选取需要的数据,表中包含某种相同意义的字段

  • 交叉连接(交叉查询)如果查询不加where条件,则结果被称为笛卡尔集

  • 自然连接(自己连自己)没啥意义

  • 内连接:

  • 外连接(使用的比较多,查表中重复的数值),外连接又分为:左连接和右连接

  • 内外连接详解

2.2、交叉查询

  • 交叉查询格式1:
select 字段名列表 from 表a,表b;
  • 交叉查询格式2:
select 字段名列表 from 表a,表b where 条件
  • 不加where时查询结果叫笛卡尔积(查询结果总条目数=表a的记录数*表b的记录数)

2.3、外连接:左连接,右连接

  • 左连接:当条件成立时,以左表为主显示查询结果(当条件成立,将左表记录显示出来)
  • on 匹配条件必须加
格式:select 字段名列表 from 表1 left join 表2 on 条件; 	# 表1为左表
  • 右连接:当条件成立时,已右表为主显示查询结果(条件成立时显示右表的信息,如果左表没有匹配则显示null)
格式:select 字段名列表 from 表1 right join 表2 on 条件;

2.4、内连接

  • 隐式内连接:select * from a,b where 条件;
  • 显示内连接:select * from a inner join b on 条件;
  • 与外连接类似(输出不同表的重复值)

2.5、where嵌套查询–>又叫where子查询

  • 把内层的查询结果作为外层的查询条件,类似:ps aux |grep http
  • 可以是同库同表,可以是不同库不同表
  • 格式
select 字段名列表 from 表 where 条件(select 内层查询)
  • 案例:查询表格中薪资大于平均薪资的人姓名
mysql> select name,pay from user where pay > (select avg(pay) from user);

2.6、案例:

  • 多表查询案例-交叉查询1(笛卡尔集)
mysql> desc t5;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| name  | char(20) | NO   |     | NULL    |       |
| uid   | int(2)   | YES  |     | NULL    |       |
| shell | char(50) | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql> desc t6;
+---------+----------+------+-----+---------+-------+
| Field   | Type     | Null | Key | Default | Extra |
+---------+----------+------+-----+---------+-------+
| name    | char(20) | NO   |     | NULL    |       |
| uid     | int(2)   | YES  |     | NULL    |       |
| gid     | int(2)   | YES  |     | NULL    |       |
| homedir | char(50) | YES  |     | NULL    |       |
+---------+----------+------+-----+---------+-------+
4 rows in set (0.00 sec)
mysql> select * from t5,t6;
+------+------+---------------+------+------+------+----------------+
| name | uid  | shell         | name | uid  | gid  | homedir        |
+------+------+---------------+------+------+------+----------------+
| bin  |    1 | /sbin/nologin | bin  |    1 |    1 | /sbin/nologin  |
| adm  |    3 | /sbin/nologin | bin  |    1 |    1 | /sbin/nologin  |
| bin  |    1 | /sbin/nologin | adm  |    3 |    4 | /var/adm       |
| adm  |    3 | /sbin/nologin | adm  |    3 |    4 | /var/adm       |
| bin  |    1 | /sbin/nologin | lp   |    4 |    7 | /var/spool/lpd |
| adm  |    3 | /sbin/nologin | lp   |    4 |    7 | /var/spool/lpd |
| bin  |    1 | /sbin/nologin | sync |    5 |    0 | /sbin/nologin  |
| adm  |    3 | /sbin/nologin | sync |    5 |    0 | /sbin/nologin  |
+------+------+---------------+------+------+------+----------------+
8 rows in set (0.00 sec)
  • 交叉查询2
mysql> select t6.*,t5.shell from t5,t6 where t5.uid=t6.uid;
+------+------+------+---------------+---------------+
| name | uid  | gid  | homedir       | shell         |
+------+------+------+---------------+---------------+
| bin  |    1 |    1 | /sbin/nologin | /sbin/nologin |
| adm  |    3 |    4 | /var/adm      | /sbin/nologin |
+------+------+------+---------------+---------------+
2 rows in set (0.00 sec)
  • 外连接查询案例1:两表中显示显示重复的值
mysql> select * from t7;
+----------+------+----------------+
| name     | uid  | shell          |
+----------+------+----------------+
| bin      |    1 | /sbin/nologin  |
| adm      |    3 | /sbin/nologin  |
| lp       |    4 | /sbin/nologin  |
| sync     |    5 | /bin/sync      |
| shutdown |    6 | /sbin/shutdown |
+----------+------+----------------+
5 rows in set (0.00 sec)

mysql> select * from t8;
+----------+------+----------------+
| name     | uid  | shell          |
+----------+------+----------------+
| bin      |    1 | /sbin/nologin  |
| adm      |    3 | /sbin/nologin  |
| lp       |    4 | /sbin/nologin  |
| sync     |    5 | /bin/sync      |
| shutdown |    6 | /sbin/shutdown |
| halt     |    7 | /sbin/halt     |
| mail     |    8 | /sbin/nologin  |
| operator |   11 | /sbin/nologin  |
+----------+------+----------------+
8 rows in set (0.00 sec)
  • 以左连接查询显示两表中重复的数值1
mysql> select  * from t7 left join t8 on t7.uid=t8.uid;
+----------+------+----------------+----------+------+----------------+
| name     | uid  | shell          | name     | uid  | shell          |
+----------+------+----------------+----------+------+----------------+
| bin      |    1 | /sbin/nologin  | bin      |    1 | /sbin/nologin  |
| adm      |    3 | /sbin/nologin  | adm      |    3 | /sbin/nologin  |
| lp       |    4 | /sbin/nologin  | lp       |    4 | /sbin/nologin  |
| sync     |    5 | /bin/sync      | sync     |    5 | /bin/sync      |
| shutdown |    6 | /sbin/shutdown | shutdown |    6 | /sbin/shutdown |
+----------+------+----------------+----------+------+----------------+
  • 以左连接查询输出两表中相同的数值2(以表值少的为主表)
mysql> select t7.* from t7 left join t8 on t7.uid=t8.uid;
+----------+------+----------------+
| name     | uid  | shell          |
+----------+------+----------------+
| bin      |    1 | /sbin/nologin  |
| adm      |    3 | /sbin/nologin  |
| lp       |    4 | /sbin/nologin  |
| sync     |    5 | /bin/sync      |
| shutdown |    6 | /sbin/shutdown |
+----------+------+----------------+
5 rows in set (0.00 sec)
  • 以左连接查询输出两表中重复的值与不重复的值;(表值多的为主表)
mysql> select * from t8 left join t7 on t8.uid=t7.uid;
+----------+------+----------------+----------+------+----------------+
| name     | uid  | shell          | name     | uid  | shell          |
+----------+------+----------------+----------+------+----------------+
| bin      |    1 | /sbin/nologin  | bin      |    1 | /sbin/nologin  |
| adm      |    3 | /sbin/nologin  | adm      |    3 | /sbin/nologin  |
| lp       |    4 | /sbin/nologin  | lp       |    4 | /sbin/nologin  |
| sync     |    5 | /bin/sync      | sync     |    5 | /bin/sync      |
| shutdown |    6 | /sbin/shutdown | shutdown |    6 | /sbin/shutdown |
| halt     |    7 | /sbin/halt     | NULL     | NULL | NULL           |
| mail     |    8 | /sbin/nologin  | NULL     | NULL | NULL           |
| operator |   11 | /sbin/nologin  | NULL     | NULL | NULL           |
+----------+------+----------------+----------+------+----------------+

三、MySQL图形化管理工具,phpmyadmin使用教程

基本没人使用,就不记录了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/595387.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue.js 比较重要知识点总结一

概述 谈一谈你对 Vue.js 的响应式数据的理解Vue3 出现解决了什么问题?它有哪些优势?Vue3 新特性有哪些vue2 和 vue3 的响应式有什么区别? 谈一谈你对 Vue.js 的响应式数据的理解 Vue 2.x 对象类型:通过 object.defineProperty(…

MySQL——初窥门径

前言 六一?作为一个大小孩当然是快快乐乐搞技术啦~在这篇文章中,荔枝会梳理SQL语句的基本语法以及MySQL中的函数、约束。多表关系以及查询、事务和事务隔离级别等内容,大致内容归属于MySQL基础知识,荔枝又弄了一篇万字长文哈哈哈哈…

R:GAM非线性回归曲线拟合与散点密度图绘制

作者:CSDN @ _养乐多_ 本文将介绍使用R语言以及GAM模型,绘制回归曲线和散点密度图。 文章目录 一、R语言脚本二、色带一、R语言脚本 install.packages("ggpointdensity") install.packages("ggplot2") insta

IPD发展史

随着IPD(集成产品开发)在IBM、华为等企业取得了巨大的成功,其他行业也开始在相关新产品研发中初步引入IPD的研发管理理念及模式,对IPD在行业的应用进行初步的探索和研究。 为了更好地应用IPD ,不仅要对它的理念和思想理…

浅谈高等学校能源监控管理体系建设

摘要:现代高校担当着人才培养,社会服务和文化传承与创新的光荣使命。高校低碳节能工作是加快建设“和谐社会”、“绿色校园”的重要举措 。当前高校以“数字化能源监测平台”为重心 ,积极推动能源管理的转型 。该文总结高校能源监管平台建设的…

达梦数据库作业调度及警报配置

目录 作业... 4 创建代理环境... 4 1、命令行创建及删除... 4 2、客户端创建及删除... 4 操作员... 5 1、命令行创建及删除... 5 2、客户端创建及删除... 5 作业... 6 一、命令行... 6 1、命令行创建作业... 6 2、命令行修改作业... 7 3、启动或暂停作业... 7 4、…

MATLAB与深度学习:Neural Network Toolbox和Deep Learning Toolbox的使用和模型设计

章节一:引言 在当今人工智能和深度学习的时代,MATLAB作为一种功能强大的科学计算和数据分析工具,在深度学习领域也发挥着重要作用。本文将重点介绍MATLAB中的两个关键工具:Neural Network Toolbox和Deep Learning Toolbox的使用和…

chatgpt赋能python:Python主页的SEO优化

Python主页的SEO优化 Python是一种简单易学、高效灵活的编程语言。其主页Python.org是全球最受欢迎的编程语言之一的官方网站。但是,即使是最著名的网站也需要进行优化,以便在搜索引擎中排名更高。在本文中,我们将探讨如何通过SEO来改进Pyth…

关系型数据库一些概念性的知识点总结

在当今数据驱动的世界中,信息为王。从客户资料到金融交易,每个组织都依赖数据来做出明智的决策并在竞争中保持领先地位。但随着数据量以前所未有的速度增长,管理和分析所有这些信息很快就会变得不堪重负。这就是关系数据库的用武之地。 关系数…

kafka的基础知识及概念

介绍 kafka在过去几年获得了巨大的普及。在微服务架构中,它起着举足轻重的作用。它使数据能够从一项服务转移到另一项服务。我开始这个系列是为了帮助初学者深入了解 Kafka。但是,在我们深入之前,了解一些基础知识很重要。因此,在…

《智能新工厂规划白皮书》:新工厂发展趋势一览

在经济下行压力、人口红利消失、消费结构升级、疫情冲击等多种因素推动下,传统工厂的寒冬已至,必须要变革才能顺应未来的发展趋势。伴随着5G、工业互联网、AI、工业大数据、工业软件等技术或产品的发展融合,许多企业纷纷规划建设智能新工厂&a…

【Web服务器集群】Nginx网站服务

文章目录 一、Nginx 概述1.什么是 Nginx2.Nginx 的特点3.Nginx 应用场景 二、Nginx 服务基础1.编译安装 Nginx 服务1.1 布置环境1.2 安装依赖包1.3 创建运行用户、组1.4 编译安装 2.Nginx 的运行控制2.1 检查配置文件2.2 启动、停止 Nginx2.3 日志分割以及升级 Nginx 服务2.4 添…

Linux - 第18节 - 网络基础(传输层一)

目录 1.传输层 1.1.再谈端口号 1.2.端口号范围划分 1.3.认识知名端口号 1.4.两个问题 1.5.netstat命令 1.6.pidof命令 2.UDP协议 2.1.UDP协议格式 2.2.UDP协议的特点 2.3.面向数据报 2.4.UDP的缓冲区 2.5.UDP使用注意事项 2.6.基于UDP的应用层协议 3.TCP协议 3…

抖音seo源码开发代码分享

抖音seo优化,抖音seo源码开发,抖音排名系统源码开发展示实例: 思路:抖音seo源码,抖音seo矩阵系统底层框架上支持了从ai视频混剪,视频批量原创产出,云存储批量视频制作,账号矩阵&…

如何制作一个连杆组简易四足机器人

1. 运动功能说明 本文示例将实现R296样机连杆组简易四足机器人前进的功能。 2. 电子硬件 在这个示例中,我们采用了以下硬件,请大家参考: 主控板 Basra主控板(兼容Arduino Uno)‍ 扩展板 Bigfish2.1扩展板‍ 电池7.4V锂…

STM32F105RBT6 -- RCC 系统时钟

1. STM32F105RBT6 系统时钟树 2. 使用外部时钟给系统提供时钟HSE,外接一个8Mhz的晶振 3. 系统在启动的时候就会调用系统初始化函数,配置RCC 时钟系统,在调用main函数之前调用SystemInit函数 startup_stm32f10x_hd.s ; Reset handler Reset_…

电脑重装系统 / 系统迁移

1. 台式机太卡了,在网上买了个固态硬盘:250G, Kingston的,把C盘(系统盘)迁移到固态硬盘上去 2. 下载软件 https://www.diskgenius.cn/download.php3. 使用DiskGenius软件,可以方便地将系统从一…

【MySQL】- 04 MVCC 概要

MVCC 概要 事务概念事务的特性:ACID事务的操作隔离性引发的并发问题事务的隔离级别 LBCC&MVCCLBCC记录锁(Record Locks)间隙锁(GAP Locks)临键锁(Next-Key Locks)总结当前读什么是MVCC?什么…

[QT_055]设置QT源码调试(qtc+vs/mingw+msvc)

在开发过程中,我们经常用到调试功能,这样方便查找Bug;Qt是一个开源的框架,可以看到源码。虽然但大部分情况下,我们开发时,只是使用,并没有调试它的源码,但如果想深入了解Qt的一些机制…

对于创业者而言,租赁传统办公室和共享办公室有何不同

租办公室和创业密切相关。创业公司需要一个专业、高效、协作的工作环境来促进业务的开展,提升团队的工作效率和形象。租办公室可以为创业公司提供必要的场所和资源,方便团队成员之间的交流和合作,同时也可以作为公司的品牌形象和实力展示。此…