7. MySQL - 视图 - 函数
MySQL - 视图
参考网址: https://www.cnblogs.com/Neeo/articles/13597433.html
概念:
视图是虚拟表,是从数据库中一个或多个表中导出来的表,其内容由查询定义;同真实表(基表)一样,视图包含一系列带有名称的字段和记录,在使用视图时动态生成。视图的数据变化会影响到基表,基表的数据变化也会影响到视图(insert、update、delete
)。
视图可以查询、修改和删除,但不允许通过视图向基表插入数据。
视图基本操作
# < 导入.sql中的sql语句,数据
[root@cs ~]# mysql -uroot -p123 < world.sql
# 1.创建视图 -- create
-- 基本语法:
create view 视图名称 as sql语句
-- 示例:查询中国所有城市信息,只展示前10条
mysql> create view v1 as select * from city where countrycode='CHN' limit 10;
# 2.查看视图
mysql> select * from v1;
# 3.修改视图 -- alter
alter view 视图名称 as sql语句
mysql> alter view v1 as select * from city where countrycode='CHN' limit 20;
# 4.删除视图 -- drop
mysql> drop view v1;
information_schema - 视图库(虚拟库)
表由两部分组成:
- 元数据,表相关信息+字段信息(属性,约束)。
- 数据行,就是普通的记录了。
我们主要对information_schema.TABLES
表进行学习,这个表存储了整个数据库中所有表的元数据。
-- information_schema.TABLES中常用的字段
DESC infoRmation_schema.TABLES;
TABLE_SCHEMA -- 库名
TABLE_NAME -- 表名
NEGINE -- 引擎
TABLE_ROWS -- 表行数
AVG_ROW_LENGTH -- 表中行平均长度(字节)
INDEX_LENGTH -- 索引的占用空间大小(字节)
-- 查询information_schema.TABLES表信息
SELECT TABLE_SCHEMA,TABLE_NAME,ENGINE,TABLE_ROWS,AVG_ROW_LENGTH,INDEX_LENGTH
FROM information_schema.TABLES;
-- 查询整个数据库中所有库和对应的表信息
SELECT TABLE_SCHEMA, GROUP_CONCAT(TABLE_NAME)
FROM information_schema.TABLES
GROUP BY TABLE_SCHEMA;
-- 统计所有库下表的个数
SELECT TABLE_SCHEMA,COUNT(TABLE_NAME)
FROM information_schema.TABLES
GROUP BY TABLE_SCHEMA;
-- 查询所有使用innodb引擎的表及所在的库
SELECT TABLE_SCHEMA,TABLE_NAME,ENGINE
FROM information_schema.TABLES
WHERE ENGINE='innodb';
-- 统计指定数据库(world)下每张表的磁盘空间占用
SELECT TABLE_SCHEMA,TABLE_NAME,(TABLE_ROWS * AVG_ROW_LENGTH + INDEX_LENGTH) / 1024 AS 'size(KB)'
FROM information_schema.TABLES
WHERE TABLE_SCHEMA='world';
-- 统计所有数据库的总磁盘空间占用
SELECT COUNT(TABLE_SCHEMA) AS '数据库个数',SUM((TABLE_ROWS * AVG_ROW_LENGTH + INDEX_LENGTH) / 1024) AS 'size(KB)'
FROM information_schema.TABLES;
MySQL - 函数
内置函数
参考网址: https://www.cnblogs.com/Neeo/articles/13685832.html
自定义函数
# 创建一个函数,返回两个整数之和
mysql> delimiter // -- 修改mysql语句结束符
mysql> create function f1(n1 int,n2 int) -- 创建函数 f1 参数可以是MySQL支持的那些类型
-> returns int -- 该函数的返回值也是 int 类型
-> begin -- 标识函数体开始
-> declare num int; -- 定义一个int类型的变量
-> set num = n1 + n2;
-> return(num);
-> end // -- 标识函数体结束
mysql> delimiter ; -- 修改回mysql语句结束符
# 使用函数
mysql> select f1(1,3);
+---------+
| f1(1,3) |
+---------+
| 4 |
+---------+
# 删除函数
mysql> drop function f1;