范式 事务 多表查询

news2025/1/12 18:09:18

范式

概念:设计数据库时,需要遵循的一些规范。要遵循后边的范式要求,必须遵循前边的所有范式要求

第一范式:

数据库表的每一列都是不可分割的基本数据项

这样子就不满足第一范式

这样子就满足第一范式

存在问题:

数据重复十分严重:姓名 系主任 系名

数据添加存在问题:添加新开设的系名和系主任时,数据不合法

数据删除存在问题:张无忌同学毕业了,删除数据时,会将系的数据一起删除掉

第二范式:

在1NF的基础上,非码属性必须完全依赖于码(在1NF基础上消除非主属性对主码的部分函数依赖)

函数依赖

1.函数依赖︰A-->B,如果通过A属性(属性组)的值,可以确定唯一B属性的值。则称B依赖于A

例如:学号-->姓名。(学号,课程名称)-->分数

 

2.完全函数依赖∶A-->B,如果A是一个属性组,则B属性值得确定需要依赖于A属性组中所有的属性值。

例如∶(学号,课程名称)-->分数

 

3,部分函数依赖∶A-->B,如果A是一个属性组,则B属性值得确定只需要依赖于A属性组中某一些值即可。

例如:(学号,课程名称)-- >姓名

 

4.传递函数依赖:A-->B,B -- >c .如果通过A属性(属性组)的值,可以确定唯一B属性的值,在通过B属性属性组)的值可以确定唯一C属性的值,则称c传递函数依赖于A

例如:学号-->系名,系名-->系主任

 

5,码:如果在一张表中,一个属性或属性组,被其他所有属性所完全依赖,则称这个属性(属性组)为该表的码

例如:该表中码为:(学号,课程名称)

*主属性:码属性组中的所有属性

*非主属性:除过码属性组的属性

满足第二范式,需要消除部份依赖,就要把姓名 系名 系主任 拿出来

清除重复数据就可以满足第二范式

第二范式解决了数据重复十分严重的问题

 

第三范式:

在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)

在学生表有学号-->系名-->系主任 的传递依赖,那么就把系主任拿出来,消除传递依赖

 

解决了数据的删除问题和添加问题

事务

概念:如果一个包含多个步骤的业务操作,被事务管理,那么这次操作要么同时成功,要么同时失败

事务的四大特征:

1.原子性:是不可分割的最小操作单位,要么同时成功,要么同时失败

2.持久性:当事务提交或回滚后,数据库会持久化的保存数据

3.隔离性:多个事务之间相互独立

4.一致性:事务操作前后,数据总量不变

eg:比如转账

张三给李四转账500

事务开启(start transaction---剩下的语句一起成功

张三余额大于500

假如这一步出错了

回滚事务(rollback---回到开启事务的时候

张三-500

李四+500

到这里成功了

提交事务(commit---数据库改变

 

事务开启需要选中我们要进行的语句

事务回滚只需要一条就ok

事务提交也是一条就ok

MySQL默认自动提交事务

自动提交:

  • mysql就是自动提交的
  • 一条dml语句会自动提交一次事务

手动提交:

  • oracle数据库默认是手动提交事务
  • 需要先开启事务再提交

修改默认提交方式:

查看:select @@autocommit;---- 1表示自动提交 0表示手动提交

修改:set @@autocommit = 0;

多表查询

内连接查询

1.确定从那些表中查询数据

2.条件是什么

3.查询那些字段

隐式内连接:(由where条件限定出来)

Select

表名.列名(你想显示出来的列)

表名.*(就是表的所有)

From

Emp…(列名)(你想那几个表emp t1 就是给emp起别名)

Where

条件

显式内连接:

语法:select 字段列表(列名 *就表示全出来) from 表名1 inner  join 表名2 on 条件(加入的条件)

eg:(inner为可写可不写的操作)

外连接查询

左外连接:

*语法: select 字段列表 from 表1 left [outer] join 表2 on 条件

就是查左表的所有信息和右表与其交集的部分

左表就是左边那个表1 右表就是表2

eg:左表

右表

然后左外连接:

右外连接:

*语法: select 字段列表 from 表1 right [outer] join 表2 on 条件

就是查右表的所有信息和左表与其交集的部分

左表就是左边那个表1 右表就是表2

右外连接:

子查询

就是一条查询语句里面嵌套另一条查询语句

嵌套的那一条语句为子查询

查询中嵌套查询 称嵌套查询为子查询

子查询的不同情况(就是把语句给利用运算符给合一起去)

1.子查询的结果是单行单列的:

*子查询可以作为条件,使用运算符去判断

eg:

2.子查询的结果是多行单列的:

3.子查询的结果是多行多列的:

子查询可以作为一张虚拟表来进行查询

题目

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

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

相关文章

【真题解析】系统集成项目管理工程师 2022 年下半年真题卷(案例分析)

本文为系统集成项目管理工程师考试(软考) 2022 年下半年真题(全国卷),包含答案与详细解析。考试共分为两科,成绩均 ≥45 即可通过考试: 综合知识(选择题 75 道,75分)案例分析&#x…

搭建微服务架构、实现服务调用

OpenFeign:Spring Cloud声明式服务调用组件 OpenFeign 全称 Spring Cloud OpenFeign,它是 Spring 官方推出的一种声明式服务调用与负载均衡组件,它的出现就是为了替代进入停更维护状态的 Feign。 OpenFeign 常用注解 使用 OpenFegin 进行远…

Java中线程共享变量的可见性问题

在Java中,线程是一种重要的并发编程机制。线程允许程序同时执行多个任务,提高了程序的效率和性能。然而,线程的并发执行也带来了一些问题,其中之一就是线程共享变量的可见性问题。 什么是线程共享变量的可见性问题呢?…

Confluence使用教程(用户篇)

1、如何创建空间 可以把空间理解成一个gitlab仓库,空间之间相互独立,一般建议按照部门(小组的人太少,没必要创建空间)或者按照项目分别创建空间 2、confluence可以创建两种类型的文档:页面和博文 从内容上来…

Linux通过libudev获取挂载路径、监控U盘热拔插事件、U盘文件系统类型

文章目录 获取挂载路径监控U盘热拔插事件libusb 文件系统类型通过挂载点获取挂载路径添libudev加库 获取挂载路径 #include <stdio.h> #include <libudev.h> #include <string.h>int main() {struct udev *udev;struct udev_enumerate *enumerate;struct ud…

C++--动态规划背包问题(1)

1. 【模板】01背包_牛客题霸_牛客网 你有一个背包&#xff0c;最多能容纳的体积是V。 现在有n个物品&#xff0c;第i个物品的体积为vivi​ ,价值为wiwi​。 &#xff08;1&#xff09;求这个背包至多能装多大价值的物品&#xff1f; &#xff08;2&#xff09;若背包恰好装满&a…

AMD即将上市大量中端显卡,为新显卡支付过高价格的日子可能结束

​AMD在本周末&#xff08;8月25日&#xff09;的德国Gamescom活动中展示了两款新显卡和一些新的升级技术&#xff0c;这些新GPU的定价将与英伟达的GeForce RTX 4000卡竞争。 这是一件大事&#xff0c;因为新的Radeon RX 7700 XT和7800 XT卡占据了AMD Radeon RX 7000系列产品线…

nlp系列(7)三元组识别(Bert+CRF)pytorch

模型介绍 在实体识别中&#xff1a;使用了Bert模型&#xff0c;CRF模型 在关系识别中&#xff1a;使用了Bert模型的输出与实体掩码&#xff0c;进行一系列变化&#xff0c;得到关系 Bert模型介绍可以查看这篇文章&#xff1a;nlp系列&#xff08;2&#xff09;文本分类&…

springboot实现 伪微信登录

众所周知&#xff0c;微信扫码登陆的功能&#xff0c;个人网站是无法申请的&#xff0c;我们想在本地想测一下微信登录也是无法实现。 要实现微信登录&#xff0c;首先你得是一个企业单位&#xff0c;有公章才能申请&#xff0c;申请还要花费300块大洋。 如果我们只是想学习和…

司徒理财:8.29黄金高空思路不变已盈利

黄金周五在鲍威尔的讲话中上蹿下跳&#xff0c;上探1922压制下跌&#xff0c;在1903一线探底回升&#xff0c;日线双十字K。昨日周一震荡上行&#xff0c;美盘还是冲高回落&#xff0c;日线小阳。 当前黄金走势趋于震荡&#xff0c;单从技术面来讲还是偏多&#xff0c;但是鲍威…

小白必看:期权行权前必须了解的问题。

期权的本质是一个买权或是卖权&#xff0c;也就是说你是权利方的话&#xff0c;你拥有以约定价格向对手方买入&#xff08;买权&#xff09;或卖出&#xff08;卖权&#xff09;一定数量标的的权利。期权行权就是从对手方买入&#xff0c;或向其卖出标的&#xff01;下文介绍小…

【实训项目】“魔法”APP-模型爱好者线上线下交流平台

1.设计摘要 自从2018年万代把翻模厂商龙桃子&#xff0c;后国内的模型厂商就开始逐渐慢慢的从单纯的翻模转向做魔改合金模型&#xff0c;一是由于单纯的出翻模的利润太低&#xff0c;二是由于翻模被万代查水表的风险很大。于是&#xff0c;国内的一些厂商把眼光转向合金成品&a…

网卡抓不到带Tag的数据包

Tag抓取修改注册表 用于解决网卡抓不到带Tag的数据包 一、修改查看网卡信息 1、打开网络适配器选项&#xff0c;右键需要修改的网卡–属性 2、在配置–高级中&#xff0c;找到优先级和VLAN&#xff0c;选择优先级和VLAN关闭&#xff0c;确认。 3、确认网卡驱动关键字 网卡右…

vue2 组件库之vetur提示

当我们开发完自定义UI组件库后&#xff0c;在项目中使用时&#xff0c;想要达到以下提示效果&#xff0c;组件提示与属性提示&#xff0c;有什么解决方案呢&#xff1a; 事实上&#xff0c;这是vetur的功能&#xff0c;原文如下&#xff1a; Component Data | Vetur If a pac…

RT_Thread内核机制学习(六)信号量

要传输较大数据时&#xff0c;使用队列。 传输较小数值时&#xff0c;使用邮箱。 队列、邮箱用来传递数据。 如果只是用来传递资源的个数&#xff0c;可以使用信号量。 A车与B车只需要传递信号量&#xff08;代表资源&#xff09;。 信号量 获取信号量 如果value>0&…

PDF可以修改内容吗?有什么注意的事项?

PDF是一种跨平台的电子文档格式&#xff0c;可以在各种设备上轻松阅读和共享。许多人喜欢将文档转换为PDF格式以确保格式的一致性和易读性。但是&#xff0c;PDF文件一般被认为是“只读”文件&#xff0c;即无法编辑。那么&#xff0c;PDF文件是否可以修改呢&#xff1f; 答案是…

CCF HPC China2023|澎峰科技:使能先进计算,赋能行业应用

CCF HPC China2023圆满落幕&#xff01; 桂秋八月&#xff0c;为期三天的中国高性能计算领域最高规格盛会——2023CCF全球高性能计算学术年会&#xff08;HPC China&#xff09;在青岛红岛国际展览中心圆满落幕。行业超算大咖、顶级学界精英、先锋企业领袖参会者齐聚山东青岛&a…

photoshop2022安装教程

安装教程 点击set-up.exe 点击确认&#xff0c;开始安装&#xff0c;需要等待一段时间 出现这个表示安装成功&#xff0c;点击关闭即可 查看版本&#xff1a;打开菜单栏中的“帮助”选项&#xff0c;点击"系统信息" 成功演示 安装包下载 https://ziby0nwxdov.feishu.…

VMware vCenter Server 7.0.3 安装

VMware vCenter Server 7.0.3 安装 文章目录 VMware vCenter Server 7.0.3 安装1. 安装 vcenter1.1 第一阶段1.2 第二阶段 2. exsi 查看 vcenter3. 部署 DNS server3.1 安装 unbound3.2 配置 unbound3.3 vcenter 配置域名访问 1. 安装 vcenter 1.1 第一阶段 双击 192.168.2…

从零开始探索C语言(一)----C语言程序结构、基本语法与数据类型

文章目录 1. 程序结构1.1 Hello World示例1.2 编译并执行C程序 2. 基本语法2.1 C 标记2.2 分号2.3 注释2.4 标识符2.5 关键字2.6 C中的空格 3. 数据类型3.1 整数类型3.2 浮点类型3.3 void类型 从第一次学习C语言到现在已经时隔五年了&#xff0c;大部分知识都还给老师了&#x…