如何更好地學習mysql資料庫,如何更好地學習Mysql資料庫

時間 2021-08-14 09:06:51

1樓:匿名使用者

update worker_view4 set name='hi';

error............the target table worker_view4 of the update is not updatable.

(4)檢視中的select中包含子查詢。

create view worker_view5(name)

as select (select name from worker);

update worker_view5 set name = '劉佳';

該檢視中包含了子查詢,因此也是不能更新的。

(5)由不可更新的檢視匯出的檢視。

create view worker_view6

as select * from worker_view5;

update worker_view6 set name = '王仔';

因為worker_view6是不可更新的檢視,所以worker_view6也不可以更新的檢視。使用update語句更新時,會出現系統報錯。

(6)建立檢視時,algorithm為temptable型別。

create algorithm=temptable

view worker_view7

as select * from worker;

update worker_view7 set name = '王仔';

因為該檢視algorithm為temptable型別,所以worker_view7不可以更新的檢視。temptable型別就是臨時表型別。系統預設臨時表是不能更新的。

(7)檢視對應的表上存在沒有預設值的列,而且該列沒有包含在檢視裡。例如,表中包含的name欄位沒有預設值,但是檢視中不包含該欄位。那麼這個檢視是不能更新的。

因為,在更新檢視時,這個沒有預設值的記錄將沒有值插入,也沒有null值插入。資料庫系統是不會允許這樣的情況出現的,資料庫系統將會阻止這個檢視更新。

注意:檢視中雖然可以更新資料,但是有很多的限制。一般情況下,最好將檢視作為查詢資料的虛擬表,而不要通過檢視來更新資料。

因為,使用檢視更新資料時,如果沒有全面考慮在檢視中更新資料的限制,可能會造成資料更新失敗。

除了上述條件不能更新檢視以外,with[cascaded|local]check option也將決定檢視能否更新。"local"參數列示更新檢視時要滿足該檢視本身的定義的條件即可;

8.6 刪除檢視

刪除檢視是指刪除資料庫中已經存在的檢視。刪除檢視時,只能刪除檢視的定義,不會刪除資料。mysql中,使用drop view語句來刪除檢視,不會刪除資料。

mysql中,使用drop view語句來刪除檢視。但是,使用者必須擁有drop許可權。

drop view[if exists] 檢視名列表 [restrict|cascade]

例項一:

select drop_priv

from mysql.user

where user='root';

create view worker_view_del1

as select * from worker;

create view worker_view_del2

as select * from worker;

create view worker_view_del3

as select * from worker;

drop view if exists worker_view_del2, worker_view_del3;

8.7 本章例項

在test資料庫中work_info表上進行檢視操作。

1. 在test資料庫中work_info表

2. 插入記錄

3. 建立檢視info_view

4. 檢視檢視info_view的基本結構和詳細結構

5. 檢視檢視info_view的所有記錄

6. 修改檢視info_view

7. 更新檢視

8. 刪除檢視

work_info表的結構

欄位名 欄位描述 資料型別 主鍵 外來鍵 非空 唯一 自增

id 編號 int(10) 是 否 是 是 否

name 姓名 varchar(20) 否 否 是 否 否

gender 姓別 varchar(4) 否 否 是 否 否

age 年齡 int(5) 否 否 否 否 否

address 家庭住址 varchar(50) 否 否 否 否 否

tel **號碼 varchar(20) 否 否 否 否 否

work_info表中的內容

id name gender age address tel

1 張三 m 18 北市市海淀區 01-155151

2 李四 m 22 北京市昌平區 01-215151

3 王五 f 17 湖南省永州市 025-545845

4 趙六 f 25 遼寧省阜新市 0625-514545

(1) 建立work_info表

use test;

create table if not exists work_info (

id int(10) not null unique primary key,

name varchar(20) not null,

gender varchar(4) not null,

age int(5),

address varchar(50),

tel varchar(20)

) default charset=utf8;

(2)向work_info表中插入幾條記錄。

insert into work_info values

(1, '張三', 'm', 18, '北市市海淀區','01-155151'),

(2,'李四', 'm', 22, '北京市昌平區', '01-215151'),

(3,'王五','f',17,'湖南省永州市','025-545845'),

(4,'趙六','f',25,'遼寧省阜新市','0625-514545');

(3) 建立檢視info_view。從work_info表中選出age>20的記錄來建立檢視。檢視的欄位包括id、name、gender和address。

algorithm設定為merge型別。加上with local check option條件。

create algorithm=merge

view info_view(id, name, gender, address)

as select id, name, gender, address

from work_info

where age>20

with local check option;

(4)檢視檢視info_view的基本結構和詳細結構。

show create view info_view \g

(5)檢視檢視info_view的所有記錄。

select * from info_view;

(6)修改檢視info_view,使其顯示age<20的資訊,其他條件不變。

alter algorithm=merge

view info_view(id, name, gender, address)

as select id, name, gender, address

from work_info

where age<20

with local check option;

(7)更新檢視,將id為3的記錄進行更新。設定其gender為m。

update info_view set gender='m' where id=3;

(8)刪除檢視。

drop view info_view;

8.8 上機實踐

題目要求:

(1)在資料庫example下建立college表。

(2)在college表上建立檢視college_view。檢視的欄位包括student_num、student_name、student_age和department。algorithm設定為undefined型別。

加上with local check option條件。

(3)檢視檢視college_view的詳細結構。

(4)更新檢視。向檢視中插入三條記錄。

(5)修改檢視,使其顯示專業為"計算機"的資訊,其他條件不變。

(6)刪除檢視college_view。

college表的結構

欄位名 欄位描述 資料型別 主鍵 外來鍵 非空 唯一 自增

number 學號 int(10) 是 否 是 是 否

name 姓名 varchar(20) 否 否 是 否 否

major 專業 varchar(20) 否 否 是 否 否

age 年齡 int(5) 否 否 否 否 否

college_view表的內容

student_num student_name student_age department

0901 張三 20 外語

0902 李四 22 計算機

0903 王五 19 計算機

use example;

create table college(

number int(10) not null unique primary key,

name varchar(20) not null,

major varchar(20) not null,

age tinyint(3)

) default charset=utf8;

create algorithm=undefined

view college_view(student_num, student_name, student_age, department)

as select number, name, age, major

from college

with local check option;

show create view college_view \g

insert into college_view values

(0901, '張三', 20, '外語'),

(0902, '李四', 22, '計算機'),

(0903, '王五', 19, '計算機');

create or replace algorithm=undefined

view college_view(student_num, student_name, student_age, department)

as select number, name, age, major

from college

where major='計算機'

with local check option;

如何學習資料庫,如何學習資料庫知識?

基本上操作各種資料庫不近相同,其中access是小型資料庫,sqlserver與oracal是中型的,db是大型資料庫。1 學習資料庫的sql語句,每個資料庫基本上上不多,但是都有自己的不同,有的時間型別用 標識有的用 等。但是基本的sql都是一樣的select update,insert,dele...

MYSQL資料庫怎麼用?如何匯入MySQL資料庫?

建立下乙個sqlyog,這個很容易入門,有中文簡體版的,樓上固然好,但是對於初學者不是太合適。如何匯入mysql資料庫?3 如果sql檔案的內容中有建立資料庫的語句,或者想將表存放在已有的資料庫,在這裡就不用建立資料庫。6 開始匯入sql檔案,輸入 source sql檔案的路徑 注意檔案路徑要是複...

mysql資料庫和oracle資料庫的區別

1 體積不同。oracle它體積比較龐大,一般是用來開發大型應用 例如分布式 的。而mysql的體積相對來說比較小,較之oracle更容易安裝 維護以及管理,操作也簡單,最重要的是它是三個中唯一乙個開源資料庫,但目前也屬於oracle公司的產品了。2 容量不同。oracle容量無限,根據配置決定 而...