Giáo trình SQL Server - Chương 6: Quản lý bảng trong SQL Server
Mụctiêu:
Kếtthúcchương, họcviên có thể:
Nắmđượccácbướctạo mộtbảng
Hiểu đượccáckiểu dữliệu trong SQLServer
Định nghĩađượccácràng buộctoàn vẹn vàhiểu đượcý nghĩacủacácràng buộc
Biếtđượccách cập nhậtvàxoámộtbảng bằng cách sửdụng T-SQLvàEnterpriseManager
Hiểu đượccáckháiniệmliên quan đến ràng buộcvàcácđốitượng ràng buộc
với một bảng đã tạo, chúng ta phải thay đổi lại cấu trúc hay các bản ghi của nó.. Một số bảng không còn dùng nữa có thể bị xóa khỏi CSDL. Những thao tác này có thể được thực hiện bằng T-SQL với Query Analyzer hoặc sử dụng Enterprise Manager. 6.3.1 Cập nhật bảng Sau khi một bảng được tạo, chúng ta có thể thay đổi những lựa chọn đã được thiết lập cho bảng lúc ban đầu. Những lựa chọn này là: Các trường có thể được thêm, sửa hoặc xoá. Ví dụ, tên trường, độ rộng, kiểu dữ liệu của trường cũng có thể được thay đổi. Tên bảng có thể được thay đổi. Các bản ghi có thể được thêm, sửa và xoá. Có hai cách sửa các trường trong một bảng là: The Enterprise Manager Transact-SQL Với Enterprise Manager, việc cập nhật một bảng cực kỳ dễ. Chúng ta chỉ cần mở bảng đó ra, thực hiện những thay đổi cần thiết và lưu lại. Để mở bảng trong cửa sổ design, ta chọn Design Table bằng cách chọn nhấn phải chuột lên bảng như trong hình 6.7. Quản lý bảng trong SQL Server 110 SQL Server Hình 6.7: Sửa thiết kế của bảng Cú pháp để thay đổi cấu trúc của một bảng sử dụng T-SQL là: Cú pháp: ALTER TABLE [ALTER COLUMN ] |ADD [Column_name ] | {DROP COLUMN } Trong đó: là tên của bảng cần sửa. ALTER COLUMN xác định những trường nào cần được sửa. là tên của trường cần được sửa, xoá hoặc thêm. là kiểu dữ liệu mới của trường được sửa. ADD xác định trường sẽ được thêm vào bảng. DROP COLUMN xác định trường sẽ bị xoá khỏi bảng. Quản lý bảng trong SQL Server 111 SQL Server 6.3.2 Xoá bảng Khi một bảng không còn cần đến nữa hoặc khi chúng ta muốn thiết kế lại bảng, hoặc dọn dẹp CSDL, ta có thể xóa bảng đó khỏi CSDL. Khi xóa bảng, toàn bộ cấu trúc, các full-text indexes, các ràng buộc, các index của nó bị xóa vĩnh viễn khỏi CSDL. Không gian trước đây dùng để lưu bảng và các index được giải phóng. Sử dụng Enterprise Manager, chúng ta xóa bảng bằng cách kích vào bảng như hình 6.8 rồi chọn Delete. Hình 6.8: Xoá một bảng Sử dụng T-SQL và Query Analyzer, cú pháp để xoá một bảng như sau: Cú pháp: DROP TABLE Ví dụ: DROP TABLE Airlines_Master Câu lệnh DROP TABLE không thể xoá được một bảng khi nó được tham chiếu bởi một ràng buộc khoá ngoại. Để có thể xóa nó, đầu tiên ta phải xóa ràng buộc khóa ngoại, hay bảng tham chiếu trước. 6.4 Ràng buộc và đối tượng ràng buộc (Constraint and Constraint object) Bên cạnh toàn vẹn thực thể, chúng ta cũng có toàn vẹn miền (Domain integrity) để đảm bảo dữ liệu hợp lệ cho bảng. Trước khi ta tìm hiểu các công cụ của SQL Server 2000 để thực hiện toàn Quản lý bảng trong SQL Server 112 SQL Server vẹn miền, chúng ta sẽ tìm hiểu ràng buộc là gì. Điều này giúp chúng ta tìm hiểu các kiểu ràng buộc khác nhau dùng để thực hiện toàn vẹn miền. 6.4.1 Ràng buộc và đối tượng ràng buộc Ràng buộc là một thuộc tính có thể được đặt trên một trường hay nhiều trường trong bảng, nhằm giới hạn dữ liệu được nhập vào các trường đó. Nếu dữ liệu đưa vào vi phạm ràng buộc, câu lệnh thực hiện sẽ không có tác dụng SQL Server 2000 cung cấp ba ràng buộc: CHECK, DEFAULT, FOREIGN KEY, PRIMARY KEY và UNIQUE. Một vài ràng buộc trong số này đã được xem xét trong các phần trước. DEFAULT Mọi trường trong một bản ghi phải có giá trị, kể cả giá trị NULL. Nó không nên để trắng. Trong trường hợp mà giá trị null không đáp ứng được yêu cầu và dữ liệu mong muốn không có sẵn, tốt hơn ta nên đặt giá trị mặc định cho trường.Giá trị mặc định sẽ được lưu vào trường khi người dùng không chỉ ra bất kì giá trị nào cho nó. Ví dụ, người ta thường dùng giá trị N.A khi số điện thoại của khách hàng không có. Hay một công ty có chính sách chỉ những người có cấp bậc từ L6 trở đi mới được nhận HRA (tiền trợ cấp thuê nhà). Vì vậy, trong trường HRA sẽ lưu N.A cho mọi nhân viên có cấp bậc dưới L.6 như hình 6.9 Bảng nhân viên Mã nhân viên Tên nhân viên Cấp H.R.A E001 Maria L7 7500 E002 Joseph L6 N.A E003 Sheba L8 8500 E004 James L5 N.A Hình 6.9: Các giá trị mặc định Giá trị mặc định trên trường phải tương thích với kiểu dữ liệu trên trường đó. Ví dụ, giá trị mặc định cho một trường kiểu int phải là một số nguyên, không thể là một xâu ký tự. Giá trị mặc định có thể được xác định ngay khi tạo bảng hoặc được thêm vào I sau. Hình 6.10 chỉ ra rằng giá trị mặc định ‘NA’ được đặt cho trường ‘Phone’. Quản lý bảng trong SQL Server 113 Các giá trị mặc định Khoá ngoại SQL Server Hình 6.10: Thêm các giá trị mặc định Ràng buộc Khoá ngoại Khóa ngoại là một trường hay nhiều trường dùng để tạo liên kết dữ liệu giữa hai bảng. Mối liên kết giữa hai bảng dựa trên một trường chung. Một trường là khóa chính trong bảng cha, một trường là khóa ngoại trong bảng con. Ví dụ, ‘PNR_No’ là khoá chính trong bảng Reservation và là khóa ngoài trong bảng Passenger như hình 6.11. PNR_No Aircraft_code PNR_no Ticket_no Name 1 IC01 1 1 Allan Smith 2 BA02 1 2 Stell Smith 3 IC01 1 3 Pam Smith 4 BA02 2 4 Peter Jones 2 5 Lily Jones Bảng cha - Reservation …….. ….. …… …….. ….. …… Hình 6.11: Khoá chính và khoá ngoại Quản lý bảng trong SQL Server 114 Bảng con - Passenger Khóa chính Khoá chính SQL Server Mục đích chính của khoá ngoại là kiểm soát dữ liệu được lưu trong bảng con. Một ràng buộc khóa ngoại đảm bảo rằng chỉ có dữ liệu đã tồn tại trong khoá chính của bảng cha mới được phép nhập cho khoá ngoại. Một bảng có thể có nhiều khoá ngoại. Một ràng buộc khóa ngoại không chỉ được dùng để liên kết đến ràng buộc khóa chính trong bảng khác; nó còn có thể tham chiếu tới các trường có ràng buộc duy nhất trong bảng khác. SQL Server 2000, kiểm tra các dữ liệu đã có trong các trường khóa ngoại để đảm bảo rằng nó phải tham chiếu đến các trường khóa chính hay các trường có ràng buộc duy nhất trong bảng cha. Ràng buộc CHECK Ràng buộc CHECK được dùng để hạn chế những dữ liệu lưu trong một trường. Ví dụ, trường Class_code trong bảng Reservation có thể đặt ràng buộc CHECK chỉ cho phép nhận các giá trị: EX cho ghế hạng Sang, FC cho ghế hạng Nhất và E cho ghế hạng Kinh tế. Khi đặt ràng buộc CHECK lên một bảng đã có dữ liệu, nó sẽ thực hiện việc kiểm tra trên những dữ liệu cũ và cả những dữ liệu sau này thêm vào. 6.4.2 Thêm các đối tượng ràng buộc vào bảng Ràng buộc có thể được tạo ngay khi tạo bảng hoặc có thể thêm vào sau này. Tạo một ràng buộc khi tạo bảng Một ràng buộc thường được tạo khi tạo bảng. Nó được vào trong câu lệnh CREATE TABLE. Cú pháp: CREATE TABLE Table_name ( ) Trong đó: là định nghĩa cho mỗi trường của bảng. là bất cứ ràng buộc nào dành cho bảng hoặc các trường như khoá chính, ràng buộc CHECK. là tuỳ chọn. Nó cũng có thể được xác định sau khi tạo bảng. Quản lý bảng trong SQL Server 115 SQL Server Hình 6.12: Tạo bảng cùng với ràng buộc Tạo một ràng buộc trên một bảng đã có Một ràng buộc có thể được tạo trên một bảng đã có dữ liệu bằng câu lệnh ALTER TABLE. Cú pháp: ALTER TABLE Table_name ADD CONSTRAINT Cũng có thể xóa một ràng buộc và tạo ra một ràng buộc khác trên cùng một trường. Hình 6.13: Thêm một ràng buộc vào một bảng đã tồn tại Quản lý bảng trong SQL Server 116 SQL Server Kết luận Một bảng là một tập hợp các bản ghi được xếp thành các hàng và cột. Một CSDL bao gồm một số bảng, mỗi CSDL lưu một tập dữ liệu có liên quan. Một điều cực kỳ quan trọng để thiết kế CSDL là tạo ra một mô hình CSDL mức khái niệm. Khi chúng ta thiết kế một CSDL, chúng ta cần chọn kiểu bảng cần thiết, kiểu của dữ liệu sẽ được lưu trong mỗi bảng, và ai có quyền truy cập tới các bảng đó,… Chuẩn hoá là một tiến trình nhằm loại bỏ sự dư thừa từ dữ liệu đầu vào. Một bảng có thể được tạo bằng: • Enterprise Manager hoặc • Câu lệnh Transact-SQL trong Query Analyzer Câu lệnh để tạo một bảng sử dụng T-SQL là CREATE TABLE theo sau là tên bảng. Chúng ta có thể tạo một bảng mới với Enterprise Manager bằng cách chọn CSDL và sau đó chọn Action, New và Table. Các kiểu dữ liệu là một trong những điều quan trong nhất của T-SQL. Toàn vẹn dữ liệu có nghĩa là dữ liệu tin cậy và chính xác. Các ràng buộc được thiết kế để giữ cho dữ liệu nhất quán và chuẩn xác. Ý tưởng cơ bản của Toàn vẹn thực thể là chúng ta phải có khả năng xác định mỗi thực thể trong CSDL. Xác định trường khoá là bước đầu tiên bắt toàn vẹn thực thể. Sau đó ta xác định các khóa ngoại của bảng. Toàn vẹn miền hạn chế dữ liệu nhập vào trên một trường nào đó. Toàn vẹn tham chiếu duy trì quan hệ giữa các bảng khi thao tác các bản ghi. Toàn vẹn Tham chiếu đảm bảo giá trị khoá nhất quán trên các bảng. SQL Server 2000 cung cấp ba cơ chế cho toàn vẹn Thực thể: Khoá Chính, ràng buộc Duy nhất, và thuộc tính IDENTITY. Câu lệnh T-SQL để xoá một bảng là DROP TABLE tiếp theo là tên bảng. Một ràng buộc là một thuộc tính được đặt trên một trường hoặc một tập hợp các trường của một bảng để hạn chế dữ liệu nhập vào các trường đó. Quản lý bảng trong SQL Server 117 SQL Server Kiểm tra tiến bộ 1. _________________ là tiến trình loại bỏ sự dư thừa từ dữ liệu đầu vào. 2. Toàn vẹn dữ liệu có nghĩa là dữ liệu ____________ và ______________. 3. Câu lệnh T-SQL để xoá một bảng là ______________ tiếp theo là tên bảng 4. SQL Server 2000 cung cấp ba cơ chế cho toàn vẹn Thực thể: _______________, __________________ và _____________________. 5. Chúng ta có thể tạo một bảng mới Enterprise Manager bằng cách chọn CSDL và sau đó chọn ______________, New và Table. 6. Một ________________ đảm bảo rằng chỉ có dữ liệu tồn tại trong khoá chính của bảng cha mới được phép nhập và khoá ngoại. 7. Chúng ta có thể sử dụng toàn vẹn __________ để đảm bảo rằng các giá trị lặp không được nhập vào một cột nhất định. 8. Một ______________ là một thuộc tính mà có thể được đặt trên một hoặc một tập các cột của trong bảng để hạn chế dữ liệu nhập vào các cột đó. 9. Một khoá tối thiểu là một khoá với số lượng trường _________. 10. Thuộc tính _________ sinh ra một giá trị duy nhất trong bảng và theo mặc định giá trị khởi tạo là 1. Quản lý bảng trong SQL Server 118
File đính kèm:
- Giáo trình SQL Server - Chương 6_Quản lý bảng trong SQL Server.pdf