如何更好地學習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;

如何連線mysql資料庫

一 mysql命令列連線 一般對於剛剛安裝好的mysql,如果勾選啟用mysql lineclient的話。可以直接通過找到開始 程式 mysql command line client如下圖 點選mysql命令列之後,會提示你輸入root密碼。輸入正確的root密碼之後即可連線到msyql資料庫裡...

MYSQL資料庫update select把表中的資料

妞兒媽媽 1 update b,a set num3 a.num1 a.num2where b.name1 a.name2。2 update 表a set name select id from 表b where 表b.name 表a.name 3 有兩個表,table1,table2 table1...

mysql資料庫備份

我暑假自學的,看能不能幫上忙。windowsxp下,估計也沒什麼用,但希望對你有所啟發 用mysqldump備份 first 資料庫,customer1 表,你的密碼 mysqldump first customer c backup customer1.sql uroot p mysqldump ...