- Phục hồi lạnh: Các bớc tiến hành
e. Thuộc tính định danh
Trong một bảng bạn có thể có một cột tự động tăng, sử dụng từ khoá Identity. Mỗi bảng chỉ đợc có một cột thuộc tính định danh và cột đó không đ- ợc cho phép giá trị NULL. Thuộc tính định danh đợc dùng cho tất cả các kiểu dữ liệu số (integer, smallint, tinyint, decimal, numeric, float).
L u ý: không thể chèn trực tiếp giá trị vào cột có thuộc tính định danh
nếu bạn không bỏ thuộc tính này bằng câu lệnh SET IDENTITY_INSERT <tên bảng> ON. Để đợc sử dụng câu lệnh này bạn phải là chủ sở hữu của bảng.
1.2 Thay đổi cấu trúc bảng
- Lệnh ALTER TABLE
Bạn có thể dùng lệnh ALTER TABLE để thêm các cột vào bảng, bạn cũng có thể thêm các ràng buộc.
- Thêm một cột mới:
ALTER TABLE Customer
ADD Adress VARCHAR(50) NULL
Sửa đổi các tính chất của cột, chẳng hạn thay đổi kiểu dữ liệu:
ALTER TABLE Customer
- Xoá cột:
ALTER TABLE Customer
DROP COLUMN Adress - Xoá các bảng:
DROP TABLE Customer
1.3 Khung nhìn
- View (khung nhìn) là bảng ảo đáp ứng câu hỏi truy vấn, nó đợc sử dụng để giới hạn số hàng, cột mà ngời sử dụng có thể quan sát. DBA có thể cấp quyền sử dụng view mà không sử dụng bảng, tránh để ngời sử dụng thấy những thông tin không mong muốn.
Ví dụ: CREATE VIEW CA_Authors SELECT * FROM Authors WHERE state = ‘CA’
Có thể dùng lệnh UNION để kết hợp các view lại với nhau thành một tập, kết quả tạo ra là một view đợc phân vùng. Khi cập nhật view đó, Oracle Server dựa vào các giá trị để biết đợc thông tin mới hay giá trị sửa đổi thuộc bảng nào.
Có thể đa hàm vào view và nhận kết quả của nó bằng cách đa các phần tử hàm vào khai báo view, ví dụ với hàm AVG:
CREATE VIEW TypeYTDSales (TitleType, AvgYTDSales)
AS
SELECT type, AVG(YTD_Sales) FROM titles
GROUP BY type
Có thể tạo một view mật mã bằng cách thêm WITH ENCRYPTION vào khai báo view. Mục đích của mã hoá là lu trữ định nghĩa view ở dạng mã hoá, không đọc đợc bằng các công cụ của Enterprise Manager. Điều này có ích khi bạn vận chuyển cơ sở dữ liệu và định nghĩa view chứa các thông tin độc quyền.
Có thể kiểm tra view trong Enterprise Manager bằng cách kéo xuống từ nút Views trong cơ sở dữ liệu và chọn Properties. Trong hộp thoại này bạn cũng có thể cấp quyền cho views. Ngoài ra bạn cũng có thể thay đổi view trong Transact –SQL bằng lệnh ALTER VIEW:
ALTER VIEW CA_Authors AS
SELECT au_lname, au_fname FROM Authors WHERE state = ‘CA’
- Cập nhật View
Có thể dùng các câu lệnh giao tác SQL nh INSERT, UPDATE, DELETE để cập nhật view. Nếu bạn cập nhật cột xác định view thì sẽ gây ảnh hởng đến view đó, do vậy để tránh điều này bạn dùng WITH CHECK OPTION:
CREATE VIEW CA_Authors AS
SELECT au_lname, au_fname FROM Authors
WHERE state = ‘CA’
1.4 Bảng hệ thống và view theo chuẩn ANSI
Theo mô hình quan hệ, tất cả dữ liệu về các bảng của cơ sở dữ liệu đợc chứa trong bảng hệ thống. Oracle Server có 2 loại bảng hệ thống: bảng catalog mô tả và quản lý tất cả các bảng dữ liệu; một số cơ sở dữ liệu khác nh master và msdb chứa các bảng dữ liệu hoạt động nh là bảng hệ thống trên toàn bộ máy chủ.
Bạn có thể quan sát các bảng hệ thống bằng cách kích chuột phải vào tên máy chủ trong Enterprise Manager và chọn Edit Oracle Server Registration.
View theo chuẩn ANSI
Dựa trên các bảng hệ thống, một tập view theo chuẩn ANSI đợc định nghĩa trong mỗi cơ sở dữ liệu và đợc kế thừa từ cơ sở dữ liệu mẫu; chúng trích ra một phân thông tin từ các bảng hệ thống. Có thể quan sát các view này trên cây view của Enterprise Manager, dới nút Oracle Server Views.
Mỗi view có INFORMATION_SCHEMA của ngời chủ sở hữu, và phải tham chiếu ngời sở hữu để định danh view. Ví dụ để xem danh sách các bảng trong một cơ sở dữ liệu, bạn đa câu hỏi truy vấn cho view TABLE:
SELECT * FROM INFORMATION_SCHEMA.TABLES
u điểm của view ANSI là nó trả ra một bảng mà bạn có thể thao tác; nh- ợc điểm là phải tham chiếu tên ngời sở hữu. .
1.5 Ràng buộc cột
Ràng buộc là một cách quan trọng để giới hạn các giá trị trong cột. - Chỉ số: Oracle Server sử dụng các chỉ số là một phơng pháp gián
tiếp, tìm nhanh dữ liệu từ bảng mà không cần phải quét trực tiếp cả bảng đó. Chỉ số cũng là công cụ chính để tăng cờng hiệu năng câu hỏi truy vấn. Có 2 loại chỉ số: chỉ số bó và không bó.
- Chỉ số bó (clustered Indexes): Chỉ số bó sắp xếp lại dữ liệu theo trình
tự phù hợp với cột chỉ số. Oracle Server sẽ lu dữ liệu của bảng theo trình tự chỉ ra trong chỉ số bó. Để tạo một chỉ số bạn dùng lệnh T –SQL CREATE INDEX.
- Chỉ số không bó (nonclustered Indexes): Bạn có thể tạo thêm các chỉ
số không bó, các chỉ số này không ảnh hởng đến trình tự vật lý của dữ liệu nh- ng lại tăng cờng hiệu năng của câu hỏi truy vấn và thờng đợc dùng để tối u hoá câu hỏi.
- Xoá chỉ số: Có thể xoá chỉ số bằng câu lệnh DROP INDEX:
DROP INDEX cust_name
Hoặc bằng cách kéo thả trong Enterprise Manager.
- Ràng buộc duy nhất: Oracle Server có thể tạo tính duy nhất cho các
giá trị trong một cột bằng cách sử dụng các chỉ số. Khi tạo một chỉ số duy nhất trên một cột hoặc kết hợp của nhiều cột, Oracle Server sẽ loại bỏ các phép chèn hay cập nhật bảng đó để không thể tạo ra các giá trị trùng nhau.
- Chỉ số duy nhất: Có thể dùng một chỉ số để tạo tính duy nhất, khi
đó bạn thêm một chỉ số với từ khoá UNIQUE:
CREATE UNIQUE INDEX cust_name
ON Customer (cust_name)
- Khoá chính: Oracle Server có thể chỉ định một cột (hoặc kết hợp nhiều
cột) là khoá chính. Khi chọn từ khoá PRIMARY KEY, Oracle Server sẽ gán và đặt tên một ràng buộc khoá chính. Khoá chính bao gồm cả khoá duy nhất. Oracle Server yêu cầu giá trị duy nhất trong cột đó. Khi bạn chỉ ra một khoá chính, Oracle Server cho phép bạn khai báo các ràng buộc tham chiếu toàn vẹn. Sau khi đã khai báo khoá chính, tính duy nhất của khoá đó trở thành một phần của ràng buộc toàn vẹn đối với dữ liệu trong bảng, nếu có khoá trùng nhau thì ràng buộc của bảng sẽ bị xung đột.
- Ràng buộc kiểm tra (check constrain): Dựa trên tính duy nhất trong
cột, cần giới hạn phạm vi hay khuôn dạng dữ liệu trong cột. Bạn có thể đa các ràng buộc đó bằng cách vào chế độ Design Table trong Enterprise Manager, vào hộp thoại Properties.
- Cách thứ hai là thực hiện câu lệnh ALTER TABLE:
ALTER TABLE Titleauthor
ADD CONSTRAINT CK_titleauthor_croyaltyper
CHECK (royaltyper >0)
Để loại bỏ ràng buộc, có thể dùng hộp thoại trên hoặc thực hiện câu lệnh sau:
ALTER TABLE Titleauthor