Professional Documents
Culture Documents
Bài hướng dẫn số 2
Bài hướng dẫn số 2
- Đinh
̣ nghiã : Kiể u dữ liê ̣u tức là Kiể u của Dữ liê ̣u
SMALLINT(size) 2 bytes Số nguyên nhỏ, có da ̣ng signed hoặc unsigned.
Nếu signed, có dãy từ -32768 tớ i 32767. Nếu
unsigned, là 0 tới 65535. Ta có thể xác định độ
rộng field tới 5 số.
FLOAT(m,d) 4 bytes Kiể u dữ liê ̣u dấ u phẩ y đô ̣ng (số thực). Trong
đó m là tổ ng số còn d là số chữ số sau thâ ̣p
phân. Phầ n thâ ̣p phân có thể lên tới 24 chữ
số .
DOUBLE(m,d) 8 bytes Kiể u số thực nhưng lớn hơn Float. Trong đó
m là tổ ng số còn d là số chữ số sau thâ ̣p
phân. Phầ n thâ ̣p phân có thể lên tới 53 chữ
số .
DECIMAL(m,d) Phụ thuộc Kiể u dữ liê ̣u số có xác đinh
̣ số lẻ ở số thâ ̣p
vào khi định phân. Trong đó m là tổ ng số còn d là số chữ
nghĩa cột số sau thâ ̣p phân.
*Chú ý 1:
+) Float/Double thường được sử dụng trong các phép tính toán số thực thông thường
+) Decimal thường được sử dụng để tính toán các ứng dụng về tiền tệ (do độ chính xác cao
và phạm vi giá trị lớn)
+)Ví du ̣, ta cho ̣n kiể u dữ liê ̣u Decimal (6,3) cho thành giá tiề n là 80,000. Ở đây mang ý nghiã
đô ̣ rô ̣ng toàn chữ số 80,000 là 6 tiń h cả dấ u phẩ y, phầ n thâ ̣p phân sau dấ u phẩ y là 3.
Lưu ý: Nế u đă ̣t đô ̣ dài hơn 255, giá tri ̣sẽ đươ ̣c chuyể n
VARCHAR(size) thành da ̣ng Text.
Một chuỗi nhị phân độ dài cố định. Lưu trữ tố i đa là 255
BINARY(size) ký tự.
Một chuỗi nhị phân độ dài có thể thay đổi. Lưu trữ tố i đa
VARBINARY(size) là 255 ký tự.
Một đối tượng nhị phân rất nhỏ. Lưu trữ một chuỗi có độ
TINYBLOB dài tối đa 255 ký tự. Không chỉ đinh
̣ đô ̣ dài.
Một đối tượng nhị phân nhỏ. Lưu trữ tối đa 65.535 ký tự.
BLOB Không chỉ đinh
̣ đô ̣ dài.
Một đối tượng nhị phân cỡ trung bình. Lưu trữ tối đa
MEDIUMBLOB 16.777.215 ký tự. Không chỉ đinh
̣ đô ̣ dài.
Một đối tượng nhị phân cỡ lớn. Lưu trữ lên đến
LONGBLOB 4.294.967.295 ký tự. Không chỉ đinh
̣ đô ̣ dài.
Mỗi chuỗi văn bản rất nhỏ. Lưu trữ một chuỗi có độ dài tối
TINYTEXT đa 255 ký tự. Không chỉ đinh
̣ đô ̣ dài.
Mỗi chuỗi văn bản nhỏ. Lưu trữ một chuỗi có độ dài tối đa
TEXT 65.535 ký tự. Không chỉ đinh
̣ đô ̣ dài.
Mỗi chuỗi văn bản cỡ trung bình. Lưu trữ tối đa
MEDIUMTEXT 16.777.215 ký tự. Không chỉ đinh
̣ đô ̣ dài.
Mỗi chuỗi văn bản rất dài. Lưu trữ lên đến 4.294.967.295
LONGTEXT ký tự. Không chỉ đinh
̣ đô ̣ dài.
Blob Text
*Chú ý 3:
- Các dữ liệu như dãy số 1,2,3,... có thể được khai báo dưới dạng xâu/chuỗi như char, varchar
và cũng có thể được khai báo dưới dạng số là int, float.
- Còn các dữ liệu như ký tự a,b,c... thì chỉ có thể được khai báo dưới dạng xâu/chuỗi, ta
không thể chuyển nó thành định dạng số.
1.c Kiể u dữ liêụ ngày và thời gian (Date and time)
- Ví du ̣: giả sử như chúng ta có mô ̣t mẫu dữ liê ̣u cá nhân như sau:
❖ Dữ liê ̣u ở cô ̣t "Ho ̣ và tên" có da ̣ng chuỗi ký tự, có kiể u dữ liê ̣u là kiể u xâu.
❖ Dữ liệu ở cột "Ngày sinh" có dạng ngày tháng, có kiểu dữ liệu kiể u ngày tháng.
❖ Dữ liệu ở cột "Giới tính", có dạng chuỗi ký tự, có kiểu dữ liệu là kiể u xâu.
❖ Dữ liệu ở cột "SĐT" có dạng số nguyên, có kiểu dữ liệu là kiể u số .
❖ Ta ̣o bảng (Create table) và sử du ̣ng các kiể u dữ liê ̣u:
Create Database Phong1234;
Use Phong1234;
Create Table Nguoidan (
Hovaten char(40),
Ngaysinh date,
Gioitinh char(10),
SĐT int);
❖ Insert (nhập) dữ liê ̣u:
Use Phong1234;
Insert Into NguoiDan values
('Nguyen Phuong Thao', '1994-02-17', 'Nu', 0987345679),
('Nguyen Ngoc Quynh', '1997-01-07', 'Nu', 0305768901);
- Ràng buộc là những quy tắ c được áp dụng ở các cột dữ liê ̣u trong bảng. Chúng được sử
dụng để kiể m tra tính hợp lê ̣ của dữ liê ̣u đầ u vào, qua đó đảm bảo tính chính xác và toàn ve ̣n
của dữ liê ̣u.
- Các loại ràng buộc: Primary Key, Foreign Key, Not Null, Default, Unique, Check.
2.2 Mối liên hệ giữa Primary Key (PK) và Foreign Key (FK)
Hai bảng orders và bảng produclines chỉ có PK. Hai bảng orderdetails và bảng
products có PK và FK liên kết tới các bảng khác.
Bảng products đặt PK ở cột productCode và đặt FK ở cột productLine. FK ở cột
productLine của bảng products liên kết với PK ở cột productLine của bảng
productlines (1).
Bảng orderdetails đặt PK ở cột orderNumber và cột productCode (đây là trường hợp
khóa chính có nhiều column). Trong đó, cột orderNumber cũng được đặt là FK của
chính bảng orderdetails, tham chiếu tới PK của cột cùng tên của bảng orders (2). Còn
cột productCode cũng được đặt là FK của bảng orderdetails, tham chiếu tới PK của
cột cùng tên trong bảng products (3).
+) Từ (1) ta có: Giả sử có hai bảng A và B, bảng A có cột a và bảng B có cột b. Muố n thiết
lâ ̣p liên kết giữa hai bảng A và B thông qua hai cột a và b thì:
Nếu đặt Foreign Key trên cột a thì cột b phải là cột đặt Primary Key và ngược lại, nếu
đặt Foreign Key trên cột b thì cột a phải là cột đặt Primary Key.
Kiể u dữ liê ̣u của cả hai cột a và b phải giố ng nhau. Ví dụ cột a của bảng A là cột đặt
Primary Key và chứa hai giá tri ̣1 và 2 thì cột b của bảng B là cột đặt Foreign Key
cũng chỉ chứa những giá tri ̣1 và 2 mà không được chứa những giá tri ̣khác.
Nói một cách dễ hiểu, trong trường hợp này thì Foreign Key ở bảng này chính là
Primary Key của một bảng khác.
+) Một bảng chỉ có thể có 1 Primary Key và có thể có nhiều Foreign Key. Primary Key có thể
đặt trên nhiều cột trong cùng bảng.
Ví dụ 1: Trường hợp các giá trị trùng lặp của Foreign Key
- Bảng Teacher là bảng con, đặt Foreign Key trên cột SID tham chiếu tới bảng Student để cho
thấy cụ thể học sinh mà giáo viên dạy. Các giá trị của cột S_ID bảng Teacher sẽ giống với
các giá trị của cột S_ID trong bảng Teacher, tuy nhiên vẫn có giá trị trùng lặp, cho thấy một
học sinh có thể học cùng lúc với nhiều giáo viên khác nhau.
- Giả sử có một 1 app ứng dụng cho phép người dùng xem, đăng, tải, bình luận về video và
hình ảnh. Trong bảng comment (bình luận), chúng ta có thể có khóa chính là ID_Comment
hai khóa ngoại là ID_Picture và ID_Video. Và khi ta chỉ bình luận về một video thì
ID_Picure sẽ trống, và nếu chỉ bình luận một hình ảnh thì ID_Video sẽ trống
- Giống:
Đều ràng buộc các giá trị không được trùng trên các column được chúng định nghĩa.
Đều được sử dụng để đảm bảm tính toàn vẹn dữ liệu
- Khác:
2.5 Kết luận về các trường hợp tham chiếu của Foreign Key
- Giả sử ta có bảng A cột a và bảng B cột b. Để kết nối hai bảng, ta đặt Primary Key trên cột
a và đặt Foreign Key tham chiếu trên cột b:
Trường hợp 1 (có thể): Đặt Primary Key trên cột a, đặt Foreign Key trên cột b, cột b
trong bảng B là một cột bình thường và có đặt ràng buộc Not Null.
Trường hợp 2 (có thể): Đặt Primary Key trên cột a, đặt Foreign Key trên cột b, cột b
cũng có thể đồng thời là cột được đặt cả Primary Key của bảng B luôn.
Trường hợp 3 (có thể): Cho một cột c có ràng buộc Unique trong bảng A, ta cũng có
thể đặt Foreign Key trong cột b tham chiếu tới cột c, trong trường hợp này thì cột b có
thể có 1 hoặc nhiều giá trị null.
Trường hợp 4 (không thể): Giả sử ta có một cột d không có ràng buộc gì hoặc là chỉ
có mỗi ràng buộc not null trên bảng A, thì không được phép đặt Foreign Key trên cột
b để tham chiếu tới cột d. Nếu làm thì sẽ xảy ra lỗi Missing Index For Constraint do
MySQL không chấp nhận điều này. Bản thân Primary Key hay Unique đều là một
Index, cho nên việc ta không đặt một Index lên cột d đã khiến cho cột b không thể
tham chiếu tới cột d được.
Ví dụ 5: Ví dụ về Default
- Lưu ý: Trong trường hợp này ta bắt buộc phải dùng cú pháp Insert Into ở ví dụ 5 chứ không
được dùng cú pháp Insert Into ở ví dụ 3 và 4
4. Xóa bảng