当前位置: 首页 > news >正文

数据库 MYSQL的概念

数据库的概念

数据库是按照数据结
构来组织、存储和管理数据的系统,它允许用户高效地存储、检索、更新和管理数据
database:用来组织,存储,管理数据的仓库
数据库的管理系统:DBMS,实现对数据的有效储值,关系和存取的系统软件

数据可分为关系型数据库和非关系型数据库

关系型数据库:

mysql
oracle
sql-server(没人用,windows研发),postgresql(大象数据库)
influsdb

非关系型数据库:

es :elasttic search 索引型非关系数据库
redis:缓存型数据库
promethus:时序性的非关系数据
monggoDB:文档型非关系数据库

关系型数据库

1、关系型数据库是一张表,数据存储在表格当中,
2、数据时保存在表里面,关系型数据库的表与表之间是有关联的,数据之间也是有关联的
3、一个关系型数据库可以有多个库,库里面保存的是表,表里面有数据,但是每个库是独立的,数据库当中,多张表存储在库中,通过表与表之间的字段进行关联

表有行和列:
列:列又叫字段,描述对象的属性
行:描述对象的信息
行+列组成一张表

关系型数据库:并发量很低,一旦访问大量集中,数据库会很快崩溃

非关系型数据库

有库,库里面保存的是键值对 的形式进行保存
非关系型数据库:用户第一次访问redis数据库,在redis上生成一个缓存的键值对,下一次访问redis数据库,直接访问缓存键值对
非关系数据库,可以高并发读写,对海量依旧可以保持搞笑的存储和访问,而且也实现高可用的架构

mysql数据库

mysql数据库的类型

mysql的数据库的数据类型,也是所有关系数据库的数据类型

数据类型    含义
int(n)    数据类型是整数,n表示数据的长度显示,范围在-2147483648到2147483647之间。
char()    都是保存字符串类型的数据,保存固定长度的字符
varchar()    都是保存字符串的数据,保存可变长度的字符
text    存储大文本数据
date    用来存储日期,YYYY-MM-DD年月日
datetime    用来存储日期,YYYY-MM-DD HH:MM:SS年月日时分秒
timestamp    可以自动存储当前的时间戳YYYY-MM-DD HH:MM:SS
float(n,m)    浮点数,带小数点的值,n总位数,M小数点后几位,单精度浮点数
double(n,m)    双精度浮点数
image    存储图片或者是多媒体文件

char和varchar的区别:

1、char的字段,无论是否有值,char都会占据4个字节(硬盘空间)
2、varchar是按照实际的字符长度进行记录,但是在结尾会多加一个字符,多一个字节
3、varchar比char节省磁盘空间
4、读写速度,char比varchar要快的多,char的存储方式是连续磁盘空间,varchar多次查询之后,会产生磁盘文件的碎片

数据库的存储引擎和事务

事务由4个特性组成:

1、原子性:事务是整个数据库工作的最小单位,不可分割的,要么全部执行成功,要么全部失败。所有的已成功的都会被撤销
2、一致性:事务执行前后,数据完整性约束是不能被破坏的,满足所有条件约束的情况下,事务才能被提交
3、隔离性:事物之间的执行是隔离的,一个事务的执行不能受到其他事务的干扰
4、数据的持久性:事务一旦被提交,将永久性的保存到数据库中,保证数据不会丢失
事务:插入数据,更新数据,删除数据
mysql:默认使用innoDB支持事务,执行行级锁定,支持外键的存储引擎

数据库的管理

管理数据库的语法:sql语句

名词含义
database数据库
table
row
column
index索引
view视图
user用户
privilege权限
procedure存储过程

sql语句的规范

1、sql语句不区分大小写,但是建议用大写
sql可以是单行也可以是多行,默认以“;”结尾
如果是多行表示一个sql语句,关键词必须要在一行
2、库名,表名,列名和行的值,是严格区分大小写的
3、命名规则:


都必须以字母为开头,不要使用sql的保留字段,
表名和库名尽量不要使用特殊字符

sql语句的分类

1、DDL:数据库定义语言,创建数据库,表示,索引等等语句
create:创建
drop:删除
ALTER:修改---->只能对表修改
2、DML:数据库操作语言,对表里面的数据进行管理
select :查
update 更新数据
insert:差输入
delete:删除数据
3、DQL:查询语句,查询数据表中符合条件的数据
select
4、DCL:数据空控制语言,对数据库用户的权限进行控制
GRANT:赋权
REVOKE:取消权限
5、TCL:事务控制语句
commit:提交
rollback:回滚
savepoint:保存点,用来回滚

mysql配置

mysql的配置:

create DATABASE XY104;
#创建一个库create table xy103 (
id int not null,
#声明表中字段的名称和字段的类型,not null表示一定要写入数据
name char(10) not null,
#字段的名称是name,长度是10个字符,值一定要有
address varchar(48) DEFAULT'地址不详',
#DEFAULT默认的给这一列的数据生成一个值,不写入数据,默认就是地址不详
score FLOAT(3,1)
);
select * from xy103;
#select 查询,* 所有, from 表名
desc xy103;
#查看表结构drop table xy103;
#删除表
drop database xy104;
#删除库

 表的增删改查

select * from xy103;
查询xy103表名的所有列插入数据:
insert into 表名 (字段1,字段2,字段3.....)values(字段1的值,字段2的值....)更新表的数据 update
update xy103 score=90 where name=;
#修改xy103的表的数据,score=90,where条件进行定位删除表中的数据行delete
delete from xy103 where score=92.9;查询语句的进阶用法select
select * from xy103 limit 2;
#只查看表的前两行
select * from xy103 limit 2,3;
#查看指定范围的行:表示只查看表的第3行到第5行
select distinct address from xy103;
#查看并去重address这一列
#distinct去重模糊查询:
select * from xy103 where address like '%4%';
#查询address这一列含有4的
select * from xy103 where address like '%4';
#查询address这一列以4开头的
select * from xy103 where address like '4%';
#查询address这一列以4结尾的对表结构进行修改
1、修改表名
alter table xy103 rename xy104;
2、增加字段
alter table xy104 add birday date not null;
3、修改字段类型
alter table xy104 modify colum birday varchar(20);
4、修改列的名称
alter table xy104 change birday birthday char(20);
5、删除字段
alter table xy104 drop birthday;create table if not exists xy105 (
id int(4) primary key auto_increment,
#auto_increment:该字段的值会自增长,必须是唯一的,主键或者是唯一约束
name char(12) not null,
);
#if not xeists,只有当前的库中,没有xy105这张表才会进行创建

mysql当中的六个约束:

1、主键约束:primary key ,用于标识表中的每一行,逐渐的字段的值必须是唯一的,且不能为空,且一个表只能有一个主键
2、外键约束:用来建立表与表之间的关系,一张表的外键和另一张表的主键的值要匹配,保证数据的引用完整性foreign key
3、非空约束:not null,插入或者是更新的操作这个字段必须要有值
4、唯一性约束:unique key ,类似于主键的唯一性,但是一个表可以有多个唯一性约束
5、默认值约束:default,默认的给这一列的数据生成一个值
6、自增约束:auto_increment,一般都是和主键一起使用,唯一性和数据类型都有要求

创建主从表

1、创建主表
create table student (
crad_id int(11) primary key,
stu_name varchar(50) not null,
stu_email varchar(255) unique key,
);
2、从表
create table class (
stu_id int(11) primary key auto_increment,
address varchar(123) default '地址不详',
crad_id int(11) not null,
foreign key (crad_id) references student (crad_id)
);

多表联合查询时,表与表之间的关联不要超过3张表,超过之后,速度会下降

相关文章:

数据库 MYSQL的概念

数据库的概念 数据库是按照数据结 构来组织、存储和管理数据的系统,它允许用户高效地存储、检索、更新和管理数据 database:用来组织,存储,管理数据的仓库 数据库的管理系统:DBMS,实现对数据的有效储值&am…...

Node.js后端程序打包问题汇总(webpack、rsbuild、fastify、knex、objection、sqlite3、svg-captcha)

背景说明 场景 使用 node.js 进行后端开发,部署时通常需要打包为单文件,然后放到服务器运行。 这里记录我在打包过程中,碰到的各类问题及解决方案,希望能够帮助到更多道友😄 提示 此文持续更新,可以收藏⭐…...

部署 Apache Samza 和 Apache Kafka

部署 Apache Samza 和 Apache Kafka 的流处理系统可以分为以下几个步骤,涵盖环境准备、部署细节和生产环境的优化。 1. 环境准备 硬件要求 Kafka Broker:至少 3 台服务器,建议每台服务器配备 4 核 CPU、16GB 内存和高速磁盘。Samza 部署节点:根据任务规模,至少准备 2 台…...

xiaomiR4c openwrt

文章目录 openwrt 安装openwrt 配置开启WiFi 救砖minieap编译参数帮助 openwrt 安装 Router:xiaomi R4C官方固件:openwrt 23.05.5 (下图标红处)官方教程 下载 OpenWRTInvasionpython remote_command_execution_vulnerability.py …...

leetcode-128.最长连续序列-day14

为什么我感觉上述代码时间复杂度接近O(2n), 虽然有while循环,但是前面有个if判断,能进入while循环的也不多,while循环就相当于两个for循环,但不是嵌套类型的: 变量作用域问题:...

梳理你的思路(从OOP到架构设计)_简介设计模式

目录 1、 模式(Pattern) 是较大的结构​编辑 2、 结构形式愈大 通用性愈小​编辑 3、 从EIT造形 组合出设计模式 1、 模式(Pattern) 是较大的结构 组合与创新 達芬奇說:簡單是複雜的終極形式 (Simplicity is the ultimate form of sophistication) —Leonardo d…...

JAVA前端开发中type=“danger“和 type=“text“的区别

在前端开发中,type 属性通常用于指定按钮或其他元素的样式或行为。不同的框架和库可能对 type 属性有不同的定义和用法。常见的框架包括 Bootstrap、Ant Design(antd)、Element Plus 等。下面我将分别介绍在这些框架中 type"danger"…...

python 中执行from elasticsearch import Elasticsearch,AsyncElasticsearch 报错

在 Python 中执行 from elasticsearch import Elasticsearch, AsyncElasticsearch 时,如果提示 AsyncElasticsearch 不存在,可能是因为以下几个原因: 1. 安装的 elasticsearch 库版本不匹配 AsyncElasticsearch 是在 elasticsearch 库的较新版本中引入的。如果你安装的版本…...

带有 Elasticsearch 和 Langchain 的 Agentic RAG

作者:来自 Elastic Han Xiang Choong 讨论并实现 Elastic RAG 的代理流程,其中 LLM 选择调用 Elastic KB。 更多阅读:Elasticsearch:基于 Langchain 的 Elasticsearch Agent 对文档的搜索。 简介 代理是将 LLM 应用于实际用例的…...

Jenkins持续集成部署——jenkins安装

前言 Jenkins 是一个开源的自动化服务器,主要用于持续集成(CI)和持续交付(CD)。它为软件开发团队提供了一个易于使用的平台来自动化构建、测试和部署应用程序的过程。 Jenkins 主要功能 1. 持续集成 (CI) 自动构建…...

微信小程序开发入门

实现滚动 需要设置高度和边框 轮播图 差值表达式( {{表达式的值}} ),info数据要写到js文件的data数据中 小程序中常用的事件...

深度学习中自适应学习率调度器

传统观点认为,太大的学习率不利于优化深度神经网络,而相比固定的学习率而言,变化的学习率更能提供快速的收敛。基于此,本文作者基于理论基础提出了一个计算深度神经网络学习率的新方法。实验结果证明了该方法的有效性。 训练神经…...

Phono3py hdf5文件数据读取与处理

Phono3py是一个主要用python写的声子-声子相互作用相关性质的模拟包,可以基于有限位移算法实现三阶力常数和晶格热导率的计算过程,同时输出包括声速,格林奈森常数,声子寿命和累积晶格热导率等参量。 相关介绍和安装请参考往期推荐…...

React 底部加载组件(基于antd)

底部加载组件的意义在于提供一种流畅的用户体验,以便在用户滚动到页面底部时自动加载更多内容。这样可以让用户无需离开当前页面,就能够无缝地浏览更多的内容.通过底部加载组件,可以分批加载页面内容,减少一次性加载大量数据对页面…...

将HTML转换为PDF:使用Spire.Doc的详细指南(一) 试用版

目录 引言 1. 为什么选择 Spire.Doc? 1.1 主要特点 1.2 适用场景 2. 准备工作 2.1 引入 Spire.Doc 依赖 2.2 禁用 SSL 证书验证 3. 实现功能 3.1 主类结构 3.2 代码解析 4. 处理图像 5. 性能优化 5.1 异步下载图像 示例代码 5.2 批量处理优化 示例代…...

数据结构经典算法总复习(下卷)

第五章:树和二叉树 先序遍历二叉树的非递归算法。 void PreOrderTraverse(BiTree T, void (*Visit)(TElemType)) {//表示用于查找的函数的指针Stack S; BiTree p T;InitStack(S);//S模拟工作栈while (p || !StackEmpty(S)) {//S为空且下一个结点为空,意味着结束遍…...

mac 安装graalvm

Download GraalVM 上面链接选择jdk的版本 以及系统的环境下载graalvm的tar包 解压tar包 tar -xzf graalvm-jdk-<version>_macos-<architecture>.tar.gz 移入java的文件夹目录 sudo mv graalvm-jdk-<version> /Library/Java/JavaVirtualMachines 设置环境变…...

【SH】在Ubuntu Server 24中基于Python Web应用的Flask Web开发(实现POST请求)学习笔记

文章目录 Flask开发环境搭建保持Flask运行Debug调试 路由和视图可变路由 请求和响应获取请求信息Request属性响应状态码常见状态码CookieSession 表单GET请求POST请求 Flask 在用户使用浏览器访问网页的过程中&#xff0c;浏览器首先会发送一个请求到服务器&#xff0c;服务器…...

一些经济政治学类书籍推荐 --- 以及与之相关我的经历和理解

我给所开设的兴趣专栏_墨#≯的博客-CSDN博客&#xff0c;的介绍是&#xff1a; 聊聊关于文学、经济(股票等)、法律方面的个人感受与理解。 不过目前已有的两篇以及现在在写的这篇都是经济相关的&#xff0c;其实专栏开设的9月至今&#xff0c;我也看了好几本文学相关的书&#…...

设计模式之 abstract factory

适用场景 一个系统要独立于它的产品的创建、组合和表示时。一个系统要由多个产品系列中的一个来配置时。当你要强调一系列相关的产品对象的设计以便进行联合使用时。当你提供一个产品类库&#xff0c;而只想显示它们的接口而不是实现时 架构演示 首先client这个东西可以接触到…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...