sql中表和表之间基础的关系以及,多种连接查询和select的字句

news2024/9/25 19:18:57

1,表与表之间的关系

  一对一   网上购买商品 一个订单是不是只能有一个地址
  一对多   一个老师 可以教多个学生 但是 一个学生一个科目只能对应一个老师
  多对多   一个学生在学校可以选修多门课程  一门课程可以被多个学生选择

数据准备

CREATE table h_employee(
`eid` int PRIMARY KEY auto_increment,
`name` VARCHAR(50) not null,
`sex` enum('男','女','保密'),
`dep_id` int
);

INSERT INTO h_employee VALUES (null,'张三1','男',1);
INSERT INTO h_employee VALUES (null,'张三2','男',1);
INSERT INTO h_employee VALUES (null,'张三3','女',5);
INSERT INTO h_employee VALUES (null,'张三4','男',3);
INSERT INTO h_employee VALUES (null,'张三5','男',3);
INSERT INTO h_employee VALUES (null,'张三6','男',4);
INSERT INTO h_employee VALUES (null,'张三7','男',2);
INSERT INTO h_employee VALUES (null,'张三8','男',2);
INSERT INTO h_employee VALUES (null,'张三9','男',3);
INSERT INTO h_employee VALUES (null,'张三10','男',1);
INSERT INTO h_employee VALUES (null,'张三11','女',5);
INSERT INTO h_employee VALUES (null,'张三12','男',null);

CREATE table h_department(
`did` int PRIMARY KEY auto_increment,
`dname` VARCHAR(50) not null
);

INSERT into h_department VALUES (null,'前端');
INSERT into h_department VALUES (null,'后台');
INSERT into h_department VALUES (null,'测试');
INSERT into h_department VALUES (null,'运维');
INSERT into h_department VALUES (null,'项目经理');
INSERT into h_department VALUES (null,'CEO');

2,连接查询

全连接(效率最低 最好不要用)

可以适当限制条件来减少查询重复的值,这里不做演示(因为查询效率最低工作基本不用)

-- SELECT 列名 from 左表 [连接方式] JOIN 右表 [on 连接条件]
-- 12 * 6 = 72
-- 全连接 笛卡尔乘积 (没有连接条件 开发不能用)
SELECT * from h_employee CROSS JOIN h_department;

左外连接(查询效率最高)

特点保留左表的全部数据,右表选出符合条件的值,如果值为空用null来填充

-- 左外连接
SELECT * from h_employee LEFT JOIN h_department on dep_id = did 

SELECT * from h_employee LEFT JOIN h_department on dep_id = did 
WHERE dep_id is null

 

右外连接

特点保留右表的全部数据,左表选出符合条件的值,如果值为空用null来填充

-- 右外连接

SELECT * from h_employee RIGHT JOIN h_department on dep_id = did;


SELECT * from h_employee RIGHT JOIN h_department on dep_id = did
WHERE dep_id is null


全连接(注意mysql数据库中不支持但是可以依靠union来达到实现全连接的效果)

-- mysql 不支持  其他的数据库语言支持

-- 数据合并 union

SELECT * from h_employee LEFT JOIN h_department on dep_id = did 
union
SELECT * from h_employee RIGHT JOIN h_department on dep_id = did;



SELECT * from h_employee LEFT JOIN h_department on dep_id = did 
WHERE dep_id is null
union  -- and
SELECT * from h_employee RIGHT JOIN h_department on dep_id = did
WHERE dep_id is null;

3,select的七大字句

1,from:从什么表中筛选

2,,on:多表联查条件限制

3,where:从表中筛选条件

4,group by:通常用与聚合函数的分组查询,作用是根据什么来分组

5,having:在统计结果上再次筛选

6,order by:排序

7,limit:分页

1-3太常用了不做演示

根据年龄分组

SELECT sex,COUNT(eid) from h_employee GROUP BY sex;
SELECT sex '性别',CONCAT(COUNT(eid),'个') as '个数'
FROM h_employee 
GROUP BY sex;

having 过滤后

SELECT  sex '性别',COUNT(eid)as '个数'
FROM h_employee 
-- where eid is not null
GROUP BY sex
HAVING sex='男'

order by排序根据部门id排序
 

-- ORDER by 排序
-- desc 倒序   asc 正序
SELECT *
FROM h_employee ORDER BY dep_id asc

limit分页

注意一点分页后面的二个参数,第一个是起始位置,第二个查几个

SELECT * from h_employee LIMIT 0,4;
SELECT * from h_employee LIMIT 4,4;
SELECT * from h_employee LIMIT 8,4;
SELECT * from h_employee LIMIT 12,4;

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

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

相关文章

WeNet 2.0:更高效的端到端语音识别工具包

WeNet 2.0:更高效的端到端语音识别工具包 原文链接:[2203.15455] WeNet 2.0: More Productive End-to-End Speech Recognition Toolkit (arxiv.org) 1.摘要 WeNet是一个开源的端到端语音识别工具包,WeNet 2.0在此基础上进行了四项主要更新&#xff0c…

简明 | Yolo-v3结构理解摘要

简明 | ResNet特点、残差模块、残差映射理解摘要 目录 整体结构 DBL Res-n Res-unit concat 上采样 整体结构 网络主要包括两部分,一个部分是主干网络Darknet-53,一个部分使用特征金字塔(FPN)融合、加强特征提取并利用卷积进行预测。 DBL DBL&am…

从人工巡检到智能监管:视频AI智能监管技术驱动风电场智慧化发展

一、背景分析 随着全球对可再生能源需求的持续增长,风电作为清洁、可再生的能源形式,其重要性日益凸显。然而,风电场通常分布在偏远地区,面积广阔,环境复杂多变,这给风电场的运维管理带来了巨大挑战。为了…

CleanMyMac可以一键清理电脑,让Mac系统运行得更加流畅。有关CleanMyMac可以删除Mac重复的文件吗?苹果电脑怎么快速找到重复文件的问题?

一、CleanMyMac可以删除Mac重复的文件吗 作为一款专业级的苹果电脑清理软件,CleanMyMac具备多项深度清理和系统维护工具。软件拥有强大的文件管理系统,可以利用“空间透镜”等工具,筛选出相同体积、名称的文件。 图1:用CleanMyMa…

计算机网络408考研 2019

计算机网络408考研2019年真题解析_哔哩哔哩_bilibili 2019 1 1 1 1

麦田物语第二十天

系列文章目录 麦田物语第二十天 文章目录 系列文章目录一、构建地图信息系统二、生成地图数据 一、构建地图信息系统 我们上一节课已经做好了鼠标的显示,这节课需要构建地图的一些信息,例如:可挖坑,可丢弃物品等地区。我们点击地…

Altium designer学习笔记02 - 原理图库的创建与绘制

原理图库的创建与绘制 1. 元件符号的概述2. 单部件元件符号的绘制-实例电容3.子件原件符号的创建绘制(示例 放大器)4.已存在原理图直接生成元件库5.元件库的拷贝6.元件的检查与报告 1. 元件符号的概述 元件符号是元件在原理图上的表现形式,主…

Java语言程序设计——篇十二

🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿 欢迎大家:这里是我的学习笔记、总结知识的地方,喜欢的话请三连,有问题可以私信🌳🌳&…

winform chart标记

下图为某个点的值大于25即标记为白色。 代码: // 设置曲线的样式Series series chart1.Series[1];// 画样条曲线(Spline) 散点图Pointseries.ChartType SeriesChartType.Spline;// 线宽2个像素series.BorderWidth 2;// 线的颜色&…

K8S Helm

简述 Helm 是 Kubernetes 的开源包管理器。它提供了提供、共享和使用为 Kubernetes 构建的软件的能力。它允许开发者定义、‌打包、‌发布和管理Kubernetes应用资源,‌类似于Linux下的apt或yum包管理器。‌Helm3的架构主要包括Helm客户端、‌Chart仓库以及Kubernet…

程序员窃喜!卡了大模型脖子的Json输出,OpenAI终于做到了100%正确

OpenAI上次提到JSON模式的概念,还是在去年的DevDay上。那是ChatGPT第一次拥抱JSON模式。 但这个功能可以说是饱受诟病。 经常遇到模型不遵循指令,不按照你想要的格式输出,即使在 prompt 中明确说了要按照指定格式(比如Json、XML&…

【Java】字符/字符串转整数 常用的三个方法

前言: 做Oj题时,偶尔需要用到,久了不用,用到就得查一下,遂总结一篇用法,加深记忆。 目录 方法1:使用字符的ASCII值(字符) 方法2:使用Character.getNumeri…

【GCC】结合GPT4 延迟梯度学习1:公式推导及理论分析

大神的分析 本文主要借鉴。【TWCC 】基于gpt和python简化分析webrtc拥塞控制论文: Analysis and Design of the Google Congestion Contro for Web Real-time Communication (WebRTC)感觉应该学习好理论后再进行python 分析:【gcc】基于gpt和python的流程和延迟梯度分析另外:…

html+css+js前端作业qq音乐官网5个页面 带js

htmlcssjs前端作业qq音乐官网5个页面 带js 有轮播图,tab切换等多种效果 网页作品代码简单,可使用任意HTML编辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编…

Flink 实时数仓(九)【DWS 层搭建(三)交易域汇总表创建】

前言 今天立秋,任务是完成 DWS 剩余的表,不知道今天能不能做完,欲速则不达,学不完就明天继续,尽量搞懂每一个需求; 1、交易域下单各窗口汇总表 任务:从 Kafka 订单明细主题读取数据&#xff0…

【Linux-WMware Tools安装失败“segmentation fault”解决方法】

VMware版本:17 Ubuntu版本: 22.04 安装常规办法,通过vmware安装Tool,安装显示报错:“segmentation fault”,查了下可能是tool和ubuntu版本不兼容导致的。解决办法:通过命令行逐次安装。 1、sudo apt insta…

PostgreSQL(二十五)PG_FDW的使用

目录 一、FDW的简介与特性 二、pg_fdw的部署与使用 1、编译postgres_fdw 2、添加postgres_fdw 3、创建FDW服务器 ​4、授权并创建用户映射 5、客户端创建FDW测试表 6、访问外部表 ​7、可能出现的问题 三、FDW的执行原理 1、PG-PG访问过程描述 2、PG-PG访问过程查看…

一部分优化算法

一、优化问题 1、优化目标 (1)优化和深度学习的目标是根本不同的。前者主要关注的是最小化目标,后者则关注在给定有限数据量的情况下寻找合适的模型。 (2)优化算法的目标函数通常是基于训练数据集的损失函数&#x…

springboot 定义类导入爆红,@Autowried自动注入失败

springboot 定义类导入爆红,Autowried自动注入失败 根据提供的异常信息,分析如下: 异常起因:UnsatisfiedDependencyException 表示在创建名为 ‘a1001Service’ 的 bean 时存在依赖问题,具体是在字段 ‘a1001Mapper’ …

算法日记day 32(贪心之划分字母区间|合并区间|单调递增的数字|监控二叉树)

一、划分字母区间 题目: 给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。 注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。 返回一个表示每…