Table + View
Hoa Sen University
www.hoasen.edu.vn
2
Câu hỏi
1. Table là gì?
2. Làm cách nào tạo và bảo trì bảng trong MSSQL?
3. Những yếu tố cơ bản khi thiết kế, sử dụng Table?
Hoa Sen University
www.hoasen.edu.vn
3
Table là gì?
Table = Relation = Những mẩu thông tin có cùng định
dạng
Dữ liệu được tổ chức dạng row-column.
Row = 1 mẩu thông tin
Column = 1 field của thông tin.
Cùng 1 column phải cùng kiểu dữ liệu
Number of Column : FIX
Number of ROW: CHANGE
WHY ???
Hoa Sen University
www.hoasen.edu.vn
4
Example of Table:
Hoa Sen University
www.hoasen.edu.vn
5
Create table
Tạo bảng
CREATE TABLE
[database_name.[owner].| owner.] table_name
(
{ <column_definition>
| column_name AS computed_column_expression
| <table_constraint>
} [, n]
)
[ON {filegroup | DEFAULT} ]
[TEXTIMAGE_ON {filegroup | DEFAULT} ]
Hoa Sen University
www.hoasen.edu.vn
6
Create Table
<column_namedata_type
constant_expression
seed,increment!""##$%"
#"&'%"
()*+,,,n
Hoa Sen University
www.hoasen.edu.vn
7
Create table
()*+%"-#constraint_name
"
$#/#01
%-#"%-#
&2%"#=fillfactor
"filegroup
"#'0
##%-ref_table(ref_column)
""##$%"
%2%0""##$%"
(logical_expression)
Hoa Sen University
www.hoasen.edu.vn
8
Create table
(+3)*+%"-#constraint_name
$#/#01
%-#"%-#
(column,,,,n) }
&2%"#=fillfactor
"filegroup
"#'0
(column,,,,n)
##%-ref_table(ref_column,,,,n)
""##$%"
%2%0""##$%"
(search_conditions)
Hoa Sen University
www.hoasen.edu.vn
9
Create table
Tạo một bảng có tên CUSTOMERS
create table customers
(
customerid int identity (1,1) primary key,
customername nvarchar(50) not null,
address nvarchar(100 ) null ,
birthday datetime null,
gender bit default('true') not null
)
Hoa Sen University
www.hoasen.edu.vn
10
Những yếu tố cơ bản
1. Kiểu dữ liệu của column
2. Giá trị NULL| DEFAULT
3. Constraint (Ràng buộc)
Hoa Sen University
www.hoasen.edu.vn
11
Kiểu dữ liệu
Type of data System-supplied data types Number of bytes
Binary binary[(n)], varbinary[(n)] 1-8000
Character char[(n)], varchar[(n)] 1-8000, (8000 characters)
Unicode,
character
nchar[(n)] ,nvarchar[(n)] 2-8000, (1 - 4000 characters)
Date and time Datetime, smalldatetime
8 (2 4-byte integers) , 4 (2 2-byte
integers)
Exact numeric decimal[(p[, s])], numeric[(p[, s])] 5-17
Approximate
numeric
float[(n)], real 4-8, 4
Global identifier Uniqueidentifier 16
Integer int, smallint, tinyint 4 , 2, 1
Monetary Money, Smallmoney 8, 4
Special bit, cursor, sysname, timestamp 1, 0-8
Text and image text, image 0-2 GB
Unicode text ntext 0-2 GB
Hoa Sen University
www.hoasen.edu.vn
12
Câu hỏi
Tại sao varchar, char lại bị chặn bởi 8000 byte?
Datetime tại sao chỉ cần 8 byte?
Hoa Sen University
www.hoasen.edu.vn
13
Giá trị NULL/ DEFAULT
NULL: giá trị không xác định
Nguyên nhân:
- Giá trị đó tồn tại nhưng không biết
- Không xác định được giá trị đó tồn tại hay không
-Giá trị tại thời điểm hiện tại chưa có nhưng sẽ xác
định sau
- Là kết quả của lỗi tính toán
- Do thiết kế
Phân biệt với “xâu rỗng” (kiểu char, varchar, …)
Có thể khai báo NULL | NOT NULL
DEFAULT là giá trị mặc định
Hoa Sen University
www.hoasen.edu.vn
14
Giá trị NULL
Hãy chỉ ra những trường hợp các bảng có giá trị NULL
trong thiết kế ĐỒ ÁN A
Hoa Sen University
www.hoasen.edu.vn
15
Các ràng buộc
•
Primary Key Constraint
•
Unique Constraint
•
Foreign Key Constraint
•
Check Constraint
Hoa Sen University
www.hoasen.edu.vn
16
Ràng buộc CHECK
•
Chỉ định điều kiện hợp lệ đối với dữ liệu.
•
Khi có sự thay đổi dữ liệu trên bảng (INSERT, UPDATE)
→ Kiểm tra xem dữ liệu mới có hợp lệ hay không.
•
Cú pháp:
[CONSTRAINT tên_ràng_buộc] CHECK (điều_kiện)
Hoa Sen University
www.hoasen.edu.vn
17
Ràng buộc CHECK
create table students
(
studentid int identity(1,1) primary key,
studentname nvarchar(50) not null,
address nvarchar(100) not null,
score1 tinyint not null
constraint chk_score1 CHECK (score1 >= 0 and score1 <=
10),
score2 tinyint not null
constraint chk_score2 CHECK (score2 between 0 and 10)
)
Hoa Sen University
www.hoasen.edu.vn
18
Ràng buộc PRIMARY KEY
•
Định nghĩa khoá chính của bảng.
•
Khoá chính: một hoặc một tập nhiều cột mà giá trị
của chúng là duy nhất trong bảng.
•
Mỗi một bảng chỉ có thể có duy nhất một khoá
chính
•
Khoá chính không chấp nhận giá trị NULL.
•
Cú pháp:
[CONSTRAINT tên_ràng_buộc] PRIMARY KEY
[(danh_sách_cột)]
Hoa Sen University
www.hoasen.edu.vn
19
Ràng buộc PRIMARY KEY
create table orderdetail
(
customerid int,
orderid int,
itemid int not null,
quantity decimal(8,2) not null,
constraint chk_primarykey primary key (customerid,
orderid)
)
Hoa Sen University
www.hoasen.edu.vn
20
Ràng buộc UNIQUE
•
Nếu một (hoặc) tập hợp cột unique thì giá trị xác
định của chúng phải là duy nhất trong bảng.
•
Mỗi một bảng chỉ có thể có nhiều khoá UNIQUE
•
Chấp nhận giá trị NULL.
•
Cú pháp:
[CONSTRAINT tên_ràng_buộc] UNIQUE
[(danh_sách_cột)]
Hoa Sen University
www.hoasen.edu.vn
21
Ràng buộc UNIQUE
create table customer
(
customerid int,
customername char(40) ,
nickname char(20),
constraint chk_unique unique (nickname)
)
Hoa Sen University
www.hoasen.edu.vn
22
Ràng buộc FOREIGN KEY
•
Một (nhiều) cột: áp đặt mối liên kết dữ liệu giữa hai table.
•
FOREIGN KEY của một bảng sẽ giữ giá trị của PRIMARY KEY
của một bảng khác
•
Có thể tạo ra nhiều FOREIGN KEY trong một table.
•
FOREIGN KEY có thể chứa giá trị NULL.
•
Xóa dữ liệu trong bảng cha thì xóa hay vô hiệu hóa ràng buộc
FOREIGN KEY trong bảng con trước.
•
Cú pháp:
[CONSTRAINT tên_ràng_buộc] FOREIGN KEY [(danh_sách_cột)]
REFERENCES tên_bảng_tham_chiếu(danh_sách_cột_tham_chiếu)
[ON DELETE CASCADE | NO ACTION | SET NULL | SET DEFAULT]
[ON UPDATE CASCADE | NO ACTION | SET NULL | SET DEFAULT]
Hoa Sen University
www.hoasen.edu.vn
23
Ràng buộc FOREIGN KEY
•
CASCADE: Tự động xoá (cập nhật) nếu bản ghi được
tham chiếu bị xoá (cập nhật).
•
NO ACTION: (Mặc định) Nếu bản ghi trong bảng tham
chiếu đang được tham chiếu bởi một bản ghi bất kỳ
trong bảng được định nghĩa thì bàn ghi đó không được
phép xoá hoặc cập nhật (đối với cột được tham chiếu).
•
SET NULL: Cập nhật lại khoá ngoài của bản ghi thành
giá trị NULL (nếu cột cho phép nhận giá trị NULL).
•
SET DEFAULT: Cập nhật lại khoá ngoài của bản ghi
nhận giá trị mặc định (nếu cột có qui định giá trị mặc
định).
Hoa Sen University
www.hoasen.edu.vn
24
Alter Table
#4table
#%"/column_name
new_data_type (precision, scale)
"
#"$#"&'%"
(
.column_name-computed_column_expression
,,,,n
&2%2%0&2"%2%0
(+3)*+5,,,n
#"$
%"-#constraint_name
%"/column
,,,,n
%2%0"%2%0%"-#
constraint_name,,,,n
4-4#''#
trigger_name,,,,n
Hoa Sen University
www.hoasen.edu.vn
25
Alter Table
•
Bổ sung một cột vào bảng.
•
Xoá một cột khỏi bảng.
•
Thay đổi định nghĩa của một cột
trong bảng.
•
Xoá bỏ hoặc bổ sung các ràng buộc
cho bảng