初识mysql

在这里插入图片描述

数据库是什么

mysql数据库是一种基于网络的服务,它基于client,server模式为用户提供数据存储和组织的服务。
在我们下载了数据库后,在linux下,存在mysql(客户端)和mysqld(服务端),用户在客户端中,输入各种指令,这些指令被送到mysqld服务端服务器中,帮我们对数据库进行操作。
在这里插入图片描述
mysql是典型的网络数据库,当然还有非网络数据库如redis

数据库的架构

数据库大概可以分为4层
在这里插入图片描述
1).connection pool :该层的主要作用是连接处理,身份验证,安全性等等。
2).核心服务层:在SQL处理数据处理服务前,所有的工作都要在该层完成,包括权限判断, sql解析等等。
3).存储引擎层:该层才是真正开始对数据进行处理的层次,可以完成如数据的存取操作,该层存在许多存储引擎,各有优劣,在MySQL中,最常用的是InnoDB,MyISAM。
4).最后一层为文件系统等OS底层,最终数据库操作的也是OS的底层。
所以数据库实际上是用户级的一个程序。

为什么要有数据库

在OS层面,因存在文件系统,文件的管理似乎已经做的很好了,但是在用户层面,并没有很好的管理,这就导致用户操作数据不够方便。
于是便有了数据库,数据库实际上就是在用户层面,给用户提供了良好的操作数据的方法,我们只需要在数据库的客户端输入一些命令,我们就能得到我们想得到的数据,提高了程序员的开发效率。
我们口语中所说的数据库,一是指数据库软件,如mysql,redis等等,二数据库还可以指被数据库软件组织起来的数据,用户不用在意这些数据是如何组织起来的,我们只需要通过数据库的指令操作即可。

如何使用数据库

1.链接数据库

mysql -h[主机ip] -P[链接的端口号] -u[指定链接的用户] -p[输入密码]
主机号和端口号可以不用输入。
在这里插入图片描述
退出数据库程序quit指令
在这里插入图片描述

数据库中指令类型

1).ddl(数据定义语言),该类语言用于定义数据库的数据类型,如database,table…
2).dml(数据操作语言),该类语言用于操作数据类型,如删除,插入…
3).dcl(数据控制语言),该类语言用于控制数据类型,如给数据库设置副本…

数据库组织结构

数据库实际是由数据库文件夹表文件组成的。
它们属于从属关系,数据库文件夹内可能存在很多表结构。
在这里插入图片描述

我们层层分析,首先是目录结构,在数据库的配置文件中,已经指明了这些数据放在那里。
在这里插入图片描述
在该目录下,我们的Linux中显示的文件和数据库中使用命令显示的数据库文件的关系。

在这里插入图片描述
我们可以发现在Linux系统中,数据库都是一个文件夹,那么我们就可以对文件夹进行操作来影响数据库,但我们十分不建议这么做,因为这会导致很多预料之外的问题。


那么数据库中的表在Linux系统下又是什么结构呢?
在这里插入图片描述
我们创建了一个测试数据库,并且在该数据库内创建了一个表,我们发现,表中除了操作问文档外,多了两个文件,一个.frm格式,一个.idb格式,这两个都是Innodb数据库引擎为我们创建的文件,当然不同的引擎也会为我们创建不同格式的文件。

数据库的编码

数据库中存在两种编码。
1).数据库编码集。
数据库编码集,代表了未来将数据存入数据库用的是那种编码。
2).数据库校验集。
数据库校验集,代表了未来我们使用,比较…我们使用的编码。

比如我们按照数据库字符大小排序,如果是utf8,则排序分大小写,若是utf8_general_ci,则排序不分大小写。

在每个数据库中,都会存在一个.opt文件,该文件内就存放了当前数据库的数据库编码集和数据库校验集。
在这里插入图片描述
实际上在配置文件中,我们也设置了默认的编码集。

使用 show variables like ‘char% / collation%’ 查看当前数据库,表等编码和校验码。
在这里插入图片描述
我们也可以使用show character set / collation查看mysql支持多少种编码集和校验集。
在这里插入图片描述
在这里插入图片描述

数据库的操作

1).创建

create database (if not exists) name_database;
如果加入()内的,则当名字为name_database的数据库存在时,就不创建。
在这里插入图片描述
在创建时,我们也可以指定数据库的编码集和校验码。
create database (if not exists) name_database character set … collate…
在这里插入图片描述

2).展示数据库

show databases
在这里插入图片描述

3).我们要对某个数据库操作时,我们先需要进入某个数据库

use name_database;
在这里插入图片描述
我们可以通过指令查看我们当前在那个数据库下。
select database();
在这里插入图片描述

3).修改库

要注意,mysql没有提供修改数据库名字的方法,我们只能通过备份数据库和还原数据库来修改数据库的名字,因为数据库是给用户使用的,如果随便可以修改数据库的名字,则可能会导致上层使用出现问题。
在Linux指令环境下。
mysqldump -P[端口] -u[用户] -p[密码] -B name_database1 > name_database2
在这里插入图片描述
恢复库,在Linux环境下
1).mysql -p -u[用户] < path
在这里插入图片描述
2).可以在数据库内对库进行恢复,在备份库中,如果不加 -B 选项,则先需要创建数据库进入数据库,使用指令。
source path;
在这里插入图片描述
上述指令也可以用于表。
修改库的编码方式。
alter database name_database character set … collate …;

4).删除库

我们最好别删除库,因为可能会导致上层用户使用起来会出现问题。
drop database name_database;
在这里插入图片描述

表的操作

表是数据库内的资源组织的基本单位,在Linux系统中,所谓表及代表Linux中的普通文件,不同的SQL引擎,会生成不同类型的文件。
1).表的创建

表是数据库内的数据类型,只能先进入数据库内,才能创建表。
在这里插入图片描述
create table (if not exists) name_table(
data1 datatype (comment 'mgs‘),
data2 datatype (comment 'mgs‘),

)(character set … collate …);

comment 后可以加入该列的说明信息。
在这里插入图片描述
表的每个元素被称为表的属性。

2).展示表

show tables;
在这里插入图片描述
展示表的结构
desc name_table;
在这里插入图片描述
展示表创建时的信息
show create table name_table (\G);
在这里插入图片描述

3).修改表

修改表的名字,虽然可以修改表的名字,但是不建议修改。
alter table o_name rename to n_name;
在这里插入图片描述
增加一列
alter table name_table add data datatype (comment ‘msg’) after data;
在这里插入图片描述
修改一列的属性
alter table name_table modify data new_datatype;
所谓的修改属性,其实是覆盖这个属性,包括之前的comment也会被修改。
在这里插入图片描述
修改一列的名字
alter table name_table change o_name n_name datatype;
在这里插入图片描述
删除一列
alter table name_table drop name;
在这里插入图片描述

4).删除一个表

尽可能不要删除表
drop table name_table;
在这里插入图片描述

总结

1).备份指令可以对数据库和表备份。
2).上述操作只是对数据库和表的属性进行操作。
3).对于数据库的指令,记忆方面,alter代表修改,show代表展示,drop代表删除。

  • 19
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值