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

智警杯备赛--数据库管理与优化

MySQL概述与安装

 ps:这里的环境是的centos 7然后装了mysql,备赛系统要充钱,下面会讲一下mysql的安装,参照的是下面两篇博客

VMware 虚拟机安装CentOS镜像超详细步骤 (含下载地址) - fly龙御沧海 - 博客园

Centos 7 虚拟机安装 MySQL_centos mysql my.cnf.d-CSDN博客

概述

数据库

数据库是一个以某种有组织的方式存储的数据集合,它是一个按数据结构来存储和管理数据的计算机软件系统。理解数据库的一种最简单的办法是将其想象为一个文件柜,这个文件柜只是一个存储数据的空间,而数据库就是这么一个空间

数据库管理系统(Database Management System, DBMS)是用于创建、管理、和维护数据库时所使用的软件,用以管理数据库,一定程度上,用户都是在操作DBMS,所以日常的数据库概念一般就是指DBMS

常见的数据库软件DBMS有甲骨文的Oracle DB、微软的Access、MongoDB等,还有接下来要介绍的MySQL

MySQL

MySQL数据库软件,也是使用最常用的数据库管理语言:结构化查询语言(SQL),进行数据库管理和操作

优点:

  • MySQL是开放源代码的数据库,任何人都可以获得该数据库的源代码。
  • MySQL能够实现跨平台操作,可以在Windows、UNIX、Linux和Mac OS等操作系统上运行。
  • MySQL数据库是一款自由软件,大部分应用场景下都是免费使用。
  • MySQL功能强大且使用方便,社区生态繁荣,有诸多学习资料。

   MySQL还有很多自己的特性。

   MySQL的应用极其广泛,所以很多中小型网站都使用 MySQL作为其数据库系统

安装

检测系统是否自带安装MySQL

rpm -qa | grep mysql

安装前,可以先检测系统是否自带安装MySQL,如果有,可以选择进行卸载

安装配置MySQL

使用rpm -ivh安装MySQL

rpm -ivh语法:

rpm -ivh [rpm包名]

其中:

rpm意思是软件包管理器

ivh意思是软件包管理器的选项,其中i表示安装,v表示显示安装过程,h表示显示进度

rpm包名是操作的对象


更改MySQL密码

mysql -uroot

更改密码

quit

关闭

数据库的创建与管理

语法1

MySQL安装后,系统自动地创建information_schema和MySQL数据库,MySQL把有关数据库的信息存储在这两个数据库中。如果删除了这些数据库,MySQL就不能正常工作。

数据库名:在文件系统中,MySQL的数据库存储区将以目录方式表示MySQL的数据库。因此,命令中的数据库名字必须符合操作系统文件夹命名规则。值得一说的是,在MySQL中不区分大小写,在一定程度上方便使用。如果指定了CHARACTER SET 字符集名和COLLATE 校对规则名,那么采用指定的字符集CHARACTER SET 和校对规则COLLATE,如果没有指定,则会采用默认的值

查看数据库

显示服务器中已经创建好的数据库,会用以下命令。这个语句是死的,只要牢记就可以了。当去到陌生的测试或者生产环境,需要查看环境中是否有数据库时可以使用该语句show databases;。语句中的schema术语数据库的结构,可以忽略它

修改数据库

创建好的数据库字符集和校对方式,还可以进行修改,如果MySQL数据库的存储引擎是MyISAM,那么只要修改data目录下的库名文件就可以了。但如果存储引擎是InnoDB,是无法修改数据库名称的,只能修改字符集和校对规则

补充:

数据库的存储引擎是指数据库管理系统(DBMS)中,负责实际数据的存储、检索、索引、事务管理以及并发控制等底层操作的核心组件

可以把存储引擎理解为数据库内部的“发动机”或“执行器”。在数据库中执行SQL语句时,这些操作最终都会由存储引擎来完成

存储引擎的作用:

数据存储和管理: 决定数据在磁盘上的物理存储方式,例如文件结构、数据块组织等

索引管理: 负责创建、维护和使用索引,以提高数据检索效率

事务支持: 对于支持事务的存储引擎,它会确保数据库操作的原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),即ACID特性

并发控制: 处理多个用户同时访问和修改数据时可能出现的冲突,通过锁定机制(如表锁、行锁)来保证数据的一致性和完整性

数据恢复: 在数据库系统崩溃后,存储引擎负责通过日志(如重做日志、回滚日志)来恢复数据到一致状态

空间管理: 管理数据的存储空间,包括数据的分配、释放和重用

MySQL是支持多种存储引擎的典型代表,允许用户为不同的表选择不同的存储引擎,以适应不同的应用场景。最常用的两种是:

MyISAM:

数据和索引存储: 数据存储在.MYD文件(MyData),索引存储在.MYI文件(MyIndex),表定义存储在.frm文件

全文搜索: 支持全文索引(Full-text Indexing),适合数据仓库、日志分析等读密集型应用

InnoDB:

崩溃恢复: 具有崩溃恢复能力,通过重做日志(redo log)和回滚日志(undo log)保证数据一致性

数据和索引存储: 数据和索引都存储在同一个.ibd文件(独立表空间)或系统表空间中

除了InnoDB和MyISAM,MySQL还有其他一些存储引擎,例如:

Memory: 将所有数据存储在内存中,读写速度极快,但数据在服务重启后会丢失。适合临时表或缓存数据

Archive: 用于存储大量不经常访问的历史数据,支持高度压缩,但不支持索引和更新

CSV: 将数据存储为CSV(逗号分隔值)文件,可以直接用外部工具查看

修改的语法如图中,核心的关键字是alter,alter database用于更改数据库全局特性,用户必须具有数据库 修改权限,才可以使用alter database修改数据库。语法后面的默认字符集以及默认校对规则是可选项,不是必选项删除数据库

删除数据库是指在数据库系统中删除已经存在的数据库,数据库删除成功后,原来分配的空间将被收回。再次删除数据库时,会删除数据库中的所有表和数据

语法2

ps:下面的操作均基于navicat

语法中的“数据库名”表示被创建数据库名,该名称必须符合以下规则:

1.数据库名必须唯一,如果数据库名重复,放入其中的数据就不知道放到哪,查询起来会很麻烦

2.名称内不能含有“/”及“.”等非法字符,这是开发数据库人员做的死规定

3.最大不能超过64字节,如果名字非常长的话,使用起来会非常麻烦

创建数据库

create database cyy;

创建一个名为cyy的数据库,使用正确的用户名和密码登录到MySQL环境,然后输入create database cyy;语句,这里要保证末尾的分号,如果没有分号,MySQL会认为还要输入,从而不执行语句

创建存在的数据库

使用相同的语句,再次创建相同的数据库,按下回车键执行可以看到抛出一个error错误,读一下内容,发现MySQL说数据库已经存在了,所以MySQL不允许两个数据库使用相同的名字,所以会报错。报错内容为数据库存在。
为了不报错使用if not esists从句可以不显示报错信息

查看全部数据库

show databases;

用于查看当前MySQL服务器中包含的库,经初始化后的MySQL服务器

可以看见我这里建立了5个库:其中mysql库是mysql正常运行所需的库,其中包含了用户认证相关的表

查看指定数据库

该语法为show create database db_name;。同样要用到show语句,区别在于加了create,并且要使用该语句,首先要知道目标数据库,即想看哪个数据库

比如我们想查看的数据库为mysql,那么执行示例中的语句,则看到执行的效果

修改数据库

alter database db_name character set new_charset;

这里新建了一个test用来修改

alter database为修改数据库的固定语法格式

db_name为要修改的数据库名称

character set表示修改的是数据库的字符集

new_charset为新的字符集名称,例如 utf8mb4、utf8、gbk 等

核心的关键字是alter,alter database用于更改数据库全局特性,必须具有数据库修改权限,才可以使用alter database修改数据库,后面的默认字符集以及默认校对规则是可选项,不是必选项

删除数据库

drop database db_name;

drop database为删除数据库的固定语法格式

db_name为要删除的数据库名称

关键是drop,if exists也是可选项,如果不加该语句,删除不存在的数据库就会报错,与if not exists语句正好相反,同样也是具有避免抛错的作用

数据表

什么是数据表

数据库与表之间的关系是数据库由各种数据表组成的,数据表是数据库中最重要的对象,用来存储和操作数据的逻辑结构。表由列和行组成,列是表数据的描述,行是表数据的实例。一个表包含若干个字段或记录。表的基本操作包括创建新表、修改表和删除表。这些操作都是数据库管理中最基本,最重要的操作

建表

原则 

为了减少数据传输错误,并能使用数据库的高效工作,表设计应按照一定原则对信息进行分类,同时为确保表结构设计的合理性,通常还要对表进行规范化设计,以消除表中存在的冗余,保证一个表只围绕一个主题,并使得表容易维护

每个表应该包含关于一个主题的信息。当每个表只包含关于一个主题的信息时,就可以独立于其他主题来维护该主题的信息。例如,应将教师基本信息保存在‘教师’表中。如果将这些基本信息保存在‘授课’表中,则在删除某教师的授课信息,就会将其基本信息一同删除

表中不应该包含重复信息,表间也不应有重复信息。每条信息只保存在一个表中,需要时只在一处进行更新,效率更高。例如,每个学生的学号,姓名,性别等信息只在‘学生’表中保存,而‘成绩’表中不保存这些信息

创建表

要求:创建student表

步骤:

create database cyy;

创建cyy数据库

use cyy;

使用cyy数据库

create table student(id INT(8),name VARCHAR(20),gender VARCHAR(1),age INT(2));

其中id,name,gender都是列名,INT(8)规定最大宽度是8,VARCHAR可变长度的字符串

创建student表

查看表
desc student;

查看基本结构

show create table student;

查看详细结构

修改表名

要求:将表名student修改为s_student

alter table student rename to s_student;
或
alter table student rename s_student;

修改

show tables;

检查

show create table s_student;

查看结构与之前相比是否完全相同

修改一个字段的数据类型

要求:将id中的int(8)修改为int(10)

alter table s_student modify id int(10);

修改 

desc s_student;

检查基本结构

修改多个字段数据类型

要求:id类型修改为int(20),name修改为varchar(10)

alter table s_student modify id int(20),modify name varchar(10);

修改 

desc s_student;

查看基本结构

修改字段名

要求1:将gender改为sex

alter table s_student change gender sex varchar(1);

修改

desc s_student;

查看基本结构

要求2:将sex改为gender,并设置数据类型为varchar(2)

alter table s_student change sex gender varchar(2);

修改

desc s_student;

查看基本结构

增加字段

要求:在表的最后位置添加source字段,数据类型为float

alter table s_student add source float;

添加

desc s_student;

查看基本结构

要求2:在表的第一个位置加一个phone,数据类型为varchar(11)的字段

alter table s_student add phone varchar(11) first;

添加

desc s_student;

查看基本结构

要求3:在表的age字段后加clazz数据类型为varchar(20)的字段

alter table s_student add clazz varchar(20) after age;

添加

desc s_student;

查看基本结构

修改字段排列位置

要求1:将id字段移动到表第一个位置

alter table s_student modify id int(20) first;

移动

desc s_student;

查看基本结构

要求2:将phone字段移动到clazz后面

alter table s_student modify phone varchar(11) after clazz;

移动

desc s_student;

查看基本结构

删除字段

要求:将phone字段删除

alter table s_student drop phone;

删除

desc s_student;

查看基本结构

删除表
create table test(id int(5));

先创建一个用于删除的test表

show tables;

查看是否创建成功

drop table test;

删除

show tables;

检查

相关文章:

  • 基于stm32风速风向温湿度和瓦斯检测(仿真+代码)
  • 2025.05.28【读书笔记】|如何用SILVA和RFAM数据库高效去除rRNA污染
  • C++11:系统类型增强
  • Redis keydb dragonfly skytable
  • uni-app开发特殊社交APP
  • 人工智能在智慧物流中的创新应用与未来趋势
  • Flask集成pyotp生成动态口令
  • 时序数据库IoTDB如何快速高效地存储时序数据
  • 深兰科技陈海波率队考察南京,加速AI医诊大模型区域落地应用
  • Android 缓存应用冻结器(Cached Apps Freezer)
  • 深兰科技董事长陈海波率队考察南京,加速AI大模型区域落地应用
  • 宁夏农业科技:创新引领,赋能现代农业新篇章
  • C++23:std::print和std::println格式化输出新体验
  • AWS 创建VPC 并且添加权限控制
  • PR2020+MS1824+MS7210+MS2130 1080P@60Hz USB3.0采集
  • 数据结构之堆(topk问题、堆排序)
  • Gartner《2025 年软件工程规划指南》报告学习心得
  • 【C++指南】C++ list容器完全解读(二):list模拟实现,底层架构揭秘
  • rsync使用守护进程启动服务
  • 主流 AI IDE 之一的 Windsurf 介绍
  • 网站交互用什么做/东莞网站建设工作
  • 最新的网站开发技术/英文站友情链接去哪里查
  • 前端做项目网站/杭州seo外包
  • 谁帮助汉字叔叔做网站/站长之家网站
  • 素材网站 源码/宁波百度seo点击软件
  • 长春个人做网站哪家好/怎样宣传自己的品牌