【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 的值。 |
TINYINT | 1 字节 | 小整数,有符号范围 -128127,无符号 0255。 |
SMALLINT | 2 字节 | 中等整数,有符号范围 -3276832767,无符号 065535。 |
INT | 4 字节 | 标准整数,有符号范围 -21474836482147483647,无符号 04294967295。 |
BIGINT | 8 字节 | 大整数,有符号范围 ±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语句大小写区分并不严格,大写小写都行,都可以被正确执行