sql初尝试(2)

USE shop;
CREATE VIEW ViewPratice5_1(product_id, product_name, product_type, sale_price, purchase_price, regist_date)
AS
SELECT product_name,sale_price,regist_date
FROM product
WHERE sale_price>=1000
AND regist_date='2009-09-20';

这样系统会报错,create与select的个数不对应

USE shop;
CREATE VIEW ViewPratice5_1(product_name,sale_price,regist_date)
AS
SELECT product_name,sale_price,regist_date
FROM product
WHERE sale_price>=1000
AND regist_date='2009-09-20';
这样就创建好视图,再可

 

USE shop;
SELECT * FROM ViewPratice5_1;

USE shop;
INSERT INTO ViewPractice5_1 VALUES (' 刀子 ', 300, '2009-11-02');
SELECT * FROM ViewPratice5_1;

并不会插入数据,而会报错。因为视图是一个虚拟表,所以对视图的操作就是对底层基础表的操作,所以在修改时只有满足底
层基本表的定义才能成功修改。

注意AVG(平均值)用法效果是一个数而非一列

USE shop;
ALTER TABLE product ADD COLUMN sale_price_all VARCHAR(12)

USE shop;
UPDATE product
SET sale_price_all=AVG(sale_price)

update为聚合函数,聚合函数不允许出现嵌套

SELECT product_id,
product_name,
sale_price,
(SELECT AVG(sale_price)
FROM product) AS avg_price
FROM product
ORDER BY product_id;

 

如果是分组求平均值后插入数据则需要用关联子查询

USE shop;
SELECT product_id,product_name,product_type,sale_price,
(SELECT AVG(sale_price)
FROM product AS p2
WHERE p1.product_type=p2.product_type) AS avg_price
FROM product AS p1
ORDER BY product_id;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值