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

MySQL安装卸载与数据库操作指南

一.mysql卸载和安装

 查看当前是否有mysql的服务启动

sudo systemctl status mysql

关闭mysql的服务

systemctl stop mysql

卸载

sudo apt purge mysql-server mysql-client mysql-common mysql-server-core-* mysql-client-core-*

安装mysql 

sudo apt install mysql-server

二.什么是数据库

1.为什么需要数据库

为什么需要数据库?使用Excel或普通文件存储数据不是更方便吗?

实际上,数据库系统相比Excel和文件存储具有显著优势:

  1. 安全性更强:数据库提供完善的安全机制
  2. 高效管理海量数据:Excel处理大数据量时性能很差(可能加载一整天最终失败)
  3. 程序集成更便捷:数据库提供标准化的编程接口,比直接操作文件更高效可靠

为什么需要数据库?使用Excel或普通文件存储数据不是更方便吗?

实际上,数据库系统相比Excel和文件存储具有显著优势:

  1. 安全性更强:数据库提供完善的安全机制
  2. 高效管理海量数据:Excel处理大数据量时性能很差(可能加载一整天最终失败)
  3. 程序集成更便捷:数据库提供标准化的编程接口,比直接操作文件更高效可靠

2.数据库服务器和存储引擎

●连接服务器

mysql -h 127.0.0.1 -P 3306 -u root -p
 

安装数据库服务器本质上是在计算机上部署一个数据库管理系统(DBMS),该系统能够同时管理多个数据库。通常每个应用程序会对应创建一个独立的数据库。

在实际应用中,我们会根据业务需求在数据库中建立多张表,用于存储各类实体数据。具体来说,数据库服务器、数据库和表之间形成如下层级关系:

●存储引擎

存储引擎是指数据库管理系统中实现数据存储、索引建立以及数据更新、查询等核心功能的技术架构。

查看存储引擎
show engines

大部分情况下用的都是innodb 

  1. 需要事务支持:必须选择InnoDB
  2. 读多写少:考虑MyISAM,但要权衡锁问题
  3. 临时数据处理:Memory引擎适合短期缓存
  4. 全文搜索:MyISAM原生支持,InnoDB需5.6+版本
  5. 高并发写入:优先InnoDB

三.数据库基本操作

库的操作

操作数据库的基本流程如下:

  1. 创建数据库
  2. 建立数据表结构
  3. 填充数据

从技术实现来看:

  • 数据库本质上对应Linux系统中的一个目录
  • 数据表则对应于该目录下的具体文件

整体架构遵循"数据库->表结构->数据"的三层逻辑关系

展示当前有哪些数据库

show databases;

1.建立数据库

create database 此处写库的名字;

选择数据库

use 数据库名字

2.字符集和校验集

创建一个使用utf8字符集的 db2 数据库
create database db2 charset=utf8;
创建一个使用utf字符集,并带校对规则的 db3 数据库
create database db3 charset=utf8 collate utf8_general_ci;

字符集和校验规则

​​​​​​​查看系统默认校验集和字符集
show variables like 'character_set_database';
show variables like 'collation_database';

字符集设置 charset 校验集设置 collate

显示数据库语句

show create database 数据库名;

3.修改数据库

ALTER DATABASE db_name

对数据库主要修改就是 修改字符集和校验集

4.数据库删除

DROP DATABASE [IF EXISTS] db_ name;

删除操作执行后,系统将彻底移除该数据库:

  1. 数据库列表中将不再显示该数据库
  2. 对应的数据库文件目录会被完整删除
  3. 该数据库包含的所有数据表都会被级联删除
​​​​​​​

5.备份和恢复

备份

 mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径

恢复

mysql> source 路径;

查看连接情况

show processlist

四.表的基本操作

1.创建表

CREATE TABLE table_name (
field1 datatype,
field2 datatype,
field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;

field 指代列名
datatype 用于指定列的数据类型
character set 定义字符集,如未显式指定则默认采用数据库的字符集
collate 设置校验规则,如未显式指定则默认采用数据库的校验规则

2.查看表结构

desc 表名;

3.修改表

修改表结构需要把

i 增添结构
ALTER TABLE tablename ADD (column datatype [DEFAULT expr][,column
datatype]...);
ii 更改结构
ALTER TABLE tablename MODIfy (column datatype [DEFAULT expr][,column
datatype]...);
iii 删除结构
ALTER TABLE tablename DROP (column);
iv.更改表名
mysql> alter table oldname rename to newname;

4.向表内添加数据

insert into tablename /如果不填表结构 默认value全要写上/ values();

5.删除表

DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name]

五.数据类型

1.数值类型

1.bit类型
bit[(M)] : 位字段类型。M表示每个值的位数,范围从164。如果M被忽略,默认为1

bit 类型内的数值默认以 ascll码的形式展现,0-64个bit位

2.小数类型
float
float[(m, d)] [unsigned] : M指定显示长度,d指定小数位数,占用空间4个字节

小数类型如果插入 数据与设定的长度不符合 会插入失败,但如果是小数位多位会进行四舍五入。

有符号情况下float(4,2)表示范围就是 -99.99-99.99 如果插入类似 50.555这样的数 存储后会变为 50.56

无符号范围为00.00-99.99 

float的精度大约为7位,float类型的精度并不高 如果存储小数过长会导致 丢失精度 这是需要高精度的小数类型

decimal

decimal的精度很高,可以满足高精度的需求

decimal(m, d) [unsigned] : 定点数m指定长度,d表示小数点的位数
decimal整数最大位数m65。支持小数最大位数d30。如果d被省略,默认为0.如果m被省略,
默认是10
其他情况与float一致

2.字符串类型

1.定长char
char(L): 固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255

如果插入的字符串高于 设定的长度会插入失败

2.变长字符串类型 varchar
varchar(L): 可变长度字符串,L表示字符长度,最大长度65535个字节

和char一样超过设定的长度会插入失败

3.varchar 和char之间的区别
实际存储char(4)varchar(4)char占用实际字节varchar占用实际字节
abcdabcdabcd1213
AAA124
abcde插入失败插入失败

char的字节是固定的,而varchar的字节是根据插入数据大小而改变的,当字符小于设定的字符长度,varchar根据当前字符数目 占用字节长度

当我们的表的编码是utf8时,varchar(n)的参数n最大值是65532/3=21844[因为utf中,一个字符占 用3个字节],如果编码是gbkvarchar(n)的参数n最大是65532/2=32766(因为gbk中,一个字符 占用2字节)。

之所以最大字节长度是65532 而不是65535是因为 有三个字节被用来记录当前数据的大小,所以有效字节是65532;

3.日期类型和时间类型

date       :   日期 'yyyy-mm-dd' ,占用三字节
datetime: 时间日期格式 'yyyy-mm-dd HH:ii:ss' 表示范围从 1000 9999 ,占用八字节
timestamp :时间戳,从1970年开始的 yyyy-mm-dd HH:ii:ss 格式和 datetime 完全一致占用四字节

timestamp时间戳会自动记录当前数据插入的时间;

4.set和enum

枚举类型和集合类型

先举个例 枚举类型就是选择题的单选题,集合就是多选(可以多选一)

比如性别用枚举类型,只能选择男或女进行插入,或者用数字下标插入,默认起始数字是1;

set类型

对于set插入时也可以用数字,但是这个数字是位图

篮球足球赛车乒乓球睡觉

  0     0     0      0        1

比如上列,则对应的数字就是16;对应10000;

查找

默认查找set是严格匹配的,如果查找篮球 就只会出现 只有篮球这一个爱好的列;

如果想要查找所有包含篮球的列,就需要用mysql的函数

集合查询使用find_ in_ set函数:

六.表的约束

1.空属性NOT NULL

两个值:null(默认的)和not null(不为空)
建表时在类型后面 跟上not null 可以保证插入数据时这一属性不为空,如果插入null会失败

2.default默认值

默认值:某一种数据会经常性的出现某个具体的值,可以在一开始就指定好,在需要真实数据的时候, 用户可以选择性的使用默认值。

默认值就是当插入数据时,未写入数据内容就会插入设定的默认值

注:default可以和not null一起使用 ,并不矛盾

3.comment

mysql> create table tt12 (
-> name varchar(20) not null comment '姓名',
-> age tinyint unsigned default 0 comment '年龄',
-> sex char(2) default '男' comment '性别'
-> );

类似于语言中的注释 用于解释这一列的属性是什么意思,但查看表结构不会显示

4.zerofill

是一种补齐0的约束

比如int(10) 类型 如果约束zerofill 插入的数据不足十位就会 补0 直到有10位

5.主键 primary key

主键:primary key用来唯一的约束该字段里面的数据,不能重复,不能为空,一张表中最多只能有一个 主键;主键所在的列通常是整数类型
mysql> create table tt13 (
-> id int unsigned primary key comment '学号不能为空',
-> name varchar(20) not null);

当表建好后,如果没有主键可以追加主键,但要保证设定主键的列 不能有重复的数据

alter table 表名 add primary key(字段列表)  增
alter table 表名 drop primary key; 删

一个表只能有一个主键 ,但是多个字段可以拥有一个主键 ,叫做复合主键。

只有插入这两个字段内数据完全一样的数据才会插入失败,部分相同不会插入失败。

6.自增 auto_increment

auto_increment:当对应的字段,不给值,会自动的被系统触发,系统会从当前字段中已经有的最大值 +1操作,得到一个新的不同的值。通常和主键搭配使用,作为逻辑主键。
1.任何一个字段要做自增长,前提是本身是一个索引(key一栏有值)
2.自增长字段必须是整数
3.一张表最多只能有一个自增长

7.唯一键 unique

类似主键,但唯一键可以有多个,而且唯一键允许为空,并且可以多个为空,空之间不做唯一键比较。

主键和唯一键的关系就像是 身份证和学号,都不能重复,但主键只能有一个,为了保证学号唯一就需要唯一键,或者身份证号不能为空,学号可以为空这种情况,都需要唯一键

8.外键

foreign key (字段名) references 主表()
外键用于定义主表和从表之间的关系:外键约束主要定义在从表上,主表则必须是有主键约束或unique 约束。当定义外键后,要求外键列的数据必须在主表的主键列存在或在外键列为null。
(更新中)
http://www.dtcms.com/a/570938.html

相关文章:

  • 代码随想录-day26
  • PortSwigger靶场之盲 SSRF(服务器端请求伪造)漏洞通关秘籍
  • 送菜网站制作中国煤炭建设协会网站
  • wordperss网站做负载均衡新闻发稿计划怎么写
  • 360个人网站怎么推广郑州网站制作-中国互联
  • 肯德基网站是哪家公司做的长春网站建设找源晟
  • 深圳最好的营销网站建设公司设计公司网站
  • 兰州网站建设q479185700惠软件商店oppo官方下载
  • 企业网站的规划与设计网页搜索快捷键是什么
  • 做门户网站建设多少钱网络创始人 网站建设
  • 网站服务器建设合同北京市建设投标网站
  • 上海网站制作全包深圳+服装+网站建设
  • 协会网站建设目的商务网站开发技术
  • 十大免费无代码开发软件seo网站策划书
  • 网站提高内容的丰富度创意引用评论框代码wordpress6
  • 哈尔滨网站建设 seo管理咨询公司发展规划
  • 新郑网站建设科技强国向秦始皇直播四大发明
  • 加急网站备案常熟网站制作设计
  • 平价网站建设网站建设维护的相关基础知识
  • 网站怎么建在国外网站整站优化方案
  • 虚拟主机如何分配网站万网网站设计
  • 青岛网站开发公司电话求一个网站
  • 【穿越Effective C++】条款12:复制对象时勿忘其每一个成分——完整对象拷贝的艺术
  • 万网是什么网站关于网站的建设论文
  • 国务院办公厅关于2026年部分节假日安排的通知
  • 模板网站建设青岛网站建设的参考书籍
  • 番禺建设局网站首页怎么建个人公司网站
  • 织梦手机网站有广告位中英文网站开发公司
  • Spring-cloud 主键Eureka
  • 宜兴公司做网站高端 网站定制