计网----数据库(一)

news2024/11/22 15:51:44

计网----数据库(一)

一.什么是数据库

数据库是”按照数据结构来组织、存储和管理数据的仓库“。是一个长期储存在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。

二.数据库的特点

1.规范化的本地存储

2.加密

3.共享

三.数据库的好处

方便管理查找,查询数据快

四.数据库的分类

1.关系型数据库:其实就是二维表,典型代表mysql,oracle,SQL Server

如图

在这里插入图片描述

2.非关系型数据库:也叫NoSql,是一维映射key-value 典型代表redis,MongoDB

如图

在这里插入图片描述

五.数据库范式

1.什么是范式

要想设计一个好的关系,必须使关系满足一定的约束条件,此约束已经形成了规范,按照这种规范可以使设计简洁的、结构明晰,不会因为插入删除,更新数据导致异常

2.常见名词

属性->特征->表中的一列->字段

元组:表的一行就叫一个元组

码:表中唯一确定一个元组的属性,码不止一个,叫这些为候选码

主码:从候选码挑选出来一个主要确定这一行的属性

主属性:只要在任何一个候选码中出现过,这个属性就叫主属性

非主属性:没有在任何一个候选码中出现过

3.第一范式(1NF)属性不可分

下图符合第一范式

在这里插入图片描述

下图不符合第一范式

在这里插入图片描述

4.第二范式(2NF)不存在组合关键字中的某些字段决定非关键字段(组合关键字不可拆)

1.看下面的图判断是否符合第二范式

在这里插入图片描述

非主键列全部依赖于主键,符合第二范式

在这里插入图片描述

非主键列全部依赖于部分主键,不符合第二范式

在这里插入图片描述

非主键列部分依赖于主键,不符合第二范式

在这里插入图片描述

非主键列部分依赖于部分主键,不符合第二范式

1.解决不符合第二范式的表
初始表如下

选课课表为(学号,姓名,年龄,课程名称,成绩,学分)

先挑选出来主属性,这里的主属性是学号和课程名称,(学号,课程名)->(姓名,年龄,成绩,学分)

但是此时的姓名,年龄只由学号决定,学分只由课程名称决定,所以不符合第二范式,我们要进行修改

修改之后变为

学生:学号,姓名,年龄

课程:课程名称,学分

选课:学号,课程名称,成绩

2.不符合第二范式会出现的问题

1.数据冗余

2.更新异常

3.插入异常

5.第三范式(3NF)不存在依赖传递(关键字段 --> 非关键字段x --> 非关键字段y)

1.解决不符合第三范式的表
初始表如下

学生的关系表:(学号,姓名,年龄,所在学院,学院地点,学院电话)

先挑选出来主属性,这里的主属性是学号,(学号)->(姓名,年龄,所在学院,学院地点,学院电话)

但是知道学号就知道了所在学院,知道了所在学院就知道了学院地点,学院电话,这里存在依赖传递,所以不符合第三范式,我们要进行修改

修改之后变为

学生单独一个表(包括学院),学院单独一个表

6.BCNF(鲍依斯-科得范式):不存在关键字段决定关键字段

1.解决不符合鲍依斯-科得范式的表
初始表如下

仓库管理系统(仓库ID,存储物品ID,管理员ID,数量)

先挑选出来主属性,这里的主属性是仓库ID,管理员ID和存储物品ID

(仓库ID,存储物品ID)->(管理员ID,数量)

(管理员ID,存储物品ID)->(仓库ID,数量)

其中有两个主属性相互决定,所以不符合鲍依斯-科得范式

修改之后变为

仓库管理:仓库ID,管理员ID

仓库:仓库ID,存储物品ID,数量

六.学习mysql数据库

1.了解mysql相关知识

1.看第一张图进行了解

在这里插入图片描述

这里mysql是数据库(服务端)

这里mysql-workbench是客户端,用来登录到mysql(服务端)上,然后往数据库里写入数据

2.看第二张图进行了解

在这里插入图片描述

这里的root用户是权限最大的,也可以通过它来创建其他用户

3.看第三张图进行了解

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=C%3A%5CUsers%5C%E5%86%89%E5%96%9C%E6%96%87%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-2023110在这里插入图片描述

4.看第四张图进行了解

在这里插入图片描述

5.看第五张图进行了解

在这里插入图片描述

6.看第六张图进行了解

在这里插入图片描述

2.学习mysql数据库中的sql语句

1.创建一个写sql语句的文件

在这里插入图片描述

2.创建一个数据库

1.在此界面中右键,选择Create Schema

在这里插入图片描述

2.写数据库的名字,然后点击apply

在这里插入图片描述

3.到此页面继续点击apply

在这里插入图片描述

3.在写sql语句的文件里进行学习sql语句
1.写入sql语句的文件中时一些基本知识
#注释
#sql语句以分号为结束标志
#命名规则:数据库一般不区分大小写,一般用小写,最好不用用特殊字符

#表名:t_xxx
#列名:f_xxx
2.创建表的sql语句
#指定默认库
use rxwku;

#创建表的格式为:creat table 表名(列名 数据类型 建表约束);
#建表约束
#主键:primary key,值唯一,不 允许为空,每张表只能有一列是主键列
#唯一:unique,值唯一,但是可以为空,每张表可以有多个唯一列
#非空:not null,不能为空
#默认值:default
#自增:auto_increment
#外键约束:当前表的某一列和其他表有关系

create table studentinfo(
number int primary key auto_increment,
name varchar(10) not null,
#在数据库里单引号和双引号都能表示字符串,可以双引号里套单引号或者单引号套双引号,最多只能套一层
sex enum('男','女'),
age int default 18
);
#注意创建完之后需要手动刷新一下才能在schemas中看到
3.mysql中的数据类型
#数据类型:int,char()/varchar()/nvarchar(),enum
#char()/varchar()/nvarchar()的区别
#char(45):字符串长度为45,如果存"hello",实际上存的是"hello00000.....",长度固定,如果不足长度用用0补齐
#varchar(45):字符串长度最大为45,如果存"hello",实际上存的是"hello",这里的45是固定的最大长度,长度不足就按照实际长度存储
#nvarchar(45):字符串长度最大为45,如果存"hello",实际上存的是"hello",这里的45是固定的最大长度,这里的字符按照宽字节存储,也就是一个字符占2个字节

#数据库最大可以存储8千个字节,nvarchar只能存4千个字符,varchar可以存8千个字符
4.删除和修改表的sql语句
#删除表 drop table 表名
drop table studentinfo;

#修改表:alter table 表名...
#1.增加一列:alter table 表名 add column 列名 数据结构 建表约束;
alter table studentinfo add column school int;

#2.修改列的属性:alter table 表名 modify 列名 数据结构 建表约束;
alter table studentinfo modify school varchar(45);

#3.删除一列:alter table 表名 drop column 列名;
alter table studentinfo drop column school;
5.查询表的sql语句
#查询:select* from 表名; 查询某个表的所有列
select* from studentinfo;
#查询某几列:
select number, name from studentinfo;
#给查询的列起别名 (并没有修改表中的列名 )
#select number 学号,name 姓名 from studentinfo;
6.给表中插入数据的sql语句
#插入所有列的数据: insert into 表名 values (值1,值2,...);(要求数据的顺序和表中列的顺序一致)
insert into studentinfo values (1,'张三','男',20);
#插入指定列: insert into 表名 (列名1,列名2,...) values (值1,值2,...); (值的顺序和指定列的顺序一致)
insert into studentinfo (name,sex) values('李四','男');
insert into studentinfo (sex,name) values('女','小芳');
insert into studentinfo (name) values('王五');
7.删除表中数据的sql语句
#删除数据:delete from 表名 where 条件;
#删除王五同学的数据
delete from studentinfo where name="王五";

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

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

相关文章

[动态规划] (十四) 简单多状态 LeetCode LCR 091.粉刷房子

[动态规划] (十四) 简单多状态 LeetCode LCR 091.粉刷房子 文章目录 [动态规划] (十四) 简单多状态 LeetCode LCR 091.粉刷房子题目解析解题思路状态表示状态转移方程初始化和填表顺序返回值 代码实现总结 LCR 091. 粉刷房子 题目解析 (1) 一排房子,共有n个 (2) 染…

【电路笔记】-基尔霍夫电路定律

基尔霍夫电路定律 文章目录 基尔霍夫电路定律1、框架和定义2、基尔霍夫电流定律3、基尔霍夫电压定律4、基尔霍夫定律应用5、基尔霍夫定律的局限性6、总结 在本文中,将介绍最基本、最重要的电路定律之一。 这些法律由德国医生古斯塔夫基尔霍夫 (Gustav Kirchoff) 于 …

java数据结构--双端队列

一.概念 双端队列的意思是可以在头部和尾部添加和删除元素&#xff0c;更一般的单向链表队列比起来更加的灵活&#xff0c;下面我们用双向循环带哨兵链表和数组来分别实现 二.定义接口Dequeue /*** 双端队列*/ public interface Dequeue<E> {//队头添加元素boolean off…

MSSQL 配置ORACLE ​链接服务器

在有些场景&#xff0c;我们需要整合其他异构数据库的数据。我们可以使用代码去读取&#xff0c;经过处理后&#xff0c;再将数据保存到MSSQL数据库中。如果数据量比较大&#xff0c;但处理的逻辑并不复杂的情况下&#xff0c;这种方式就不是最好的办法。这时可以使用使用链接服…

C++笔记之表驱动法-全局静态结构体变量的应用实例ColorMAP

C笔记之表驱动法-全局静态结构体变量的应用实例ColorMAP code review! 代码 #include <ros/ros.h> #include <visualization_msgs/Marker.h>struct RGBA{RGBA(){red.r 1; green.r 0; blue.r 0;red.g 0; green.g 1; blue.g 0;red.b 0; green.b 0; blue.b…

Netty入门指南之NIO Buffer详解

作者简介&#xff1a;☕️大家好&#xff0c;我是Aomsir&#xff0c;一个爱折腾的开发者&#xff01; 个人主页&#xff1a;Aomsir_Spring5应用专栏,Netty应用专栏,RPC应用专栏-CSDN博客 当前专栏&#xff1a;Netty应用专栏_Aomsir的博客-CSDN博客 文章目录 参考文献前言ByteBu…

终究还是翻车了,人肉运维100 次后

翻车现场 5年前的一个晚上&#xff0c;我接到数据组同事的消息&#xff0c;要求将A用户的磁盘快照共享给B用户。我对这个线上运维工作早已轻车熟路&#xff0c;登录线上服务器仅用了2分钟就完成了。 我继续忙着其他事情&#xff0c;3分钟后&#xff0c;我正要打开新的控制台页…

【多线程】synchronized的特性

文章目录 synchronized 的特性互斥可重入synchronized的使用加锁过程 synchronized 的特性 互斥 synchronized 会起到互斥效果&#xff0c;某个线程执行到某个对象的 synchronized 中时&#xff0c;其他线程如果也执行到同一个对象 synchronized 就会阻塞等待。进入 synchron…

【源码篇】基于SSM+JSP实现的网上花店系统

系统介绍 基于SSMJSP实现的网上花店系统采用了时下流行的 Java 程序设计语言进行开发&#xff0c;系统开发的工具采用 Idea 开发工具&#xff0c;普通用户可以在该系统完成注册、登录、购买等一系列操作&#xff0c;致力于为用户提供一个方便快捷的在线购花平台。 前台系统功…

Oracle(14) Managing Password Security and Resources

目录 一、基础知识 1、Profiles 配置文件 2、Password Management 密码管理 3、Enabling Password Mgmt 启用密码管理 4、Password Verification 密码验证 ​编辑5、User-Provided Passwd Func 用户提供的密码功能 6、Verif Func: VERIFY_FUNCTION验证函数介绍 7、Reso…

Web时代下,软件系统的持续进步,是否能完全替代人力节省成本?

Web时代下&#xff0c;软件系统的持续进步&#xff0c;是否能完全替代人力节省成本&#xff1f; 随着全球经济的蓬勃发展&#xff0c;众多经济学家纷纷提出了新的管理理念&#xff0c;例如在20世纪50年代&#xff0c;西蒙提出管理依赖信息和决策的思想&#xff0c;但在同时期的…

2023年云计算的发展趋势如何?

混合云的持续发展&#xff1a;混合云指的是将公有云和私有云进行结合&#xff0c;形成一种统一的云计算环境。随着企业对数据隐私和安全性的要求越来越高&#xff0c;以及在数据存储和处理方面的需求不断增长&#xff0c;混合云正在逐渐成为主流。预计未来混合云将会继续保持高…

,多数据源+Mybatisplus + Sharding JDBC同一库中分表

水平分表是在同一个数据库内&#xff0c;把同一个表的数据按一定规则拆到多个表中,多数据源采用 mybatis-plus的dynamic-datasource 分库分表采用sharding-jdbc 数据库连接池管理是alibaba的druid-spring-boot-starter 同一个数据库内分表 目录 1.数据库表 2.配置 3.引入的…

蓝桥等考C++组别六级004

第一部分&#xff1a;选择题 1、C L6 &#xff08;15分&#xff09; 关于switch语句&#xff0c;以下说法正确的是&#xff08; &#xff09;。 A. break语句只能用于switch语句。 B. switch语句中可以使用多个default语句。 C. switch语句中只能使用一个break语句。 D. …

优雅的并发编程-CompletableFuture

目录 了解CompletableFuture CompletableFuture 是 Java 8 引入的一个类&#xff0c;用于支持异步编程和非阻塞操作。它提供了一种简单而强大的方式来处理异步任务&#xff0c;可以轻松地实现并行、非阻塞的操作&#xff0c;并且提供了丰富的方法来处理任务的完成状态、异常情…

iOS加固原理与常见措施:保护移动应用程序安全的利器

​ 目录 iOS加固原理与常见措施&#xff1a;保护移动应用程序安全的利器 前言 一、iOS加固的原理 1. 代码混淆 2. 加密算法 3. 防调试技术 4. 签名校验 二、iOS加固的常见措施 1. 代码混淆 2. 加密算法 3. 防调试技术 4. 签名校验 三、iOS加固的效果和注意事项 参…

什么是代理IP池?如何判断IP池优劣?

代理池充当多个代理服务器的存储库&#xff0c;提供在线安全和匿名层。代理池允许用户抓取数据、访问受限制的内容以及执行其他在线任务&#xff0c;而无需担心被检测或阻止的风险。代理池为各种在线活动&#xff08;例如网页抓取、安全浏览等&#xff09;提高后勤保障。 读完…

一个“Hello, World”Flask应用程序

如果您访问Flask网站&#xff0c;会看到一个非常简单的示例应用程序&#xff0c;只有5行代码。为了不重复那个简单的示例&#xff0c;我将向您展示一个稍微复杂一些的示例&#xff0c;它将为您编写大型应用程序提供一个良好的基础结构。 应用程序将存在于包中。在Python中&…

三大基础排序 -选择排序、冒泡排序、插入排序

排序算法 文章目录 冒泡排序算法步骤动图代码优化总结 选择排序算法步骤动图代码总结 插入排序算法步骤动图代码总结 排序算法&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。一般默认排序是按照由小到大即…