資料庫原理及應用 實驗5 資料庫的完整性和安全性

2022-09-07 14:12:09 字數 3928 閱讀 1170

1. 熟悉mysql的完整性約束技術。

2. 了解mysql的違反完整性處理措施。

3. 了解登入賬戶的管理理念與具體方法。

4. 了解資料庫使用者的管理的要則。

5. 了解使用者許可權管理的內涵與方法。

mysql、sqlyog

向員工表中插入記錄,驗證主碼不能為空且不能重複。

insert departments

values (01,'資訊部','李四','北京','010110');

insert employees

values (1001,'張三',20,'技工',5000,01); #正常新增

insert employees

values ('','張三',20,'技工',5000,01); #主碼不能為空

insert employees

values (1001,'張三',20,'技工',5000,01); #主碼不能重複

向員工表中插入記錄,驗證工種名稱不能取空值。

insert employees

values (1002,'李四',20,'',50000,01);

向員工表中插入記錄,不用給工資賦值,檢視是否有預設值。

insert employees (employee_id,employee_name,age,job_title,department_id)

values (1002,'李四',20,'經理',01);

select * from employees

where employee_id=1002;

向員工表中插入記錄,驗證外碼的值必須是其所參照的主碼的值。

insert employees

values (1003,'王五',21,'技工',6000,02);

向部門表中插入記錄,驗證**號碼是否能取重複值。

insert departments

values (02,'後勤部','小明','北京','010110');#**號碼不可取重複值

向兩張表中分別插入一條記錄,如下,刪除部門表中新插入的記錄,能否正常刪除?若不能,該怎麼處理?(違約處理,可級聯置空或刪除;可先刪外來鍵定義,再重新新增外來鍵定義)

insert into departments

values(10, '研發部', '張時', '上海', 1361111111);

insert into employees

values(100, '李麗莎', 30, '軟體工程師', 10000, 10);

delete from departments

where department_id=10; #傳統辦法無法正常刪除

#show create table employees

#先刪除表級約束

alter table employees drop foreign key employees_ibfk_1;

#再新增級聯刪除

alter table employees

add foreign key(department_id) references departments(department_id)

on delete cascade;

#即可刪除資料

delete from departments

where department_id=10;

向兩張表中分別插入一條記錄,如下,更新部門表中新插入的記錄,將部門號更改為99,能否正常更改?若不能,該怎麼處理?(違約處理,可級聯置空或更新;可先刪外來鍵定義,再重新新增外來鍵定義)

insert into departments

values(30, '人事部', '張琳', '福建', 1361111112);

insert into employees

values(110, '李莎', 30, '會計', 6000, 30);

alter table employees drop foreign key employees_ibfk_1;

alter table employees

add foreign key(department_id) references departments(department_id)

on update cascade;

update departments

set department_id=99

where department_id=30

新增兩個新使用者,user1的密碼為1234,只能通過本地訪問,user2的密碼為adcd,可以任意電腦進行鏈結訪問。點選"建立新連線 ctrl+m"開啟登入介面,分別以user1和user2身份登入mysql伺服器,試執行create database test,能否成功?

create user 

'user1'@'localhost' identified by '1234',

'user2' identified by 'adcd';

無法成功

使用grant語句建立乙個新使用者user3,密碼為1234,可以任意電腦進行鏈結訪問,並授予庫myemployees所有資料表的select和update許可權,驗證該使用者是否可以查詢、更新、刪除?

create user 'user3'@'%' identified by '1234';

grant select,update

on myemployees.*

to 'user3'@'%';

以使用root身份將user1的密碼修改為1111,並驗證。

set password for 'user1'@'localhost' ='1111';

以使用user2身份將user1的密碼修改為1234,能否修改,為什麼?

無法修改,因為無許可權。

將查詢員工表資訊,修改員工表的工資授權給user1。

grant select,update(salary)

on myemployees.employees

to 'user1';

使用grant語句建立乙個新使用者user4,可以任意電腦進行鏈結訪問,密碼為"1234"。使用者user4對庫myemployees中所有的資料有查詢、插入許可權,並授予grant許可權。

create user 'user4'@'%' identified by '1234';

grant select,insert

on myemployees.*

to 'user4'@'%'

with grant option;

以user4身份登入,將對部門表的查詢許可權授予user2,驗證是否能將刪除許可權也授予給user2。

grant select

on myemployees.*

to 'user2'@'%'

with grant option;

**user2的所有許可權後再刪除user2的賬戶。

revoke all privileges,grant option from 'user2';

drop user 'user2';

通過本次實驗,我更加熟悉了mysql的完整性約束技術,了解了mysql的違反完整性處理措施,了解了登入賬戶的管理理念與具體方法,了解資料庫使用者的管理的要則,了解使用者許可權管理的內涵與方法。收穫頗豐。

資料庫 實驗5

一 實驗目的 1 掌握資料庫約束的概念 2 熟悉sql server 的完整性約束技術。3 了解sql server 的違反完整性處理措施。二 實驗準備 1 了解資料庫完整性約束的基本概述 2 了解sql server完整性約束技術。包括實體完整性 參照完整性 使用者定義完整性等。3 了解主鍵 pr...

資料庫原理及應用 四 資料庫管理系統

資料庫管理系統中非常重要的一部分。按照一定的規則將語句變化成關係代數以後進行優化 對代數優化後的查詢樹使用比較好的方法進行查詢。主要是對連線運算進行優化 備份 完整備份 差異備份 日誌 事務的特性由dbms負責維護,因此對於需要使用事務來進行執行的sql語句,我們要定義在事務中。如果沒有顯式地建立事...

資料庫原理及應用 2

單一的資料結構 關係 現實世界的實體以及實體間的各種聯絡均用關係來表示 邏輯結構 二維表 從使用者角度,關係模型中資料的邏輯結構是一張二維表 建立在集合代數的基礎上一組具有相同資料型別的值的集合 笛卡爾積可表示為乙個二維表 表中的每行對應乙個元組,表中的每列對應乙個域 d1 d2 dn的子集叫作在域...