一、 数据视图
视图是原始数据库数据的一种变换,是查看表中数据的另外一种方式。我们可以将视图看成是一个移动的窗口,从这个窗口中可以看到感兴趣的数据。
二、数据视图操作
创建视图
- // 标准语法: 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;
修改视图数据
- // 标准语法: UPDATE 视图名称 SET 列名=值 WHERE 条件;
-
- // 注意:修改视图数据后,源表中的数据也会随之修改
- UPDATE city_country SET city_name="深圳" WHERE city_name="北京";
修改视图列明
- // 标准语法: 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;
删除视图
- // 标准语法 DROP VIEW [IF EXISTS] 视图名称;
- // 删除city_country视图
-
- DROP VIEW IF EXISTS city_country;
三、数据的备份与回复
liunx备份
备份文件:
- mysqldump -u root -p 数据库名称 > 文件保存路径
还原:
mysql备份
备份-> 导出备份数据库 还原-> 导入备份文件
四、 MySQL存储过程和函数
概念
- 存储过程和函数是 事先经过编译并存储在数据库中的一段 SQL 语句的集合
好处:
- 可以重复使用,减轻开发人员的工作量
- 减少网络流量,调用只需要传递参数名和参数即可
- 减少数据在数据库和应用服务器之间的传输,可以提高数据处理的效率
- 将部分逻辑在数据库层进行了处理,减少业务层代码
区别:
五、存储过程操作
初始数据
- -- 创建学生表
- 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;
创建过程
- // 标准语法
- //
- 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 ;
调用存储过程
- // CALL 存储过程名称(实际参数);
- CALL stu_group();
查找存储过程
- // 标准语法: SELECT * FROM mysql.proc WHERE db='数据库名称';
- SELECT * FROM mysql.proc WHERE db='demoMysql';
删除存储过程
- //标准语法: DROP PROCEDURE [IF EXISTS] 存储过程名称;
- DROP PROCEDURE IF EXISTS stu_group;
其他语法
- // 定义变量
- // 语法: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
- 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数据视图内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!