数据库选型sql和nosql

news2024/12/24 2:22:40

一、数据库选型sql和nosql:

1.1关系型数据库sql和非关系型数据库nosql
在这里插入图片描述
1.2关系型数据库特点:
在这里插入图片描述

  • 数据结构化存储在二维表中
  • 支持事务的原子性A,一致性C,隔离性I持久性D 特性
  • 支持使用SQL语言对存储在其中的数据进行操作

1.3关系型数据库的适用场景:

  • 数据之间存在着一定关系,需要关联查询数据的场景
  • 需要事务支持的业务场景
  • 需要使用SQL语言灵活操作数据的场景。

1.4非关系型数据库特点:
在这里插入图片描述

  • 存储结构灵活,没有固定的结构
  • 对事务的支持比较弱,但对数据的并发处理性能高
  • 大多不使用SQL语言操作数据

1.5非关系型数据库使用场景:

  • 数据结构不固定的场景。
  • 对事务要求不高,但读写并发比较大的场景
  • 对数据的处理操作比较简单的场景

1.6 选择数据库的原则:

  • 数据库使用的广泛性
  • 数据库的可扩展性
  • 数据库的安全性和稳定性
  • 数据库所支持的系统
  • 数据库的使用成本

1.7MySQL数据库的可扩展性:

  • 支持基于二进制日志的逻辑复制
  • 存在多种第三方数据库中间层,支持读写分离及分库分表

1.8MySQL的安全性和稳定性:

  • MySQL主从复制集群可达到99%的可用性
  • 配合主从复制高可用架构可以达到99.99%的可用性
  • 支持对存储在MySQL的数据进行分级安全控制。
  • 支持Liunx系统,Windows系统

1.9 MySQL的使用成本:

  • 社区版本免费
  • 使用人员众多,可以方便的获取技术支持

二、数据库的设计:

逻辑设计:
1.宽表模式:把所有字段都放在一个表中存储
1.1存在问题:

  • 数据插入异常:部分数据由于缺失主键信息而无法写入表中
  • 数据更新异常:修改一行中某列的值时,同时修改了多行的数据
  • 数据删除异常:删除某一行数据时不得不删除另一行数据
  • 数据沉余:相同的数据在一个表中出现了多次
    1.2应用场景:
  • 适合用在数据报表中,这样在数据量大时,不需要连表,查询数据快
    2.数据库设计范式:
  • 第一范式:表中所有列属性不可以再分(比如:联系方式包含邮箱,电话,微信等等,所以联系方式不能作为表属性
  • 第二范式:表中必须存在业务主键,并且非主键依赖于全部业务主键
  • 第三范式:表中的非主键列之间不能相互依赖
    3.mysql常见的存储引擎:
    在这里插入图片描述
    注:

存储引擎:存储数据,为存储的数据建立索引,更新,查询数据。因为在关系数据库中数据以表的形式存储,所以存储引擎也可以称为表类型。
查看当前mysql数据库支持哪些存储引擎:show engines;或者show variablkes like 'have%‘;

3.1 InnoDB存储引擎的特点:

  1. 事务型存储引擎支持ACID
  2. 数据按主键聚集存储
  3. 支持行级锁及MVCC
  4. 支持Btree和自适应Hash索引
  5. 支持全文和空间索引

三、sql的数据类型:

1.整数类型:
在这里插入图片描述
2.浮点类型
在这里插入图片描述
在这里插入图片描述
3.时间类型:
在这里插入图片描述
4.字符串类型:
在这里插入图片描述
注:选择数据类型要注意下面几点:

  1. 优先选择符合存储数据需求的最小数据类型
  2. 谨慎使用enum,text字符串类型
  3. 和财务相关的数值型数据,必须使用decimal类型

四、命令行命令:

1,连接mysql服务器

mysql -uroot -p -hlocalhost

在这里插入图片描述

2.不进去mysql服务器交互,直接显示查询结果:

mysql -uroot -p -hlocalhost -e "select user()"

在这里插入图片描述

五、sql语言:

1.什么是SQL:一种描述性语言
2.SQL语言的作用:对存储在RDBMS中的数据进行增删改查等操作
3.常用的SQL语言的种类:DCL(授权语句,创建用户语句)、DDL(建立表语句,修改表结构语句)、DML(操作数据语句,增删改查语句)、TCL(事务语句,开启,关闭事务语句)
4.DCL(Data Control Language):

  • 建立数据库账号:create user
  • 对用户授权:grant
  • 收回用户权限:revoke
    4.1建立程序使用的数据库账号:建立一个用户mc_class可以在192.168.1.下的所有网段下通过密码1233333登录
create user mc_class@'192.168.1.%' identified with 'mysql_native_password' by '1233333'

4.2.给账号授权:

  • 向表中插入数据的权限:insert
  • 删除表中数据的权限:delete
  • 修改表中数据的权限:update
  • 查询表中数据的权限:select
  • 执行存储过程中的权限:execute

4.3.查看当前数据库有哪些权限:

show privileges\G

在这里插入图片描述
4.4.grant给数据库用户权限:
在这里插入图片描述
注意:

  • 使用grant授权的数据库账户必须存在
  • 用户使用grant命令授权必须具有grant option的权限
  • 获取命令帮助 \h grant

4.5.回收用户权限:
在这里插入图片描述

5.DDL(data Definition language)

  • 建立/修改/删除数据库:create/alter/drop database
  • 建立/修改/删除表:create/alter/drop table
  • 建立/删除索引:create/drop index
  • 清空表:truncate table 表名称
  • 重命名表:rename table 表名称1 to 表名称2
  • 建立/修改/删除视图:create/alter/drop view

5.1创建数据库:

create database imc_db;

5.2创建数据库表:
临时表(只有当前线程可以用,退出了账号后临时表会自动被删除)

在这里插入图片描述
5.3 创建与删除索引:
在这里插入图片描述
6. *DML(Data Manipulation language): *
6.1 给表新增数据: insert into

insert into 表名(属性名,属性名) values(内容,内容);
insert into 表名(表名,表名)
select  1,id  from 表名;

6.2 删除表中的数据: delete


6.3 修改表中的数据: update
6.4 查询表中的数据: select

六、比较运算符:

在这里插入图片描述
在这里插入图片描述
注意:任何运算符与null运算结果都是null

七、多表连接:

在这里插入图片描述

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

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

相关文章

pwn(7.3)

Nc 通过nc,我们可以链接到对方的服务器 再用过Linux的命令可以查找到我们想要的信息 Ret2txt 先查壳 没开任何保护,拿IDA看看 很明显的栈溢出,看到/bin/sh地址 解释,通过汇编语言我们知道调用函数使用call命名,c…

HNU-小学期工训-STC-B案例测试作业

对于一些案例,这里列举一些 流水灯 八位数码管动态扫描 八位数码管流水灯(有BSP版本) 八位数码管滚动显示(有BSP版本) 可变亮度的数码管显示(有BSP版本) 扫描频率可改变的电子钟 按键消抖计数(有BSP版本) 三按键测试(有BSP版本) 霍尔磁场检测(有BSP版本) 数…

精通ES+ES大数据查询常见的疑难杂症的解决与实现

目录 什么是BoolQueryBuilder? 简单的复合查询 RestHighLevelClient中的matchQuery与matchPhraseQuery与termQuery的在实际使用中的不同 ES是否能在类型为text的字段的内部使用keyword,如果能这样做的含义是什么? 什么是ES多字段&#xf…

BES 的BLE MTU设置

1 BES BLE MTU 一个默认的MTU大小,通常为23字节,通过协商,可以使用更大的MTU,最高可达512字节, 2 协商方法

leetcode146.手撸 LRU 算法(java)

LRU 缓存 LRU 缓存题目描述LRU 介绍LRU 算法设计代码实现 单调栈算法 LRU 缓存 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/lru-cache 题目描述 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实…

HNU-小学期工训-STC-B测试记录表

说明1“分类I”为检测电路板硬件测试案例,“分类ⅡI、Ⅲ、IV”为不同层次综合应用案例。"分类1、Ⅱ、Ⅲ”必做,“分类TV”选做。 说明2:“测试/故障现象记录”栏:记录实际测量效果并与案例说明对比,并记录;有故障时,记录所见…

《AutoSar实战》读写DID之一:CDD准备

文章目录 前言一、1.新建DID1,使用 **CANdelaStudio** 软件打开工程中的CDD文件并创建DID1) 创建DID2) 详细配置DID3)配置读写服务权限 二、同步更新工具链配置1 更新文件并检查1) 更新CDD文件2)检查更新结果 总结 前言 本章节主…

大型语言模型与知识图谱协同研究综述:两大技术优势互补

机器之心报道 编辑:杜伟 多图综述理清当前研究现状,这篇 29 页的论文值得一读。 大型语言模型(LLM)已经很强了,但还可以更强。通过结合知识图谱,LLM 有望解决缺乏事实知识、幻觉和可解释性等诸多问题&am…

记录一下kibana启动连接报错问题(kibana server is not ready yet)

记录一下kibana启动连接报错问题(kibana server is not ready yet) 今天启动kibana出现该问题 先去看了看是否是elasticsearch连接出错 启动了容器 docker start elasticsearch docker start kibana进入了kibana容器 docker exec -it kibana bash进行了下面的操作&#xf…

注册微信小程序平台安装微信小程序开发工具(详细教程)

首先我们先去微信小程序平台注册账号,下面是网址 首页 | 微信开放社区 进入后,使用手机扫描登录,然后,选择小程序,选择个体——填写个人信息——进入到开发者平台(相信这里对一个开发者很简单了吧&#xff…

API安全测试检查项小结

现如今开发基本上都是前后端分离,相比前端,后端的测试是最容易发现一些底层bug, 修复成本也低。今天主要聊聊接口的安全测试,以及常见的漏洞。 一、逻辑越权类 可以分为两类:平行越权:权限类型不变,权限对…

单线程JavaScript为何如此高效

什么是js执行机制 JavaScript 的执行机制指的是 JavaScript 代码在运行时的工作方式和顺序。它涉及以下几个关键概念: 单线程:JavaScript 是一门单线程的编程语言,意味着它只有一个主线程用于执行代码。这意味着 JavaScript 中的代码是按顺序…

编程(43)----------ConcurrentHashMap

在多线程中使用哈希表, 首先是不能使用HashMap的. 因为其本身并非线程安全. 与其相反HashTable则是安全的. 其原因在于本身给关键的方法加了锁. 但即便如此, 与HashTable相比, 更推荐使用ConcurrentHashMap. 其原因在于, 它在HashTable的基础上做了较多的优化: 上述提到, Hash…

自从前端用上了低代码,开发速度直接起飞

作为前端工作人员,我们都深知在这个快速发展的时代里,不断学习和掌握前沿技术是至关重要的。随着互联网的不断革新和新兴技术的崛起,我们需要保持敏锐的触角,紧跟潮流,才能在竞争激烈的市场中保持领先地位。 一直以来&…

MAC电脑垃圾好用的文件清理软件CleanMyMac X

古语云:“工欲善其事,必先利其器。”因此,一个运行流畅的Mac更能使我们的工作事半功倍。但又是什么导致电脑的运行不流畅呢? 其实这大多还是缓存垃圾过多、内存不足的原因。尝试安装了许多的垃圾文件清理软件,垃圾没有…

HashMap 为什么不能一边遍历一遍删除

前段时间,同事在代码中 KW 扫描的时候出现这样一条: 上面出现这样的原因是在使用 foreach 对 HashMap 进行遍历时,同时进行 put 赋值操作会有问题,异常 ConcurrentModificationException。 于是帮同简单的看了一下,印象…

为什么Qt成为工业软件开发的首选框架?

工业软件开发中使用Qt的主要原因有以下几点: 跨平台性:Qt是一个跨平台的C应用程序开发框架,可以在多个操作系统上运行,包括Windows、macOS、Linux等。这种跨平台性使得开发人员能够使用相同的代码库创建适用于不同操作系统的应用程…

Github-Readme-Stats 简明教程

注:本篇文章首发于 博客园sarexpine 为保持阅读的舒适性,可以选择移步至 博客园sarexpine 阅读,日后的文章将首发于 博客园sarexpine 平台,谢谢! 1. 更新 Readme 文件 在你想要放置 Readme-WakaTime 的位置中放置以下…

Nginx【Nginx场景实践(动静分离、动静分离实战、缓存机制)】(十)-全面详解(学习总结---从入门到深化)

目录 Nginx场景实践_动静分离 Nginx场景实践_动静分离实战 Nginx场景实践_缓存机制 Nginx场景实践_动静分离 Nginx动静分离简单来说就是把动态和静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离。严格意义上说应该是动态请求和静态请求分开&…

@Transaction事务导致的mysql连接耗尽源码分析

背景: Transaction注解是我们在日常的写代码过程中最常使用的事务注解了,本文就从spring源码的角度解析下这个注解的执行过程,以便分析为什么使用事务比正常的单sql执行更容易导致连接池耗尽 源码追踪: 本文假定使用PROPAGATIO…