MySQL:DQL语句和多表设计

DQL

Data Query Language(数据查询语言)

用来查询数据库中表的记录

查询关键字:SELECT

在业务系统中,查询频次是远高于增删改的.

语法

SELECT
#字段列表(基本查询)
From
#表名列表
WHERE
#条件列表(条件查询)
GROUP BY
#分组字段列表(分组查询)
HAVING
#分组后条件列表
ORDER BY
#排序字段列表(排序查询)
LIMIT
#分页参数(分页查询)

基本查询

select 字段1,字段2,字段3....from 表名;
select * from 表名;
select 字段1 [as 别名1],字段2 [as 别名2].....from 表名;
select 字段1[别名1],字段2[别名2]..from 表名;
#设置表名和通过表名查询
select distinct 字段列表 from 表名;
#去重

条件查询

select 字段列表 from 表名 where 条件列表;
between...and..#在某个范围内(左闭右闭)
in(....)#在in之中
like#模糊匹配(_匹配单个字符,%匹配多个字符)
is NULL#为空

排序查询

select 字段列表 from 表名 order by字段1 排序方式1,字段2 排序方式2;
ASC:升序(默认)
DESC:降序
#可以使用convert(字段名 using 编码)的方式对中文进行排序 

分页查询

select 字段列表 from 表名 limit 起始索引,查询记录数;
limit 0,10#查询第一页,每页展示10条
limit 10,10#查询第二页,每页展示10条
#(分页查询)->起始索引=(查询页码-1)*每页显示记录数
#起始索引即为偏移量,相当于不展示之前的偏移量条数据

聚合函数

将一列数据作为一个整体,进行纵向计算
count#统计数量
max#最大值
min#最小值
avg#平均值
sum#求和
select 聚合函数(字段列表) as 别名 from 表名;

null值不参与聚合函数运算

分组查询

select 字段列表 from 表名 [where条件] group by 分组字段名[having 过滤条件]
select gender ,count(*) from tab group by gender;
#按照性别分组,分组后分别对男女员工进行统计

group by

一般和聚合函数一起使用

eg:找出每个岗位的最高薪资

先找出岗位

select job from tab;

再找出最高薪资

max(sal)

最后按照岗位分组(每个不同岗位的最高薪资)

select job,max(sal) from emp group by job;

注:多个字段一起分组,优先按照第一个字段分组,如果第一个字段相同,按第二个字段分组.

where 和 having区别

1,执行时机不同:where 在分组前过滤,不满足where条件的不会参与分组,having是分组后对结果进行过滤.

执行顺序:where>聚合函数>having

2,判断条件不同:where不能对聚合函数进行判断,但having可以

数据转换函数

if(gender = 1 ? '男' , '女')
#类似三元运算符,表达式成立值转换为男,表达式不成立转换为女
case 字段名when 条件1then 结果1when 条件2then 结果2....else 结果defaultend,
#类似switch,满足哪个条件就会转换为哪个结果.

多表设计

多表查询

一对多表设计

子表的多条数据对应主表的一条数据

在数据库表中多的一方(子表)关联另一方(主表)的主键

通过外键约束来进行关联,保证数据的一致性和完整性

foreign key
#建表时指定外键
create table 表名{[constraint] [外键名称] foreign key(外键字段名) references 主表(主表字段名)
}
#修改时添加外键
alter table 表名 add constraint 外键名称 foreign key(外键字段名) references 主表(主表字段名);

外键名字一般为主表名_主键名

添加外键后,主表数据无法被直接删除

(容易引发死锁,降低效率,不推荐)

建议在逻辑中直接解决外键关联而非在数据库中使用外键解决

一对一表设计

在一张表中加入外键关联另一方的主键,设置外键为UNIQUE.

多用于单表拆分,提升操作效率(减少数据携带)

多对多表设计

建立第三张中间表存放外键,分别关联两边的主键.

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

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

相关文章

C# 程序启动另外一个exe的时候传参数

C# 程序启动另外一个exe的时候传参数 一、传递一个参数 using System.Diagnostics;public void StartAnotherProcessWithArguments() {// 创建ProcessStartInfo实例ProcessStartInfo startInfo new ProcessStartInfo();// 设置要执行的程序路径startInfo.FileName "C:…

VS code 同步odata服务

在做UI5得开发过程中,经常会出现odata需要更新 那么已经加载过得项目如何去跟新odata服务呢 可以通过如下步骤 1.右键打开应用信息 2.找到manage service models 3.点击编辑 4.选中 刷新并保存

《STM32 HAL库》中断相关函数详尽解析——NVIC

观前提醒:本文以外部中断点灯为例,分析了HAL库中中断服务相关函数的使用及相互关联、底层原理 一、实例实现 实例简介:主函数控制LED2进行闪烁,中断控制LED0开关 我们先使用CubeMX创建项目文件: 1、在System Core中配…

逃逸分析学习

逃逸分析:一种确定指针动态范围的静态分析,它可以分析程序在哪些地方访问到指针。 场景一: ​ 对象被复制给成员变量或静态变量,可能被外部使用,此时变量就发生了逃逸。 场景二: ​ 对象通过return语句…

XY_RE复现(五)

一&#xff0c;给阿姨倒一杯卡布奇诺 是一道魔改TEA加密 给出了一些初始化&#xff0c;然后输入的flag拆分&#xff0c;两两一组&#xff0c;通过for循环放入encrypt加密函数 #include <stdio.h> #define uint32_t unsigned intvoid decrypt(uint32_t *v, uint32_t *ke…

【STM32F407+CUBEMX+FreeRTOS+lwIP netconn UDP TCP记录】

STM32F407CUBEMXFreeRTOSlwIP netconn UDP TCP记录 注意UDPUDP1UDP2 TCPTCP clientTCP server图片 注意 1、超时 #include “lwipopts.h” #define LWIP_SO_RCVTIMEO 12、先保证能ping通 3、关于工程创建可参考 【STM32F407CUBEMXFreeRTOSlwIP之UDP记录】 4、…

数据仓库Data Warehouse

数据仓库Data Warehouse 数仓是一种思想,数仓是一种规范,数仓是一种解决方案 1. 数据处理方式 数据处理大致可以分成两大类: 联机事务处理OLTP(on-line transaction processing)联机分析处理OLAP(On-Line Analytical Processing)1.1. OLTP OLTP的全称是On-line Transa…

【C++】详解string类

目录 简介 框架 构造 全缺省构造函数 ​编辑 传对象构造函数 拷贝构造 析构函数 容量 size() capacity&#xff08;&#xff09; empty() clear() reserve() ​编辑 resize() 遍历 检引用符号"[ ]"的重载 迭代器 begin() end() rbegin() rend(…

使用Mybatis映射时间 DateTime ==> LocalDateTime

首先查看&#xff0c;数据库字段&#xff1a; 书写映射实体类对象VO&#xff1a; Data public class OrderListVO implements Serializable {private Integer orderId;private String memberName;private String orderNumber;private BigDecimal orderPrice;private String l…

在单细胞分辨率下预测细胞对新型药物扰动的反应

scRNA-seq能够在单个细胞分辨率下研究细胞异质性对扰动的响应。然而&#xff0c;由于技术限制&#xff0c;扩大高通量筛选&#xff08;HTSs&#xff0c;highthroughput screens&#xff09;来测量许多药物的细胞反应仍然是一个挑战。因此&#xff0c;目前依然需要借助常规的bul…

excel表格在筛选状态下,怎样从指定数字开始填充序列?

分两种情况分开来说吧&#xff1a; 一、表格根据需要做数据筛选&#xff0c;指定列的序号始终保持0012开始的连续序号。 B2TEXT(AGGREGATE(3,5,B$1:B1)11,"0000") 然后向下填充公式。 当C列数据做了筛选以后&#xff0c;B列仍旧保持连续的序号&#xff0c;改变筛选…

MySQL连表查询

MySQL简介&#xff0c;我们为什么要学习各种join MySQL是SQL的一种&#xff0c;SQL意为结构化查询语言(Structure Query Language)&#xff0c;MySQL可以应用于现实世界的各种结构化数据。 SQL&#xff08;结构化查询语言&#xff09;&#xff0c;处理结构化数据的查询语言&a…

房产中介小程序高效开发攻略:从模板到上线一站式服务

对于房产中介而言&#xff0c;拥有一个高效且用户友好的小程序是提升业务、增强客户黏性的关键。而采用直接复制模板的开发方式&#xff0c;无疑是实现这一目标的最佳途径&#xff0c;不仅简单快捷&#xff0c;而且性价比极高。 在众多小程序模板开发平台中&#xff0c;乔拓云网…

Mysql MVVC

Mysql MVVC MVVC就是用管理快照实现多版本并发控制吗&#xff0c;保证了数据库的隔离性。 读已提交 如何保证数据的隔离型 当我们开始一个事物的时候我们就会创建一个快照&#xff0c; 每一个快照都有一个时间戳作为标记&#xff0c;如果我们已经修改了数据但是还没有提交那…

Java项目:基于SSM框架实现的高校专业信息管理系统设计与实现(ssm+B/S架构+源码+数据库+毕业论文+PPT+开题报告)

一、项目简介 本项目是一套基于SSM框架实现的高校专业信息管理系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单、…

前端vite+rollup前端监控初始化——封装基础fmp消耗时间的npm包并且发布npm beta版本

文章目录 ⭐前言&#x1f496;vue3系列文章 ⭐初始化npm项目&#x1f496;type为module&#x1f496;rollup.config.js ⭐封装fmp耗时计算的class&#x1f496;npm build打包class对象 ⭐发布npm的beta版本&#x1f496; npm发布beta版本 ⭐安装web-performance-tool的beta版本…

5G前传光纤传输的25G光模块晶振SG2016CAN

一款适用于5G前传光纤传输网络中的25G光模块的5G晶振SG2016CAN。随着5G时代的到来&#xff0c;5G晶振的重要性也不言而喻&#xff0c;小体积宽温晶振SG2016CAN可以用于5G前传的25G光模块&#xff0c;具有高稳定性、小体积、宽温等优势。在5G前传光纤传输网络中&#xff0c;25G光…

Mac 上安装多版本的 JDK 且实现 自由切换

背景 当前电脑上已经安装了 jdk8; 现在再安装 jdk17。 期望 完成 jdk17 的安装&#xff0c;并且完成 环境变量 的配置&#xff0c;实现自由切换。 前置补充知识 jdk 的安装路径 可以通过查看以下目录中的内容&#xff0c;确认当前已经安装的 jdk 版本。 cd /Library/Java/Java…

【大前端】ECharts 绘制立体柱状图

立体柱状图分为&#xff1a; 纯色立体柱状图渐变立体柱状图 常用实现方式 纯色立体柱状图 纯色立体柱状图&#xff0c;使用MarkPoint和颜色渐变就实现&#xff0c;如下代码 import * as echarts from "echarts";var chartDom document.getElementById("main&…

AI大模型探索之路-训练篇9:大语言模型Transformer库-Pipeline组件实践

系列篇章&#x1f4a5; AI大模型探索之路-训练篇1&#xff1a;大语言模型微调基础认知 AI大模型探索之路-训练篇2&#xff1a;大语言模型预训练基础认知 AI大模型探索之路-训练篇3&#xff1a;大语言模型全景解读 AI大模型探索之路-训练篇4&#xff1a;大语言模型训练数据集概…