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

【MySQL】MySQL数据库结构与操作

目录

一. 数据库的概念

二. 数据库的分类

三. 初始MySQL数据库

四. 数据库操作

1)创建数据库

2)  查看数据库

3)选中数据库 

4)删除数据库 

五. SQL数据类型

1)整型和浮点型

 2)字符串类型

3)时间类型 

六. 表操作

1)创建表

2)查看表名

3)查看表结构

4)删除表


一. 数据库的概念

 数据库:用来管理数据的软件,可以对数据进行增删改查和保存

数据库存储和文件存储的区别 

  • 文件存储数据量小,数据库可以存储海量数据
  • 文件存储不方便数据的查询和管理,数据库可以对数据进行增删改查和高频读写
  • 文件存储的安全性低,备份复杂,数据库内置用户权限和加密,支持备份,监控等操作
  • 文件数据在程序中使用不方便,数据库在程序中使用时,调用即可
  • 数据库结构化存储,数据按预定义的模式进行组织,规范性更强
  • 文件半结构化/无结构化存储,数据没有固定的模式

数据库存储介质为磁盘或者内存,数据库磁盘存储的数据具有永久性,可以长期存储,如果数据库中的数据20多年,一次都没有打开过,那么有可能会出现丢失(数据库中的数据也并不是永远不变的,只是保存的时候久而已)

数据库可以提供远程服务,即通过远程连接来使用数据库,因此也称为数据库服务器 


二. 数据库的分类

 数据库大致分为两类:关系型数据库和非关系型数据库

关系型数据库

通过二维表将各个数据以及各个数据之间关系组织起来

常见的关系式数据库:MySQL,PostgreSQL,Oracle,SQL Server

非关系型数据库

使用键值对,文档,列族或图的方式将数据和数据之间的关系组织起来

常见的非关系式数据库:Redis、MongoDB、Cassandra、Neo4j

三. 初始MySQL数据库

 MySQL是一个客户端-服务器结构的程序,

发起请求的一端被称为客户端,被动接收通信的一方称为服务器

客户端和服务器之间的数据交互方式,就是通过网络进行交互

举例:客户端执行一条SQL语句,具体的实现过程

  • 首先客户端和服务器建立网络连接
  • 客户端输入密码,服务器进行身份验证,如果密码错误,直接断开连接,成功执行sql语句
  • 客户端发送SQL语句
  • 服务器收到SQL语句,对其进行解析和执行,执行成功后返回结果
  • 客户端会将返回的结果展现出来

客户端负责发起请求和展示结果,服务器专注于数据处理和存储。 (客户端和服务器也可以在一个主机上)


 MySQL使用硬盘来存储数据,数据的组织方式是:数据库和数据表

数据库

  • 可以将数据库理解为逻辑上的数据集合,
  • 一个MySQL服务器可以存在多个这种数据集合
  • 多个数据库之间是根据逻辑分开的,比如说一个数据库表示学生信息,一个数据库表示教务系统

数据表

  •  在一个数据表中,还可以存储不同的数据,这样的数据用数据表来进行存储
  • 这里的数据表类似于excel表格
  • 表的每一行都是一个数据/记录,表的每一行都有很多列,每一列称为一个字段

可以理解为:数据库 --> 数据表 – > 行 --> 列


四. 数据库操作

1)创建数据库

格式:CREATE DATABASE 数据库名CREATE DATABASE studentdatabase;
  • 这里的create 和database都是关键字,不能拼错
  • 数据库名可以随便起,但是不能和关键字重复
  • 不要忘记SQL语句,最后的;(英文)

 我们也可能在创建的时候,增加一些要求

CREATE DATABASE  
if not EXISTS studentdatabase
CHARSET utf8;

如果这个数据库不存在那么就创建,创建的字符编码为utf8; 

2)  查看数据库

格式:show DATABASES;
show DATABASES;

 

 一个服务器中的数据库名是不可以重复的

3)选中数据库 

格式:USE 数据库名;use studentdatabase;

数据库服务器上,有很多的数据库,后续的表操作是在数据库上进行的,数据表操作之前必须要选中数据库

4)删除数据库 

格式:DROP DATABASE 数据库名;DROP DATABASE studentdatabase;

注意:删除操作非常的危险!!!删除操作是不可逆的,一旦执行,数据将永久丢失,无法恢复。系统不会提供回收站或临时存储功能,也不会保留任何备份副本。


五. SQL数据类型

在MySQL的数据表中,会存在很多列,每一列都会对应一种数据类型 

1)整型和浮点型

数据类型存储大小说明
BIT[(M)]可变(1~64位)二进制位类型,M 指定位数,默认为 1。存储 0 到 2^M-1 的值。
TINYINT1 字节小整数,有符号范围 -128127,无符号 0255。
SMALLINT2 字节中等整数,有符号范围 -3276832767,无符号 065535。
INT4 字节标准整数,有符号范围 -21474836482147483647,无符号 04294967295。
BIGINT8 字节大整数,有符号范围 ±9.2e18,无符号 0~1.8e19。
FLOAT[(M,D)]4 字节单精度浮点数,M 为总位数,D 为小数位数。精度可能丢失(适合近似值)。
DOUBLE[(M,D)]8 字节双精度浮点数,M 为总位数,D 为小数位数。精度更高(适合较大范围的浮点数)。
DECIMAL(M,D)M/D 最大值 +2 字节精确数值类型,M 为总位数,D 为小数位数。适合金融、货币等高精度场景。

MySQL中的数据类型可以指定为无符号型,但是不建议使用,无符号数据使用起来很危险,很有可能一个减法操作会出现巨大的值,导致系统死机

DECIMAL(M,D)这种数据类型,在使用的时候计算会比较慢,但是精准

 2)字符串类型

数据类型存储大小说明
VARCHAR(L)L+1 字节变长字符串,L 为最大字符数(最大 65535)。
TEXT可变大文本数据(如文章内容),最大 65,535 字符。
BLOB可变二进制大对象,存储图片、文件等二进制数据。

这里VARCHAR(L)和TEXT数据类型存储的是字符数据(一个汉字)

VARCHAR(L)这里的空间分配是动态的,一开始会先分配一个较小的空间,会根据存储的内容动态调整,但是最多不会超过L大小 

BLOB存储的是二进制数据,可以存储任意数据(图片,视频等)

3)时间类型 

数据类型存储大小说明
DATETIME[(fsp)]8 字节日期和时间组合,格式 YYYY-MM-DD HH:MM:SS,可带微秒(fsp=0~6)。
TIMESTAMP[(fsp)]4字节时间戳,基于 Unix 时间戳,自动更新(如 ON UPDATE CURRENT_TIMESTAMP)。

这里获取时间戳尽量使用DATATIME类型(2099年),TIMESTAMP这个数据类型表示的范围限度是到2038年,如果超过2038年,就表示不了时间


六. 表操作

表操作是在数据库的基础上进行的,进行表操作之前,必须要选中数据库 

1)创建表

格式:CREATE TABLE student(
列名 类型,列名 类型……
);CREATE TABLE student(
id int ,
name VARCHAR(10),
sex VARCHAR(1)
);
  • 创建表的时候必须要描述出表包含哪些列,每个列的类型,后续数据存放的时候,也要遵守这条规则。
  • 在创建的时候,就明确了列的类型,方便对数据的检查和校验
  • 这里遇到;才算一个SQL语句结束,在次之前都是换行

 也可以在创建表的时候,增加一些备注

CREATE TABLE student(
id int COMMENT '学号',
name VARCHAR(10) COMMENT '姓名',
sex VARCHAR(1) COMMENT '性别'
);

这样的注释,只是作为列的注释 

2)查看表名

格式:show tables;show tables;

 

3)查看表结构

格式:desc 表名;desc student;

  • 可以查询出表的每个列信息
  • 这里的null下面为YES表示可以为空
  • null表示这个单元格是空的,什么也没有存

4)删除表

格式:drop table 表名;drop table student;

注意:删除操作非常的危险!!!删除操作是不可逆的,一旦执行,数据将永久丢失,无法恢复。系统不会提供回收站或临时存储功能,也不会保留任何备份副本。

删除数据库操作一般会提醒,程序员可能会进行一些操作,挽救回来一点,但是删除表不会有任何提示,可能等你反应过来的时候,已经干干净净了


 整个SQL语句大小写区分并不严格,大写小写都行,都可以被正确执行

相关文章:

  • QT 插槽实现
  • WebpackVite总结篇与进阶
  • Kotlin 中的 Unit 类型的作用以及 Java 中 Void 的区别
  • 2025深圳杯D题法医物证多人身份鉴定问题四万字思路
  • Rodrigues旋转公式-绕任意轴旋转
  • FPGA图像处理(六)------ 图像腐蚀and图像膨胀
  • 智能手表整机装配作业指导书(SOP)
  • 贪吃蛇游戏排行榜模块开发总结:从数据到视觉的实现
  • AI 编程新时代!字节 Seed-Coder 重磅登场
  • 在Babylon.js中实现完美截图的艺术:包含Canvas和HTML覆盖层
  • 在Flutter上如何实现按钮的拖拽效果
  • SQL 索引优化指南:原理、知识点与实践案例
  • cocos creator 3.8 下的 2D 改动
  • C++的历史与发展
  • 特征偏移、标签偏移、数量偏移、概念漂移分别是什么?
  • 共享代理IP带宽受限影响大吗
  • 【经验总结】【乘法替换方法】
  • 无线定位之四 SX1302 网关源码 thread_jit 线程详解
  • Linux文件编程——标准库函数(fopen等)和系统调用函数(open等)的区别
  • 51c嵌入式~电路~合集27
  • 中国人民抗日战争暨世界反法西斯战争胜利80周年纪念活动标识发布
  • 哈马斯表示已释放一名美以双重国籍被扣押人员
  • “无锡景・江南韵”:中国评弹艺术在尼日利亚收获众多粉丝
  • 巫蛊:文化的历史暗流
  • 当我们提起拉动消费时,应该拉动什么消费?
  • 让“五颜六色”面孔讲述上海故事,2025年上海城市推荐官开启选拔