经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MySQL » 查看文章
MySQL数据库数据视图
来源:jb51  时间:2022/8/3 10:48:51  对本文有异议

一、 数据视图

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

二、数据视图操作

创建视图

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

修改视图数据

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

修改视图列明

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

删除视图

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

三、数据的备份与回复

liunx备份

备份文件:

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

还原:

  1. source 文件保存路径

mysql备份

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

四、 MySQL存储过程和函数

概念

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

好处:

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

区别:

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

五、存储过程操作

初始数据

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

创建过程

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

调用存储过程

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

查找存储过程

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

删除存储过程

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

其他语法

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

六、 存储函数

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

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

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

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号