centos在线安装mysql 8.0教程及mysql增删改查操作(亲测有用)

 在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL。由于是在线安装,所以请确保你的linux系统处于联网环境下。如果不知道怎么联网,请看我前面的文章。

一、清理环境

①首先,我们可以使用命令

rpm -qa | grep mysql

查看linux系统上是否已经安装了mysql数据库。演示如下:

由于楼主演示的时候已经安装了mysql 8.0 ,所以会显示已经安装的数据库。(如果没有请直接进入第二步)

② 接下来我们使用命令

yum remove mysql-xxx-xxx

依次删除上面的程序。

③ 删除mysql的配置文件,卸载不会自动删除配置文件,首先使用如下命令查找出所用的配置文件

find / -name mysql

根据需求使用以下命令 依次 对配置文件进行删除

二、删除MariaDB的文件

由于 在CentOS中默认安装有MariaDB,所以如果我们不删除MariaDB文件的话,安装mysql时可能会发生冲突。冲突信息如下:

[root@localhost yum.repos.d]# yum install mysql-community-server.x86_64 
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.btte.net
 * epel: mirrors.ustc.edu.cn
 * extras: mirrors.163.com
 * updates: centos.ustc.edu.cn
Resolving Dependencies
--> Running transaction check
---> Package mariadb-server.x86_64 1:5.5.52-1.el7 will be obsoleted
--> Processing Dependency: mariadb-server for package: akonadi-mysql-1.9.2-4.el7.x86_64
---> Package mysql-community-server.x86_64 0:5.7.19-1.el7 will be obsoleting
--> Processing Dependency: mysql-community-common(x86-64) = 5.7.19-1.el7 for package: mysql-community-server-5.7.19-1.el7.x86_64
--> Processing Dependency: mysql-community-client(x86-64) >= 5.7.9 for package: mysql-community-server-5.7.19-1.el7.x86_64
--> Running transaction check
---> Package mariadb.x86_64 1:5.5.52-1.el7 will be obsoleted
---> Package mariadb-server.x86_64 1:5.5.52-1.el7 will be obsoleted
--> Processing Dependency: mariadb-server for package: akonadi-mysql-1.9.2-4.el7.x86_64
---> Package mysql-community-client.x86_64 0:5.7.19-1.el7 will be obsoleting
--> Processing Dependency: mysql-community-libs(x86-64) >= 5.7.9 for package: mysql-community-client-5.7.19-1.el7.x86_64
---> Package mysql-community-common.x86_64 0:5.7.19-1.el7 will be installed
--> Running transaction check
---> Package mariadb-libs.x86_64 1:5.5.52-1.el7 will be obsoleted
--> Processing Dependency: libmysqlclient.so.18()(64bit) for package: perl-DBD-MySQL-4.023-5.el7.x86_64
--> Processing Dependency: libmysqlclient.so.18()(64bit) for package: 2:postfix-2.10.1-6.el7.x86_64
--> Processing Dependency: libmysqlclient.so.18()(64bit) for package: 1:qt-mysql-4.8.5-13.el7.x86_64
--> Processing Dependency: libmysqlclient.so.18(libmysqlclient_18)(64bit) for package: perl-DBD-MySQL-4.023-5.el7.x86_64
--> Processing Dependency: libmysqlclient.so.18(libmysqlclient_18)(64bit) for package: 2:postfix-2.10.1-6.el7.x86_64
--> Processing Dependency: libmysqlclient.so.18(libmysqlclient_18)(64bit) for package: 1:qt-mysql-4.8.5-13.el7.x86_64
---> Package mariadb-server.x86_64 1:5.5.52-1.el7 will be obsoleted
--> Processing Dependency: mariadb-server for package: akonadi-mysql-1.9.2-4.el7.x86_64
---> Package mysql-community-libs.x86_64 0:5.7.19-1.el7 will be obsoleting
--> Running transaction check
---> Package mariadb-server.x86_64 1:5.5.52-1.el7 will be obsoleted
--> Processing Dependency: mariadb-server for package: akonadi-mysql-1.9.2-4.el7.x86_64
---> Package mysql-community-libs-compat.x86_64 0:5.7.19-1.el7 will be obsoleting
--> Finished Dependency Resolution
Error: Package: akonadi-mysql-1.9.2-4.el7.x86_64 (@anaconda)
           Requires: mariadb-server
           Removing: 1:mariadb-server-5.5.52-1.el7.x86_64 (@anaconda)
               mariadb-server = 1:5.5.52-1.el7
           Obsoleted By: mysql-community-server-5.7.19-1.el7.x86_64 (mysql57-community)
               Not found
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

 ① 使用rpm 命令查找出要删除的mariadb文件,命令如下

rpm -pa | grep mariadb 

可能出现结果

mariadb-libs-5.5.56-2.el7.x86_64

删除上面的程序

 yum -y remove mariadb-libs.x86_64

至此,原有的mysql和mariadb数据库就删除了。

三、安装mysql

① 安装mysql官网提供的mysql repo源

网址:https://dev.mysql.com/downloads/repo/yum/。操作如下:

往下翻找到我们所需的文件,如下图框所示:

 ② 使用命令“yum install wget 安装wget,接下来在线安装mysql。使用命令

wget http://dev.mysql.com/get/Downloads/mysql80-community-release-el7-1.noarch.rpm

③ 安装mysql80-community-release-el7-1.noarch.rpm包。使用命令:

rpm -ivh mysql80-community-release-el7-1.noarch.rpm

④ 使用命令 “yum install mysql-community-server”安装mysql。大概有1个多G,请耐心等待安装完成。

默认配置文件路径: 
配置文件:/etc/my.cnf 
日志文件:/var/log/var/log/mysqld.log 
服务启动脚本:/usr/lib/systemd/system/mysqld.service 
socket文件:/var/run/mysqld/mysqld.pid

四、mysql初始化配置

① 启动mysqld服务,并设为开机自动启动。命令:

systemctl start mysqld.service         //这是centos7的命令

systemctl enable mysqld.service

 ② mysql在安装后会创建一个root@locahost账户,并且把初始的密码放到了/var/log/mysqld.log文件中。使用命令

cat /var/log/mysqld.log | grep password

③ 登录mysql

此时登录mysql会出现一个问题

 经过查文档发现这是由于没有在user表中写入用户信息,只能使用不启动授权表的启动方式: 
修改my.cnf配置:

注意!!!--skip-grant-tables:此选项会让MySQL服务器跳过验证步骤,允许所有用户以匿名的方式,无需做密码验证直接登陆MySQL服务器,并且拥有所有的操作权限。 但是接下来我们还是会介绍怎么修改密码与用户名。

重启mysql服务,使用命令:

systemctl restart mysqld

 接下来进入到mysql:

 

!!! 注意:MySQL中每个命令后都要以分号;结尾。 

这里的第一句是选用需要修改的数据库,在mysql中用户名密码都在数据库名为mysql的这个库中,在修改数据库中的数据表前都需要使用use命令选中使用哪个数据库,第二句是更新数据表user中root用户的密码为新密码,第三句是将前面所做的修改在系统中刷新生效。

此时我们发现字段无法修改,这是因为password字段已经变成了authentication_string字段,对我们的代码稍作修改即可:

刷新系统权限并退出:

 接着重新进入mysql:

 五、在mysql上进行增删改查(sql语句不区分大小写)

1、使用命令 mysql -u root -p 进入数据库,

使用命令“ show databases;”查看自带的数据库。演示如下:

 使用命令

CREATE DATABASE 库名; 

创建一个新的数据库,演示如下:

 

使用命令“show databases;” 可以查看到zg库已经创建成成功 

 使用命令“use 库名”选中数据库:

使用命令“show tables;”查看表:此时表为空

 2、 “增”加数据操作

① 创建一个表,并插入一定的数据。命令如下:

mysql>CREATE TABLE STUDENT(
      ID INT,
      USERNAME VARCHAR(20),
      SERVLET INT,
      age INT,
      ADDRESS VARCHAR(30)
      );

演示如下:

插入数据,演示如下:

每个列必须以它们在表定义中出现的次序填充。 

使用命令“ mysql> select * from 表名” 可以查看已创建的表,演示如下:

 ② 增加部分数据

insert into 是对行进行操作,而alter table是对字段进行操作。

(1)使用命令“insert into student (id,username) values(5,“xiaoming”);”来增加部分数据,再使用select * from student;查看下student表。演示如下:

(2)使用alter table 语句对指定字段进行添加修改删除操作

添加指定字段,使用命令

alter table student add column jsp varchar(2);

可为学生添加一门jsp的成绩列。

删除指定字段,使用命令

alter table student drop column jsp;

 可删除jsp这列字段;

修改字段名,使用命令:

alter table student change column  servlet  javaee varchar(2);

可将servlet字段的名字修改为javaee。 

修改表名,使用命令:

 alter table student rename to teacher;或者是 rename teble teacher to student;

可将student表名修改为teacher 

3、“修改”数据

① 根据条件修改数据

假如我现在想把id=1那一行servlet改为86可以这样做,使用命令:

 update student set servlet=86 where id=1;

演示如下,我们可以看下前后对比:

 

 ② 修改多个字段的内容

update student set servlet =65,age=73 where id=3;

演示如下,可以查看下前后对比:

4、单表查询

① 查询所有列

使用命令“ select * from  student;”,演示如下:

 ② 查询指定列

使用命令“select id,username from student;”,演示如下:

③  查询时 指定别名

使用命令“select id as “num”,username as “user” from student as s;”,演示如下:

 ④ 查询时添加常量列

⑤ 查询时合并列

select id,username,(servlet+age) as “he” from student; 

 ⑥ 条件查询

(1) 逻辑查询  and  or

假设查询id=1 且username=张三的学生

使用命令 select * from student where id=1 and username=“zhangsan”;

查询id=2或者username=“李四”的同学;

使用命令“select * from student where id=1 or username=“lisi””;

 

(2)比较条件

> ,<, >=, <=, ==, <>, BETWEEN, AND 

查询selevt大于50的同学 

查询 servlet 成绩大于60分小于80分的学生 

查询姓名不等于张三的记录 

查询地址为空的同学

 

(3)模糊条件查询 like

 通常使用以下替换的标记:%:表示任意字符;       _:表示一个字符

查询姓zhang学生的记录

(4)聚合查询

常用的聚合函数:sum() avg()  max()  min()  count() 

查询命令都一样,这里我们只演示查询学生servlet总成绩

 查询当前有多少学生 count(字段)

 (4)分页查询limit 起始行,查询几行。主要用于分页。注意这里的行数从零开始。

假设我现在查询第1、2两行的内容演示如下:

(5) 排序,默认情况下按插入记录的顺序排序。order by
      asc 正序  desc倒序

5、“删除”数据

① 带条件删除

假设删除id=2的同学,演示如下:

 

② 删除所有数据 

这种删除只能删除表的数据,不能删除表的约束,要想永久删除使用命令TRUNCATE TABLE STUDENT;

删除库

 

在学习mysql过程中遇到视图、存储过程等一些难以理解的概念。仅以此文章记录下学习的心得。

一、全文本搜索

在介绍全文本搜索之前我们先来简单介绍一下搜索引擎。

InnoDB :事务处理引擎,不支持全文本搜索
MEMORY:功能等同于MyISAM,但由于数据存储在内存中,速度很快,适合于临时表
MyISAM:支持全文本搜索,不支持事务处理

如果你的应用中需要全文本搜索功能,应该使用MyISAM搜索引擎。

全文本搜索顾名思义就是在全文本中进行搜索,比如我想在一段注释表中查找某个关键字“key”,这时就需要用到全文本搜索。

1、启用全文本搜索支持

一般在创建表时启用全文本搜索。下面的create语句演示了fulltext子句的使用:

create table productnotes

note_id int  not null  auto_increment,

prod_id char(10)  not  null,

note_date datetime not null,

primary key(note_id),

fulltext(note_text)

)engine=MyISAM;

 create table 语句定义表productnotes并列出它所包含的列,该表的主键为note_id,为了进行全文本搜索,Mysql根据子句fulltext(note_text)的指示对它进行索引。

2、进行全文本搜索

在索引之后,使用两个 函数Match()和Against()执行全文本搜索,其中Match()指定被搜索的列,Against()指定使用的搜索表达式。

select note text from productnotes where Match(note_text) Against("rabbit");

此select语句检索单个列note_text。由于where子句,一个全文本搜索被执行。Match(note_text)指示mysql针对指定的列进行搜索,Against(“rabbit”)指定词rabbit作为搜索文本。假如productnotes表中包含rabbit则返回包含rabbit的行。 

二、视图

视图:就是将其他已经存在的表合并在一起的虚拟的表。所谓虚表,就是说这张表里面没有数据,他的数据是从别的基础表中获取到的。

创建一个productcustomers视图:

create view productcustomers as select cust_name,cust_contact,prod_id from customers,orders,orderitems where customers.cust_id=order.cust_id and orderitems.order_num=orders.order_num.

应用:

select cust_name,cust_contact from productcustomers where prod_id=‘tnt2’;

三、存储过程

存储过程:存储过程简单的说,就是为以后的使用而保存的一条或多条mysql语句的集合 ,有点类似于java的封装。
功能是将常用或复杂的工作,预先用SQL语句写好并用一个指定名称存储起来, 以后需要数据库提供与已定义好的存储过程的功能相同的服务时,只需调用 call 存储过程名字, 即可自动完成命令 。存储过程分带参数和不带参数两种,使用create procedure

创建一个存储过程。

delimiter // 可以临时更改命令行实用程序的语句分隔符。

① 不带参数  

 create procedure productpricing()
            begin select avg(prod_price) as priceaverage from products;
            end;

应用:

call productpricing();

② 使用参数:

create procedure productpricing(out p1 decimal(8,2),out pa decimal(8,2),out ph decimal(8,2)) 
     begin select min(prod_price) into p1 from products;  select max(prod_price) into p1 from products; select                          avg(prod_price) into p1 from products;
         end;

为了调用,需要指定3个变量,

call productpricing(@pricelow,@pricehigh,@priceaverage);

调用:

select @priceaverage;
 

 四、游标

游标:是一个存储在mysql服务器上的数据库查询,它不是一条select语句而是被该语句检索出来的结果集,只能用于存储过程 。我们写一个select查询语句会返回给我们所有的结果,这时候我们想对查询到的结果进行一条条筛选,这个过程就是游标。

create procedure processorders()
begin declare ordernumbers cursor for select order_num from orders; 
end;

五、触发器

触发器:是mysql 响应以下任意语句而自动执行的一条mysql语句   delect  insert   update,其他语句不支持触发器,并且只有表支持触发器  比如我可以写一个触发器,设定它在插入一笔数据到这个表里的时候,去同步另一个表.那么在程序里我只要做到往数据库里插一笔数据,那么另一个表就可以同时被更新.也可以在一个表中

create trigger newproduct after insert on products for each row select 'product added'; 

create trigger newproduct after insert on orders for each row select new.order_num;

猜你喜欢

转载自blog.csdn.net/qq_39038465/article/details/81663540