目录
一、MySQL概述
所谓MySQL,其实就是一种关系化数据库。所谓关系化就是存放的数据可以一对一,一对多和多对多。
另外还有一种数据库叫做非关系型数据库,也称作NoSQL或者KeyValue数据库,其存储方式和关系化数据库有很大的区别。
非关系型数据有很多,比如redis,Hbase等
二、MySQL的安装
1、安装MySQL的目的:
MySQL对于数据的存储有明确的规定和详细的划分,方便与管理。
安装MySQL其实就是安装了一个数据库管理程序,该程序可以对数据库进行管理和操作,一般为了存储数据,会在数据库中创建多个表用来存储数据
MySQL中数据存储的最小单位就是行
这里给出Windows版的下载地址:
第三方下载地址:https://downloads.mariadb.com/archive/index/p/mysql/v
2、安装步骤
这里的安装是在Linux下进行的安装
在安装之前需要保证Linux系统中的防火墙和networkmanage是关闭状态
1、下载yum Repository
wget -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
这里可能会出现问题:wget命令找不到,这是由于没有下载wget命令的原因
输入:yum -y install wget进行wget命令的下载然后在操作上述步骤,然后等待安装完毕
2、安装yum Repository
复制粘贴以下命令:
yum -y install mysql57-community-release-el7-10.noarch.rpm
然后等待其安装完毕,安装完成后会出现完毕字样
3、安装MySQL服务器
输入命令:
yum -y --nogpgcheck install mysql-community-server
然后等待其下载完成,完成后会出现完毕字样
执行完该步骤之后,表示MySQL在Linux系统中已经完成安装了
对MySQL服务的一些基本操作:
设置为开机自启动:
输入命令:systemctl enable mysqld.service进行设置开机自启
启动MySQL:
输入命令:systemctl start mysqld.service进行启动
查看MySQL状态:
输入命令:systemctl status mysqld.service查看状态
3、MySQL的使用
MySQL的初次使用需要使用用户名和密码登录,用户名默认就是root,但初次登录并不知道密码
解决办法:获取一个临时密码,用于登录MySQL,在登录之后再将MySQL的密码自行设置为123456即可
4、获取临时密码:
输入命令:grep "password" /var/log/mysqld.log,每次获取的临时密码都不一样
5、登录mysql:
使用刚刚获取的密码,输入:mysql -uroot -p+临时密码进行登录
注意:这里最好在临时密码左右加上双引号,防止程序识别为密码未输入完毕,等待用户继续输入密码,双引号就表示其中的内容就是完整的密码
6、关闭密码复杂验证:
登录成功后,就已经进入了mysql界面,这时将密码复杂验证关闭防止密码过于简单而不通过。然后再执行设置密码
注意:在mysql中执行命令时,在每个命令后都需要加上分号结尾
先输入: set global validate_password_policy=0;按下回车
再输入:set global validate_password_length=1;按下回车
这时就关闭了密码验证
输入:alter user user() identified by "123456";更改密码为123456
7、修改权限:
进入到mysql中:use mysql;
修改权限:
输入GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; 修改权限
修改完之后刷新权限:
输入:flush privileges;
查看刷新完的权限:
输入:select host,user,authentication_string from user;
若是在修改权限前查看一次,再在执行完之后查看一次会发现多了一行%的数据,该数据表示所有的ip地址都可以访问的权限,为了方便远程操作。
8、卸载yum Repository
回到Linux中,在mysql中按下ctrl+Z/C都可以退出mysql
由于安装了Yum Repository,以后每次yum操作都会自动更新,需要把这个卸载掉:
在Linux中输入:yum -y remove mysql57-community-release-el7-10.noarch进行删除
9、mysql的卸载
当mysql的安装出现问题时,可以卸载mysql或者在虚拟机当中返回到上一次快照,重新安装mysql
删除依赖包
rpm -qa |grep -i mysql
yum remove mysql-community mysql-community-server mysql-community-libs mysql-community-common
上述只是删除了依赖包,还需要清理文件
输入find / -name mysql找到mysql的所有文件
对这些文件依次进行输入rm -rf 文件名进行逐个删除,这样mysql就删除完毕了
三、MySQL的操作
安装完mysql后,需要对mysql进行一些操作
SQL语言:结构化查询语言,具有查询,操纵,定义和控制关系型数据库的功能,简单说就是增删改查
在登录到mysql后,查看当前mysql含有多少个数据库:
命令:show dabases;
当需要存储数据时,需要新建一个数据库
1、数据库的创建:
命令:create database test;
创建成功后,再次查看时就会发现多了一个test数据库
2、数据库的切换:
use 数据库名称
3、显示数据库中所有的表的数据
命令:show tables;
显示test中所有的表:
这里会显示没有表,因为没有创建
4、数据库的删除:
命令:drop database 数据库名称;
若在删除之后又删除了一遍,会报错该数据库已经被删除,若不想其报错,可以在删除时加入一个条件:如果存在则删除,不存在则不操作
命令:drop database if exists 数据库名称;
同理:在创建一个数据库时也可以加入一个条件:if not exists
当输入过程中在未输入完时不小心按下了回车,但是没有分号,识别为继续进行换行输入,或者当不小心打出一个中文分号,然后进行了回车,但此时已经输入错误,只能输入英文分号进行结束,输出报错后,重新输入
于是提供了一个第三方软件用来操作mysql,用于避免该情况以及进行其他更为方便的操作
四、Navicat
Navicat就是一个第三方操作mysql的软件
Navicat的安装就是傻瓜式安装,直接一步步点击下一步即可。
1、Navicat连接mysql
打开Navicat,点击左上角连接,选择mysql连接,输入连接名(随意输入,自定义),主机名或者IP地址,以及要连接的mysql的密码
正式连接前可以进行一次连接测试,测试成功即可成功连接,点击确定即可连接
刚开始连接之后,该连接为灰色,双击即可打开连接,里面会出现目前所有的数据库
在navicat中操作数据库时,可以点击新建查询进行操作
输入show databases;可以查看到当前的所有数据库信息选中,点击运行已选择的即可运行该行命令,该功能可以运行所选择的命令。
结果:同样显示所有的数据库
同样,在该软件中也可以实现上述的其他操作
插入:Navicat中不区分大小写
2、Navicat的基本操作:
解决报错输出
这里简单创建一个数据库:
每次执行结果中都显示了报错,但是这并不是创建出错,而是mysql自带的错误
解决办法:
输入:
set @@global.sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
运行该行语句之后,先关闭连接,再重新打开连接,重新新建查询就可以了。
查看数据库创建语句:
命令:show 创建语句
结果中所显示的是数据库的名称和创建该数据库的语句:
CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET latin1 */
该行显示该数据库的编码格式是latin1,与常用的utf-8格式不一样,这是由于在Linux系统中的数据库默认的编码格式就是latin1,想要更改latin1为常用的utf-8,有两种:
1、右键该数据库,进入到数据库属性中进行修改,但需要每次创建一个数据库后,都需要更改。
2、在创建数据库时,在后面加上默认编码集:但是每次创建都需要加上
例:create database test default character set utf8
3、进入到Linux中的配置文件中,去更改其默认编码格式为utf-8,这样就不需要每次创建都要更改
更改默认编码格式:
在Linux中操作:
输入:vim /etc/my.cnf
在其中寻找[client],若没有则添加[client]并添加内容:
[client]
default-character-set = utf8mb4
接下来同理寻找[mysqld],向其中添加内容:
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
保存退出,重新启动mysql,并再次登录mysql查看当前编码集是否正确
查看编码集:
输入命令:show variables like "%char%";
这样就实现了更改编码集为utf-8了
注意:这次修改完之后,不要再修改mysql服务器的编码集,表的编码集默认和库一致
回到Navicat中再次进行创建,先删除再创建
这里在创建时会发现最后一行又有了上述刚提到的报错信息,这是由于mysql被重新启动,其中的配置全部回归默认。再执行一次相应代码即可
2、数据库中表的创建
命令格式:
create table 表名(
字段名 字段类型,
字段名 字段类型,
... ...
字段名 字段类型
);
刷新数据库,会发现数据库test中多了一个表students。双击打开
右击打开设计表查看其具体表信息,发现其中的int类型长度在没有给时也是11
注意:字段在定义属性时,必须给长度 ,int较为特殊,不需要给,默认长度为11。
查看其编码集切换到选项查看。为utf-8;查看其引擎也在其中,也就是启动方式,常用为InnoDB
可以在创建表的括号后,分号前加上你想要使用的引擎:engine=InnoDB de
表数据的输入
在表中输入相应信息,点击勾号可以保存,点击+可以添加数据
3、设置数据的各种属性
在进行输入数据时,发现当age不输入时,保存后,数据为null,同理,其他两个不输入时也为null。但是对于现实来说,一个人不可能没有名字和编号以及年龄。所以需要设置为不可为null
第一种:进入到设计表中,最后一列可以设置是否允许为null值,勾选即不可为null值。
第二种:使用sql语句:在字段创建时在其后面加上not null属性即可。
同时注意到:每个学生的id应该是唯一的,而且可以设置为自增,这样只需要输入第一个学生的学号,后面的学生依次增加即可,不需要再重复输入
这里使用sql语句主键属性实现唯一:PRIMARY KEY,可以设置多个主键,但需要用逗号分隔
使用AUTO_INCREMENT定义列为自增属性。这两种属性一般配合使用
当加入性别时,定义属性若是为varchar,则在未来输入数据时,若是将性别输入为姓名则也不会报错,但是性别应该是只有男和女,所以这里不能设置其类型为varchar,应该设置为枚举类型,即:
sex enum('男','女')
这里根据上述条件开始创建一个表:
进入到该表中会发现:sex列有两个选项
此时若添加数据,name不可为空,且id唯一,若不输入会报错不可为空。
且此时若添加数据,id值的自增是根据上一个数据来进行自增的。
若在性别列手动输入除男女之外的字,也会报错:
为字段添加一个默认值:default
即当添加一行数据时,还未进行输入就会生成一个默认值
为了使数据库中存储的数据量可以变得更多,一般采用0和1用来代替性别。
改进该表,重新创建该表。
结果: