MySQL数据库数据视图
吾爱主题
阅读:279
2024-04-01 23:20:39
评论:0
一、 数据视图
视图是原始数据库数据的一种变换,是查看表中数据的另外一种方式。我们可以将视图看成是一个移动的窗口,从这个窗口中可以看到感兴趣的数据。
二、数据视图操作
创建视图
?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
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。