【收藏级】MySQL 100条命令,基本操作的所有内容(常看常新)(三)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 【收藏级】MySQL 100条命令,基本操作的所有内容(常看常新)(三)

九、视图

视图(View)其实是从一个或多个关系表(或视图)当中导出的表,是一个虚表类似一个软链接。

9.1、创建视图

建一个视图view_basic_info,数据来源于t_student表

语法:create view <视图名> as select_statement

create view view_basic_info as select * from t_student;

9.2、修改视图

语法:create view <视图名> as select_statement

alter view view_basic_info as select * from t_student;

9.3、删除视图

drop view view_basic_info;

十、存储过程

存储过程和程序中的函数非常相似,它可以将某些需要多次调用、实现某个特定任务的代码段编写成一个过程,将其保存在数据库中,并通过过程名来调用,这些过程称为存储过程。

DELIMITER 定义:设置语句结束后使用的分隔符,MYSQL的默认结束符为";"。

10.1、创建存储过程

mysql> delimiter $  
mysql> create procedure p1()
    -> comment '读者信息'
    -> begin
    -> select * from t_reader;
    -> end $
mysql> delimiter ;

10.2、调用存储过程

mysql> call p1;

10.3、删除存储过程

mysql> drop procedure p1;

10.4、创建带参数的存储过程

10.4.1、in

  1. 创建一个带输入参数的存储过程,查询某个学号对应的学生信息。
mysql> delimiter $
mysql> create procedure p3(in stuid char(10))
comment "查询某个学号对应的学生信息" 
begin
select * from t_student where stu_id=stuid;
end $
mysql> delimiter ;
mysql> call p3(1631607102); #调用存储过程

10.4.2、out

  1. 创建一个带输出参数的存储过程,查询所有学生的人数。

注意:变量名前加@表示:会话变量

会话变量:不局限于存储过程内部

mysql> delimiter $
mysql> create procedure p6(out stucount int) 
begin 
select COUNT(stu_id) into stucount from t_student; 
end $
mysql> delimiter ;
mysql> call p6(@stucount);  #调用存储过程
mysql> select @stucount;  #查看输出变量

10.4.3、inout

  1. 创建一个带输入输出参数的存储过程,对某个成绩加20分。
mysql> delimiter $
mysql> create procedure p9(inout testname int) 
begin 
update t_score set grade=grade+20 where score_id=testname; 
select grade into testname from t_score where score_id=testname; 
end $
mysql> delimiter ;
mysql> set @testname=1001;
mysql> call p9(@testname);
mysql> select @testname;

@pra:会话变量不局限于存储过程内部

十一、SQL编程基础

11.1、SQL编程基础语法

SQL本质就是一种编程语言,需要变量来保存数据。MySQL中许多属性控制都是通过MySQL中的变量老实现的。

变量分为两大类:系统变量和用户变量

系统变量:针对所有用户,即MySQL中所有客户端都有效。

用户变量:针对指定对应的用户。

11.1.1、系统变量

MySQL系统变量实际上是用来存储系统参数的,用于初始化和设置MySQL对系统资源的占用,配置文件存放位置等。大部分变量都是作为MySQL系统的调节参数存在,修改这些参数会影响MySQL的运行方式。

系统变量:分为全局(global)变量和会话(session)变量。

全局变量:影响整个MySQL实例的整体操作。

会话变量:影响当前到MySQL实例的连接。

11.1.1.1、查看系统变量

11.1.1.1.1、会话变量和全局变量

语法:show variables 条件语句

条件语句:代表要查询系统变量的筛选条件(可选项)

查看所有系统变量;优先显示会话变量,其次显示全局变量。

show variables;  //查看所有系统变量

通过global、session关键字,限制系统变量作用域。

show global variables;  //查看全局变量
show session variables;  //查看会话变量

如果要查看的是某些具体的系统变量,而不是全部,可以使用like和where语句:

show variables like 'log%';  //查询所有变量名以log开头的系统变量

如果在查询时,条件中除了以变量名为条件,还要以值为条件,可以使用where语句:

show variables where variable_name like 'log%' and value='OFF';
11.1.1.1.2、配置变量和监控变量

MySQL系统变量还能分为:配置变量和监控变量

show variables;  // 查看配置变量
show status; // 查看监控变量

同理,若想在查询系统状态变量时,增加条件语句,方式和查询配置变量时相同。

11.1.1.2、常见的系统变量

工作中,数据库一般分为“开发库”、“测试库”、“线上库”等环境。

查看当前MySQL版本信息

mysql> show variables like 'version%';
+-------------------------+------------------------------+
| Variable_name           | Value                        |
+-------------------------+------------------------------+
| version                 | 8.0.30                       |
| version_comment         | MySQL Community Server - GPL |
| version_compile_machine | x86_64                       |
| version_compile_os      | Win64                        |
| version_compile_zlib    | 1.2.12                       |
+-------------------------+------------------------------+
5 rows in set, 1 warning (0.02 sec)

最大连接数

在连接数据库时,经常会遇到 MySQL: ERROR 1040: Too many connections 的报错信息。一种情况是,因为访问量太高,MySQL压力过大,无法处理,这个时候可以增加’从‘服务器的数量,来缓解’读‘的压力。另外一种情况是,MySQL配置文件中 max_connections 值设置过小导致。

mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 200   |
+-----------------+-------+
1 row in set, 1 warning (0.00 sec)

当前连接数

如果 Threads_connected <= max_connections 才能保证正常连接数据库。

mysql> show status like 'Threads_connected';
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| Threads_connected | 1     |
+-------------------+-------+
1 row in set (0.00 sec)

MySQL编码配置信息

如果出现中文乱码问题,一般是MySQL编码设置不一致导致。

mysql> show variables like '%set%';
+---------------------------------------+---------------------------------------------------------------+
| Variable_name                         | Value                                                         |
+---------------------------------------+---------------------------------------------------------------+
| auto_increment_offset                 | 1                                                             |
| character_set_client                  | utf8mb4                                                       |
| character_set_connection              | utf8mb4                                                       |
| character_set_database                | utf8mb4                                                       |
| character_set_filesystem              | binary                                                        |
| character_set_results                 | utf8mb4                                                       |
| character_set_server                  | utf8mb4                                                       |
| character_set_system                  | utf8mb3                                                       |
| character_sets_dir                    | D:\APP\Pro_Software\MYSQL\mysql-8.0.30-winx64\share\charsets\ |
| innodb_monitor_reset                  |                                                               |
| innodb_monitor_reset_all              |                                                               |
| optimizer_trace_offset                | -1                                                            |
| performance_schema_setup_actors_size  | -1                                                            |
| performance_schema_setup_objects_size | -1                                                            |
| resultset_metadata                    | FULL                                                          |
| transaction_write_set_extraction      | XXHASH64                                                      |
+---------------------------------------+---------------------------------------------------------------+
16 rows in set, 1 warning (0.00 sec)

11.1.1.3、设置和修改系统变量

对系统变量,在MySQL服务启动前,我们可以修改 my.cnf 配置文件;或启动时,指定启动参数修改。

在服务启动以后,可以通过 set 语句修改变量值。

//修改全局变量
set global var_name = value;
set @@global.var_name = value;
//修改会话变量
set session var_name = value;
set @@session.var_name = value;



相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
9天前
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
4月前
|
存储 关系型数据库 MySQL
初步了解MySQL数据库的基本命令
初步了解MySQL数据库的基本命令
46 0
|
2月前
|
tengine 关系型数据库 MySQL
Tengine、Nginx安装MySQL数据库命令教程
本指南详细介绍了在Linux系统上安装与配置MySQL数据库的步骤。首先通过下载并安装MySQL社区版本,接着启动MySQL服务,使用`systemctl start mysqld.service`命令。若启动失败,可尝试使用`sudo /etc/init.d/mysqld start`。利用`systemctl status mysqld.service`检查MySQL的服务状态,确保其处于运行中。通过日志文件获取初始密码,使用该密码登录数据库,并按要求更改初始密码以增强安全性。随后创建一个名为`tengine`的数据库,最后验证数据库创建是否成功以及完成整个设置流程。
|
3月前
|
存储 关系型数据库 MySQL
MySQL基础命令及使用示例
这些基础命令构成了与MySQL数据库交互的核心,理解并掌握它们对于进行有效的数据库操作至关重要。在实际使用中,建议结合实际案例和需求来练习这些命令,以加深理解和提高效率。
34 3
|
3月前
|
存储 关系型数据库 MySQL
MySQL基础命令及使用示例
这些基础命令构成了与MySQL数据库交互的核心,理解并掌握它们对于进行有效的数据库操作至关重要。在实际使用中,建议结合实际案例和需求来练习这些命令,以加深理解和提高效率。
72 4
|
2月前
|
关系型数据库 MySQL 数据库
Mysql 常用命令
Mysql 常用命令
23 0
|
5月前
|
存储 关系型数据库 MySQL
(十五)MySQL命令大全:以后再也不用担心忘记SQL该怎么写啦~
相信大家在编写SQL时一定有一个困扰,就是明明记得数据库中有个命令/函数,可以实现自己需要的功能,但偏偏不记得哪个命令该怎么写了,这时只能靠盲目的去百度,以此来寻找自己需要的命令。
177 28
|
5月前
|
SQL 关系型数据库 MySQL
MySQL删除表数据、清空表命令(truncate、drop、delete 区别)
MySQL删除表数据、清空表命令(truncate、drop、delete区别) 使用原则总结如下: 当你不需要该表时(删除数据和结构),用drop; 当你仍要保留该表、仅删除所有数据表内容时,用truncate; 当你要删除部分记录、且希望能回滚的话,用delete;
|
5月前
|
SQL 关系型数据库 MySQL
mysql性能调优:EXPLAIN命令21
【7月更文挑战第21天】掌握SQL性能调优:深入解析EXPLAIN命令的神奇用法!
64 1
|
5月前
|
存储 SQL Cloud Native
云原生数据仓库使用问题之运行MySQL命令发现中文内容变成了问号,该如何解决
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。