You are on page 1of 27

Contents

2. CSDL & bảng trong SQL Server.................................................................................................................3


2.1 Khởi tạo Database trong SQL Server..................................................................................................3
2.2 Làm việc với Database trong SQL Server............................................................................................3
2.2.1 Sử dụng Database.......................................................................................................................3
2.2.2 Đổi tên Database........................................................................................................................4
2.2.3 Xóa Database..............................................................................................................................4
2.3 Làm việc với bảng..............................................................................................................................4
2.3.1 Bảng (Table)................................................................................................................................4
2.3.2 Tạo bảng.....................................................................................................................................4
2.3.3 Thêm cột mới vào bảng..............................................................................................................5
2.3.4 Xóa một cột khỏi bảng................................................................................................................5
2.3.5 Sửa đổi kiểu dữ liệu của cột........................................................................................................5
2.3.6 Đổi tên cột..................................................................................................................................5
2.3.7 Đổi tên bảng...............................................................................................................................6
2.3.8 Xem cấu trúc của bảng................................................................................................................6
2.3.9 Xem dữ liệu các bản ghi trong bảng............................................................................................6
2.3.10 Chèn dữ liệu vào bảng..............................................................................................................6
2.3.11 Cập nhật dữ liệu trên bảng – UPDATE......................................................................................7
2.3.12 Xóa bản ghi trong bảng.............................................................................................................7
2.3.13 Xóa bảng...................................................................................................................................7
3. Các ràng buộc toàn vẹn...........................................................................................................................8
3.1 Ràng buộc toàn vẹn...........................................................................................................................8
3.2 Phân loại ràng buộc toàn vẹn............................................................................................................8
3.3 Cách khai báo ràng buộc toàn vẹn.....................................................................................................9
3.3.1 Khi nào nên khai báo ràng buộc ở mức cột, mức bảng?.............................................................9
3.3.2 Tại sao nên đặt tên cho ràng buộc toàn vẹn.............................................................................10
3.3.3 Thêm ràng buộc mới vào bảng.................................................................................................10
3.4 DEFAULT..........................................................................................................................................10
3.5 CHECK..............................................................................................................................................11
3.6 NOT NULL........................................................................................................................................12
3.7 UNIQUE............................................................................................................................................12
3.8 Khóa chính (PRIMARY KEY)..............................................................................................................14
3.9 Khóa ngoại (FOREIGN KEY)..............................................................................................................16
3.10 Xóa ràng buộc................................................................................................................................17
3.11 Thuộc tính IDENTITY......................................................................................................................17
4.Truy vấn dữ liệu đơn giản.......................................................................................................................18
4.1 Câu lệnh SELECT...............................................................................................................................18
4.1.1 Truy vấn đơn giản.....................................................................................................................19
4.1.2 Dùng SELECT để chọn tất cả các đối tượng trong bảng............................................................19
4.1.3 Dùng SELECT để chọn một số cột trong bảng...........................................................................20
4.2 Loại bỏ dữ liệu lặp với DISTINCT......................................................................................................20
4.3 Lấy dữ liệu trong một khoảng với BETWEEN...................................................................................21
4.4 Tìm kiếm gần đúng với LIKE.............................................................................................................21
4.5 Liên kết các cột dữ liệu trong kết quả truy vấn................................................................................22
4.6 Hạn chế tập kết quả bằng việc sử dụng TOP và PERCENT................................................................23
4.6.1 Lấy n hàng trong bản ghi với TOP.............................................................................................23
4.6.2 Lấy n hàng trong bản ghi với PERCENT.....................................................................................23
4.7 Sử dụng mệnh đề WHERE................................................................................................................23
4.8 Các toán tử so sánh, logic................................................................................................................24
4.8.1 Toán tử so sánh........................................................................................................................24
4.8.2 Toán tử logic.............................................................................................................................24
4.9 Mệnh đề ORDER BY.........................................................................................................................25
4.10 Mệnh đề GROUP BY.......................................................................................................................25
4.11 Mệnh đề HAVING..........................................................................................................................26
4.12 So sánh mệnh đề WHERE và HAVING............................................................................................27
4.13 Một số toán từ và hàm trong T-SQL...............................................................................................27
2. CSDL & bảng trong SQL Server
2.1 Khởi tạo Database trong SQL Server

- Tạo database theo yêu cầu

2.2 Làm việc với Database trong SQL Server


2.2.1 Sử dụng Database
2.2.2 Đổi tên Database

2.2.3 Xóa Database

2.3 Làm việc với bảng


2.3.1 Bảng (Table)
- Ý nghĩa:
+ Là đối tượng được Database sử dụng để tổ chức và lưu trữ dữ liệu.
+ Mỗi Table trong Database có thể liên kết với một hoặc nhiều Table khác,
ở một hoặc nhiều thuộc tính. Một Database bao gồm nhiều Table, giữa các Table
có mỗi liên hệ với nhau thể hiện qua KHÓA CHÍNH & KHÓA NGOẠI.
+ Mỗi bảng được xác định duy nhất bởi tên bảng
- Mỗi Table bao gồm:
+ Cột hay còn gọi là các TRƯỜNG THUỘC TÍNH. Biểu diễn cho một tính chất
của thực thể.
+ Dòng hay còn gọi là các BẢN GHI. Biểu diễn cho một thực thể (ứng với
một đối tượng)
2.3.2 Tạo bảng
2.3.3 Thêm cột mới vào bảng

2.3.4 Xóa một cột khỏi bảng

2.3.5 Sửa đổi kiểu dữ liệu của cột

2.3.6 Đổi tên cột


2.3.7 Đổi tên bảng

2.3.8 Xem cấu trúc của bảng

2.3.9 Xem dữ liệu các bản ghi trong bảng

2.3.10 Chèn dữ liệu vào bảng

- Lưu ý:

- Nếu dữ liệu kiểu text và kiểu Date, khi chèn phải có ‘ ’, nếu là kiểu
navarchar thì có tiếp đầu ngữ N’.
- Dữ liệu kiểu Date yêu cầu nhập tháng/ngày/năm hoặc năm/tháng/ngày
nhập dưới dạng chuỗi.
- Dữ liệu dạng tự tăng thì không cần nhập.
- Cột nhập dữ liệu có thể thay đổi nhưng phải tương ứng với cột đưa giá trị
vào
2.3.11 Cập nhật dữ liệu trên bảng – UPDATE
- Ý nghĩa:
1. UPDATE là truy vấn được sử dụng để chỉnh sửa những bản ghi đã tồn tại
trong bản
2. Có thể sử dụng mệnh đề WHERE với lệnh UPDATE để cập nhật các hàng
được chọn, nếu không muốn tất cả các hàng trong bảng bị ảnh hưởng.

2.3.12 Xóa bản ghi trong bảng


- Ý nghĩa
1. Lệnh DELETE được dùng để xóa một hoặc nhiều bản ghi từ một bảng
trong SQL Server.
2. Lệnh DELETE được sử dụng để xóa các hàng từ một bảng. Nếu muốn xóa
một hàng cụ thể từ bảng, sử dụng mệnh đề WHERE.

2.3.13 Xóa bảng

- Lưu ý:
+ Câu lệnh Drop Table không thể thực hiện nếu bảng cần xóa được tham
chiếu bởi một Foregin Key
+ Các ràng buộc, chỉ mục, trigger, … đều bị xóa, nếu tạo lại bảng thì cũng
phải tạo lại các đối tượng này
+ Sau khi xóa không thể khôi phục lại bảng và dữ liệu bảng

3. Các ràng buộc toàn vẹn


3.1 Ràng buộc toàn vẹn
- Khái niệm:
+ RBTV là những điều kiện bất biến mà tất cả các bộ của những quan hệ có
liên quan trong CSDL đều phải thỏa mãn ở mọi thời điểm.
+ RBTV được dùng để duy trì tính chất nhất quán của dữ liệu, đảm bảo dữ
liệu phù hợp với các quy định theo yêu cầu của bài toán. Ràng buộc giúp ngăn
chặn dữ liệu không hợp lệ và chỉ cho phép dữ liệu hợp lệ được lưu vào database.
- Ví dụ:
+ Ngày sinh của sinh viên phải nhỏ hơn ngày nhập học
+ Điểm của sinh viên phải từ 0 đến 10
+ Giới tính của sinh viên chỉ có thể là nam hoặc nữ
+ Sinh viên đăng ký học với những môn học thuộc khoa mà sinh viên đó học
3.2 Phân loại ràng buộc toàn vẹn
RBTV có thể chia thành hai loại:
1. Ràng buộc mức cột
2. Ràng buộc mức bảng

Ràng buộc mức cột Ràng buộc mức bảng


Ý nghĩa Chỉ áp dụng ở mức cột Có thể áp dụng ở một
hoặc nhiều cột trong
bảng
Phạm vi khai báo Ngay sau khi khai báo cột Khai báo sau khi đã khai
(sau kiểu dữ liệu và phía báo sau cột cuối cùng
trước dấu phẩy) của bảng và phía trước
dấu đóng ngoặc

Ràng buộc mức cột Ràng buộc mức bảng


Các loại ràng buộc NOT NULL, PRIMARY KEY,
PRIMARY KEY, UNIQUE,
UNIQUE, FOREIGN KEY,
FOREIGN KEY, CHECK,
CHECK, DEFAULT
DEFAULT
Khai báo - RB không đặt tên - RB có đặt tên
- RB có đặt tên

3.3 Cách khai báo ràng buộc toàn vẹn

3.3.1 Khi nào nên khai báo ràng buộc ở mức cột, mức bảng?
1. Khi ràng buộc cột chỉ tác động vào một cột nào đó thì nên dùng ràng buộc mức
cột để tường mình
2. Khi ràng buộc các cột trong bảng vào với nhau thì dùng ràng buộc mức bảng
3. Khi đã tạo xong bảng, bắt buộc phải dùng ràng buộc mức bảng để thêm ràng
buộc
3.3.2 Tại sao nên đặt tên cho ràng buộc toàn vẹn
1. Lý do quan trọng nhất là sự vi phạm ràng buộc trong SQL Server
 Có thể nhanh chóng xác định và sửa lỗi
2. Dễ dàng sửa đổi hoặc loại bỏ các ràng buộc
3.3.3 Thêm ràng buộc mới vào bảng
- Ý nghĩa:
+ Dùng để thêm ràng buộc (constraint) mới vào bảng đã được tạo sẵn
+ Sử dụng từ khóa ALTER TABLE

3.4 DEFAULT
- Ý nghĩa:
DEFAULT là ràng buộc mặc định. Khi nhập dữ liệu cho bảng mà cột đó
không được cung cấp giá trị thì giá trị mặc định sẽ được sử dụng
3.5 CHECK
- Ý nghĩa
CHECK là ràng buộc kiểm tra. Yêu cầu cột tương ứng phải thỏa mãn một
biểu thức logic.
3.6 NOT NULL
- Thế nào là NULL?

Giá trị NULL trong SQL là khái niệm được sử dụng để biểu diễn một giá trị bị
khuyết thiếu. Một giá trị NULL trong một trường và bị bỏ trống.

3.7 UNIQUE
- Ý nghĩa
UNIQUE là ràng buộc duy nhất, yêu cầu các giá trị trong cột hoặc một tập
hợp cột phải khác nhau, chắc chắn ràng không có các giá trị trùng lặp được nhập
vào.
- Lưu ý
+ Cột đặt ràng buộc UNIQUE có thể lưu trữ giá trị NULL nhưng chỉ lưu trữ
được duy nhất một lần
+ Có thể tạo nhiều bảng ràng buộc duy nhất trên cùng một bảng
+ Về mặt logic UNIQUE + NOT NULL + PRIMARY KEY
3.8 Khóa chính (PRIMARY KEY)
- Ý nghĩa
Primary key là khóa chính của bảng, là định danh duy nhất cho mỗi bản ghi
trong bảng. Nó đòi hỏi cột (hoặc các cột) tọa thành khóa chính phải thỏa mãn hai
điều kiện:
1. Chứa các giá trị không rỗng (không NULL)
2. Chỉ tồn tại dữ liệu duy nhất, không trùng lặp trong toàn bảng
- Lưu ý
+ Mỗi bảng chỉ cho phép tối đa một khóa chính và theo nguyên tắc thiết kế,
mỗi bảng đều cần có khóa chính
+ Ngoài ra, thông qua khóa chính của bảng, mà các bảng khác có thể tham
chiếu tới bằng khóa ngoại (FOREGIN KEY)
3.9 Khóa ngoại (FOREIGN KEY)
- Ý nghĩa
+ Foreign key là khóa ngoại được sử dụng để nối các bảng lại với nhau. Nó
còn gọi là khóa tham chiếu.
+ Khóa ngoại đảm bảo việc nhập dữ liệu cho một cột (hoặc một số cột)
thuộc tính nào đó từ một bảng phù hợp tham chiếu tới khóa chính ở một bảng
khác
- Điều kiện để tạo khóa ngoại
+ Tham chiếu đến khóa chính của bảng khác, đảm bảo các ràng buộc
UNIQUE, NOT NULL tương tự khóa chính
+ Khóa ngoại phải có cùng kiểu dữ liệu, cùng số lượng trường có sắp xếp
tương ứng khóa chính

- Chú ý khi làm việc với khóa ngoại


1. Trường giá trị của bảng khóa ngoại phải được lấy từ trường tương ứng của
bảng chứa khóa chính
2. Khi muốn xóa bảng hoặc dữ liệu ở bảng chứa khóa chính, phải xóa bảng hoặc
dữ liệu ở bảng chứa khóa ngoại trước
3.10 Xóa ràng buộc

3.11 Thuộc tính IDENTITY


- Ý nghĩa
IDENTITY cho phép tự động tạo ra một dãy số liên tục tăng dần và không
trùng lắp. Trong nhiều trường hợp, cột IDENTITY cũng được dùng luôn làm khóa
chính cho bảng.

- Một vài lưu ý với IDENTITY


+ SQL server không duy trì tính liên tục của dãy số INDENTITY, khi DELETE bản ghi
thì khoảng trống sẽ xuất hiện. Ở lần INSERT sau đó một giá trị mới sẽ được dùng,
thay vì giá trị bị xóa được dùng lại.
+ Không thể thay đổi một cột có sẵn để nó trở thành cột IDENTITY, hoặc bỏ thuộc
tính IDENTITY của nó. Khi edit bảng trong Management Studio và sửa một cột
thành IDENTITY hoặc ngược lại, ở phía sau thực ra SQL Server xóa bảng và tạo
một bảng mới.
+ Khi cần INSERT vào bảng, có thể bỏ qua cột IDENTITY trong danh sách các cột, và
giá trị của cột IDENTITY sẽ được tự động sinh ra (đó là mục đích chính khi tạo cột
này)
+ Bản thân thuộc tính IDENTITY không đảm bảo các giá trị trong cột là duy nhất
bởi vì có thể đặt lại seed với giá trị tùy ý (kể cả giá trị đã đặt trước đó)  Khi cần
đảm bảo tính duy nhất duy nhất cần phải đặt nó là PRIMARY KEY hoặc là UNIQUE

+ Một bảng chỉ được phép có tối đa một cột IDENTITY

4.Truy vấn dữ liệu đơn giản


4.1 Câu lệnh SELECT
- Ý nghĩa: Lệnh SELECT là lệnh cho phép truy vấn dữ liệu mà không làm thay đổi
dữ liệu hoặc các đối tượng trong CSDL.
- Cú pháp:
4.1.1 Truy vấn đơn giản

4.1.2 Dùng SELECT để chọn tất cả các đối tượng trong bảng
4.1.3 Dùng SELECT để chọn một số cột trong bảng

4.2 Loại bỏ dữ liệu lặp với DISTINCT


4.3 Lấy dữ liệu trong một khoảng với BETWEEN

4.4 Tìm kiếm gần đúng với LIKE


4.5 Liên kết các cột dữ liệu trong kết quả truy vấn
4.6 Hạn chế tập kết quả bằng việc sử dụng TOP và PERCENT
4.6.1 Lấy n hàng trong bản ghi với TOP

4.6.2 Lấy n hàng trong bản ghi với PERCENT

4.7 Sử dụng mệnh đề WHERE


4.8 Các toán tử so sánh, logic
4.8.1 Toán tử so sánh

4.8.2 Toán tử logic


4.9 Mệnh đề ORDER BY

4.10 Mệnh đề GROUP BY


- Ý nghĩa: Mệnh đề GROUP BY được sử dụng kết hợp với lệnh SELECT để sắp xếp
dữ liệu đồng nhất vào nhóm
4.11 Mệnh đề HAVING
- Ý nghĩa: Mệnh đề HAVING được thêm vào SQL vì mệnh đề WHERE không áp
dụng được đối với các hàm tập hợp (như SUM, …). Nếu không có HAVING, ta
không thể nào kiểm tra được điều kiện với các hàm tập hợp. Nên ta có thể hiểu
như HAVING dùng để thay thế WHERE khi sử dụng với các hàm tập hợp.

4.12 So sánh mệnh đề WHERE và HAVING


- Giống nhau: WHERE và HAVING đều là câu lệnh dùng để lọc ra các bản ghi dựa
trên một hoặc nhiều điều kiện
- Khác nhau:
WHERE là câu lệnh dùng để đặt điều kiện lọc trên từng bộ (từng dòng)
HAVING cũng là câu lệnh đặt điều kiện nhưng là ở trên một nhóm xác định
thường đi kèm với câu lệnh GROUP BY

4.13 Một số toán từ và hàm trong T-SQL

You might also like