zoukankan      html  css  js  c++  java
  • 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;
    
  • 相关阅读:
    CMU15-445 Project #2
    CMU15-445 Project #1 Buffer Pool
    挂分原因
    「杂谈」关于斜率优化维护凸包
    「题解」GYM 101620J Justified Jungle
    「题解」AGC 052 B Tree Edges XOR
    C++ MT19937 随机数 限制范围
    「题解」Codeforces 348C Subset Sums
    「学习笔记」联赛数论再学习
    「题解」洛谷 P4597 序列sequence
  • 原文地址:https://www.cnblogs.com/jia-shu/p/14805524.html
Copyright © 2011-2022 走看看