Ngôn ngữ định nghĩa dữ liệu (Data Definition Language (DDL))

Một phần của tài liệu Đào tạo cơ bản về Oracle8i pptx (Trang 38 - 43)

Ràng buộc toàn vẹn dữ liệu là các miêu tả để định nghĩa quy tắc nghiệp vụ cho cột của một bảng. Ràng buộc toàn vẹn dữ liệu là lệnh để dữ liệu trong bảng đó luôn đúng:

‰ Nếu Ràng buộc toàn vẹn dữ liệu đ−ợc tạo cho một bảng và một số bảng tồn tại

không thoả mãn ràng buộc đó, thì ràng buộc đó không có hiệu lực. Ràng buộc dữ liệu đ−ợc kiểm tra ngay từ khi tạo.

‰ Sau khi ràng buộc đ−ợc định nghĩa, nếu nh− bất kì kết quả của lệnh DML không

thoả mãn ràng buộc đó thì lệnh bị trả về cùng với mã lỗi

Ràng buộc toàn vẹn dữ liệu đ−ợc định nghĩa cho bảng và đ−ợc l−u tập trung nh− một

phần định nghĩa về bảng đó trong từ điển dữ liệu của CSDL, vì vậy các ứng dụng

CSDL phải gắn với cùng một tập các quy tắc. Nếu nh− quy tắc thay đổi, chỉ cần thay

đổi tại 1 mức CSDL và không tốn nhiều thời gian thay đổi cho từng ứng dụng

Những ràng buộc toàn vẹn dữ liệu sau đ−ợc hỗ trợ bởi Oracle

NOT NULL Không cho phép cột rỗng

UNIQUE Không cho phép trùng lặp dữ liệu trên một cột

PRIMARY KEY

Gồm cả 2 ràng buộc trên.

FOREIGN KEY Mỗi giá trị trong cột (hay tập các cột) phải phù hợp với giá trị trong bảng liên quan UNIQUE hay PRIMARY KEY. FOREIGN KEY

chỉ ra ràng buộc dữ liệu nếu nh− dữ liệu bảng tham khảo thay đổi

CHECK Dữ liệu phải thoả mãn mệnh đề logíc của ràng buộc .

Khoá (Key)

Khoá đ−ợc sử dụng để định nghĩa một vài kiểu ràng buộc. Khoá là cột hay tập các cột

có trong định nghĩa của kiểu ràng buộc toàn vẹn nào đó. Khoá mô tả quan hệ giữa những bảng và cột khác nhau của CSDL quan hệ. Các kiểu khoá bao gồm

primary key Cột hay tập các cột đ−ợc định nghĩa ràng buộc PRIMARY KEY.

Giá trị khoá chính phải đ−ợc định nghĩa duy nhất và không rỗng

unique key Cột hay tập các cột đ−ợc định nghĩa ràng buộc UNIQUE thì phải

duy nhất.

foreign key Cột hay tập các cột tham khảo tới ràng buộc toàn vẹn bảng khác.

referenced key unique key hay primary key của cùng hay không cùng bảng đ−ợc

tham khảo bởi foreign key.

Trigger của CSDL

Trigger của CSDL cho phép định nghĩa và đảm bảo những quy tắc ràng buộc toàn vẹn,

nh−ng trigger không phải chỉ là ràng buộc toàn vẹn. Thực ra trigger không kiểm tra dữ

liệu đã cập nhật vào bảng. Vì vậy khuyến cáo chỉ nên sử dụng trigger khi những quy

Chi tiết về lệnh SQL

Ngôn ngữ định nghĩa dữ liệu (Data Definition Language (DDL))

Các lệnh DDL định nghĩa, duy trì và xoá các đối t−ợng l−ợc đồ khi chúng không còn

cần thiết. Chúng cũng bao gồm lệnh cấp quyền cho User hay quyền truy nhập CSDL

và những đối t−ợng cụ thể trong CSDL.

Lệnh tạo CSDL

Cú pháp:

CREATE DATABASE <Database_name>;

Mục đích:

Khởi tạo CSDL có tên là Database_name, nếu nh− sử dụng câu lệnh này trên một

CSDL đã tồn tại thì toàn bộ các file dữ liệu của nó sẽ bị xóa. Ví dụ:

CREATE DATABASE Csdl_Bgg;

Lệnh tạo bảng

Cú pháp:

CREATE TABLE <Table_name> (

Col_Name1 Data_Type [NOT NULL], Col_Name2 Data_Type [NOT NULL], ...

Col_NameN Data_Type,

[constraInt Constraint_Name PRIMARY KEY (ColA, .. , ColAn)],

[constraInt Constraint_Name FOREIGN KEY (ColB, .. , ColBn)], [constraInt Constraint_Name CHECK <Condition>]);

Mục đích:

Tạo bảng Table_Name với các tr−ờng “Col_Name1”, .. , “Col_NameN” với

ràng buộc khóa chính, khóa ngoài, “Conditon” kiểm tra điều kiện ràng buộc dữ liệu khi đ−a vào bảng.

Ví dụ:

CREATE TABLE Employ(

Employ_ID VARCHAR2(5) NOT NULL,

Depart_ID VARCHAR2(5) NOT NULL,

Employ_Name VARCHAR2(27),

Sal NUMBER,

CONSTRAINT PK_Employ (Employ_ID), CONSTRAINT FK_Employ (Depart_ID),

CONSTRAINT Con_Check CHECK Sal >1000 AND Sal <10000);

Lệnh tạo VIEW

Cú pháp:

CREATE VIEW View_name AS SELECT Col1, .. , Coln

FROM Table_Name

Mục đích:

Định nghĩa khung nhìn là bảng logic dựa và những bảng hoặc view khác Ví dụ:

CREATE VIEW dept20 AS

SELECT Employ_Name, sal*12 Annual_Salary

FROM Employ

WHERE Depart_ID = ‘DP01’;

Lệnh tạo User

Cú pháp:

CREATE USER User_Name IDENTIFIED BY Pasword [DEFAULT TABLESPACE tablespace]

[TEMPORARY TABLESPACE tablespace] [QUOTA integer[UNLIMITED] ON tablepace] [ACCOUNT LOCK[UNLOCK]];

IDENTIFIED: Mật khẩu đăng nhập,

DEFAULT: Định nghĩa Tablespace ngầm định cho các đối t−ợng mà user tạo ra,

TEMPORARY: Định nghĩa Tablespace cho những segment tạm thời của user,

QUOTA: Tuỳ chọn, hạn mức l−u trữ trong tablespace bằng số integer byte ,

ACCOUNT: Khóa hay không khóa truy nhập user. Mục đích:

Tạo và cấu hình cho User_Name quyền truy nhập vào CSDL hay account cho phép log vào CSDL với quyền user đó

Ví dụ:

CREATE USER sidney

IDENTIFIED BY welcome

DEFAULT TABLESPACE cases_ts

QUOTA 10M ON cases_ts

TEMPORARY TABLESPACE temp_ts

QUOTA 5M ON system ;

Lệnh xóa CSDL

Cú pháp

DROP DATABASE <Database_name>;

Mục đích:

Xóa một CSDL cùng với mọi dữ liệu trong CSDL đó.

Ví dụ:

DROP DATABASE Csdl_Bgg;

Lệnh xóa một bảng

Cú pháp:

DROP TABLE <Table_Name>; Mục đích:

Xóa bảng cùng với mọi dữ lệu có trong bảng Ví dụ:

Lệnh xóa User của một CSDL

Cú pháp:

DROP USER User_name [CASCADE]; Mục đích:

Xóa user của CSDL và những đối t−ợng của user đó, lựa chọn CASCADE xóa

tất cả các đối t−ợng có trong l−ợc đồ của user Ví dụ:

DROP USER Tunb;

Các lệnh cấp vμ xóa quyền

Có hai cách cấp quyền: Đối t−ợng và hệ thống nh− đã nói ở trên.

Lệnh cấp quyền

Cú pháp:

GRANT privilege ON object TO grantee [WITH GRANT OPTION];

Trong đó privilege tên quyền, object là đối t−ợng mà ta cấp quyền trên nó, grantee là

user đ−ợc cấp quyền

gồm các quyền:

Object Privilege Miêu tả Kiểu đối t−ợng l−ợc đồ ALTER Có quyền với câu lệnh ALTER Table, Sequence

DELETE Có quyền với câu lệnh

DELETE

Table, View EXECUTE Quyền thực hiện những đối

t−ơng Store PL/SQL

Procedure, Function, Package

INDEX Cho quyền với lệnh CREATE

INDEX

Table

INSERT Có quyền với câu lệnh

INSERT

Table,View REFERENCE Quyền tạo những ràng buộc

tham chiếu

Table

SELECT Có quyền với câu lệnh

SELECT

Table, View, Sequence, snapshot

UPDATE Có quyền với câu lệnh

UPDATE

Table, View Mục đích:

Tạo quyền truy nhập trên dữ liệu cho User Ví dụ:

GRANT SELECT ON Class TO UserA;

Câu lệnh hủy bỏ quyền user

Cú pháp:

REVOKE privilege ON object FROM grantee [CASCADE CONSTRAINTS];

Mục đích: Hủy bỏ quyền thao tác trên đối t−ợng CSDL của User

Ví dụ:

REVOKE UPDATE, DELETE, INSERT ON student FROM userA;

Trên các hệ thống lớn của Oracle th−ờng có nhiều ng−ời dùng, do vậy quyền có thể

đ−ợc thay đổi th−ờng xuyên, Oracle cung cấp ROLE để lựa chọn quyền trên cả 2 loại:

đối t−ợng và hệ thống

Cú pháp:

CREATE ROLE <role_name>;

GRANT privilege ON object TO role_name; ...

GRANT privilege ON object TO role_name; GRANT role_name TO user;

Ví dụ:

CREATE ROLE table_query;

GRANT SELECT ON students TO table_query; GRANT SELECT ON classes TO table_query; GRANT SELECT ON rooms TO table_query; GRANT table_query TO UserA;

GRANT table_query TO UserB

Sửa đổi cấu trúc

Thay đổi kiểu một cột

Cú pháp:

ALTER TABLE <table_name> MODIFY/ ADD[CONSTRAINT] (Col_name New_type);

ALTER TABLE <table_name> DROP CONSTRAINT Constraint_Name; Mục đích:

Thay thế hoặc thêm một tr−ờng mới, xóa ràng buộc khóa chính hay những

CONSTRAINT Ví dụ:

ALTER TABLE Employ ADD (BirthDate DATE);

Alter table Department

addconstraint PK_Employ primary key (Employ_ID);

Ngôn ngữ thao tác với dữ liệu (DML)

Các lệnh DML thao tác dữ liệu trong CSDL. Ví dụ: Truy vấn, thêm, cập nhật và xoá những bản ghi.

Các lệnh truy vấn

Cú pháp:

SELECT [DISTINCT] <Colums, expression>

FROM <Table_Name>

WHERE <Condition> GROUP BY<Colum>

HAVING <Group Condition> ORDER BY [ASC/DESC] Mục đích:

Đ−a ra những câu hỏi yêu cầu SQL đ−a ra những dữ liệu cần thiết,

Select có thể đ−ợc thực hiện trên nhiều bảng,

Select là một mệnh đề, mỗi mệnh đề cho phép trong nó có mệnh đề con. Ví dụ:

SELECT Employ_Name, AVG (Sal) TBLuong FROM Salary GROUP BY Employ_Name HAVING AVG(Sal) >=500; Các lệnh truy vấn lồng nhau SELECT */Colum/Expression FROM <Table_Name>

WHERE Colum =/>=/<=/other (SELECT */Colum FROM Table_Name

WHERE Expression);

Ví dụ:

SELECT Employ_Name, Sal FROM Salary

WHERE Sal > (SELECT AVG(Sal) FROM Employ);

Các lệnh quản trị dữ liệu

Thêm một dòng:

INSERT INTO <Table_Name> [(Field1, Field2,..., Fieldn)] VALUES (Value1, Value2, ..., Valuen);

Ví dụ:

INSERT INTO Employ VALUES (‘EP001’, ’DP01’, ’David’, 2000, ’08/05/1974’);

Lệnh xoá một bản ghi

DELETE FROM <Table_Name> WHERE <Condition>;

Ví dụ:

DELETE FROM Sal WHERE Employ_id=’EP001’;

Lệnh sửa đổi giá trị:

Update <Table_name> Set (Attr=new_value) Where <Conditon>;

Ví dụ:

Update Salary Set (Sal=3000) Where Employ_id=’EP001’; ---

Một phần của tài liệu Đào tạo cơ bản về Oracle8i pptx (Trang 38 - 43)

Tải bản đầy đủ (PDF)

(43 trang)