mysql.exe -h localhost -P 3306 -u root -p
use mydb;?????——???? 進(jìn)入數(shù)據(jù)庫
查看:show index from 表名\G
desc:查看表結(jié)構(gòu)
select * from 表名:查詢所有數(shù)據(jù)?
視圖(view):是一種有結(jié)構(gòu)剂买,但是沒結(jié)果的虛擬表
視圖優(yōu)點(diǎn):對外提供友好型,不同的視圖對應(yīng)不同的數(shù)據(jù)
一癌蓖、創(chuàng)建視圖
? ??????1)基本語法:create view 視圖名字 as select 語句;
? ??????2)創(chuàng)建單表視圖:基表只有一個
? ??????3)創(chuàng)建多表視圖:基表來源至少兩個
-- 視圖:單表+多表
create view my_v1 as
select * from my_student;
create view my_v2 as
select * from my_class;
create view my_v3 as
select * from my_student as a left join my_class as
c on s.c_id=c.id;-- 錯誤雷恃,id重復(fù)
-- 多表視圖
create view my_v3 as
select s.*,c.c_name,c.room from my_student as s
join my_class as c on s.c_id=c.id;
二、查看視圖
show tables [like] / desc 視圖名 / show create table 視圖名;
-- 查看視圖創(chuàng)建語句
show create view my_v3\G????-- \G:橫向查看
三费坊、修改視圖
alter view 視圖名字 as 新的select語句;
-- 視圖使用
select * from my_v1;
select * from my_v2;
select * from my_v3;
-- 修改視圖
alter view my_v1 as
select id,name,age,sex,height,c_id from my_student;
四、刪除視圖
drop view 視圖名字;
-- 先創(chuàng)建v4
create view my_v4 as
select * from my_student;
-- 刪除視圖
drop view my_v4;
五旬痹、新增數(shù)據(jù)
1)多表視圖不能新增數(shù)據(jù)
-- 多表視圖不能插入數(shù)據(jù)
insert into my_v3 values(null,'bc20200008','張三豐','男',150,180,3,'Python1910','A204');
2)可以向單表視圖插入數(shù)據(jù)附井,但是視圖中包含的字段必須有基表中所有不能為空、或沒有默認(rèn)值的字段
-- 將學(xué)生表的學(xué)號字段設(shè)置成不允許為空
alter table my_student modify number char(10) not null unique;
-- 單表視圖插入數(shù)據(jù):視圖不包含所有不允許為空的字段
insert into my_v1 values(null,'張三豐',150,'男',180,3);
3)視圖是可以向基表插入數(shù)據(jù)的
-- 單視圖插入數(shù)據(jù)
insert into my_v2 values(3,'Python1910','A204');
六两残、刪除數(shù)據(jù)
1)多表視圖不能刪除數(shù)據(jù)
-- 多表示圖不能刪除數(shù)據(jù)
delete from my_v3 where id=1;
2)單表視圖可以刪除數(shù)據(jù)
-- 單表視圖刪除數(shù)據(jù)
delete from my_v2 where id=4;
七永毅、更新數(shù)據(jù)
更新限制:with check option;
-- 多表視圖更新數(shù)據(jù)
update my_v3 set c_id=4 where id=6;
-- 視圖:age字段限制更新
create view my_v4 as
select * from my_student where age>30 with check
option;
-- 表示視圖的數(shù)據(jù)來源都是年齡大于30歲的底挫,是由where age>30決定的
-- with check option決定通過視力更新的時候僻孝,不能將已經(jīng)得到的數(shù)據(jù)age>30的改成<30的
-- 將視圖可以查到的數(shù)據(jù)改成年齡小于30
update my_v4 set age=29 where id=5;
-- 可以將修改數(shù)據(jù)讓視圖可以查到:可以改怪与,但是無效果
update my_v4 set age=32 where id=3;