1、数据库概念和mysql表的管理

数据库概念

datebase:用来组织,存储,管理数据的仓库。

数据库的管理系统:DBMS(用来实现对数据的有效组织、关系和存取的系统软件)

关系型和非关系型数据库

关系型数据库:mysql、oracle

非关系型数据库:redis

关系型数据库

常见关系型数据库:mysql、oracle、sql-server(windows)、postgresql(大象数据库)、influsdb

关系型数据库的核心:是一张表格,数据存储在表格中

表有行和列:

列:列又叫字段,描述对象的属性

行:描述对象的信息

数据是保存在表里面的,关系型数据库的表与表之间可以是有关联的,数据之间也是有关联的。

一个关系型数据库可以有多个库,库里面保存的是表,表里面有数据。每个库是独立的。

数据库当中,多张表存储在库中,通过表与表之间的字段进行关联。

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

非关系型数据库

有库,库里面保存的键值对,key————>value的形式进行保存

如:set   test1=1;键是test1,值是1

非关系型数据库:redis——>用户第一次访问数据——>redis上生产一个缓存的键值对——>访问缓存键值对

非关系型数据库,可以高并发读写,对海量依旧可以保持高效的存储和访问,网且也实现高可用的架构。

es  elasttic  search:索引型非关系数据库

redis:缓存型非关系数据库

prometheus:时序性的非关系数据

monggoDB:文档型非关系数据库

mysql数据库

数据类型

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

int(n):这一列数据类型是整数,n 表示数据的长度限制

char():保存字符串类型的数据,保存固定长度的字符

  • char的字段,无论是否有值,char都会占据4个字节(硬盘空间),如:存储'ab'是4个字节。

varchar():保存字符串类型的数据,保存可变长度的字符

  • varchar是按照实际的字符长度进行记录,但是在结尾会多一个字节,如:存储'ab'是3个字节。
  1. varchar比char节省磁盘空间
  2. char比varchar读写速度要快,因为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:存储图像或者多媒体的文件

数据库的存储引擎和事务

mysql:innoDB,支持事务,支持行级锁定,支持外键的存储引擎。

事务由四个特性组成:

1、原子性:事务是整个数据库工作的最小单位,不可分割的,要么全部执行成功,要不全部失败,所有的已成功的都会被失败。

2、一致性:事务执行前后,数据的完整性约束是不能被破坏的,满足所有条件约束的情况下,事务才能被提交。

3、隔离性:每个事务执行的过程是隔离的,互相不能被干扰,并非事务之间是独立的。如果隔离性不好会发生以下结果:

如果隔离性不好会发生以下结果:

  • 脏读:A事务在访问数据并且修改了数据,但是修改的结果没有提交到数据库,B事务也访问了这条数据,而且看到了未提交的结果。
  • 不可重复读:A事务两次读取数据,过程中B事务修改了该数据,,导致A事务两次查询的结果不一致,这就是不可重复读,不能读到相同的数据。
  • 幻读:A事务对数据进行了修改,B事务也对该数据进行了修改,A事务发现数据还是没有修改,产生了幻觉。

mysql支持事务四种隔离级别:

  • 未提交读:允许脏读,可以看到未提交的修改   read   uncommitted
  • 提交读:read  committed  提交读,只允许看到修改提交之后的数据
  • 可重复读:mysql的默认隔离级别,一个事务,在执行两次select语句,保证得到相同的结果
  • 串行读:后一个事务必须等待前一个完成之后才能继续,在这个过程中表会完全锁住,读写都会阻塞。

4、数据的持久性:事务一旦被提交,将永久性的保存到数据库中,保证数据不会丢失。

事务:包含插入数据、更新数据、删除数据。

数据库的管理语句

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

数据库常见名词:

  • 数据库:database
  • 表:table
  • 行:row
  • 列:column
  • 索引:index
  • 试图:view
  • 用户:user
  • 权限:privilege
  • 存储过程:procedure

sql语句的规范:

1、sql语句不区分大小写,但是建议用大写;sql可以是单行也可以多行,默认是以 ‘ ;’ 结尾。

如果是多行一个sql语句,关键词必须要在一行。

2、库名、表名,列名和行的值,是严格区分大小写的

3、命名规则:

表、库都必须以字母为开头,不要使用sql的保留字段,table   select   show   database

表名和库名尽量不要使用特殊字符

sql语句的分类

1、DDL:数据库定义语言,创建数据库,表示、索引等的语句。

  • create:创建
  • drop:删除
  • ALTER:修改(只能对表)

2、DML:数据库操作语言,对表里面的数据进行管理

  • select:查
  • update:更新数据
  • insert:插入
  • delete:删除数据

3、DQL:查询语句,查询数据表中的符合条件的数据

  • select:查

4、DCL:数据库控制语句,对数据库用户权限进行控制

  • GRANT:赋权
  • REVOKE:取消权限

5、TCL:事务控制语句

  • commit:提交
  • rollback:回滚
  • savepoint:保存点,用来回滚

实操

在Linux上基本操作

查看库和使用库

查看表以及查看表的结构

不进入数据库查看表的数据

创建库和表—create

  • null,表示什么都没有,什么都不存在。
  • 空值,表示也是有数据,也是值。

避免创建重复的表

 删除表和数据库—drop

查看表和状态—select,desc

  • key:键,主键或者外键
  • default:表示如果插入数据时,没有写数据,自动添加字段
  • extra:提供附加的信息,自增长等待,自动加入时间

select查询进阶用法

查看指定范围—limit

  • 表示查看从第1行后1行开始,至后面4行,即2-5行
数据去重—distinct

  • 需要去重的类型越多,效果越差
模糊查询—like

管理表数据

插入表的数据—insert  into

更新表的数据—update

  • 表示id=1的所有行,name都改成李事宇

删除表中的数据行—delete和truncate

  • 表示删除score=92.7的所有行数据

delete 和 truncate 区别

如使用delete之前,自增长到了5,删除之后,再建立新的数据便是从6开始。

truncate:速度更快

对表的结构进行修改—Alter

1、修改表名

2、增加列

3、修改列的类型

4、修改列的名称和类型

5、删除列

mysql当中的六个约束

1、主键约束:primary  key,用于标识表中的每一行,主键的字段的值必须是唯一的,且不能为空,且一个表只能有一个主键。

2、外键约束:foreign  key,用来建立表于表之间的关系。一张表的外键要和另一张表的主键的值匹配,保证数据的引用完整性。

3、非空约束:not  null,插入或者更新的操作这个字段必须要有值。

4、唯一性约束:unique  key,类似于主键的唯一性,但是一个表可以有多个唯一性约束。

5、默认值约束:default

6、自增约束:auto_increment,一般和主键一起使用,唯一性和数据类型都有要求。

这时候从表的crad_id已经和主表的crad_id关联上了,从表crad_id的值只能与主表的crad_id一致。

也可以在行尾申明主键

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

自动生成当前时间

删除主键

 自动填充—zerofill

zerofill:不满足4位的前面会用0来自动填充

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

70 mysql 中事务的隔离级别

前言 mysql 隔离级别有四种 未提交读, 已提交读, 可重复度, 序列化执行 然后不同的隔离级别存在不同的问题 未提交读存在 脏读, 不可重复度, 幻觉读 等问题 已提交读存在 不可重复度, 幻觉读 等问题 可重复读存在 幻觉读 等问题 序列化执行 没有以上问题 然后 我们这里…

【FFmpeg】解封装 ① ( 封装与解封装流程 | 解封装函数简介 | 查找码流标号和码流参数信息 | 使用 MediaInfo 分析视频文件 )

文章目录 一、解封装1、封装与解封装流程2、解封装 常用函数 二、解封装函数简介1、avformat_alloc_context 函数2、avformat_free_context 函数3、avformat_open_input 函数4、avformat_close_input 函数5、avformat_find_stream_info 函数6、av_read_frame 函数7、avformat_s…

Nginx(Linux之Ubuntu)

1.1.什么是Nginx Nginx(发音为"engine x")是由俄罗斯开发者Igor Sysoev创建的一款轻量级、高性能的Web服务器。它首次发布于2004年,如今已成为全球最受欢迎的Web服务器之一。Nginx以其卓越的性能和灵活性而闻名,适用于…

使用Docker启用MySQL8.0.11

目录 一、Docker减小镜像大小的方式 1、基础镜像选择 2、减少镜像层数 3、清理无用文件和缓存 4、优化文件复制(COPY和ADD指令) 二、Docker镜像多阶段构建 1、什么是dockers镜像多阶段构建 1.1 概念介绍 1.2 构建过程和优势 2、怎样在Dockerfil…

【微信小程序开发 - 3】:项目组成介绍

文章目录 项目组成介绍项目的基本组成结构小程序页面的组成部分JSON配置文件的作用app.json文件project.config.json文件sitemap.json文件页面的 .json 配置文件新建小程序页面修改项目首页 XWML模板XWML 和 HTML 的区别 WXSS样式WXSS 和 CSS 的区别 .js文件 项目组成介绍 项目…

springboot的项目创建和常用注解

创建springboot项目&#xff1a; 首先更改一下url&#xff0c;点击小齿轮改成https://start.aliyun.com/ 首先在选模块的时候选上SpringWeb&#xff0c;然后jdk1.8对应的springboot版本是2.6.13或者2.7.6 pom.xml: 用1.8的jdk&#xff0c;mybatis的包版本不能太高 <!-- …

flask_socketio 以继承 Namespace方式实现一个网页聊天应用

点击进入上一篇&#xff0c;可作为参考 实验环境 python 用的是3.11.11 其他环境可以通过这种方式一键安装&#xff1a; pip install flask3.1.0 Flask-SocketIO5.4.1 gevent-websocket0.10.1 -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple pip list 详情如下&am…

笔记本重装系统教程【详细教程】

一、装机前说明 各位有装机需求的伙伴&#xff0c;请根据自己的电脑配置选择合适操作系统&#xff0c;可以实现自己装机的伙伴&#xff0c;相信大家这点可以确认好。 ———————————————————————— 我的配置&#xff1a; 我的电脑是联想拯救者lenovoY7000…

uniapp入门 01创建项目模版

0安装 hbuilder x 标准版 1.创建模版工程 2.创建官方 案例工程 index.uvuewen 文件解析 <!-- 模版 标签 --> <template><view></view></template><!-- 脚本 --> <script>export default {data() {return {}},onLoad() {},methods:…

ARCGIS国土超级工具集1.2更新说明

ARCGIS国土超级工具集V1.2版本&#xff0c;功能已增加至47 个。在V1.1的基础上修复了若干使用时发现的BUG&#xff0c;新增了"矢量分割工具"菜单&#xff0c;同时增加及更新了了若干功能&#xff0c;新工具使用说明如下&#xff1a; 一、勘测定界工具栏更新界址点成果…

Vue3源码笔记阅读1——Ref响应式原理

本专栏主要用于记录自己的阅读源码的过程,希望能够加深自己学习印象,也欢迎读者可以帮忙完善。接下来每一篇都会从定义、运用两个层面来进行解析 定义 运用 例子:模板中访问ref(1) <template><div>{{str}}</div> </template> <script> impo…

[react] 优雅解决typescript动态获取redux仓库的类型问题

store.getState()是可以获取总仓库的 先拿到函数的类型 再用ReturnType<T> 它是 TypeScript 中的一个内置条件类型&#xff0c;用于获取某个函数类型 T 的返回值类型 代码 // 先拿总仓库的函数类型type StatefuncType typeof store.getState;//再拿函数类型T的返回值类…

【Qt】QWidget中的常见属性及其功能(一)

目录 一、 enabled 例子&#xff1a; 二、geometry 例子&#xff1a; window fram 例子 &#xff1a; 四、windowTiltle 五、windowIcon 例子&#xff1a; qrc机制 创建qrc文件 例子&#xff1a; qt中的很多内置类都是继承自QWidget的&#xff0c;因此熟悉QWidget的…

R语言的字符串操作

【图书推荐】《R语言医学数据分析实践》-CSDN博客 《R语言医学数据分析实践 李丹 宋立桓 蔡伟祺 清华大学出版社9787302673484》【摘要 书评 试读】- 京东图书 (jd.com) R语言医学数据分析实践-R语言的数据结构-CSDN博客 在R语言中&#xff0c;字符串是一种表示文本数据的数…

webGL硬核知识:图形渲染管渲染流程,各个阶段对应的API调用方式

一、图形渲染管线基础流程概述 WebGL 的图形渲染管线大致可分为以下几个主要阶段&#xff0c;每个阶段都有其特定的任务&#xff0c;协同工作将 3D 场景中的物体最终转换为屏幕上呈现的 2D 图像&#xff1a; 顶点处理&#xff08;Vertex Processing&#xff09;阶段&#xff1…

《深入浅出Apache Spark》系列⑤:Spark SQL的表达式优化

导读&#xff1a;随着数据量的快速增长&#xff0c;传统的数据处理方法难以满足对计算速度、资源利用率以及查询响应时间的要求。为了应对这些挑战&#xff0c;Spark SQL 引入了多种优化技术&#xff0c;以提高查询效率&#xff0c;降低计算开销。本文从表达式层面探讨了 Spark…

创建项目以及本地仓库和远程仓库并上传项目

创建项目以及本地仓库和远程仓库并上传项目 其详细流程如下&#xff1a; 1、本地创建项目 2、创建本地仓库&#xff08;若使用idea在创建项目时选择了创建.git本地仓库&#xff0c;则此步骤省略&#xff09; 进入到你需要上传的项目的目录下&#xff0c;右键找到Git Bah He…

快速解决oracle 11g中exp无法导出空表的问题

在一些生产系统中&#xff0c;有些时候我们为了进行oracle数据库部分数据的备份和迁移&#xff0c;会使用exp进行数据的导出。但在实际导出的时候&#xff0c;我们发现导出的时候&#xff0c;发现很多空表未进行导出。今天我们给出一个快速解决该问题的办法。 一、问题复现 我…

MySQL八股-MVCC入门

文章目录 当前读&#xff08;加锁&#xff09;快照读&#xff08;不加锁&#xff09;MVCC隐藏字段undo-log版本链A. 第一步B.第二步C. 第三步 readview MVCC原理分析RCA. 先来看第一次快照读具体的读取过程&#xff1a;B. 再来看第二次快照读具体的读取过程: RR隔离级别 当前读…

【已解决】启动此实时调试器时未使用必需的安全权限。要调试该进程,必须以管理员身份运行此实时调试器。是否调试该进程?

【已解决】启动此实时调试器时未使用必需的安全权限。要调试该进程&#xff0c;必须以管理员身份运行此实时调试器。是否调试该进程? 目录一、前言二、具体原因三、解决方法 目录 报错截图 一、前言 进行应用程序开发时&#xff0c;需要对w3wp进行附加调试等场景&#xff…