MySQL筆記03-MySQL視圖

【1、什麼是視圖】

視圖是存放數據的一個接口,也可以說是虛擬表,這些數據可以是從一個或幾個基表(視圖)的數據,也可是用戶自己定義的數據,其實視圖裏面不存放數據,數據還是存在基表裏面,

基表數據發生變化,視圖裏的數據也隨之變化,視圖裏數據變化,基表也會變化。

【創建數據庫】

create database test;

create table student(

    id int not null auto_increment primary key,

    name varchar(30),

    age int,

    sex varchar(10),

    email varchar(60),

    phone char(20)

);

【插入數據】

insert into student(name,age,sex,email,phone) values('zhangsan',10,'nan','[email protected]','123456789');

insert into student(name,age,sex,email,phone) values('lisi',20,'nv','[email protected]','435345345');

insert into student(name,age,sex,email,phone) values('wangwu',30, 'nv','[email protected]','5555555');

insert into student(name,age,sex,email,phone) values('admin',50, 'nv','[email protected]','6666666');

【創建視圖】

create view student_view as select * from student;

【查詢視圖中數據】

select * from student_view;

【基表—視圖 互相變化(增、刪、改 操作)】

insert into student_view(name,age,sex,email,phone) values('hello',33, 'nan','[email protected]','99999999');

【此時,查詢表student和視圖student_view中結果是一樣的】

select * from student_view;

select * from student;

【2、視圖的作用】

1. 視圖可以讓查詢變得很清楚(複雜的SQL語句變得很簡單)

2. 保護數據庫的重要數據, 給不同的人看不同的數據

【創建學生成績表】

create table score(

    id int not null auto_increment primary key,

    sid int,

    phpc double,

    javac double,

    oraclec double

);

【插入數據】

insert into score(sid,phpc,javac,oraclec) values(1,88,77,66);

insert into score(sid,phpc,javac,oraclec) values(2,99,57,76);

insert into score(sid,phpc,javac,oraclec) values(3,55,37,96);

insert into score(sid,phpc,javac,oraclec) values(4,35,87,96);

insert into score(sid,phpc,javac,oraclec) values(5,99,85,36);

insert into score(sid,phpc,javac,oraclec) values(6,49,25,36);

【查詢數據】

【普通的多表查詢:zhangsan的name、age、email、phpc、javac】

select a.name,a.age,a.email,a.phone,b.phpc,b.javac,b.oraclec from student a,score b where a.id=b.sid;

【創建視圖查詢上面的結果】

create view stuc as select a.name,a.age,a.email,a.phone,b.phpc,b.javac,b.oraclec from student a,score b where a.id=b.sid;

select * from stuc;

【可以對該視圖進行其他SQL查詢操作】

Select name,age,phpc from stuc where phpc>70;

【3、創建視圖】

語法:

create [or replace] [algorithm={merge|temptable|undefined}]

view view_name [(column_list)]

as select_statement

[with [cascaded|local] check option]

示例:

Create or replace view stu3(stu_name,stu_age,stu_sex)

as select name,age,sex from student where age>40;

Select * from stu3;

視圖有三種類型:algorithm={merge|temptable|undefined}:Merge: 會將引用視圖的語句的文本與視圖定義結合起來,使得視圖定義的某一部分取代語句的對應部分

with local check option:[local]只要滿足本視圖的條件就可以更新;with cascaded check option:[cascaded]則是必須滿足所有針對視圖的條件,纔可以更新。

【4、更改視圖】(其實有了[or replace]就可以不用這個了)

alter [or replace] [algorithm={merge|temptable|undefined}]

view view_name [(column_list)]

as select_statement

[with [cascaded|local] check option]

【5、刪除視圖】

Drop view stu3;(刪除單個)

Drop view stu3,stuc,student_view;(刪除多個)

【6、查看創建視圖的語句】

show create table student;

show create view stuc;

查詢系統庫中全部的視圖:

Select * from information_schema.views;

 

【視圖】

15.創建視圖:CREATE VIEW

16.修改視圖:ALTER VIEW

17.使用DROP VIEW 語句可刪除一個或多個數據內存在的視圖:

18.查看創建視圖的語法:使用 SHOW CREATE VIEW 語句

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章