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

简介: 学习报告,本期学到了如何在ESC云服务器上快速创建安装MySQL,以及结合RDS MySQL版数据库实例快速搭建自己的云上博客。

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

2月14日 动手实战-MySQL数据库快速部署实践

学到了一些简单的命令,例如:
1.更新YUM源。

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

2.安装MySQL。

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

3.查看MySQL版本号。

mysql -V

4.启动MySQL服务。

systemctl enable mysqld

5.配置MySQL的root用户密码。

#查看/var/log/mysqld.log文件,获取root用户的初始密码。
grep 'temporary password' /var/log/mysqld.log
#登录数据库。
mysql -uroot -p
#修改MySQL的root用户的初始密码。
set global validate_password_policy=0;  #修改密码安全策略为低(只校验密码长度,至少8位)。
ALTER USER 'root'@'localhost' IDENTIFIED BY '12345678';
#授予root用户远程管理权限。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '12345678';
#输入exit退出数据库。

6.创建备份数据库

#进入 mysql 之后,每条命令结尾都要有分号。
create database test;  #创建test数据库
show databases;  #查看当前数据库列表
use mysql;  #连接 mysql 数据库
show tables;  #查看 mysql 数据库中的数据表
#使用命令 exit ,退出 MySQL 界面

#将名为 test 的数据库备份到当前目录的 test.sql,需要输入密码
mysqldump -uroot -p test >test.sql
#完成后,使用命令 ll 查看备份文件,界面查看到备份文件 test.sql ,完成备份

#将 test.sql 导入数据库,需要输入密码
mysql -uroot -p -Dtest<test.sql

#还有一种导入方法:输入命令:mysql -uroot -p12345678 ,进入 MySQL 数据库。输入 use test; #,连接数据库 test ,输入 source /root/test.sql; ,将 test.sql 导入数据库 test ,全部出现 #Query OK ,则表示数据库导入成功。
mysql -uroot -p12345678
use test;
source /root/test.sql;

7.创建表,添加数据,增删改查

create table test1 (id int,name char(20));  #创建一张表,表名为 test1 
insert into test1 values(1,"zhangsan");  #插入一条数据
select * from test1;  #查看 test1 表中的全部数据信息
update test1 set name = "lisi" where id =1;  #更新 test1 表中的数据
delete from test1 where id =1;  #删除 test1 表中,所有 id 值为 1 的数据
drop table test1;  #删除名为 test1 的数据表
drop database test;  #删除名为 test 的数据库

2月15日 动手实战-如何在云端创建MySQL数据库

学到了如何在数据传输服务DTS通过数据传输控制台进行迁移数据库。

2月16日 动手实战-基础学习之MySQL数据库基础

1.学到了如何对数据库进行操作:
数据库表操作

#使用CREATE TABLE语句创建一个数据表
CREATE TABLE `USER` (
  `user_id` int(128) NOT NULL AUTO_INCREMENT,
  `name` varchar(64) NOT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci;

语句解析:

  • CREATE TABLE USER:新表的名字,表名称在关键字CREATE TABLE后给出。
  • name varchar(64) NOT NULL,:列名name,类型varchar,长度限制64,此列不能为空。
  • PRIMARY KEY (user_id):设置USER表主键为user_id。
  • user_id int(128) NOT NULL AUTO_INCREMENT,:AUTO_INCREMENT通常用于主键,表示主键自增,数值会自动+1。

2.使用ALTER TABLE语句更新数据表

ALTER TABLE user ADD COLUMN sex tinyint(1) NOT NULL COMMENT 'sex,woman:0,man:1' AFTER `age`;

3.使用RENAME TABLE语句对数据表重命名

RENAME TABLE USER TO student;
#语句格式:
RENAME TABLE table_name_a TO table_name_b;

4.使用DROP TABLE语句删除数据表

DROP TABLE student;
#语句格式:
DROP TABLE table_name;

数据操作
1.创建一个数据表

CREATE TABLE `user` (
 `id` int(11) NOT NULL 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

2.插入数据

INSERT INTO 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标记的自动递增的主键,在插入数据时,可以不设置值。

3.查询数据
查询语句格式:

SELECT col_name,...
  FROM table_name
 WHERE where_condition
 GROUP BY col_name,...
HAVING where_condition
 ORDER BY col_name,...
 LIMIT offset,row_count
#查询语句
SELECT id,nameage,address,sex FROM user;

4.更新数据
更新语句格式:

UPDATE table_name SET col_name=expr,... WHERE where_condition
#更新语句
UPDATE `user` SET `age` = 28,`address` = 'sichuan' WHERE `name` = 'xiaoming' ;

5.删除数据
删除语句格式:

DELETE FROM table_name WHERE where_condition
#删除语句
DELETE FROM `user` WHERE `name` = 'xiaoming' ;

函数操作
1.创建一个数据表

CREATE TABLE student_score(sid INT PRIMARY KEY NOT NULL, sname VARCHAR(30), sage INT, ssex VARCHAR(8), score INT(11));
insert into `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);

2.函数操作

SELECT avg(score) FROM student_score;  #AVG()函数
SELECT COUNT(*) FROM student_score;  #COUNT()函数
SELECT MAX(score) FROM student_score;  #MAX()函数
SELECT MIN(score) FROM student_score;  MIN()函数
SELECT SUM(score) FROM student_score;  SUM()函数

组合查询
1.创建数据表

CREATE TABLE `student` (
 `sid` int(11) NOT NULL,
 `sname` varchar(30) DEFAULT NULL,
 `sage` int(11) DEFAULT NULL,
 `ssex` varchar(8) DEFAULT NULL,
 PRIMARY KEY (`sid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into `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');
CREATE TABLE `sc` (
 `sid` int(11) NOT NULL,
 `cid` int(11) NOT NULL,
 `score` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into `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);
CREATE TABLE `course` (
 `cid` int(11) NOT NULL,
 `cname` varchar(30) DEFAULT NULL,
 `tid` int(11) DEFAULT NULL,
 PRIMARY KEY (`cid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into `course`(`cid`,`cname`,`tid`) values
(102,'yuwen',2),
(101,'shuxue',1);
CREATE TABLE `teacher` (
 `tid` int(11) NOT NULL,
 `tname` varchar(30) DEFAULT NULL,
 PRIMARY KEY (`tid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into `teacher`(`tid`,`tname`) values
(2,'liulaoshi'),
(1,'wanglaoshi');

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

# 使用WHERE s. sid = sc.sid 来消除笛卡尔积。
SELECT s.sid ,s.sname ,c.score FROM student AS s ,sc AS c WHERE s.sid = c.sid ;

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

SELECT a.score,
       b.cname,
       s.sname
  FROM sc as a,
       course AS b,
       student AS s
 WHERE a.cid= b.cid
   AND s.sid= a.sid
   AND a.cid= 102
   AND a.score> 80
  1. 查询语文成绩比数学成绩高的同学
SELECT a.sid,
       a.score,
       s.sname
  FROM(
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.score
   AND a.sid= b.sid
   AND s.sid= a.sid

2月17日 动手实战-最佳应用实践之使用RDS MySQL和ECS搭建个人博客

学到了使用ECS和RDS搭建个人博客。
创建数据库账号和密码
访问RDS管理控制台,创建并配置数据库账号信息

部署环境
1.在ECS服务器上,安装Apache服务及其扩展包

yum -y install httpd httpd-manual mod_ssl mod_perl mod_auth_mysql

返回类似如下图结果则表示安装成功:
TB1hFdcNHr1gK0jSZFDXXb9yVXa-1050-137.png
2.启动Apache服务

systemctl start httpd.service

3.打开浏览器输入ECS服务器的公网IP,如果显示如下图的测试页面表示Apache服务安装成功。
TB1snr4X5DsXe8jSZR0XXXK6FXa-696-266.png
4.WordPress是使用PHP语言开发的博客平台,安装PHP。

#安装PHP
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测试页面
echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php
#重启Apache服务
systemctl restart httpd

打开浏览器,访问http://&lt;ECS公网IP>/phpinfo.php,显示如下页面表示PHP安装成功
b36f8fb0892146fdae22824e5371963f.jpg

安装和配置WordPress
1.安装WordPress

yum -y install wordpress

显示如下信息表示安装成功:
TB1PG7rb9R26e4jSZFEXXbwuXXa-1042-156.png
2.修改WordPress配置文件

#a.修改wp-config.php指向路径为绝对路径
# 进入/usr/share/wordpress目录。
cd /usr/share/wordpress
# 修改路径。
ln -snf /etc/wordpress/wp-config.php wp-config.php
# 查看修改后的目录结构。
ll

#b.移动WordPress到Apache根目录
# 在Apache的根目录/var/www/html下,创建一个wp-blog文件夹。
mkdir /var/www/html/wp-blog
mv * /var/www/html/wp-blog/

#c.修改wp-config.php配置文件
#database_name_here为之前步骤中创建的数据库名称,本示例为wordpress。
#username_here为之前步骤中创建的数据库用户名,本示例为test_user。
#password_here为之前步骤中创建的数据库登录密码,本示例为Password1213。
#数据库地址为RDS的连接地址(在RDS管理控制台 实例详情 页查看或者开通资源后再左侧资源栏列表中查看RDS连接地址)
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/数据库地址/' /var/www/html/wp-blog/wp-config.php

#d.查看配置文件信息是否修改成功
cat -n /var/www/html/wp-blog/wp-config.php

d.修改内容如下图所示:
TB1hnXrNHr1gK0jSZFDXXb9yVXa-1274-682.png

3.重启Apache服务

systemctl restart httpd

4.初始化WordPress
a. 打开浏览器并访问http://&lt;ECS公网IP>/wp-blog/wp-admin/install.php。
b. 设置站点名称、管理员用户名和密码,然后单击Install WordPress完成WordPress初始化。
TB1jcj2bIVl614jSZKPXXaGjpXa-723-689.png
c. 单击Log In,输入用户名和密码,然后再次单击Log In打开WordPress站点。
TB1ohA4Nxz1gK0jSZSgXXavwpXa-704-862.png
登录后,就可以根据需要创建内容进行发布了。至此已完成WordPress的搭建。
TB14yTbpcKfxu4jSZPfXXb3dXXa-939-420.png

2月18日 RDS MySQL的SQL问题诊断与调优

RDS MySQL的SQL问题诊断与调优
MySQL实例实操
1.创建数据库表

CREATE TABLE IF NOT EXISTS `test_tb`(
   `id` INT UNSIGNED AUTO_INCREMENT,
   `name` VARCHAR(100) NOT NULL,
   `address` VARCHAR(40) NOT NULL,
   `birthday` DATE,
   PRIMARY KEY ( `id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

2.执行如下命令,查看SQL执行计划

explain select * from test_tb where name='abc';

返回如下如下结果,你可以发现key和key_len的值都是null。
2354b4b783d344b286919185d8c7061a.png

3.执行如下命令,查看test_tb表的表结构

show create table test_tb;

返回如下结果,您可以查看到test_tb表的表结构
403b390f4b3a486ab526f1468c143ede.png

4.在执行结果中,单击图标
d7b459284ffa493680ef156e7c93d70c.png
返回如下结果,您可以看到完整的test_tb表的表结构。
f2097bb2f1374d9493b12e8205c05e26.png

5.创建test_tb表的索引

alter table test_tb add index(name);

返回如下结果,表示test_tb表的索引创建成功。
a355b80cc84e47719f5e4c5e77ed856b.png

6.重复第2步和第3步的操作,再次查看完整的test_tb表的表结构,会发现表结构中多了一个KEY name (name)
48859483f5ec450f83a075da49724620.png

7.执行以下命令,查看执行SQL计划

explain select * from test_tb where name='abc';

返回如下如下结果,你会发现key和key_len的值发生了改变。
4ab21cc1228043dca3bc8bfed3714a23.png

8.查看数据库运行中的SQL

select * from `information_schema`.`PROCESSLIST`

返回如下结果,可以查看到数据库运行中的SQL。
a16757c7a3d742238720c83c50ed762e.png

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
2月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
378 7
|
人工智能 关系型数据库 OLAP
聚光灯已就位!阿里云瑶池数据库邀你征战Cursor首届实战征文大赛
阿里云AnalyticDB携手Cursor中文社区,正式发起首届实战征文大赛!我们诚邀开发者融合Cursor的智能编程能力与AnalyticDB PostgreSQL提供的Supabase服务进行项目开发,让优秀项目被专家看见、被机遇拥抱!
|
6月前
|
关系型数据库 MySQL 数据库连接
Django数据库配置避坑指南:从初始化到生产环境的实战优化
本文介绍了Django数据库配置与初始化实战,涵盖MySQL等主流数据库的配置方法及常见问题处理。内容包括数据库连接设置、驱动安装、配置检查、数据表生成、初始数据导入导出,并提供真实项目部署场景的操作步骤与示例代码,适用于开发、测试及生产环境搭建。
286 1
|
7月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
6月前
|
SQL 数据建模 关系型数据库
别光知道存数据库了,数据建模才是王道!(入门指南+实战代码)
别光知道存数据库了,数据建模才是王道!(入门指南+实战代码)
966 4
|
3月前
|
存储 数据库 开发者
Python SQLite模块:轻量级数据库的实战指南
本文深入讲解Python内置sqlite3模块的实战应用,涵盖数据库连接、CRUD操作、事务管理、性能优化及高级特性,结合完整案例,助你快速掌握SQLite在小型项目中的高效使用,是Python开发者必备的轻量级数据库指南。
334 0
|
缓存 关系型数据库 MySQL
MySQL索引策略与查询性能调优实战
在实际应用中,需要根据具体的业务需求和查询模式,综合运用索引策略和查询性能调优方法,不断地测试和优化,以提高MySQL数据库的查询性能。
632 66
|
前端开发 关系型数据库 MySQL
PHP与MySQL动态网站开发实战指南####
【10月更文挑战第21天】 本文将深入浅出地探讨如何使用PHP与MySQL构建一个动态网站,从环境搭建到项目部署,全程实战演示。无论你是编程新手还是希望巩固Web开发技能的老手,都能在这篇文章中找到实用的技巧和启发。我们将一起探索如何通过PHP处理用户请求,利用MySQL存储数据,并最终呈现动态内容给用户,打造属于自己的在线平台。 ####
555 0
|
9月前
|
存储 运维 监控
百万指标,秒级查询,零宕机——时序数据库 TDengine 在 AIOps 中的硬核实战
本篇文章详细讲述了七云团队在运维平台中如何利用 TDengine 解决海量时序数据存储与查询的实际业务需求。内容涵盖了从数据库选型、方案落地到业务挑战及解决办法的完整过程,特别是分享了升级 TDengine 3.x 时的实战经验,给到有需要的小伙伴参考阅读。
373 1
|
11月前
|
SQL 存储 关系型数据库
MySQL秘籍之索引与查询优化实战指南
最左前缀原则。不冗余原则。最大选择性原则。所谓前缀索引,说白了就是对文本的前几个字符建立索引(具体是几个字符在建立索引时去指定),比如以产品名称的前 10 位来建索引,这样建立起来的索引更小,查询效率更快!
391 22
 MySQL秘籍之索引与查询优化实战指南

热门文章

最新文章

推荐镜像

更多