本站文章为采集文章,演示用,请勿当真!
我发了五套SQL视频教程,希望对大家有帮助
网盘分享链接
http://pan. .com/mbox/ homepage#share/type=session
开心每一天~!
这个需求还是很传统的。目前JSP的学习源码还很少,只能自己动手或者网上找人搞。而且价格也不低。
UPDATEworker_='hi';
ERROR............Thetargettableworker_.
( 4) 视图中的 SELECT 包含子查询。
CREATEVIEWworker_view5(name)
ASSELECT(SELECTnameFROMworker);
UPDATEworker_='Liujia';
此视图包含子查询,因此无法更新。
(5) 从不可更新的视图派生的视图。
CREATEVIEWworker_view6
ASSELECT*FROMworker_view5;
UPDATEworker_='王仔';
因为worker_view6是不可更新视图,worker_view6无法更新。使用UPDATE语句更新时,系统会报错。
(6) 创建视图时,ALGORITHM 为TEMPTABLE 类型。
CREATEALGORITHM=TEMPTABLE
VIEWworker_view7
ASSELECT*FROMworker;
UPDATEworker_='王仔';
由于视图ALGORITHM是TEMPTABLE类型,worker_view7无法更新。 TEMPTABLE 类型是临时表类型。系统默认临时表无法更新。
(7) 视图对应的表上有没有默认值的列,该列不包含在视图中。例如,表中包含的名称字段没有默认值,但视图中不包含该字段。那么这个视图就不能更新了。因为,当视图更新时,没有默认值的记录不会插入值,也不会插入NULL值。数据库系统不会允许这样的情况,数据库系统会阻止这个视图被更新。
注意:虽然可以在视图中更新数据,但是有很多限制。一般情况下,最好将视图作为查询数据的虚拟表,而不是通过视图更新数据。因为,在使用视图更新数据时,如果没有充分考虑视图中更新数据的局限性,可能会导致数据更新失败。
除了以上条件不能更新视图外,WITH[CASCADED|LOCAL]CHECKOPTION还会判断视图是否可以更新。 “LOCAL”参数表示当视图更新时,必须满足视图本身定义的条件;
8、6 删除视图
删除视图是指删除数据库中已经存在的视图。删除视图时,只能删除视图的定义,不会删除数据。在MYSQL中,使用DROPVIEW语句删除视图不会删除数据。在 MySQL 中,使用 DROPVIEW 语句删除视图。但是,用户必须具有 DROP 权限。
DROPVIEW[IFEXISTS] 视图名称列表[RESTRICT|CASCADE]
示例 1:
SELECTDrop_priv
FROMmysql.user
WHEREuser='root';
CREATEVIEWworker_view_del1
ASSELECT*FROMworker ;
CREATEVIEWworker_view_del2
ASSELECT*FROMworker;
CREATEVIEWworker_view_del3
ASSELECT*FROMworker;
DROPVIEWIFEXISTSworker_view_del2,worker_view_del3;
8、7 本章示例
操作视图work_info表.
1、测试数据库中的Work_info表
2、插入记录
3、创建视图 info_view
4、查看视图info_view
5的基本结构和详细结构。查看所有视图 info_view 记录
6、修改视图 info_view
7、更新视图
8、删除视图
work_info表的结构
字段名、字段描述、数据类型、主键、外键、非空、唯一、自增
id号INT(10) yes yes or no
name name VARCHAR(20) no no no yes no no
gender last name VARCHAR(4) no no no yes no yes no
age age INT(5) no no no no no
address家庭地址 VARCHAR(50) no no no no
电话号码 VARCHAR(20) no no no no no
work_info 表中的内容
idnamegenderageaddresstel
三北市海淀区1个01-
2北京市昌平区李寺01-
3湖南省永州市王屋-
4辽宁省阜新市赵刘-
(1)创建work_info表
USEtest;
CREATETABLEIFNOTEXISTSwork_info(
idINT(10)NOTNULLUNIQUEPRIMARYKEY,
nameVARCHAR(20)NOTNULL,
genderVARCHAR(4)NOTNULL,
ageINT(5),
addressVARCHAR(50),
telVARCHAR(20)
)DEFAULTCHARSET=utf8;
(2) 在work_info表中插入几条记录。
INSERTINTOwork_infoVALUES
(1,'张三','M',18,'北市海淀区','01-'),
(2,'李四','M',22, '北京市昌平区','01-'),
(3,'王五','F',17,'湖南省永州市','-'),
(4,'赵Liu','F',25,'辽宁省阜新市','-');
(3) 创建视图 info_view。从 work_info 表中选择 age>20 记录以创建视图。视图的字段包括 id、姓名、性别和地址。 ALGORITHM 设置为 MERGE 类型。添加 WITHLOCALCHECKOPTION 条件。
CREATEALGORITHM=MERGE
VIEWinfo_view(id,name,gender,address)
ASSELECTid,name,gender,address
FROMwork_info
WHEREage>20
WITHLOCALCHECKOPTION;
(4)查看视图info_view的基本结构和详细结构。
SHOWCREATEVIEWinfo_view\G
(5) 查看视图info_view的所有记录。
SELECT*FROMinfo_view;
(6) 修改视图info_view显示age<20信息,其他条件不变。
ALTERALGORITHM=MERGE
VIEWinfo_view(id,name,gender,address)
ASSELECTid,name,gender,address
FROMwork_info
WHEREage<20
WITHLOCALCHECKOPTION;
(7)更新视图并更新 id 为 3 的记录。将其性别设置为 M。
UPDATEinfo_viewSETgender='M'WHEREid=3;
(8) 删除视图。
DROPVIEWinfo_view;
8、8 动手练习
问题要求:
(1)在数据库例子下创建一个大学表。
(2) 在学院表上创建视图college_view。视图的字段包括student_num、student_name、student_age 和department。 ALGORITHM 设置为 UNDEFINED 类型。添加 WITHLOCALCHECKOPTION 条件。
(3)查看view College_view的详细结构。
(4) 更新视图。在视图中插入三个记录。
(5) 修改视图,显示专业为“计算机”的信息,其他条件不变。
(6) 删除视图college_view。
学院表结构
字段名字段描述数据类型主键外键非空唯一自增
主要行业VARCHAR(20) no no yes no no
age age INT( 5) no no no no
学院_视图表内容
student_numstudent_namestudent_agedepartment
张三20外语
李思22电脑
王五19电脑
USEexample;
CREATETABLEcollege (
numberINT(10)NOTNULLUNIQUEPRIMARYKEY,
nameVARCHAR(20)NOTNULL,
majorVARCHAR(20)NOTNULL,
ageTINYINT (3)
)DEFAULTCHARSET=utf8;
CREATEALGORITHM=UNDEFINED
VIEWcollege_view(student_num,student_name,student_age,department)
ASSELECTnumber,name,age,major
FROMcollege
WITHLOCALCHECKOPTION;
SHOWCREATEVIEWcollege_view\G
INSERTINTOcollege
(,'李四',22,'电脑'),
(,'王五',19,'电脑');
CREATEORREPLACEALGORITHM=UNDEFINED
VIEWcollege_view(student_num,student_name,student_age,department)ASSELECTnumber,name,age,major
FROMcollege
WHEREmajor='computer'
WITHLOCALCHECKOPTION;