冬季实战营第三期:MySQL数据库进阶实战笔记

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: 冬季实战营第三期:MySQL数据库进阶实战笔记

MySQL数据库快速部署实践

首先安装mysql然后执行mysql的一些常用操作最后学习基本的SQL语句。

MySQL安装与配置

在安装Mysql前先更新YUM源命令如下:

rpm -Uvh http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

然后再安装Mysql,按教程这里直接yum进行安装,如下(安装MySQL版本为5.7):

yum -y install mysql-community-server --nogpgcheck

图片1.png

启动MySQL命令:systemctl start mysqld

设置MySQL开机自启动systemctl enable mysqld

配置MySQL的root用户密码我的初始密码为(系统生成的随机密码):prbSywkvW2>g

图片2.png

登录Mysql修改root初始密码并授予远程管理权限

注意:Mysql每条命令都以英文半角分号结尾。

图片3.png

登录Mysql创建一个test数据库并查看

图片4.png

切换当前数据库命令use 数据库名;

查看当前库所有表:show tables;

备份test数据库数据到当前目录的test.sqlmysqldump -uroot -p test >test.sql

当前目录的test.sql导入数据库mysql -uroot -p -Dtest<test.sql

另外一种导入方式:进入数据库后,执行source /root/test.sql;将 test.sql 导入数据库 test,全部出现 Query OK ,则表示数据库导入成功。

常用 SQL

切换当前数据库命令use 数据库名; #界面提示Database changed表示成功

创建表的命令:create table test1 (id int,name char(20)); #语法create table test1 (id int,name char(20));

插入数据命令:insert into test1 values(1,"zhangsan"); #语法INSERT INTO 表名 VALUES (值1, 值2,....);

指定表全部数据select * from test1; #语法SELECT * FROM 表名;

更新指定表数据:update test1 set name = "lisi" where id =1; #语法UPDATE 表名 SET 列名 = 值 WHERE 表名 = 值;

删除指定表数据:delete from test1 where id =1; #语法DELETE FROM 表名 WHERE 列名 = 值;

删除指定表:drop table test1; #DROP TABLE 表名;

删除指定库:drop database test; #DROP DATABASE 数据库名称;

图片5.png

在云端创建MySQL数据库

登录本地MySQL数据库,并查看本地MySQL源数据库中的信息。

首先查看数据库,登录查看源数据库bakery、其中的表customerproduct,以及表中的数据

使用子用户登录阿里云云数据库RDS控制台进入RDS实例控制台,创建一个普通账号,再创建一个数据库授权给新建的普通账号。

然后进入数据传输服务DTS控制台(地址是:DTS控制台),在数据迁移页面,配置迁移任务

先配制的是源库信息,数据库类型选择MySQL,接入方式选择公网IP,实例地区选择实例地域,IP地址端口 数据库账号密码输入RDS云数据库的。然后配制目标库信息,实例选择RDS实例,数据库类型选择MySQL,接入方式选择阿里云实例,实例地区选择实例的地域,RDS实例ID 选择实验资源中提供的目标数据库的实例ID数据库账号和密码是自己新建的数据库账号密码。

然后点击测试连接以进行下一步,配置迁移任务的迁移类型及列表本地MySQL数据库中的bakery数据库移动到已选择对象的列表中。配置后,点击 预检查并启动等待一会,完成预检查,检查结果为 预检查通过100% 然后点击下一步,此时迁移任务的状态为迁移中,等待几分钟,状态变为已完成则完成迁移。

再次打开云数据库RDS点击登录数据库进入数据库管理登录界面数据库类型为MySQL,实例地区为该实例的地域,实例ID选择该实例即可,账号和密码输入自己新建的账号和密码即可。点击登录,登录成功后,查看数据库表,证明数据库迁移成功

MySQL数据库基础

通过阿里云DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。

数据库启动与连接

首先打开云数据库RDS管理控制台RDS管理控制台),创建一个高级权限的MySQL账号test_user和一个数据库(user_db然后使用新建的账号test_user登录MySQL,登录成功,进入数据管理服务系统DMS

数据库表操作

对数据库表的基本操作,新增、删除、更新和重命名等

首先切换登录数据库user_db

创建数据表

CREATETABLE `USER` (  `user_id` int(128)NOTNULL AUTO_INCREMENT,  `name` varchar(64)NOTNULL,  `age` int(11) DEFAULT NULL,  PRIMARY KEY (`user_id`)) ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci;

说明:

CREATETABLE `USER`:
USER表示要创建的表名。
`name` varchar(64)NOTNULL,name是表的列名,varchar(64)是表数据类型,64表示数据长度,NOT NULL表示数据不可为空。
PRIMARY KEY (`user_id`)user_id是要设置为主键的列名称。
`user_id` int(128)NOTNULL AUTO_INCREMENT,user_id是主键的列名,int(128)是主键列数据类型和长度,NOT NULL数据不可为空,AUTO_INCREMENT,AUTO_INCREMENT通常用于主键,表示主键自增,数值会自动+1

更新数据表

在年龄age列后面,为USER表新增一列性别sex,0代表女,1代表男

ALTERTABLE user ADD COLUMN sex tinyint(1)NOTNULL COMMENT 'sex,woman:0,man:1' AFTER `age`;

数据表重命名

修改表名user为student

RENAME TABLE USER TO student;

说明:RENAME TABLE 要修改的表名 TO 修改后的表名;

删除数据表

DROPTABLE student; #注意表删除后不可恢复!

说明:DROP TABLE 要删除的表名;

数据操作

数据查询、删除、更新、插入等基本操作

重新创建数据表

CREATETABLE `user` ( `id` int(11)NOTNULL AUTO_INCREMENT COMMENT 'ID', `name` varchar(32) DEFAULT NULL COMMENT 'name', `age` int(11) DEFAULT NULL COMMENT 'age', `address` varchar(32) DEFAULT NULL COMMENT 'address', `sex` tinyint(1) DEFAULT NULL COMMENT 'sex,woman:0,man:1', PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8

说明:在数据库表操作时已经解释讲述过了,此处不再过多讲述。

插入数据

INSERTINTO USER
(name, age, address, sex)VALUES('zhangsan',21,'jiangxi',0),('lisi',22,'hubei',0),('wangwu',23,'hunan',0),('lilei',24,'henan',1),('hanmeimei',25,'hebei',1),('xiaoming',26,'shandong',1),('xiaoli',27,'shanxi',1);

说明:

table_name(col_name,...)中的字段名列表必须和values(expr,...)字段值列表一致。

如果数据是字符型,必须使用单引号或者双引号。

被AUTO_INCREMENT标记的自动递增的主键,在插入数据时,可以不设置值。

查询数据

SELECT id,name,age,address,sex FROM user;

语法:

SELECT col_name,...FROM table_name
WHERE where_condition
GROUPBY col_name,...HAVING where_condition
ORDERBY col_name,...LIMIT offset,row_count

更新数据

UPDATE `user` SET `age` =28,`address` ='sichuan'WHERE `name` ='xiaoming';

说明:

user:表名;`age` = 28age是列名,表示修改为28;WHERE `name` = 'xiaoming'WHERE关键词后面是条件判断name是列名,列名等于xiaoming更新该条数据。

删除数据

DELETEFROM `user` WHERE `name` ='xiaoming';

说明:

User为表名,WHERE `name` = 'xiaoming'WHERE关键词后面为条件判断name是列名,列名等于xiaoming删除该条数据。

函数操作

MySQL中常用的内置函数

创建数据表

CREATETABLE student_score(sid INT PRIMARY KEY NOTNULL, sname VARCHAR(30), sage INT, ssex VARCHAR(8), score INT(11));insertinto `student_score`(`sid`, `sname`, `sage`, `ssex`,`score`)values(1001,'xiaohua',17,'0',75),(1002,'xiaohong',18,'0',80),(1003,'wangwu',18,'1',90),(1004,'lisi',17,'1',68),(1005,'zhangsan',19,'1',73),(1006,'xiaohei',19,'1',100),(1007,'xiaoma',20,'0',77),(1008,'xiaoli',17,'1',82),(1009,'xiaobai',19,'0',88),(1010,'wentong',18,'0',53);

AVG()函数

SELECT avg(score)FROM student_score;

说明:返回该表(student_score数值列score的平均值

COUNT()函数

SELECTCOUNT(*)FROM student_score;

说明:返回该表(student_score的记录数

MAX()函数

SELECT MAX(score)FROM student_score;

说明:返回该表(student_score数值列score的最大值

MIN()函数

SELECT MIN(score)FROM student_score;

说明:返回该表(student_score数值列score的最小值

SUM()函数

SELECT SUM(score)FROM student_score;

说明:返回该表(student_score数值列score的总数

组合查询

使用GROUP BY、HAVING和ORDER BY等进行分组查询。

创建数据表

CREATETABLE `student` ( `sid` int(11)NOTNULL, `sname` varchar(30) DEFAULT NULL, `sage` int(11) DEFAULT NULL, `ssex` varchar(8) DEFAULT NULL, PRIMARY KEY (`sid`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;insertinto `student`(`sid`,`sname`,`sage`,`ssex`)values(1005,'xiaohua',19,'0'),(1004,'xiaohong',18,'0'),(1003,'wangwu',18,'1'),(1002,'lisi',17,'1'),(1001,'zhangsan',18,'1');CREATETABLE `sc` ( `sid` int(11)NOTNULL, `cid` int(11)NOTNULL, `score` int(11) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;insertinto `sc`(`sid`,`cid`,`score`)values(1001,101,75),(1001,102,85),(1002,101,65),(1002,102,95),(1003,101,65),(1003,102,95),(1004,101,80),(1004,102,80),(1005,101,75),(1005,102,85);CREATETABLE `course` ( `cid` int(11)NOTNULL, `cname` varchar(30) DEFAULT NULL, `tid` int(11) DEFAULT NULL, PRIMARY KEY (`cid`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;insertinto `course`(`cid`,`cname`,`tid`)values(102,'yuwen',2),(101,'shuxue',1);CREATETABLE `teacher` ( `tid` int(11)NOTNULL, `tname` varchar(30) DEFAULT NULL, PRIMARY KEY (`tid`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;insertinto `teacher`(`tid`,`tname`)values(2,'liulaoshi'),(1,'wanglaoshi');

查询所有同学的学号和成绩

使用WHERE s. sid = sc.sid可以消除笛卡尔积。

SELECT s.sid,s.sname,c.scoreFROM student AS s ,sc AS c WHERE s.sid= c.sid;

查询语文成绩在80以上同学

SELECT a.score,       b.cname,       s.snameFROM sc as a,       course AS b,       student AS s
WHERE a.cid= b.cidAND s.sid= a.sidAND a.cid=102AND a.score>80

查询语文成绩比数学成绩高的同学

SELECT a.sid,       a.score,       s.snameFROM(SELECT sid, score
FROM sc
WHERE cid="102") a,(SELECT sid, score
FROM sc
WHERE cid="101") b,       student as s
WHERE a.score> b.scoreAND a.sid= b.sidAND s.sid= a.sid

使用RDS MySQL和ECS搭建个人博客

创建数据库和数据库账号

进入RDS实例管理控制台创建一个普通数据库账号test_user),密码为Password1213用来连接登录数据库再创建一个数据库(wordpress)授权给新建的数据库账号(test_user),用来存储我们的wp网站数据。

部署环境

我们使用的是Apache后端服务器PHP运行环境

安装Apache和必要的扩展包命令(显示Complete!表示安装完成):

yum -y install httpd httpd-manual mod_ssl mod_perl mod_auth_mysql

启动Apache服务的命令:systemctl start httpd.service

重启Apache服务的命令:systemctl restart httpd

安装PHP和必要的扩展包命令(显示Complete!表示安装完成):

yum -y install php php-mysql gd php-gd gd-devel php-xml php-common php-mbstring php-ldap php-pear php-xmlrpc php-imap

创建PHP测试页面以下命令是将<?php phpinfo(); ?>写入到/var/www/html/phpinfo.php文件中,重启Apache打开http://公网IP/phpinfo.php即可看到效果:

echo"<?php phpinfo(); ?>" > /var/www/html/phpinfo.php

安装和配置WordPress

安装WordPress博客然后连接到RDS数据库

安装WordPress命令:yum -y install wordpress

安装完成后必须要修改配制文件,修改wp-config.php指向路径为绝对路径命令

ln-snf /etc/wordpress/wp-config.php /usr/share/wordpress/wp-config.php

然后需要把WordPress网站源码移动到Apache根目录下,首先在/var/www/html目录创建wp-blog文件夹用来存放网站的源码,命令为:

mkdir /var/www/html/wp-blog #在该目录创建文件夹mv * /var/www/html/wp-blog/ #移动当前目录下所有文件

修改wp-config.php里的数据库配制:

database_name_here数据库名称wordpress

username_here数据库用户名test_user

password_here登录密码Password1213

RDS连接地址在云产品资源里面可以直接看到,例如:rm-uf6r9wgwy0iz15qpy.mysql.rds.aliyuncs.com

直接命令行修改命令为:

sed-i's/database_name_here/wordpress/' /var/www/html/wp-blog/wp-config.php
sed-i's/username_here/test_user/' /var/www/html/wp-blog/wp-config.php
sed-i's/password_here/Password1213/' /var/www/html/wp-blog/wp-config.php
sed-i's/localhost/此处更换为你的RDS地址/' /var/www/html/wp-blog/wp-config.php

配制完成后,记得要重启Apache让修改生效喔。重启后打开地址对WordPress进行初始化安装:

http://公网IP/wp-blog/wp-admin/install.php

打开地址后输入设置站点名称(Site Title)、管理员用户名(Username)、密码(Password)和邮箱(Your Email),然后单击Install WordPress完成WordPress初始化安装显示Success!就是安装成功了。点击Log In前往后台登陆。登录成功后就可以发布博客了。

图片6.png

报错:Can’t select database

如果在配制完成后安装WordPress的时候,出现Can’t select database提示(附图如下),代表你的数据库账号密码和地址无误,可能是你的数据库账号权限不足,你需要重新授权数据库,此时可以这样做:

1、打开RDS控制台账号管理。

2、在test_user用户栏,点击修改权限。

3、把未授权的数据库添加进来,给读写权限即可。

4、返回刷新继续安装。

图片7.png

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6天前
|
SQL 关系型数据库 MySQL
MySQL性能优化实战:从索引策略到查询优化
MySQL性能优化聚焦索引策略和查询优化。创建索引如`CREATE INDEX idx_user_id ON users(user_id)`可加速检索;复合索引考虑字段顺序,如`idx_name ON users(last_name, first_name)`。使用`EXPLAIN`分析查询效率,避免全表扫描和大量`OFFSET`。通过子查询优化分页,如LIMIT配合内部排序。定期审查和调整策略以提升响应速度和降低资源消耗。【6月更文挑战第22天】
95 2
|
5天前
|
存储 关系型数据库 MySQL
Mysql优化之索引相关介绍(笔记)
索引查找从顶层节点开始查找,通过key值,也就是主键的值进行比较,最终定位到存储数据的叶子节点上面,从叶子节点取出响应的数据。
31 0
Mysql优化之索引相关介绍(笔记)
|
2天前
|
存储 监控 关系型数据库
MySQL普通表转换为分区表实战指南
MySQL普通表转换为分区表实战指南
|
3天前
|
存储 关系型数据库 MySQL
技术笔记:MySQL数据库优化详解(收藏)
技术笔记:MySQL数据库优化详解(收藏)
10 0
|
3天前
|
SQL 关系型数据库 MySQL
技术笔记:python连接mysql数据库
技术笔记:python连接mysql数据库
|
3天前
|
SQL 存储 关系型数据库
技术笔记:MYSQL常用基本SQL语句总结
技术笔记:MYSQL常用基本SQL语句总结
|
4天前
|
JSON 关系型数据库 MySQL
MySQL常用函数解读:从基础到进阶的全方位指南
MySQL常用函数解读:从基础到进阶的全方位指南
|
4天前
|
关系型数据库 MySQL 数据库
MySQL SELECT查询实战:练习题精选,提升你的数据库查询技能
MySQL SELECT查询实战:练习题精选,提升你的数据库查询技能
|
5天前
|
SQL 关系型数据库 MySQL
MySQL进阶 - 备份与恢复
MySQL进阶 - 备份与恢复
10 0
|
5天前
|
SQL 关系型数据库 MySQL
MySQL进阶 - 日志
MySQL进阶 - 日志
7 0