MySQL入门实战笔记

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 云起冬季实战营第三期:MySQL数据库进阶实战。参加复习一下mysql,教程很好,做笔记记录一下。

1.  MySQL安装与配置

MySQL是一个关系型数据库管理系统,本步骤指导您如何在服务器上安装MySQL。

以CentOS为例:

  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

返回结果如下,表示您已成功安装MySQL。

image.png


4. 执行如下命令,启动MySQL服务。

systemctl start mysqld

5. 执行如下命令,设置MySQL服务开机自启动。

systemctl enable mysqld

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


1)执行如下命令,查看/var/log/mysqld.log文件,获取root用户的初始密码。

grep 'temporary password' /var/log/mysqld.log

返回结果如下所示,您可以查看到root用户的初始密码。

 image.png


2)执行以下命令,使用root用户登录数据库。

mysql -uroot -p

返回结果如下所示,输入root用户的初始密码。(输入的密码是不会显示出来的)

image.png

3)执行以下命令,修改MySQL的root用户的初始密码。

set global validate_password_policy=0;  #修改密码安全策略为低(只校验密码长度,至少8位)。
ALTER USER 'root'@'localhost' IDENTIFIED BY '12345678';


4)执行以下命令,授予root用户远程管理权限。

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '12345678';


  1. 输入exit退出数据库。

 image.png


  1. 执行以下命令,使用root用户登录数据库。

mysql -uroot -p12345678
  1. 执行如下命令,创建test数据库。

create database test;
  1. 执行如下命令,查看当前数据库列表。此时,可以看到三个数据库:information_schema ,mysql,performance_schema,sys,test 。

show databases;

注意:进入 mysql 之后,每条命令结尾都要有分号。

image.png

11. 执行命令 use mysql;,连接 mysql 数据库。然后执行命令 show tables; ,查看 mysql 数据库中的数据表。使用命令 exit ,退出 MySQL 界面。

use mysql;

show tables;

exit

 

image.png

12. 返回 Linux 界面,执行如下命令,将名为 test 的数据库备份到当前目录的 test.sql。界面显示 Enter password,输入 MySQL 数据库的登录密码 12345678 。根据备份的数据库大小,等待时间长短不同。完成后,使用命令 ll 查看备份文件,界面查看到备份文件 test.sql ,完成备份。

mysqldump -uroot -p test >test.sql

ll

 

image.png

13. 返回 Linux 界面,执行如下命令,将 test.sql 导入数据库。界面显示 Enter password ,输入 MySQL 数据库的登录密码 12345678 。

说明:其中参数 -D 是指定数据库为test。

mysql -uroot -p -Dtest<test.sql

image.png


14. 还有一种导入方法:输入命令: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;

 

image.png


2. SQL基础操作

1.  数据库表操作

本小节主要介绍对数据库表的基本操作,其中包括新增、删除、更新和重命名等。


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;

语句解析:

  • 1.
  • 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语句更新数据表。

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

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


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

修改表名user为student。

RENAME TABLE USER TO student;

语句格式:

RENAME TABLE table_name_a TO table_name_b;


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

说明:此操作不能撤销,请谨慎操作。

删除学生表。

DROP TABLE student;

语句格式:

DROP TABLE table_name;


2.  数据操作

本小节主要为大家介绍MySQL中常用的数据查询、删除、更新、插入等基本操作。


1. 使用CREATE TABLE语句创建一个数据表。

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. 插入数据

插入语句说明:

  • table_name(col_name,...)中的字段名列表必须和values(expr,...)字段值列表一致。
  • 如果数据是字符型,必须使用单引号或者双引号。
  • AUTO_INCREMENT标记的自动递增的主键,在插入数据时,可以不设置值。


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) ;


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,name,age,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' ;

 

3.  函数操作

本小节主要为大家介绍MySQL中常用的内置函数。


1. 使用CREATE TABLE语句创建一个数据表。  

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. AVG()函数

SELECT avg(score) FROM student_score;

执行结果如下:

image.png 


3. COUNT()函数  

SELECT COUNT(*) FROM student_score;

执行结果如下:

 image.png

4. MAX()函数  

SELECT MAX(score) FROM student_score;

执行结果如下:

 image.png

5. MIN()函数  

SELECT MIN(score) FROM student_score;

执行结果如下:

 image.png


6. SUM()函数

SELECT SUM(score) FROM student_score;

执行结果如下:

image.png 


 

4.  组合查询

本小节主要介绍如何使用GROUP BY、HAVING和ORDER BY等进行分组查询。


1. 使用CREATE TABLE语句创建数据表。  

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


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

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


3. SQL问题诊断与调优

MySQL常见的表创建、索引创建等操作。


1、创建数据库表。

创建数据库test_tb。

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语句,查看SQL执行计划。

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

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

image.png


3、输入如下SQL语句,查看test_tb表的表结构。

show create table test_tb;

返回如下结果,您可以查看到test_tb表的表结构。

image.png

4、创建test_tb表的索引。

alter table test_tb add index(name);

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

image.png


5、重复第5步和第6步的操作,再次查看完整的test_tb表的表结构,您会发现表结构中多了一个KEY `name` (`name`)

image.png

6、在SQLConsole页签中,输入如下SQL语句,查看执行SQL计划,单击执行

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

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

image.png


7、输入如下SQL语句,查看数据库运行中的SQL。

select * from `information_schema`.`PROCESSLIST`

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

image.png

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
安全 关系型数据库 MySQL
PHP与MySQL交互:从入门到实践
【9月更文挑战第20天】在数字时代的浪潮中,掌握PHP与MySQL的互动成为了开发动态网站和应用程序的关键。本文将通过简明的语言和实例,引导你理解PHP如何与MySQL数据库进行对话,开启你的编程之旅。我们将从连接数据库开始,逐步深入到执行查询、处理结果,以及应对常见的挑战。无论你是初学者还是希望提升技能的开发者,这篇文章都将为你提供实用的知识和技巧。让我们一起探索PHP与MySQL交互的世界,解锁数据的力量!
|
2月前
|
关系型数据库 MySQL 数据库
MySQL基本操作入门指南
MySQL基本操作入门指南
89 0
|
1月前
|
Java 关系型数据库 MySQL
自动化测试项目实战笔记(一):JDK、Tomcat、MySQL、Jpress环境安装和搭建
这篇文章是关于自动化测试项目实战笔记,涵盖了JDK、Tomcat、MySQL、Jpress环境的安装和搭建过程,以及测试用例和常见问题总结。
52 1
自动化测试项目实战笔记(一):JDK、Tomcat、MySQL、Jpress环境安装和搭建
|
23天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
119 1
|
29天前
|
NoSQL 关系型数据库 MySQL
MySQL与Redis协同作战:优化百万数据查询的实战经验
【10月更文挑战第13天】 在处理大规模数据集时,传统的关系型数据库如MySQL可能会遇到性能瓶颈。为了提升数据处理的效率,我们可以结合使用MySQL和Redis,利用两者的优势来优化数据查询。本文将分享一次实战经验,探讨如何通过MySQL与Redis的协同工作来优化百万级数据统计。
57 5
|
1月前
|
架构师 关系型数据库 MySQL
MySQL最左前缀优化原则:深入解析与实战应用
【10月更文挑战第12天】在数据库架构设计与优化中,索引的使用是提升查询性能的关键手段之一。其中,MySQL的最左前缀优化原则(Leftmost Prefix Principle)是复合索引(Composite Index)应用中的核心策略。作为资深架构师,深入理解并掌握这一原则,对于平衡数据库性能与维护成本至关重要。本文将详细解读最左前缀优化原则的功能特点、业务场景、优缺点、底层原理,并通过Java示例展示其实现方式。
88 1
|
24天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第26天】数据库作为现代应用系统的核心组件,其性能优化至关重要。本文主要探讨MySQL的索引策略与查询性能调优。通过合理创建索引(如B-Tree、复合索引)和优化查询语句(如使用EXPLAIN、优化分页查询),可以显著提升数据库的响应速度和稳定性。实践中还需定期审查慢查询日志,持续优化性能。
53 0
|
2月前
|
监控 关系型数据库 MySQL
zabbix agent集成percona监控MySQL的插件实战案例
这篇文章是关于如何使用Percona监控插件集成Zabbix agent来监控MySQL的实战案例。
63 2
zabbix agent集成percona监控MySQL的插件实战案例
|
2月前
|
SQL 关系型数据库 MySQL
MySQL入门到精通
MySQL入门到精通
|
3月前
|
SQL 关系型数据库 MySQL
干货!python与MySQL数据库的交互实战
干货!python与MySQL数据库的交互实战

热门文章

最新文章

下一篇
无影云桌面