MySQL安装与基础操作指南
本篇目标:
在Centos系统下安装MySQL
学会MySQL的一些基本操作
一.MySQL的安装
说明:安装中,用户切换成为超级用户root,初期练习,mysql不进行用户管理,全部使用root进行,尽快适应mysql语句,后⾯学了用户管理,再考虑新建普通用户
<1>.先获取 mysql 官方yum 源,网站http://repo.mysql.com/,到这个页面后,我们再单击右键,
点击查看源代码,即可查看页面上更详细的信息了。
注意:我们最好安装和自己系统⼀致的 mysql 版本,否则可能会存在软件兼容性问题。Index of /232905
<2>.查看自己的系统版本,用cat /etc/redhat-release即可,操作如图:
可以进⼊ http://repo.mysql.com/ , 找⼀下和自己版本⼀致的资源,下载好后无需解析压缩包,仅
需知道这个包的位置即可,然后我们在终端处输入rz,即可将windows系统下的资源上传到linux
系统,操作如图:
<3>.安装前,查看你本地的 yum 源,用ls /etc/yum.repos.d/ -al,操作如图:
<4>.安装中,用rpm -Uvh mysql57-community-release-el7-10.noarch.rpm即可,但是要注意安装
的是我们之前在官方下载的资源。
<5>.安装后,我们再ls /etc/yum.repos.d/ -a,就会发现有新的内容
<6>.在看看能不能正常⼯作,用yum list |grep mysql。
<7>.安装mysql服务,用yum install -y mysql-community-server,如果安装遇到秘钥过期的问
题,如图所示:
解决方案: rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
<8>.查看配置文件和数据存储位置,使用ls /etc/my.cnf和ls /var/lib/mysql,操作如图:
如果看到有内容的出现,就说明安装成功了。
<9>.启动服务,使用systemctl start mysqld.service即可。
<10>.登陆,打开 mysql 配置⽂件即vim /etc/my.cnf,然后在最后⼀栏配置 中加⼊ :skip-grant-
tables选项 , 并保存退出,如图:
然后重启 mysql 服务,用systemctl restart mysqld,让这个选项生效,然后再mysql -uroot -
p,连按两次enter即可登录成功,如图所示:
使用quit即可退出。
<11>.配置my.cnf,打开这个文件即vim /etc/my.cnf,
port=3306 character-set-server=utf8 default-storage-engine=innodb二.数据库基础
1.什么是数据库?
首先要了解用文件就可以存储数据了,为什么还要弄个数据库?
原因:
<1>.查询速度:
文件:如果我们想要在文件里面想找张三的信息,只能从上向下寻找这个人的信息,并且数据量达到百万级时,查一次可能要卡死好几秒。
数据库:自带极其强大的目录系统,操作可以直接定位到张三信息的那一行,百万数据也是毫秒级查出。
<2>.安全性:
文件:在文件里写数据时,如果写到一半,突然服务器停电,文件可能会直接乱码变砖。
数据库:有 Redo Log 和 Undo Log。停电了没关系,重启后它知道哪些写完了一半,会自动把没写完的撤销,恢复到完好如初的状态(这叫原子性和持久性)。
<3>.存储数据:
内存吃不消:如果日志文件有 50 个 G,普通程序的做法往往是读进内存去处理,但这直接就把服务器内存撑爆了。
数据库:数据库底层有内存缓冲池和分页机制,它只把当前需要用到的那一小块数据(通常是 16KB 一页)调进内存,极其节省资源。
<4>.程序控制:
文件:假设有10个人同时往同一个文本文件里写日志。文件系统为了防止内容错乱,会直接上一把“大锁”——也就是只要有一个人在写,其他9个人全得干等着(或者互相覆盖导致数据损坏)。
数据库:有自己的机制。如果A改第一行,B改第二行,大家可以同时进行,互不干扰,极大提升了吞吐量。
概念:数据库就是一个用来集中存储、管理和快速查询海量数据的“超级电子文件柜”。
2.服务器,数据库,表关系
其实我们之前安装的所谓数据库服务器,其实就是在机器上安装了一个数据库管理系统程序,这个
管理程序可以管理多 个数据库,一般开发人员会针对每一个应用创建一个数据库。
为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。
数据库服务器、数据库和表的关系如下:
解释:mysql(Client)会把我们敲的 SQL 语句打包,发送给远端的mysqld服务端,然后
mysqld会检查我们有没有在这个数据库里建表的权限;再逐字逐句分析我们语法正确与否,确认
检查括号有没有闭合、字段类型对不对;最后,操作系统会在底层的硬盘目录里(比如
/var/lib/mysql/my_project_db/),实实在在地创建一个名叫users.ibd的物理文件。以后这张
表里存的所有用户数据和索引,全都会塞进这个文件里。
MySQL架构,MySQL 是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如 Unix/Linux、Windows、 Mac 和 Solaris。各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体 系结构的一致性,如图所示:
3.案例演示(先了解)
<1>.查看数据库
show databases;如图:
<2>.创建数据库
create database helloworld;然后我们在另一个终端下,进行一个操作,即cd /var/lib/mysql,此时我们可以看到一个关于
helloworld的目录,如图所示:
再进入这个目录里面,会看到这里面还会有其他的目录。
<3>.使用数据库
use helloworld;<4>.创建数据库表
create table student( id int, name varchar(32), gender varchar(2) );此在ll,就会出现新的内容,如图:
<5>.表中插入数据
insert into student (id, name, gender) values (1, '张三', '男'); insert into student (id, name, gender) values (2, '李四', '女'); insert into student (id, name, gender) values (3, '王五', '男');<6>.查询表中的数据
select * from student;如图:
结论:一个数据库(Database)相当于 一个 Linux 文件夹,一张数据表(Table) 相当于 文件夹里的物理文件,但是我们不可以划等号。
三.数据库基础操作
1.创建数据库
1.1.语法:
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...]说明:
大写的表示关键字
[] 是可选项
CHARACTER SET: 指定数据库采用的字符集
COLLATE: 指定数据库字符集的校验规则
例如:
说明:当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则 是:utf8_ general_ ci。
1.2.操纵数据库操作
<1>.查看数据库
show databases;<2>.显示创建数据库信息
show create database 数据库名;如图:
注意:数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字 ;
/*!40100 default.... */这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话。
<3>.修改数据库
ALTER DATABASE db_name [alter_spacification [,alter_spacification]...] alter_spacification: [DEFAULT] CHARACTER SET charset_name [DEFAULT] COLLATE collation_name注意:我们主要修改数据库的字符集,校验规则。
例如:我将d1数据库字符集改成gbk,如图所示:
<4>.数据库删除?
DROP DATABASE [IF EXISTS] db_ name;注意:执行删除之后的结果,数据库内部看不到对应的数据库,并且对应的数据库文件夹被删除,级联删除,里面的数据表全部被删。
建议:不要随意删除数据库,应该要先备份。
<5>.备份和恢复
mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径如图:
此时,打开mytest.sql,如图:
其实把我们整个创建数据库,建表,导入数据的语句都装载这个文件中了。
还原:,还原时,要记得备份文件的具体位
置。
<6>.查看连接情况
show processlist;如图:
可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有
可能你的数据库被人入侵了。以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况
2.字符集和校验规则
2.1.查看系统默认字符集以及校验规则
操作:
show variables like 'character_set_database'; show variables like 'collation_database';如图:
这是因为之前再my.cnf中默认配置过了。
2.2.什么是字符集?
计算机底层只认识 0 和 1。字符集就像是一本翻译书,规定了英文字母、汉字、Emoji 表情应该被翻译咋样的二进制数字存进硬盘。
2.3.什么是校验规则?
数据库怎么判断两个字符串是否相等?谁排在前面?这就是校验规则说了算。
四.表的操作
1.创建表
语法:
CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎;说明:
field 表示列名;datatype 表示列的类型;character set 字符集,如果没有指定字符集,则以所在数据库的默认字符集为准; collate 校验规则,如果没有指定校验规则,则以所在数据库的默认校验规则为准。
代码如图:
create table users ( id int, name varchar(20) comment '用户名', password char(32) comment '密码是32位的md5值', birthday date comment '生日' ) character set utf8 engine MyISAM;注意:不同的存储引擎,创建表的文件不一样。 users表存储引擎是MyISAM,在数据目中有三个不同的文件,分别是:users.frm:表结构 ,users.MYD:表数据, users.MYI:表索引
如图:
2.查看表结构
desc 表名;如图:
3.修改表
ALTER TABLE tablename ADD (column datatype [DEFAULT expr][,column datatype]...);例如,在users表添加二条记录,
insert into users values(1,'a','b','1982-01-04'),(2,'b','c','1984-01 04');在users表添加一个字段,用于保存图片路径,
alter table users add assets varchar(100) comment '图片路径' after birthday;修改name,将其长度改成60,
alter table users modify name varchar(60);删除password列,
alter table users drop password;修改表名为employee,
alter table users rename to employee;将name列修改为xingming,
alter table employee change name xingming varchar(60);注意:新字段需要完整定义。
4.删除表
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name];例如:
drop table t1;本篇教程主要讲解了三件事:
环境搭建:如何在 Centos 下通过 yum 源安装 MySQL,并修改配置文件实现临时免密登录和基础设置。
核心概念:解释了数据库相比普通物理文件在查询速度、安全性和高并发上的绝对优势,以及“库包含表”的层级关系。
基础操作:汇总了最核心的 SQL 指令,迅速实现对数据库(库)和数据表(表)的创建、查看、修改、删除与备份还原。
