数据库 二

一.数据认识

1.关系型

表与表的关系:核心表

mysql/oracle、SQLServer(微软)

SQL

2.非关系型

redis--缓存数据库Map<k,v>

NO-SQL:not only sql

二.关系型数据库(R)

1.客户端、数据库服务

2.库(database)

CREATE DATABASE xxx_db;//创建库

DROP DATABASE;//删除库

xxx_db.xxx_tab

3.表(table)

 3.1 表的结构

CREATE

DROP

 3.2 字段类型

 (1) int 

 (2) double

 (3) char

 (4) varchar

 (5) date

       默认格式:yyyy-MM-dd hh:mm:ss

       '2024-10-13' ---> Date

varchar  vs  char

‌varchar与‌char的主要区别
1‌.长度固定性‌:

 ‌  char‌:长度固定,如果插入数据的长度小于char的固定长度时,则用空格填充。‌12
 ‌  varchar‌:长度可变,根据实际存储的字符数量来决定存储空间的大小。
‌2.存储效率‌:

 ‌  char‌:存取速度快,因为长度固定,能够快速定位到数据的起始位置。
 ‌  varchar‌:存取速度相对较慢,因为长度不固定,需要动态调整存储空间。
3‌.空间占用‌:

‌   char‌:占用空间大,因为长度固定,即使存储的字符少也会占用固定长度的空间。
 ‌  varchar‌:占用空间小,因为根据实际存储的字符数量来决定存储空间的大小。
4‌.适用场景‌:

   char‌:适用于存储长度固定的数据,如身份证号、性别等。
‌   varchar‌:适用于存储长度可变的数据,如姓名、地址等。
varchar与char的具体应用场景和优缺点
 ‌  char‌:由于其长度固定,存取速度快,适合用于存储那些长度几乎不变的数据,如身份证号、性别等。但是,如果存储的数据长度小于定义的固定长度,会浪费一定的存储空间。
‌   varchar‌:由于其长度可变,能够根据实际存储的字符数量来决定存储空间的大小,适合用于存储长度可变的数据,如姓名、地址等。但是,由于其存取速度较慢,且在频繁修改时可能会引起“行迁移”现象,导致额外的I/O开销。

三.SQL

Structured Query Language

1.分类

 1.1 DDL

CREATE

 1.2 DML

INSERT,DELETE,UPDATE

 1.3 DQL

数据查询语言

1.DDL(Data Definition Language,数据定义语言)‌:

   用于定义数据库对象,如表、字段、索引等。
   包括创建(CREATE)、修改(ALTER)、删除(DROP)等操作。
   例如:CREATE TABLE(创建表)、ALTER TABLE(修改表)等。
‌2.DML(Data Manipulation Language,数据操纵语言)‌:

   用于对数据库中的数据进行增删改操作。
   包括插入(INSERT)、更新(UPDATE)、删除(DELETE)等操作。
   例如:INSERT INTO(插入数据)、UPDATE SET(更新数据)等。
‌3.DQL(Data Query Language,数据查询语言)‌:

   用于查询数据库中的数据。
   最常用的操作是SELECT语句。
   例如:SELECT * FROM(查询表中的所有数据)。
DDL、DML和DQL共同构成了SQL语言的基础,用于实现数据库的各种操作‌

2.INSERT

1. INSERT INTO 表名 VALUES(值1,值2....) ; 与表中的字段1 -1 对应

2. INSERT INTO 表名(字段1, 字段2....) VALUES(值1,值2....) ; ///与列出的字段对应(推荐)

3. INSERT INTO 表名(字段1, 字段2....) SELECT 字段1, 字段2.... FROM 表名; //多行数据产生

3.DELETE

DELETE FROM 表名 WHERE 查询条件;

DELETE  vs  TRUNCATE

1,功能和适用场景的区别
‌   DELETE‌:可以删除单个、多个或所有记录,支持使用WHERE子句进行条件删除,适用于需要保留表结构的情况。‌1
‌‌   TRUNCATE‌:只能删除表中的所有记录,不支持条件删除,适用于需要快速清空表数据的情况。
2.执行效率和资源使用的区别
‌   DELETE‌:逐条删除数据,每次操作都会记录在事务日志中,适用于数据量较小的情况,执行效率较低,资源消耗较大。‌1
‌   TRUNCATE‌:不记录每条删除操作的日志,直接重置高水位线,适用于大数据量的清空操作,执行效率较高,资源消耗较少。
3.事务回滚和安全性的区别
‌   DELETE‌:属于‌DML操作,操作数据会放到回滚段中,支持事务回滚,适用于需要保留回滚能力的场景。
‌   TRUNCATE‌:属于‌DDL操作,操作数据不会放到回滚段中,不支持事务回滚,适用于不需要回滚的场景。
4.对表结构的影响
‌   DELETE‌:不会影响表结构,索引、触发器等定义保持不变。
‌   TRUNCATE‌:会删除表结构,包括索引、触发器等定义,适用于需要重新初始化表的场景。

4.UPDATE

UPDATE 表名 SET 字段=数据 1,....WHERE

四.表

1.建表策略

三大范式

1.原子性(字段不可分割(相对))

   第一范式要求数据库表的每一列都是不可分割的基本数据项,即表中的字段值必须是原子的、不可再分的。换句话说,表中的所有字段值都应该是单一的,而不是集合、数组或记录等复合数据类型。这是数据库设计中最基本的要求,任何关系型数据库都应该满足第一范式。

2.唯一性(不存在完全相同的两行)

   第二范式建立在第一范式的基础上,它要求表必须有一个主键,且表中的非主键列必须完全依赖于主键。所谓完全依赖,是指非主键列不能仅依赖于主键的一部分(比如主键是复合主键时)。如果表中存在部分依赖,则不满足第二范式,此时应该将表拆分为两个或多个表,以消除部分依赖。

3.依赖传递性(只于主键依赖(真实主键),现实项目很难完全满足)

   第三范式建立在第二范式的基础上,它进一步要求表中的非主键列必须直接依赖于主键,而不能存在传递依赖。传递依赖是指非主键列依赖于另一个非主键列,而这个非主键列又依赖于主键。如果表中存在传递依赖,则不满足第三范式,这通常会导致数据冗余和更新异常。为了消除传递依赖,需要将表进一步拆分,使得每个表中的非主键列都直接依赖于主键。

代理主键:唯一,自增长者整数

五.DQL(单表)

1.数据导入导出

导入表

2.全查询

别名 (AS) 别名

 2.1 差字段

SELECT 字段1 (AS) 别名 , 字段2 (AS) 别名 ... FROM 表名;

 2.2 通配符

* --- 所有字段

优点:方便,性能较差

SELECT * FROM emp_tab;

3.条件查询

根据字段的条件进行查询

SELECT * FROM 表 WHERE 条件

 3.1 比较

=, > , < , >= , <= , != , <>

数值可以使用单引号

SELECT * FROM emp_tab WHERE emp_exp <=3;

3.2 逻辑

AND

OR

SELECT * FROM emp_tab WHERE emp_exp >=3 AND emp_exp<=5;

 3.3 日期

日期可以比较 ,日期格式 使用单引号

SELECT * FROM emp_tab WHERE emp_hiredate <'2024-01-01';

 3.4 不等于

!=

<>

SELECT * FROM emp_tab WHERE emp_gender <>'女';

 3.5 查询(Null/N/A)

当前数据 没有填写

IS NULL

IS NOT NULL

SELECT * FROM emp_tab WHERE emp_manager  IS NOT NULL;

 3.6 在两者之间

BETWEEN ... AND

SELECT * FROM emp_tab WHERE emp_sal  BETWEEN 5000.00 AND 20000.00;

4.模糊查询

% --任意字符,任意个

_ : 任意一个

。。。。 WHERE 字段 LIKE '表达式'

 4.1 王xx

前缀有王

 4.2 xx王

后缀有王

 4.3 x王x

任意位置


SELECT  * FROM emp_tab WHERE emp_name LIKE '王%';
SELECT  * FROM emp_tab WHERE emp_name LIKE '%王';
SELECT  * FROM emp_tab WHERE emp_name LIKE '%王%';
SELECT  * FROM emp_tab WHERE emp_name LIKE '王___';

5.结果排序

SELECT *

FROM 表名

WHERE 条件

ORDER BY 字段 DESC/(ASC) 默认升序

SELECT * FROM emp_tab ORDER BY emp_sal;
SELECT * FROM emp_tab ORDER BY emp_sal DESC;

6.分页

选取某些行

SELECT *

FROM 表名

WHERE 条件

ORDER BY 字段 DESC/(ASC) 默认升序

LIMIT m, n

7.统计

数据统计,统计函数

1.SUM()

 SUM() 函数在数据库中是一种聚合函数,用来计算指定列中数值的总和。它通常用在 SELECT 查询中,对一组值进行求和操作。SUM() 函数可以应用于任何包含数值数据的列。当用于包含 NULL 值的列时,SUM() 会忽略这些 NULL 值,除非整个列都是 NULL,这时结果将是 NULL。

2.AVG()

 AVG() 函数是 SQL 语言中的一个聚合函数,其用途是计算某个表达式或列的平均值。此函数可以在 SELECT 查询中使用,以返回一个列中数值的平均值。这对于在数据库中分析和报告数据特别有用。

3.MAX()

   MAX() 函数是一种 SQL(Structured Query Language)聚合函数,用来从指定列中返回最大值。它常用于对数据集中的某个数值列进行统计,以找出该列中的最大值。MAX() 函数可以在 SELECT 查询中使用,也可以与其他 SQL 子句(如 GROUP BY、HAVING 等)搭配使用,以实现更复杂的数据分析和报告需求。

4.MIN()

   MIN() 函数是一种在数据库管理系统(如 MySQL、SQL Server、PostgreSQL 等)中广泛使用的聚合函数。它的主要作用是返回指定列中的最小值。MIN() 函数可以在 SELECT 查询中使用,通常用于对数据集中的数值列进行统计分析。

5.COUNT()

   COUNT() 函数是 SQL 中一个非常有用的聚合函数,它用于计算满足特定条件的行数。COUNT() 函数可以应用于任何数据类型的列,包括数字、字符串和日期等。这个函数在数据分析、报表生成以及数据库管理等多个方面都非常实用。

8.去重

SELECT DISTINCT emp_dept FROM emp_tab;

9.GROUP

GROUP BY 字段(统计函数)

HAVING 对group结果过滤

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

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

相关文章

开源OCR免费助力法律文档数字化,提升文档管理效率

一、在法律行业&#xff0c;每天需要处理大量纸质文件&#xff0c;从合同到判决书&#xff0c;手动录入不仅费时&#xff0c;还容易出错。为解决这一问题推出了一款免费开源的OCR智能识别平台&#xff0c;通过先进的光学字符识别&#xff08;OCR&#xff09;技术&#xff0c;将…

零售EDI:HornBach EDI 项目案例

HornBach 是一家总部位于德国的家居和建筑材料零售商&#xff0c;成立于1968年。它以大型仓储式商店而闻名&#xff0c;提供广泛的产品&#xff0c;包括建筑材料、园艺、家居装饰和工具等。 近期我们帮助HornBach的供应商W公司成功实现了与HornBach的EDI直连&#xff0c;除了满…

jupyter如何切换内核

01、写在前面 Jupyter是一个开源的交互式笔记本工具&#xff0c;支持多种编程语言&#xff0c;包括Python、R、Julia 等。它最初是作为IPython 笔记本的一个分支而开发的&#xff0c;后来逐渐发展成为一个独立的项目。Jupyter的名字来源于它支持的三种编程语言&#xff1a;Juli…

STM32ZET6-USART使用

一、原理说明 STM32自带通讯接口 通讯目的 通信方式&#xff1a; 全双工&#xff1a;通信时可以双方同时通信。 半双工&#xff1a;通信时同一时间只能一个设备发送数据&#xff0c;其他设备接收。 单工&#xff1a;只能一个设备发送到另一个设备&#xff0c;例如USART只有…

动态库实现lua网络请求GET, POST, 下载文件

DLL需要使用的网络封装 WinHttp异步实现GET, POST, 多线程下载文件_webclient post下载文件-CSDN博客文章浏览阅读726次。基于WinHttp封装, 实现异步多线程文件下载, GET请求, POST请求_webclient post下载文件https://blog.csdn.net/Flame_Cyclone/article/details/142644088…

牛客周赛65(C++实现)

比赛链接&#xff1a;牛客竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ 文章目录 1.超市1.1 题目描述1.2 思路1.3 代码 2. 雨幕2.1 题目描述2.2 思路2.3 代码 3.闺蜜3.1 题目描述3.2 思路3.3 代码 4. 医生4.1 题目描述4.2 思路4.3 代码 1.超市 1.1 题目描述 …

机器人技术革新:人工智能的强力驱动

内容概要 在当今世界&#xff0c;机器人技术与人工智能的结合正如星星与大海&#xff0c;彼此辉映。随着科技的不断进步&#xff0c;人工智能不仅仅是为机器人赋予了“聪明的大脑”&#xff0c;更是推动了整个行业的快速发展。回顾机器人技术的发展历程&#xff0c;我们会发现…

使用PostgreSQL进行高效数据管理

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 使用PostgreSQL进行高效数据管理 PostgreSQL简介 安装PostgreSQL 在Ubuntu上安装PostgreSQL 在CentOS上安装PostgreSQL 在macOS上…

为开源 AI 模型引入激励机制?解读加密 AI 协议 Sentient 的大模型代币化解决方案

撰文&#xff1a;Shlok Khemani 编译&#xff1a;Glendon&#xff0c;Techub News 古时候&#xff0c;中国人深信「阴阳」的概念——宇宙的每一个方面都蕴含着内在的二元性&#xff0c;这两种相反的力量不断地相互联系&#xff0c;形成一个统一的整体。就好比女性代表「阴」&a…

Hi3516/Hi3519DV500移植YOLOV5、YOLOV6、YOLOV7、YOLOV8开发环境搭建--YOLOV5工程编译移植到开发板测试--(5)

专栏链接如下&#xff1a; Hi3516/Hi3519DV500移植YOLOV5、YOLOV6、YOLOV7、YOLOV8开发环境搭建--安装Ubuntu18.04--&#xff08;1&#xff09; Hi3516/Hi3519DV500移植YOLOV5、YOLOV6、YOLOV7、YOLOV8开发环境搭建--安装开发环境AMCT、依赖包等--&#xff08;2&#xff09;…

【STM32】INA3221三通道电压电流采集模块,HAL库

一、简单介绍 芯片的datasheet地址&#xff1a; INA3221 三通道、高侧测量、分流和总线电压监视器&#xff0c;具有兼容 I2C 和 SMBUS 的接口 datasheet (Rev. B) 笔者所使用的INA3221是淘宝买的模块 原理图 模块的三个通道的电压都是一样&#xff0c;都是POWER。这个芯片采用…

HTML 标签属性——id、class、style 等全局属性详解

文章目录 1. id属性2. class属性3. style属性4. title属性5. lang属性6. dir属性7. accesskey属性8. tabindex属性小结HTML全局属性是一组可以应用于几乎所有HTML元素的特殊属性。这些属性提供了额外的功能和信息,使得网页开发者能够更好地控制元素的行为、样式和可访问性。 …

Python数据分析案例62——基于MAGU-LSTM的时间序列预测(记忆增强门控单元)

案例背景 时间序列lstm系列预测在学术界发论文都被做烂了&#xff0c;现在有一个新的MAGU-LSTM层的代码&#xff0c;并且效果还可以&#xff0c;非常少见我觉得还比较创新&#xff0c;然后我就分享一下它的代码演示一下&#xff0c;并且结合模态分解等方法做一次全面的深度学习…

C++泛型编程

一、什么是泛型编程 泛型编程 是一种编程范式&#xff0c;它通过编写可以处理多种数据类型的代码来实现代码的灵活复用。泛型编程主要通过模板来实现。 比如我们日常使用的容器类型vector就应用了模板来实现其通用性&#xff0c;我们在使用时可以通过传入型别创建对应的动态数…

ServletContext,Cookie,HttpSession的使用

ServletContext对象 ServletContext对象官方也称servlet上下文。服务器会为每一个Web应用创建一个ServletContext对象&#xff0c;这个对象全局唯一&#xff0c;而且Web应用中所有的Servlet都共享这个对象。 ServletContext对象的作用 相对路径转绝对路径 servletContext.g…

如何封装一个可取消的 HTTP 请求?

前言 你可能会好奇什么样的场景会需要取消 HTTP 请求呢&#xff1f; 确实在实际的项目开发中&#xff0c;可能会很少有这样的需求&#xff0c;但是不代表没有&#xff0c;比如&#xff1a; 假如要实现上述这个公告栏&#xff0c;每点击一个 tab 按钮就会切换展示容器容器中…

前端笔试新问题总结

记录总结下最近遇到的前端笔试新问题 目录 一、操作数组方法 1.Array.isArray(arr) 2.Object.prototype.toString.call(arr) "[object Array]" 3.arr instanceof Array 1&#xff09;跨帧问题 2&#xff09;修改Array.prototype 3&#xff09;模拟数组的对象…

玩转Hugging Face/魔搭社区/魔乐社区”教程

2.1 HF 平台 2.1.1 注册Hugging Face 平台 &#xff08;需要魔法上网&#xff09; Hugging Face 最初专注于开发聊天机器人服务。尽管他们的聊天机器人项目并未取得预期的成功&#xff0c;但他们在GitHub上开源的Transformers库却意外地在机器学习领域引起了巨大轰动。如今&…

Chrome与夸克谁更节省系统资源

在当今数字化时代&#xff0c;浏览器已经成为我们日常生活中不可或缺的一部分。无论是工作、学习还是娱乐&#xff0c;我们都依赖于浏览器来访问互联网。然而&#xff0c;不同的浏览器在性能和资源消耗方面存在差异。本文将探讨Chrome和夸克两款浏览器在系统资源消耗方面的表现…

【OJ题解】C++实现反转字符串中的每个单词

&#x1f4b5;个人主页: 起名字真南 &#x1f4b5;个人专栏:【数据结构初阶】 【C语言】 【C】 【OJ题解】 题目要求&#xff1a;给定一个字符串 s &#xff0c;你需要反转字符串中每个单词的字符顺序&#xff0c;同时仍保留空格和单词的初始顺序。 题目链接: 反转字符串中的所…