阿里云天池task3学习笔记

函数的定义。

  • 函数以def关键词开头,后接函数名和圆括号()。
  • 函数执行的代码以冒号起始,并且缩进。
  • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回None

def functionname (parameters):
       "函数文档字符串"
        function
suite
 

视图是一个虚拟的表,不同于直接操作数据表,视图是依据SELECT语句来创建的(会在下面具体介绍)。

视图与表的最大区别即:是否保存了实际的数据。视图可以看作是一个窗口,通过这个窗口我们可以看到数据库表中真实存在的数据。

视图最主要的优势就是通过定义视图可以将频繁使用的SELECT语句保存以提高效率。
 

/*创建视图的基本语法如下:
CREATE VIEW <视图名称>(<列名1>,<列名2>,...) AS <SELECT语句>  
*/

视图不仅可以基于真实表,我们也可以在视图的基础上继续创建视图,但是这种操作应当避免,因为多重视图会降低效能。

定义视图时一般不能使用ORDER BY语句。因为视图和表一样,数据行都是没有顺序的

CREATE VIEW productsum (product_type, cnt_product)
AS
SELECT product_type, COUNT(*)
  FROM product
 GROUP BY product_type ;

 

  • 基于多表的视图

为了学习多表视图,我们再创建一张表,相关代码如下:

 
 
  1.  
    CREATE TABLE shop_product
    (shop_id    CHAR(4)       NOT NULL,
     shop_name  VARCHAR(200)  NOT NULL,
     product_id CHAR(4)       NOT NULL,
     quantity   INTEGER       NOT NULL,
     PRIMARY KEY (shop_id, product_id));
    INSERT INTO shop_product (shop_id, shop_name, product_id, quantity) VALUES ('000A',	'东京',		'0001',	30);
    INSERT INTO shop_product (shop_id, shop_name, product_id, quantity) VALUES ('000A',	'东京',		'0002',	50);
    INSERT INTO shop_product (shop_id, shop_name, product_id, quantity) VALUES ('000A',	'东京',		'0003',	15);
    INSERT INTO shop_product (shop_id, shop_name, product_id, quantity) VALUES ('000B',	'名古屋',	'0002',	30);
    INSERT INTO shop_product (shop_id, shop_name, product_id, quantity) VALUES ('000B',	'名古屋',	'0003',	120);
    INSERT INTO shop_product (shop_id, shop_name, product_id, quantity) VALUES ('000B',	'名古屋',	'0004',	20);
    INSERT INTO shop_product (shop_id, shop_name, product_id, quantity) VALUES ('000B',	'名古屋',	'0006',	10);
    INSERT INTO shop_product (shop_id, shop_name, product_id, quantity) VALUES ('000B',	'名古屋',	'0007',	40);
    INSERT INTO shop_product (shop_id, shop_name, product_id, quantity) VALUES ('000C',	'大阪',		'0003',	20);
    INSERT INTO shop_product (shop_id, shop_name, product_id, quantity) VALUES ('000C',	'大阪',		'0004',	50);
    INSERT INTO shop_product (shop_id, shop_name, product_id, quantity) VALUES ('000C',	'大阪',		'0006',	90);
    INSERT INTO shop_product (shop_id, shop_name, product_id, quantity) VALUES ('000C',	'大阪',		'0007',	70);
    INSERT INTO shop_product (shop_id, shop_name, product_id, quantity) VALUES ('000D',	'福冈',		'0001',	100);

    我们在product表和shop_product表的基础上创建视图

    CREATE VIEW view_shop_product(product_type, sale_price, shop_name)
    AS
    SELECT product_type, sale_price, shop_name
      FROM product,
           shop_product
     WHERE product.product_id = shop_product.product_id;

    创建的视图如下图所示

    我们可以在这个视图的基础上进行查询

视图的修改、更新、删除操作(一般皆不常用)如下:

/* 修改视图语句:
ALTER VIEW <视图名> AS <SELECT语句>
*/
 
-- 其中视图名在数据库中需要是唯一的,不能与其他视图和表重名。
 
/*一般不建议更新视图(update),不允许通过视图来修改表,例如:
UPDATE productsum
   SET sale_price = '5000'
 WHERE product_type = '办公用品';
视图虽然更新,但原表可能未按预期结果修改。
*/
 
/* 删除视图语句:
DROP VIEW <视图名1> [ , <视图名2> …]
*/

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值