【数据库开发】DQL操作和多表设计
数据库开发
一、数据库操作-DQL
1.概述
用来查询数据库表中的记录,查询操作分为两部分,单表操作和多表操作,针对于查询而言(相较于增删改更加的灵活)基于目标分析条件转换为SQL语句
2.语法
SELECT 字段列表
FROM表名列表
WHERE条件列表
GROUP BY分组字段列表
HAVING分组后条件列表
ORDER BY排序字段列表
LIMIT分页参数
3.基本查询(不带任何条件查询)
-
查询多个字段
select 字段1,字段2,字段3 from 表名;
-
查询所有字段
select * from 表名;
-
设置别名
select 字段1 [as 别名1],字段2 [as 别名2] from 表名;
-
去除重复记录
select distinct 字段列表 from 表名;
4.条件查询
条件列表:可以有多个条件
select 字段列表 from 表名 where 条件列表;
SQL语句中构建条件的运算符有两类:比较运算符和逻辑运算符
比较运算符中特殊的
比较运算符 | 功能 |
---|---|
<>或!= | 不等于 |
in(…) | 在in范围之内的值,多选一 |
like 占位符 | 模糊匹配(_匹配单个字符,%匹配人任意个字符) |
is null | 是null |
常用的逻辑运算符
逻辑运算符 | 功能 |
---|---|
and或&& | 并且(多个条件同时成立) |
or或|| | 或者(多个条件任意一个成立) |
not或! | 非,不是 |
5.聚合函数
之前的查询都是横向查询,根据条件一行一行进行判断,而使用聚合函数查询是纵向查询,它是对一列的值进行计算,返回一个结果值(将一列数据作为一个整体,进行纵向计算)
语法:
select 聚合函数(字段列表) from 表名;
聚合函数会忽略空值,对null值不作为统计
常用聚合函数:
函数 | 功能 |
---|---|
count | 统计数量 |
max | 最大值 |
min | 最小值 |
avg | 平均值 |
sum | 求和 |
sum聚合函数计算指定列的数值和时,如果不是数值类型,那么计算结果为0
案例:统计该企业最早入职的员工
select min(entrydate) from tb_emp;
6.分组查询
分组查询是按照某一列或者某几列,把相同的数据进行合并输出,分组查询通常会使用聚合函数进行计算
语法:
select 字段列表 from 表名 [wehere 条件] group by 分组字段 [having 分组后过滤条件];
案例:根据性别分组 , 统计男性和女性员工的数量
select gender, count(*) from tb_emp group by gender;
7.排序查询
排序查询分为升序排序和降序排序
语法:
select 字段列表 from 表名 [where 条件列表] [group by 分组字段] order by 字段1 排序方式1,字段2,排序方式2...;
排序方式:
- ASC:升序(默认值)
- DESC:降序
案例:查询所有男生违纪扣分分数的数据(降序排列)如果分数相同按照扣分次数继续降序排列
SELECT * FROM tb_students WHERE gender = '男' ORDER BY break_law_score DESC,break_law_count DESC;
8.分页查询
语法:
select 字段列表 from 表名 limit 起始索引,查询记录数;
起始索引:从0开始
查询记录数:基于起始索引查询的条数
前台传递到后台只有两个数据(要查询第几页)(每页查询多少条)要基于公式进行换算
公式:起始索引=(要查询的页数-1)*每页显示的条数
案例:查询tb_students 查询第3页 每页展示2条
SELECT * FROM tb_students LIMIT 4 , 2;
二、多表设计
在实际开发中,由于业务之间相互关联,所以各个表结构之间存在着各种联系,分为三种:一对多(多对一)、多对多和一对一
-
一对多(多对一)
问题分析:两张表(员工表、部门表),如果删除部门表中的一个部门,那么在这个部门的员工应该也被删除,在数据库层面并未建立关联,造成部门表不存在而在该部门的员工仍然存在,所以无法保证数据的一致性
问题解决:通过数据库中外键约束来解决
外键约束:让两张表数据建立连接,保证数据的一致性和完整性
关键字:foreign key
语法:
-- 创建表时指定
create table 表名(字段名 数据类型, ...[constraint] [外键名称] foreign key(外键字段名) references 主表(主表列名));
-- 建完表后,添加外键
alter table 表名 add constraint 外键名称 foreign key (外键字段名) references 主表(主表列名)
-
一对一
一对一关系表通常用来做单表的拆分,将一张大表拆分成两张小表,将大表中的一些基础字段放在一张表中,将其他的字段放在另一张表中,以此来提高数据的操作效率
应用场景:用户表(基本信息+身份信息)
基本信息:用户ID额,姓名、性别、手机号、学历
身份信息:民族、生日、身份证号、身份签发机关、身份证的有效时间
一对一添加外键:在任意一方添加外键,关联另一方的主键,并且设置外键唯一(UNIQUE)
-
多对多
学生与课程的关系属于多对多,一个学生可以选修多门课程,一门课程也可以供多个学生选择
实现关系:建立第三张中间表,中间表至少包含两个外键,分别关联两方主键
相关文章:
【数据库开发】DQL操作和多表设计
数据库开发 一、数据库操作-DQL 1.概述 用来查询数据库表中的记录,查询操作分为两部分,单表操作和多表操作,针对于查询而言(相较于增删改更加的灵活)基于目标分析条件转换为SQL语句 2.语法 SELECT 字段列表 FROM表…...

用PyTorch轻松实现二分类:逻辑回归入门
💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…...

[nltk_data] Error loading stopwords: <urlopen error [WinError 10054]
报错提示: >>> import nltk >>> nltk.download(stopwords) 按照提示执行后 [nltk_data] Error loading stopwords: <urlopen error [WinError 10054] 找到路径C:\\Users\\EDY\\nltk_data,如果没有nltk_data文件夹,在…...

基于Spring Boot的网上租贸系统设计与实现(源码+lw+部署文档+讲解等)
文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…...

通过IP地址管理提升企业网络安全防御
在今天的数字时代,企业面临着越来越多的网络安全威胁。这些威胁可能来自各种来源,包括恶意软件、网络攻击和数据泄露。为了提高网络安全防御,企业需要采取一系列措施,其中IP地址管理是一个重要的方面 1. IP地址的基础知识 首先&a…...

termius mac版无需登录注册直接永久使用
1. 下载地址:termius下载 2. 解压安装 3. 当出现 “termius”已损坏,无法打开 则输入以下命令即可:sudo xattr -r -d com.apple.quarantine /Applications/Termius.app 最后去 系统设置-> 隐私与安全性-> 仍要打开 4. 删除app-update.yml文件&…...

TPU编程竞赛|Stable Diffusion大模型巅峰对决,第五届全球校园人工智能算法精英赛正式启动!
目录 赛题介绍 赛题背景 赛题任务 赛程安排 评分机制 奖项设置 近日,2023第五届全球校园人工智能算法精英赛正式开启报名。作为赛题合作方,算丰承办了“算法专项赛”赛道,提供赛题「面向Stable Diffusion的图像提示语优化」,…...
微信小程序 rpx 转 px
前言 略 rpx 转 px let query wx.createSelectorQuery(); query.selectViewport().boundingClientRect(function(res){let rpx2Px 1 * (res.width/750);console.log("1rpx " rpx2Px "px"); }); query.exec();参考 https://blog.csdn.net/qq_39702…...

机器学习之旅-从Python 开始
导读你想知道如何开始机器学习吗?在这篇文章中,我将简要概括一下使用 Python 来开始机器学习的一些步骤。Python 是一门流行的开源程序设计语言,也是在人工智能及其它相关科学领域中最常用的语言之一。机器学习简称 ML,是人工智能…...
100天精通Python(可视化篇)——第103天:Pyecharts绘制多种炫酷水球图参数说明+代码实战
文章目录 专栏导读一、水球图介绍1. 水球图是什么?2. 水球图的应用场景二、水球图类配置选项1. 导包2. Liquid类3. add函数三、水球图实战1. 基础水球图2. 矩形水球图3. 圆棱角矩形水球图4. 三角形水球图5. 菱形水球图6. 箭头型水球图7. 修改数据精度8. 设置无边框9. 多个并排…...

好用的文件备份软件推荐!
为什么需要文件备份软件? 在我们使用计算机的日常工作生活中,可能会遇到各种不同类型的文件,例如文档、Word文档、Excel表格、PPT演示文稿、图片等,这些数据中可能有些对我们来说很重要,但是可能会因为一些意外状况…...

1130 - Host ‘192.168.10.10‘ is not allowed to connect to this MysOL server
mysql 远程登录报错误信息:1130 - Host 124.114.155.70 is not allowed to connect to this MysOL server //需要在mysql 数据库目录下修改 use mysql; //更改用户的登录主机为所有主机,%代表所有主机 update user set host% where userroot; //刷新权…...

如何实现 Es 全文检索、高亮文本略缩处理
如何实现 Es 全文检索、高亮文本略缩处理 前言技术选型JAVA 常用语法说明全文检索开发高亮开发Es Map 转对象使用核心代码 Trans 接口(支持父类属性的复杂映射)Trans 接口的不足真实项目落地效果 前言 最近手上在做 Es 全文检索的需求,类似于…...

Netty(四)NIO-优化与源码
Netty优化与源码 1. 优化 1.1 扩展序列化算法 序列化,反序列化主要用于消息正文的转换。 序列化:将java对象转为要传输对象(byte[]或json,最终都是byte[]) 反序列化:将正文还原成java对象。 //java自带的序列化 // 反序列化 b…...

我的创业之路:我为什么选择 Angular 作为前端的开发框架?
我是一名后端开发人员,在上班时我的主要精力集中在搜索和推荐系统的开发和设计工作上,我比较熟悉的语言包括java、golang和python。对于前端技术中typescript、dom、webpack等流行的框架和工具也懂一些。目前,已成为一名自由职业者࿰…...

阿里云服务器ECS是什么?云服务器详细介绍
阿里云服务器ECS英文全程Elastic Compute Service,云服务器ECS是一种安全可靠、弹性可伸缩的云计算服务,阿里云提供多种云服务器ECS实例规格,如经济型e实例、通用算力型u1、ECS计算型c7、通用型g7、GPU实例等,阿里云服务器网分享阿…...

深入了解快速排序:原理、性能分析与 Java 实现
快速排序(Quick Sort)是一种经典的、高效的排序算法,被广泛应用于计算机科学和软件开发领域。本文将深入探讨快速排序的工作原理、步骤以及其在不同情况下的性能表现。 什么是快速排序? 快速排序是一种基于分治策略的排序算法&am…...
[晕事]今天做了件晕事22;寻找99-sysctl.conf; systemd
这个文件,使用ls命令看不出来是一个链接。 然后满世界的找这个文件怎么来的,后来发现是systemd里的一个文件。 从systemd的源文件里也没找到相关的文件信息。 最后把这个rpm安装包下载下来,才找到这个文件原来是一个链接 #ll /etc/sysctl.d/9…...
2578. 最小和分割
给你一个正整数 num ,请你将它分割成两个非负整数 num1 和 num2 ,满足: num1 和 num2 直接连起来,得到 num 各数位的一个排列。 换句话说,num1 和 num2 中所有数字出现的次数之和等于 num 中所有数字出现的次数。num1…...

Mybatis mapper报错:Class not found: org.jboss.vfs.VFS
报错 Logging initialized using class org.apache.ibatis.logging.stdout.StdOutImpl adapter. Class not found: org.jboss.vfs.VFS JBoss 6 VFS API is not available in this environment. Class not found: org.jboss.vfs.VirtualFile VFS implementation org.apache.iba…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...

基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...

关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...