欢迎来到十九分快乐的博客

生死看淡,不服就干。

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;
posted @ 2021-05-24 17:57  十九分快乐  阅读(139)  评论(0编辑  收藏  举报