Tải bản đầy đủ (.ppt) (31 trang)

Giao Trinh SQL bai 6

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (343.37 KB, 31 trang )

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>

<b>Ràng buộc (Contraint) và </b>



<b>Toàn vẹn dữ liệu (Data Integrity) </b>



<b>Ràng buộc (Contraint) và </b>



<b>Toàn vẹn dữ liệu (Data Integrity) </b>


<b>6</b>



</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

<b>I. Giới thiệu toàn vẹn dữ liệu (Data Integrity)</b>
<b>I. Giới thiệu toàn vẹn dữ liệu (Data Integrity)</b>


 <b><sub>Toàn vẹn dữ liệu là đề cập đến trạng thái của tất cả </sub><sub>Toàn vẹn dữ liệu là đề cập đến trạng thái của tất cả </sub></b>


<b>các giá trị dữ liệu lưu trữ trong CSDL là đúng. </b>
<b>các giá trị dữ liệu lưu trữ trong CSDL là đúng. </b>


 <b><sub>Các table trong CSDL của SQL Server có một số </sub><sub>Các table trong CSDL của SQL Server có một số </sub></b>


<b>loại toàn vẹn dữ liệu khác nhau. VD: định nghĩa </b>
<b>loại toàn vẹn dữ liệu khác nhau. VD: định nghĩa </b>
<b>NOT NULL, định nghĩa DEFAULT, thuộc tính </b>
<b>NOT NULL, định nghĩa DEFAULT, thuộc tính </b>
<b>IDENTITY, CONTRAINTS, RULES, TRIGGERS, </b>
<b>IDENTITY, CONTRAINTS, RULES, TRIGGERS, </b>


<b>INDEXES.</b>
<b>INDEXES.</b>


 <b><sub>Xác định đúng Data type</sub><sub>Xác định đúng </sub></b> <b><sub>Data type</sub><sub> của Column</sub><sub> của </sub></b> <b><sub>Column</sub><sub> hoặc biến </sub><sub> hoặc biến </sub></b>



<b>(variable)</b>


<b>(variable) cũng là một cách thúc ép tính tồn vẹn cũng là một cách thúc ép tính tồn vẹn </b>
<b>dữ liệu</b>


<b>dữ liệu</b>


<b>VD: khơng thể chấp nhận giá trị của cột TenSinhVien </b>
<b>VD: không thể chấp nhận giá trị của cột TenSinhVien </b>


</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

<b><sub>Các loại Ràng buộc 4 loại</sub><sub>Các loại Ràng buộc 4 loại</sub></b>


<b><sub>Ràng buộc thực thể: </sub><sub>Ràng buộc thực thể: </sub><sub>đảm bảo rằng một dòng được xác </sub><sub>đảm bảo rằng một dòng được xác </sub></b>
<b>định duy nhất bởi một hoặc nhiều thuộc tính gọi là </b>


<b>định duy nhất bởi một hoặc nhiều thuộc tính gọi là </b>


<b>khóa chính </b>


<b>khóa chính (Primary Key)(Primary Key)</b>


<b><sub>Ràng buộc miền trị: </sub><sub>Ràng buộc miền trị: </sub><sub>đảm bảo rằng giá trị được lưu giữ </sub><sub>đảm bảo rằng giá trị được lưu giữ </sub></b>
<b>trong 1 cột phải nằm trong một miền trị hợp lệ được </b>


<b>trong 1 cột phải nằm trong một miền trị hợp lệ được </b>


<b>xác định trước. </b>


<b>xác định trước. (CHECK)(CHECK)</b>



<b><sub>Ràng buộc tham chiếu: </sub><sub>Ràng buộc tham chiếu: </sub><sub>đảm bảo rằng giá trị của khóa </sub><sub>đảm bảo rằng giá trị của khóa </sub></b>
<b>ngoại </b>


<b>ngoại (Foreign Key) (Foreign Key) được lưu trữ phải là khóa chính được lưu trữ phải là khóa chính </b>


<b>(Primary Key) </b>


<b>(Primary Key) trong Table kháctrong Table khác</b>


</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

 <b><sub>Định nghĩa ràng buộc: </sub><sub>Định nghĩa ràng buộc: </sub></b> <b><sub>Ràng buộc được định </sub><sub>Ràng buộc được định </sub></b>


<b>nghĩa khi thiết kế cấu trúc table (Create Table) </b>
<b>nghĩa khi thiết kế cấu trúc table (Create Table) </b>


<b>hay hiệu chỉnh table (Alter Table)</b>
<b>hay hiệu chỉnh table (Alter Table)</b>


 <b><sub>Để kiểm tra hoặc xem các toàn vẹn dữ liệu</sub><sub>Để kiểm tra hoặc xem các toàn vẹn dữ liệu</sub></b>


<b>Sp_HelpConstraint</b>


<b>Sp_HelpConstraint <Table_Name> <Table_Name></b>
<b>Hoặc Bật cửa sổ </b>


<b>Hoặc Bật cửa sổ Object BrowserObject Browser</b> <b>của Query của </b> <b>Query </b>
<b>Analyzer</b>


<b>Analyzer, mở nhánh Constraint của từng table, mở nhánh Constraint của từng table</b>


 <b><sub>Xóa các tồn vẹn dữ liệu</sub><sub>Xóa các toàn vẹn dữ liệu</sub></b>



<b>ALTER TABLE</b>


<b>ALTER TABLE <Table_Name><Table_Name></b>
<b>DROP CONSTRAINT</b>


</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

<b>II. Tìm hiểu các tồn vẹn dữ liệu.</b>



<b>II. Tìm hiểu các tồn vẹn dữ liệu.</b>



<b>1. Định nghĩa NULL/ NOT NULL</b>



<b>1. Định nghĩa NULL/ NOT NULL</b>



<b><sub>Một giá trị NULL </sub></b>

<b><sub>Một giá trị NULL </sub></b>

<b><sub>không đồng nhất </sub></b>

<b><sub>không đồng nhất </sub></b>

<b><sub>với giá trị </sub></b>

<b><sub>với giá trị </sub></b>



<b>0, khoảng trắng, chuỗi rỗng.</b>



<b>0, khoảng trắng, chuỗi rỗng.</b>



<b><sub>NULL có nghĩa là khơng có thao tác nhập nào </sub></b>

<b><sub>NULL có nghĩa là khơng có thao tác nhập nào </sub></b>



<b>thực hiện được.</b>



<b>thực hiện được.</b>



<b><sub>Việc chỉ định một cột không chấp nhận giá trị </sub></b>

<b><sub>Việc chỉ định một cột không chấp nhận giá trị </sub></b>



<b>Null có thể giúp duy trì tính tồn vẹn dữ liệu.</b>




<b>Null có thể giúp duy trì tính tồn vẹn dữ liệu.</b>



<b><sub>Nên tránh dùng NULL vì chúng gây ra nhiều </sub></b>

<b><sub>Nên tránh dùng NULL vì chúng gây ra nhiều </sub></b>



<b>phức tạp hơn trong các truy vấn cũng như cập </b>



</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

<b>2. Default Contraint:</b>



<b>2. Default Contraint:</b>



<b><sub>Default constraint có thể được tạo tại thời </sub></b>

<b><sub>Default constraint có thể được tạo tại thời </sub></b>



<b>điểm tạo Table, thêm sau khi Table được tạo.</b>



<b>điểm tạo Table, thêm sau khi Table được tạo.</b>



<b><sub>Chì có một giá trị Default có thể được tạo cho </sub></b>

<b><sub>Chì có một giá trị Default có thể được tạo cho </sub></b>



<b>một cột.</b>



<b>một cột.</b>



<b><sub>Các cột TIMESTAMP, IDENTITY và </sub></b>

<b><sub>Các cột TIMESTAMP, IDENTITY và </sub></b>



<b>ROWGUIDCOL khơng thể có default </b>



<b>ROWGUIDCOL khơng thể có default </b>



<b>constraint, vì giá trị của chính đã tự động xác </b>




<b>constraint, vì giá trị của chính đã tự động xác </b>



<b>định.</b>



<b>định.</b>



<b><sub>Giá trị default có thể là một hằng; một hàm hệ </sub></b>

<b><sub>Giá trị default có thể là một hằng; một hàm hệ </sub></b>



<b>thống; một biến toàn cục, như @@trancount </b>



<b>thống; một biến toàn cục, như @@trancount </b>



<b>hoặc một hàm do người dùng định nghĩa.</b>



</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

 <b><sub>Định nghĩa Default constraing trong khi tạo bảng</sub><sub>Định nghĩa Default constraing trong khi tạo bảng</sub></b>
<b>CREATE TABLE</b>


<b>CREATE TABLE TableName(ColumnName datatype TableName(ColumnName datatype </b>
<b>[NULL/NOT NULL]</b>


<b>[NULL/NOT NULL]</b>


<b>[</b>


<b>[CONSTRAINTCONSTRAINT constraintname] constraintname] DEFAULTDEFAULT expression expression </b>
 <b><sub>Định nghĩa Default constraint đối với một bảng đã </sub><sub>Định nghĩa Default constraint đối với một bảng đã </sub></b>


<b>tồn tại.</b>


<b>tồn tại.</b>



<b>ALTER TABLE</b>


<b>ALTER TABLE tablename tablename</b>


<b>ADD</b>


<b>ADD [ [CONSTRAINTCONSTRAINT constraintname] constraintname] DEFAULTDEFAULT</b>


<b>expression </b>


</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>

<b>Vd1: Định nghĩa default khi tạo table</b>
<b>Vd1: Định nghĩa default khi tạo table</b>
<b>CREATE TABLE </b>


<b>CREATE TABLE tbl_SinhVientbl_SinhVien</b>
<b>(</b>


<b>(</b> <b>MaSV NOT NULL Primary keyMaSV NOT NULL Primary key,,</b>


<b>HoTen Nvarchar (100) NOT NULL,</b>


<b>HoTen Nvarchar (100) NOT NULL,</b>


<b>NgayNhapHoc smalldate NOT NULL,</b>


<b>NgayNhapHoc smalldate NOT NULL,</b>


<b>GioiTinh bit </b>



<b>GioiTinh bit DefalutDefalut 1 ) 1 )</b>


<b>Vd2: Định nghĩa default khi table đã tồn tại</b>
<b>Vd2: Định nghĩa default khi table đã tồn tại</b>
<b>Alter Table </b>


<b>Alter Table tbl_SinhVientbl_SinhVien</b>


<b>Add Default</b>


<b>Add Default GetDate()GetDate()</b> <b>NgayNhapHoc_DF For NgayNhapHoc_DF For NgayNhapHoc NgayNhapHoc </b>


<b>Hoặc:</b>
<b>Hoặc:</b>


<b>ALTER TABLE </b>


<b>ALTER TABLE tbl_SinhVientbl_SinhVien</b>


<b>Add</b>


<b>Add</b> <b>ConstraintConstraint</b> <b>NgayNhapHocNgayNhapHoc_DF _DF DefaultDefault</b> <b>GetDate()GetDate()</b> <b>ForFor</b>


<b>NgayNhapHoc </b>


</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9></div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>

<b>3. Thuộc tính Identity:</b>



<b>3. Thuộc tính Identity:</b>



<b><sub>Identity là một thuộc tính của Column, nó hẳn </sub></b>

<b><sub>Identity là một thuộc tính của Column, nó hẳn </sub></b>




<b>khơng là một constraint. Tuy nhiên, Identity </b>



<b>không là một constraint. Tuy nhiên, Identity </b>



<b>dùng để ràng buộc sự tồn tại dữ liệu.</b>



<b>dùng để ràng buộc sự tồn tại dữ liệu.</b>



<b><sub>Một Table chỉ có duy nhất một Column được </sub></b>

<b><sub>Một Table chỉ có duy nhất một Column được </sub></b>



<b>định nghĩa Identity.</b>



<b>định nghĩa Identity.</b>



<b><sub>Kiểu dữ liệu của cột Identity phải là kiểu số </sub></b>

<b><sub>Kiểu dữ liệu của cột Identity phải là kiểu số </sub></b>



<b>nguyên.</b>



<b>nguyên.</b>



<b><sub>Giá trị của cột </sub></b>

<b><sub>Giá trị của cột </sub></b>

<b><sub>Identity</sub></b>

<b><sub>Identity</sub></b>

<b><sub> sẽ tự động tăng.</sub></b>

<b><sub> sẽ tự động tăng.</sub></b>



<b><sub>Identity được định nghĩa khi tạo Table, hoặc </sub></b>

<b><sub>Identity được định nghĩa khi tạo Table, hoặc </sub></b>



<b>khi hiệu chỉnh Column bằng lệnh </b>



</div>
<span class='text_page_counter'>(11)</span><div class='page_container' data-page=11>

<b>VD:</b>
<b>VD:</b>



<b>CREATE TABLE </b>


<b>CREATE TABLE tbl_Khoa tbl_Khoa</b>
<b>( </b>


<b>( </b> <b>MaKhoa int MaKhoa int IDENTITYIDENTITY (1,1) , (1,1) ,</b>


<b>TenKhoa Nvarchar (100) Not Null,</b>


<b>TenKhoa Nvarchar (100) Not Null,</b>


<b>Phone varchar(15) Not Null </b>


<b>Phone varchar(15) Not Null </b>


<b>)</b>


<b>)</b>


<b>VD: Khi chèn dữ liệu có định nghĩa </b>


<b>VD: Khi chèn dữ liệu có định nghĩa IdentityIdentity</b>
<b>INSERT</b>


<b>INSERT tbl_Khoa (Ho, Ten) tbl_Khoa (Ho, Ten)</b>


<b>VALUES</b>


</div>
<span class='text_page_counter'>(12)</span><div class='page_container' data-page=12>

<b>4. Check Constraint:</b>
<b>4. Check Constraint:</b>



 <b><sub>Check giới hạn các giá trị có thể đưa vào cột. Chúng sẽ </sub><sub>Check giới hạn các giá trị có thể đưa vào cột. Chúng sẽ </sub></b>


<b>xác định các giá trị nào là hợp lệ.</b>
<b>xác định các giá trị nào là hợp lệ.</b>


 <b><sub>Một cột có thể có nhiều hơn một </sub><sub>Một cột có thể có nhiều hơn một </sub></b> <b><sub>Check</sub><sub>Check</sub><sub> constraint, </sub><sub> constraint, </sub></b>


<b>chúng được lượng giá theo thứ tự được tạo.</b>
<b>chúng được lượng giá theo thứ tự được tạo.</b>


 <b><sub>Các check constraint giới hạn các giá trị được phép </sub><sub>Các check constraint giới hạn các giá trị được phép </sub></b>


<b>bằng các định nghĩa cho:</b>
<b>bằng các định nghĩa cho:</b>


<b>+ Một hoặc nhiều vùng các giá trị chấp nhận được.</b>
<b>+ Một hoặc nhiều vùng các giá trị chấp nhận được.</b>


<b>+ Danh sách các giá trị </b>
<b>+ Danh sách các giá trị </b>


<b>+ Một mẫu định trước</b>
<b>+ Một mẫu định trước</b>


 <b><sub>Check có thể tham chiếu đến các cột khác trong cùng </sub><sub>Check có thể tham chiếu đến các cột khác trong cùng </sub></b>


</div>
<span class='text_page_counter'>(13)</span><div class='page_container' data-page=13>

 <b><sub>Định nghĩa Check Constraint khi tạo Table</sub><sub>Định nghĩa Check Constraint khi tạo Table</sub></b>


<b>Create Table</b>



<b>Create Table TableName (ColumnName datatype TableName (ColumnName datatype </b>
<b>[</b>


<b>[ConstraintConstraint ConstraintName] ConstraintName]</b>


<b>Check </b>


<b>Check [Not For Replication[Not For Replication] (logical_expression)] (logical_expression)</b>


<b>CREATE TABLE </b>


<b>CREATE TABLE tbl_NhanVien tbl_NhanVien</b>


<b>( </b>


<b>( </b> <b>MaNV int Primary Key,MaNV int Primary Key,</b>


<b>HoTen Nvarchar (100) Not Null,</b>
<b>HoTen Nvarchar (100) Not Null,</b>
<b>NgayLV int </b>


<b>NgayLV int CheckCheck (NgayCong> 0 and NgayCong<32) (NgayCong> 0 and NgayCong<32) ))</b>
<b>CREATE TABLE </b>


<b>CREATE TABLE tbl_Diem tbl_Diem</b>


<b>( </b>


</div>
<span class='text_page_counter'>(14)</span><div class='page_container' data-page=14>

 <b><sub>Định nghĩa Check Constraint Table đã tồn tại</sub><sub>Định nghĩa Check Constraint Table đã tồn tại</sub></b>



<b>ALTER TABLE</b>


<b>ALTER TABLE TableName TableName</b>
<b>[With Check/ with Nocheck] </b>


<b>[With Check/ with Nocheck] ADD ADD [[CONSTRAINTCONSTRAINT</b>


<b>constraintname]</b>
<b>constraintname]</b>


<b>CHECK </b>


<b>CHECK [Not For Replication] (logical_expression)[Not For Replication] (logical_expression)</b>


<b>Alter Table</b>


<b>Alter Table tbl_ChuVu tbl_ChuVu</b>


<b>Add Constraint</b>


<b>Add Constraint CK_NV_HSCV CK_NV_HSCV CheckCheck</b>


<b>(HSPC >= 0. 1 and HSCV < 0. 5)</b>
<b>(HSPC >= 0. 1 and HSCV < 0. 5)</b>


<b>Alter Table</b>


<b>Alter Table tbl_BaoHiem tbl_BaoHiem</b>



<b>Add Constraint</b>


<b>Add Constraint CK_Ngay CK_Ngay CheckCheck (EndDate > Startdate) (EndDate > Startdate)</b>


<b>Ghi chú</b>


<b>Ghi chú: logical_expression: logical_expression là biểu thức điều kiện dùng giống là biểu thức điều kiện dùng giống </b>
<b>ĐK trong mệnh đề WHERE như: Not, And, Or, IN, LIKE </b>
<b>ĐK trong mệnh đề WHERE như: Not, And, Or, IN, LIKE </b>


</div>
<span class='text_page_counter'>(15)</span><div class='page_container' data-page=15>

<b>5. Đối tượng Rule (Rule Object)</b>
<b>5. Đối tượng Rule (Rule Object)</b>
<b>CREATE RULE</b>


<b>CREATE RULE RuleName RuleName ASAS </b>


<b>@Variable_Name = condition_expression</b>
<b>@Variable_Name = condition_expression</b>
<b>VD: </b>


<b>VD: </b>


<b>Create Rule</b>


<b>Create Rule range_rule range_rule asas</b>


<b>@range >= $1000 AND @range < $20000</b>
<b>@range >= $1000 AND @range < $20000</b>


<b>Create Rule</b>



<b>Create Rule GioiTinh_rule GioiTinh_rule asas</b>


<b>@GioiTinh </b>


<b>@GioiTinh ININ ('Nam', N'Nữ') ('Nam', N'Nữ')</b>


<b>Create Rule</b>


<b>Create Rule SoXe_rule SoXe_rule asas</b>


<b>@SoXe </b>


</div>
<span class='text_page_counter'>(16)</span><div class='page_container' data-page=16>

 <b><sub>Kết buộc Rule vào một Column</sub><sub>Kết buộc Rule vào một Column</sub></b>
<b>Sp_bindrule</b>


<b>Sp_bindrule‘RuleName’,‘<TableName>.<ColumnName>‘RuleName’,‘<TableName>.<ColumnName></b>
<b>’</b>


<b>’</b>
<b>VD:</b>
<b>VD:</b>


<b>Sp_bindrule</b>


<b>Sp_bindrule ‘Diem_rule’, ‘tbl_Diem.ThiLan1’ ‘Diem_rule’, ‘tbl_Diem.ThiLan1’</b>


 <b><sub>Remove Rule</sub><sub>Remove Rule</sub></b>
<b>sp_unbindrule</b>



<b>sp_unbindrule ‘<TableName>.<ColumnName>’ ‘<TableName>.<ColumnName>’</b>
<b>VD:</b>


<b>VD:</b>


<b>Sp_unbindrule</b>


<b>Sp_unbindrule ‘tbl_Diem.ThiLan1’ ‘tbl_Diem.ThiLan1’</b>


 <b><sub>Delete Rule</sub><sub>Delete Rule</sub></b>
<b>DROP RULE</b>


<b>DROP RULE <RuleName> <RuleName></b>
<b>VD:</b>


</div>
<span class='text_page_counter'>(17)</span><div class='page_container' data-page=17>

 <b><sub>Ghi chú về Rule Object:</sub><sub>Ghi chú về Rule Object:</sub></b>


 <b><sub>Ruler là một tính năng tương thích ngược để định </sub><sub>Ruler là một tính năng tương thích ngược để định </sub></b>
<b>nghĩa các quy tắc hợp lệ.</b>


<b>nghĩa các quy tắc hợp lệ.</b>


 <b><sub>Phải tháo gỡ tất cả các kết buộc </sub><sub>Phải tháo gỡ tất cả các kết buộc </sub><sub>(sp_unbindrule)</sub><sub>(sp_unbindrule)</sub><sub> của </sub><sub> của </sub></b>
<b>Rule trước khi xóa rule (</b>


<b>Rule trước khi xóa rule (Drop Rule) Drop Rule) </b>


 <b><sub>Một cột chỉ có thể có một Ruler được kết buộc, bạn </sub><sub>Một cột chỉ có thể có một Ruler được kết buộc, bạn </sub></b>
<b>có thể kết buộc một Ruler với cột đã có định nghĩa </b>



<b>có thể kết buộc một Ruler với cột đã có định nghĩa </b>


<b>Check Constraint. Cả hai đều có giá trị nhưng sẽ ưu </b>


<b>Check Constraint. Cả hai đều có giá trị nhưng sẽ ưu </b>


<b>tiên Check Constraint.</b>


<b>tiên Check Constraint.</b>


</div>
<span class='text_page_counter'>(18)</span><div class='page_container' data-page=18>

<b>6. Primary key Constraint</b>


<b>6. Primary key Constraint</b>


• <b><sub>Một Table chỉ có một constraint Primary key.</sub><sub>Một Table chỉ có một constraint Primary key.</sub></b>


• <b><sub>SQL Server tự động tạo một chỉ mục (Index) cho </sub><sub>SQL Server tự động tạo một chỉ mục (Index) cho </sub></b>


<b>Table ứng với các cột tham gia primary key.</b>
<b>Table ứng với các cột tham gia primary key.</b>


• <b><sub>Column là Primary key khơng thể chấp nhận giá </sub><sub>Column là Primary key không thể chấp nhận giá </sub></b>


<b>trị Null, trùng lắp.</b>
<b>trị Null, trùng lắp.</b>


• <b><sub>Nếu một Primary key constraint được ấn định </sub><sub>Nếu một Primary key constraint được ấn định </sub></b>


<b>trên nhiều cột, các giá trị có thể được lập lại trong </b>
<b>trên nhiều cột, các giá trị có thể được lập lại trong </b>


<b>một cột, nhưng mỗi sự kết hợp giá trị từ tất cả </b>
<b>một cột, nhưng mỗi sự kết hợp giá trị từ tất cả </b>
<b>các cột trong Primary key constraint phải là sự </b>
<b>các cột trong Primary key constraint phải là sự </b>


</div>
<span class='text_page_counter'>(19)</span><div class='page_container' data-page=19>

<b>a. Tạo Primary key Constraint</b>


<b>a. Tạo Primary key Constraint</b>


• <b><sub>Có thể tạo constraint Primary key trong khi tạo </sub><sub>Có thể tạo constraint Primary key trong khi tạo </sub></b>


<b>Table hoặc thêm constraint Primary key cho </b>
<b>Table hoặc thêm constraint Primary key cho </b>


<b>table có sẵn.</b>
<b>table có sẵn.</b>


• <b><sub>Để hiệu chỉnh constraint Primary key của một </sub><sub>Để hiệu chỉnh constraint Primary key của một </sub></b>


<b>Table thì bạn phải xóa constraint Primary key và </b>
<b>Table thì bạn phải xóa constraint Primary key và </b>


<b>tạo lại.</b>
<b>tạo lại.</b>


• <b><sub>Đối với Column được tạo mà chấp nhận giá trị </sub><sub>Đối với Column được tạo mà chấp nhận giá trị </sub></b>


</div>
<span class='text_page_counter'>(20)</span><div class='page_container' data-page=20>

<b>Định nghĩa primary Key Constraint khi tạo bảng:</b>
<b>Định nghĩa primary Key Constraint khi tạo bảng:</b>



<b>CREATE TABLE</b>


<b>CREATE TABLE <TableName> <TableName></b>


<b>( ColumnName DataType not null [</b>


<b>( ColumnName DataType not null [CONSTRAINTCONSTRAINT</b>
<b>ConstraintName] </b>


<b>ConstraintName] PRIMARY KEYPRIMARY KEY ) )</b>
<b>Create Table</b>


<b>Create Table tbl_SinhVien tbl_SinhVien</b>
<b>(</b>


<b>(</b> <b>MaSV char(10) MaSV char(10) not null not null Primary KeyPrimary Key, , </b>
<b>TenSV Nchar(100) </b>


<b>TenSV Nchar(100) Not NullNot Null ) )</b>


<b>Create Table</b>


<b>Create Table tbl_MonHoc tbl_MonHoc</b>
<b>(</b>


<b>(</b> <b>MaMH char(10) MaMH char(10) not null not null </b>


<b>Constraint</b>


</div>
<span class='text_page_counter'>(21)</span><div class='page_container' data-page=21>

<b>Định nghĩa Primary Key Constraint bảng đã tồn tại:</b>


<b>Định nghĩa Primary Key Constraint bảng đã tồn tại:</b>


<b>ALTER TABLE</b>


<b>ALTER TABLE TableName TableName </b>
<b>ADD</b>


<b>ADD [CONSTRAINT ConstraintName] [CONSTRAINT ConstraintName]</b>
<b>PRIMARY KEY</b>


<b>PRIMARY KEY (ColumnName) (ColumnName)</b>
<b>VD:</b>


<b>VD:</b>


<b>Create Table</b>


<b>Create Table tbl_Diem tbl_Diem</b>
<b>(</b>


<b>(</b> <b>MaSV char(10) Not null,MaSV char(10) Not null,</b>
<b>MaMH char(10) Not null,</b>
<b>MaMH char(10) Not null,</b>


<b>Diem float </b>


<b>Diem float CheckCheck (DiemThi (DiemThi BetweenBetween 0 and 10 0 and 10 )<sub>)</sub></b>
<b>)</b>


<b>)</b>



<b>Alter Table</b>


</div>
<span class='text_page_counter'>(22)</span><div class='page_container' data-page=22>

<b>Định nghĩa Primary Key Constraint bảng đã tồn tại:</b>


<b>Định nghĩa Primary Key Constraint bảng đã tồn tại:</b>


<b>ALTER TABLE</b>


<b>ALTER TABLE TableName TableName </b>


<b>ADD</b>


<b>ADD [CONSTRAINT ConstraintName] [CONSTRAINT ConstraintName]</b>


<b>PRIMARY KEY</b>


<b>PRIMARY KEY (ColumnName) (ColumnName)</b>
<b>VD:</b>


<b>VD:</b>


<b>Create Table</b>


<b>Create Table tbl_Diem tbl_Diem</b>
<b>(</b>


<b>(</b> <b>MaSV char(10) Not null,MaSV char(10) Not null,</b>
<b>MaMH char(10) Not null,</b>



<b>MaMH char(10) Not null,</b>


<b>Diem float </b>


<b>Diem float CheckCheck (DiemThi Between (DiemThi Between 0 and 10 0 and 10 ))</b>
<b>)</b>


<b>)</b>


<b>Alter Table</b>


<b>Alter Table tbl_Diemtbl_Diem</b>


<b>Add Constraint</b>


<b>Add Constraint PK_tbl_Diem PK_tbl_Diem</b>


</div>
<span class='text_page_counter'>(23)</span><div class='page_container' data-page=23>

<b>Lưu ý:</b>



<b>Lưu ý:</b>

<b> Không thể xóa một Primary </b>

<b> Khơng thể xóa một Primary </b>


<b>Key Constraint nếu nó được tham </b>



<b>Key Constraint nếu nó được tham </b>



<b>chiếu bởi một </b>



<b>chiếu bởi một Foreign key </b>

<b>Foreign key </b>


<b>Constraint</b>



<b>Constraint</b>

<b> của một bảng khác, </b>

<b> của một bảng khác, </b>



<b>muốn xóa thì </b>



<b>muốn xóa thì phải xóa Foreign key </b>

<b>phải xóa Foreign key </b>



<b>Constraint trước</b>



</div>
<span class='text_page_counter'>(24)</span><div class='page_container' data-page=24>

<b>6. Forein key Constraint</b>


<b>6. Forein key Constraint</b>


• <b><sub>Một khóa ngoại (Foreign Key) sự kết hợp của </sub><sub>Một khóa ngoại (Foreign Key) sự kết hợp của </sub></b>


<b>một hoặc nhiều cột được thiết lập và tuân theo </b>
<b>một hoặc nhiều cột được thiết lập và tuân theo </b>


<b>một liên kết giữa các dữ liệu trong hai bảng. </b>
<b>một liên kết giữa các dữ liệu trong hai bảng. </b>


• <b><sub>Mặc dù mục đích chính của một Constraint </sub><sub>Mặc dù mục đích chính của một </sub></b> <b><sub>Constraint </sub></b>


<b>Foreign Key</b>


<b>Foreign Key là điều khiển dữ liệu có thể được là điều khiển dữ liệu có thể được </b>
<b>chứa trong bảng khóa ngoại, nhưng nó củng điều </b>
<b>chứa trong bảng khóa ngoại, nhưng nó củng điều </b>


<b>khiển các thay đổi đối với bảng khóa chính. </b>
<b>khiển các thay đổi đối với bảng khóa chính. </b>


• <b><sub>Một Constraint Foreign Key</sub><sub>Một </sub></b> <b><sub>Constraint Foreign Key</sub><sub> sẽ ngăn chặn tình </sub><sub> sẽ ngăn chặn tình </sub></b>



<b>trạng mồ côi dữ liệu. </b>


</div>
<span class='text_page_counter'>(25)</span><div class='page_container' data-page=25>

<b>Định nghĩa Foreign Key Constraint khi tạo Table:</b>


<b>Định nghĩa Foreign Key Constraint khi tạo Table:</b>


<b>CREATE TABLE </b>


<b>CREATE TABLE Table_NameTable_Name</b>
<b>(</b>


<b>(</b> <b>Column_Name DataType [,…] ,Column_Name DataType [,…] ,</b>
<b>[</b>


<b>[CONSTRAINTCONSTRAINT Constraint_Name] Constraint_Name]</b>


<b>FOREIGN KEY </b>


<b>FOREIGN KEY [(column [,…n])][(column [,…n])]</b>


<b>REFERENCES</b>


<b>REFERENCES ref_table [(ref_column[,…n])] ref_table [(ref_column[,…n])]</b>
<b>[ON DELETE {CASCADE | NO ACTION} ]</b>


<b>[ON DELETE {CASCADE | NO ACTION} ]</b>


<b>[ON UPDATE {CASCADE | NO ACTION} ]</b>



</div>
<span class='text_page_counter'>(26)</span><div class='page_container' data-page=26>

<b>CREATE TABLE</b>


<b>CREATE TABLE PhongBan PhongBan</b>
<b>(</b>


<b>(MaPB int Not null,MaPB int Not null,</b>
<b>TenPB varchar (30)</b>
<b>TenPB varchar (30)</b>
<b>Constraint</b>


<b>Constraint PK_PB Primary Key PK_PB Primary Key (MaPB) ) (MaPB) )</b>
<b>Create Table </b>


<b>Create Table NhanVienNhanVien</b>
<b>(</b>


<b>(</b> <b>MaNV int,MaNV int,</b>


<b>TenNV Nvarchar (100),</b>
<b>TenNV Nvarchar (100),</b>


<b>MaPB int not null,</b>
<b>MaPB int not null,</b>
<b>MaCV int not null</b>
<b>MaCV int not null</b>


<b>Constraint </b>


<b>Constraint PK_NV Primary Key PK_NV Primary Key (MaNV)(MaNV)</b>
<b>Constraint</b>



<b>Constraint FK_NVien_PBan Foreign Key FK_NVien_PBan Foreign Key (MaPB) (MaPB) </b>
<b>References</b>


</div>
<span class='text_page_counter'>(27)</span><div class='page_container' data-page=27>

<b>Đ/nghĩa Foreign Key Constraint khi Table đã tồn tại:</b>
<b>Đ/nghĩa Foreign Key Constraint khi Table đã tồn tại:</b>
<b>ALTER TABLE </b>


<b>ALTER TABLE TableNameTableName</b>


<b>[ WITH CHECK / WITH NO CHECK] ADD</b>
<b>[ WITH CHECK / WITH NO CHECK] ADD</b>
<b>[</b>


<b>[CONSTRAINTCONSTRAINT ConstraintName] ConstraintName]</b>
<b>FOREIGN KEY</b>


<b>FOREIGN KEY [(column [,…n])] [(column [,…n])]</b>
<b>REFERENCES</b>


<b>REFERENCES ref_table [(ref_column[,…n])] ref_table [(ref_column[,…n])]</b>
<b>[ON DELETE { CASCADE | NO ACTION } ]</b>
<b>[ON DELETE { CASCADE | NO ACTION } ]</b>
<b>[ON UPDATE { CASCADE | NO ACTION } ]</b>
<b>[ON UPDATE { CASCADE | NO ACTION } ]</b>
<b>[NOT FOR REPLICATION] </b>


<b>[NOT FOR REPLICATION] </b>


<i><b>Trong đó:</b></i>



<i><b>Trong đó:</b></i>


</div>
<span class='text_page_counter'>(28)</span><div class='page_container' data-page=28>

<b>Vd:</b>
<b>Vd:</b>


<b>Create Table</b>


<b>Create Table ChucVu ChucVu</b>


<b>( MaCV int PRIMARY KEY,</b>


<b>( MaCV int PRIMARY KEY,</b>


<b>TenCV varchar (30),</b>


<b>TenCV varchar (30),</b>


<b>HSPC Real )</b>


<b>HSPC Real )</b>


<b>Alter Table </b>


<b>Alter Table NhanVienNhanVien</b>


<b>Add Constraint </b>


<b>Add Constraint FK_NV_CV Foreign KeyFK_NV_CV Foreign Key (MaCV) (MaCV) </b>



<b>References</b>


<b>References ChucVu (MaCV) ChucVu (MaCV)</b>


<i><b>Lưu ý</b></i>


<i><b>Lưu ý</b><b>:</b><b>:</b></i>


</div>
<span class='text_page_counter'>(29)</span><div class='page_container' data-page=29>

<b>Định nghĩa UNIQUE Constraint khi tạo Table:</b>


<b>Định nghĩa UNIQUE Constraint khi tạo Table:</b>


<b>CREATE TABLE</b>


<b>CREATE TABLE TableName TableName</b>
<b>(</b>


<b>(</b> <b>ColumnName datatype [,…] ColumnName datatype [,…] </b>
<b>[</b>


<b>[CONSTRAINT CONSTRAINT ConstraintName]ConstraintName]</b>


<b>UNIQUE </b>


<b>UNIQUE [CLUSTERED | NONCLUSTERED][CLUSTERED | NONCLUSTERED]</b>
<b>{ (Column [ASC | DESC] [,…])}</b>


<b>{ (Column [ASC | DESC] [,…])}</b>


<b>[ON {filegroup | DEFAULT}])</b>



<b>[ON {filegroup | DEFAULT}])</b>


<b>)</b>


</div>
<span class='text_page_counter'>(30)</span><div class='page_container' data-page=30>

<b>Định nghĩa UNIQUE Constraint Table đã tồn tại:</b>


<b>Định nghĩa UNIQUE Constraint Table đã tồn tại:</b>


<b>ALTER TABLE </b>


<b>ALTER TABLE TableNameTableName</b>
<b>ADD </b>


<b>ADD ColumnNameColumnName</b> <b>DatatypeDatatype</b>
<b>[CONSTRAINT </b>


<b>[CONSTRAINT ConstraintName]ConstraintName]</b>
<b>UNIQUE </b>


<b>UNIQUE [CLUSTERED | NONCLUSTERED][CLUSTERED | NONCLUSTERED]</b>
<b>[ON {filegroup / DEFAULT}] [,…]</b>


<b>[ON {filegroup / DEFAULT}] [,…]</b>


<b>Hoặc:</b>


<b>Hoặc:</b>


<b>ALTER TABLE </b>



<b>ALTER TABLE TableName TableName </b>


<b>ADD</b>


<b>ADD [CONSTRAINT [CONSTRAINT ConstraintName]ConstraintName]</b>


<b>UNIQUE </b>


<b>UNIQUE [CLUSTERED | NONCLUSTERED][CLUSTERED | NONCLUSTERED]</b>
<b>{ (Column [ASC | DESC][,…n]) }</b>


<b>{ (Column [ASC | DESC][,…n]) }</b>


<b>[ ON { filegroup | DEFAULT} ]</b>


</div>
<span class='text_page_counter'>(31)</span><div class='page_container' data-page=31>

<b>Định nghĩa và hiệu chỉnh các </b>


<b>Định nghĩa và hiệu chỉnh các </b>



<b>ràng buộc toàn vẹn dữ liệu bằng </b>


<b>ràng buộc toàn vẹn dữ liệu bằng </b>



<b>Enterprise Manager </b>


<b>Enterprise Manager </b>



<b>Định nghĩa và hiệu chỉnh các </b>



<b>Định nghĩa và hiệu chỉnh các </b>



<b>ràng buộc toàn vẹn dữ liệu bằng </b>




<b>ràng buộc toàn vẹn dữ liệu bằng </b>



<b>Enterprise Manager </b>



</div>

<!--links-->

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×