要显示视图的定义,需要在SHOW CREATE VIEW子句之后指定视图的名称, 我们先来创建几张表,完事后在进行演示:
-- 用户信息表(网站后台管理人员) CREATE TABLE UserInfo ( id INT AUTO_INCREMENT PRIMARY KEY , -- 用户编号 userName VARCHAR(20) NOT NULL UNIQUE, -- 用户名称 userPwd VARCHAR(20) NOT NULL -- 用户密码 )CHARSET utf8; -- 公告信息表 DROP TABLE IF EXISTS Bulletin; CREATE TABLE Bulletin ( id INT AUTO_INCREMENT PRIMARY KEY, -- 编号 title VARCHAR(100) NOT NULL, -- 标题 content TEXT NOT NULL, -- 内容 userId INT NOT NULL , -- 发布者 createTime VARCHAR(20) NOT NULL ,-- 发布时间 FOREIGN KEY (userId) REFERENCES UserInfo(id) ) CHARSET utf8; SELECT * FROM Bulletin; 再插入用户信息数据和公告信息数据: INSERT INTO UserInfo VALUES (null,'admin','123456'); INSERT INTO UserInfo VALUES (null,'zhangsan','123456'); INSERT INTO UserInfo VALUES (null,'lisi','123456'); INSERT INTO Bulletin VALUES (null,'测试数据1','公告内容1',1,NOW()); INSERT INTO Bulletin VALUES (null,'测试数据2','公告内容2',1,NOW()); INSERT INTO Bulletin VALUES (null,'测试数据3','公告内容3',1,NOW()); INSERT INTO Bulletin VALUES (null,'测试数据4','公告内容4',1,NOW()); 表建完了然后我们开始创建视图:
基本语法:
create view 视图名 as select语句;
select语句可以是查询中任意一种
新创建单表视图:基表只有一个
例如:CREATE VIEW view_UserInfo AS SELECT * FROM UserInfo;
-- 调用
SELECT * FROM view_UserInfo;
再创建多表视图:基表来源是两个以上,必须保证视图中不出现重复字段
例如:
CREATE VIEW view_select1
AS
SELECT a.*,userName,userPwd FROM Bulletin a,UserInfo b WHERE a.userId=b.id;
-- 调用
SELECT * FROM view_select1;
查看视图:
desc 视图名;
show create view 视图名;
视图一旦创建,系统会在视图对应的数据文件夹下创建一个对应的结构文件:frm文件
使用视图:select * from 视图名;
1. 插入视图:
INSERT INTO 视图名 VALUES(字段);
例如:INSERT INTO view_Userinfo VALUES(4,'wangfeng',123456);
2. 修改视图:
视图本身不可修改,但是视图中的来源是可以修改的
alter view 视图名 as 新的select语句
例如:UPDATE view_UserInfo SET userName='lisi' WHERE userPwd='456789';
3. 删除视图:drop view 视图名;
例如: DELETE FROM view_userinfo WHERE id=1;