mysql数据库学习笔记(1)

五、视图的更新

#五、视图的更新
CREATE OR REPLACE VIEW myv1
as
select last_name,email,salary*12*(1+ifnull(commission_pct,0)) "annual salary"
from employees;
select * from myv1;#查看视图myv1

#1.插入
insert into myv1 values('张飞','zf@qq.com',1000000);#插入视图以后,原始表中也会有
#2.修改
#修改视图原始表也会更新
update myv1 set last_name='张无忌' where last_name='张飞';
#3.删除
delete from myv1 where last_name='张无忌';
#往往为视图添加权限,只允许读,不允许更新  
视图的可更新性和视图中查询的定义有关系,以下类型的视图是不能更新的
/*

 - 包含以下关键字的sql语句:分组函数,distinct、group by、having、union或者union all
 - select中包含子查询
 - join
 - from一个不能更新的视图
 - where子句的子查询引用了from子句中的表

*/
#where 子句中的子查询引用了from子句中的表
CREATE OR REPLACE VIEW myv6
AS
SELECT last_name,email,salary
FROM employees
WHERE employee_id IN(
       SELECT manager_id
       FROM employees
       WHERE manager_id IS NOT NULL
 );
 #更新
 #下面的语句无法执行
 SELECT *FROM myv6
 UPDATE myv6 SET salary=10000 WHERE last_name='k_ing';
 
 

视图和表的区别

创建语法的关键字是否实际占用物理空间使用
视图create view没有或很少,只是保存了sql逻辑增删改查,一般不能增删改
create table占用,保存了实际的数据增删改查

2.delete 和truncate在事务使用时的区别

#演示delete
#delete删除以后可以回滚
SET autocommit=0;#关闭自动提交
START TRANSACTION;#开启事务
DELETE FROM account;
ROLLBACK;#不提交,回滚
#演示truncate
#truncate 删除以后没办法回滚
SET autocommit=0;
START TRANSACTION;
TRUNCATE TABLE account;
ROLLBACK;


147 MySQL基础,测试题讲解

/*
1.创建表Book表,字段如下:
bid整型,要求主键
bname 字符型,要求设置唯一键,并非空
price 浮点型,要求有默认值10
btypeId 类型编号,要求引用bookType表的id字段

已知bookType表(不用创建),字段如下:
id
name
*/
create table Book(
      bid int primary key,
      bname varchar(20) unique not null,
      price float default 10,
      btypeId int,
      foreign key(btypeId) references bookType(id)
 );
 /*
 2.开启事务
 向表中插入1行数据,并结束
*/
set autocommit=0;
insert into book(bid,bname, price,btypeId)
values(1,'小李飞刀',100,1)
rollback;
/*
#3.创建视图,实现查询价格大于100的书名和类型名
create view myv1
as
select bname,name
from book b
join bookType t on b.btypeid=t.id
where price>100;
#4.修改视图,实现查询价格在90到120之间的书名和价格
create or replace view myv1
as
select bname,price
from book
where price between 90 and 120;
#5.删除刚才建的视图
drop view myv1;





0

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值