服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Mysql - MySQL数据库数据视图

MySQL数据库数据视图

2022-08-03 11:28面屏思过​​​​​​​ Mysql

这篇文章主要介绍了MySQL数据库数据视图,视图是原始数据库数据的一种变换,是查看表中数据的另外一种方式,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下

一、 数据视图

视图是原始数据库数据的一种变换,是查看表中数据的另外一种方式。我们可以将视图看成是一个移动的窗口,从这个窗口中可以看到感兴趣的数据。

二、数据视图操作

创建视图

?
1
2
3
4
5
6
// 标准语法: CREATE VIEW 视图名称 [(列名列表)] AS 查询语句;
 
// 创建city_country视图,保存城市和国家的信息(使用指定列名)
CREATE VIEW city_country(city_id,city_name,country_name)
AS
SELECT c1.id, c1.name, c2.name FROM city c1, country c2 WHERE c1.cid = c2.id;

修改视图数据

?
1
2
3
4
// 标准语法: UPDATE 视图名称 SET 列名=值 WHERE 条件;
 
// 注意:修改视图数据后,源表中的数据也会随之修改
UPDATE city_country SET city_name="深圳" WHERE city_name="北京";

修改视图列明

?
1
2
3
4
5
6
// 标准语法: ALTER VIEW 视图名称 (列名列表) AS 查询语句;
 
ALTER VIEW city_country (city_id, city_name, NAME) AS
SELECT c1.id, c1.name, c2.name
FROM  city c1, country c2
WHERE c1.cid = c2.id;

删除视图

?
1
2
3
4
// 标准语法 DROP VIEW [IF EXISTS] 视图名称;
// 删除city_country视图
 
DROP VIEW IF EXISTS city_country;

三、数据的备份与回复

liunx备份

备份文件:

?
1
mysqldump -u root -p 数据库名称 > 文件保存路径

还原:

?
1
source 文件保存路径

mysql备份

备份-> 导出备份数据库 还原-> 导入备份文件

四、 MySQL存储过程和函数

概念

  • 存储过程和函数是 事先经过编译并存储在数据库中的一段 SQL 语句的集合

好处:

  • 可以重复使用,减轻开发人员的工作量
  • 减少网络流量,调用只需要传递参数名和参数即可
  • 减少数据在数据库和应用服务器之间的传输,可以提高数据处理的效率
  • 将部分逻辑在数据库层进行了处理,减少业务层代码

区别:

  • 函数必须有返回值
  • 存储过程没有返回值

五、存储过程操作

初始数据

?
1
2
3
4
5
6
7
8
9
10
11
12
13
-- 创建学生表
CREATE TABLE student(
    id INT PRIMARY KEY AUTO_INCREMENT,
    NAME VARCHAR(20),
    age INT,
    gender VARCHAR(5),
    score INT
);
-- 添加数据
INSERT INTO student VALUES (NULL,'张三',23,'男',95),(NULL,'李四',24,'男',98),
(NULL,'王五',25,'女',100),(NULL,'赵六',26,'女',90);
-- 按照性别进行分组,查询每组学生的总成绩。按照总成绩的升序排序
SELECT gender, SUM(score) getSum FROM student GROUP BY gender ORDER BY getSum ASC;

创建过程

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// 标准语法
//
DELIMITER $
    -- 标准语法
CREATE PROCEDURE 存储过程名称(参数列表)
BEGIN
    SQL 语句列表;
END $
 
-- 修改分隔符为分号
DELIMITER ;
 
// 创建stu_group()存储过程,封装 分组查询总成绩,并按照总成绩升序排序的功能
DELIMITER$
CREATE PROCEDURE stu_group()
BEGIN
    SELECT gender, SUM(score) getSum FROM student GROUP BY gender ORDER BY getSum ASC;
END$
DELIMITER ;

调用存储过程

?
1
2
// CALL 存储过程名称(实际参数);
CALL stu_group();

查找存储过程

?
1
2
// 标准语法: SELECT * FROM mysql.proc WHERE db='数据库名称';
SELECT * FROM mysql.proc WHERE db='demoMysql';

删除存储过程

?
1
2
//标准语法: DROP PROCEDURE [IF EXISTS] 存储过程名称;
DROP PROCEDURE IF EXISTS stu_group;

其他语法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
// 定义变量
// 语法:DECLARE 变量名 数据类型 [DEFAULT 默认值];
// 变量赋值
// 语法一:SET 变量名 = 变量值;
// 语法二:SELECT 列名 INTO 变量名 FROM 表名 [WHERE 条件];
// 判断语句
// if语句
// IF 判断条件1 THEN 执行的sql语句1;
// [ELSEIF 判断条件2 THEN 执行的sql语句2;]
// ...
// [ELSE 执行的sql语句n;]
// END IF;
DELIMITER $
 
CREATE PROCEDURE pro_test2()
 
BEGIN
    -- 定义变量
    DECLARE NAME VARCHAR(20);
        DECLARE totalScore INT;
        DECLARE info VARCHAR(10);
    -- 为变量赋值
    SET NAME = '赋值方式1';
        SELECT SUM(score) INTO totalScore FROM student;
    
        IF totalScore > 500 THEN
        SET info='总分超过500';
        END IF;
        -- 使用变量
    SELECT NAME,totalScore,info;
END$
DELIMITER;
 
// 参数传递
// 标准语法: CREATE PROCEDURE 存储过程名称([IN|OUT|INOUT] 参数名 数据类型)
 
DELIMITER $
CREATE PROCEDURE pro_test5(IN total INT, OUT info VARCHAR(10))
BEGIN
    -- 对总成绩判断
    IF total > 380 THEN
        SET info = '学习优秀';
    ELSEIF total >= 320 AND total <= 380 THEN
        SET info = '学习不错';
    ELSE
        SET info = '学习一般';
    END IF;
END$
DELIMITER;
 
// 调用过程
CALL pro_test5(350,@info);
SELECT @info;

六、 存储函数

其实和存储过程区别不大,主要在于定义的时候用FUNCTION,同时有return

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
DELIMITER $
CREATE FUNCTION fun_test1()
RETURNS INT // 返回值类型
BEGIN
    DECLARE s_count INT;
    SELECT COUNT(*) INTO s_count FROM student WHERE score > 95;// 条件语句
    RETURN s_count;// 返回结果;
    
END $
DELIMITER ;
// 调用函数
SELECT fun_test1();
 
// 删除函数
DROP FUNCTION fun_test1();

到此这篇关于MySQL数据库数据视图的文章就介绍到这了,更多相关SQL数据视图内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://juejin.cn/post/7126566120194048014

延伸 · 阅读

精彩推荐
  • MysqlMysql更改默认引擎为Innodb的步骤方法

    Mysql更改默认引擎为Innodb的步骤方法

    mysql默认是关闭InnoDB存储引擎的使用的,而Mysql默认引擎是MyISAM,而MyISAM并不支持事务处理,因为最近项目中的需要所以要更换引擎,通过查找网上的资料后...

    服务器之家1912020-07-04
  • MysqlMySQL时间盲注的五种延时方法实现

    MySQL时间盲注的五种延时方法实现

    MySQL时间盲注主要有五种,sleep(),benchmark(t,exp),笛卡尔积,GET_LOCK() RLIKE正则,本文就主要介绍了这五种方法,感兴趣的可以了解一下...

    demopy5242021-07-16
  • Mysqlmysql5.7.18解压版启动mysql服务

    mysql5.7.18解压版启动mysql服务

    这篇文章主要为大家详细介绍了mysql5.7.18解压版启动mysql服务的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    水之原5132020-07-27
  • MysqlLinux下实现MySQL数据备份和恢复的命令使用全攻略

    Linux下实现MySQL数据备份和恢复的命令使用全攻略

    这篇文章主要介绍了Linux下实现MySQL数据备份和恢复的命令使用全攻略,包括使用Mysqldump和LVM快照以及xtrabackup三种方法,倾力推荐!需要的朋友可以参考下 ...

    MYSQL教程网4062020-05-21
  • Mysql一篇文章带你了解SQL之CASE WHEN用法详解

    一篇文章带你了解SQL之CASE WHEN用法详解

    本文介绍下,在mysql数据库中,有关case when语句的用法,介绍了case when语句的基础知识,并提供了相关实例,供大家学习参考,有需要的朋友不要错过...

    _Rt8932021-09-17
  • MysqlMYSQL5.7.9开启慢查询日志的技巧

    MYSQL5.7.9开启慢查询日志的技巧

    这篇文章主要介绍了MYSQL5.7.9开启慢查询日志的技巧的相关资料,需要的朋友可以参考下 ...

    鲨鱼百年_强者至尊4882020-06-02
  • MysqlMySQL中查询json格式的字段实例详解

    MySQL中查询json格式的字段实例详解

    这篇文章主要给大家介绍了关于MySQL中查询json格式字段的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,...

    帅得令人着迷的饶少7172021-04-20
  • MysqlCentOS7编译安装MySQL5.7.24的教程详解

    CentOS7编译安装MySQL5.7.24的教程详解

    这篇文章主要介绍了CentOS7编译安装MySQL5.7.24的教程,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下...

    itbsl5682019-06-13