Professional Documents
Culture Documents
CHƯƠNG II
Tạo CSDL quan hệ & Ngôn ngữ truy
vấn T-SQL
Nội dung trình bày
1. Kiểu dữ liệu
2. Tạo CSDL quan hệ
3. Làm quen với T-SQL
1. Kiểu dữ liệu
1.1 Tổng quan về kiểu dữ liệu
SQL Server định nghĩa 26 kiểu dữ liệu, được chia làm bốn
nhóm.
Nhóm Mô tả
Chuỗi Các chuỗi dữ liệu ký tự .
Số Các số nguyên, số có dấu phẩy động, tiền tệ
và các kiểu dữ liệu số khác.
Thời gian (ngày/giờ) Ngày, giờ, hoặc cả ngày và giờ.
Kiểu khác Các giá trị chuỗi và nhị phân lớn, XML, dữ liệu
hình học, dữ liệu địa lý, dữ liệu phân cấp.
1.2 Kiểu dữ liệu chuỗi
Kiểu Byte Mô tả
Kiểu Byte Mô tả
date 3 Chỉ có ngày (không chứa phần giờ) từ 1/1/0001 tới 31/12/9999.
time(n) 3-5 Chỉ có giờ (không chứa phần ngày) từ 00:00:00,0000000 tới
23:59:59,9999999, với độ chính xác 0,0000001 giây; n là số từ 0 tới 7
được sử dụng cho độ chính xác phân đoạn giây.
datetime(n) 6-8 Ngày từ 1/1/0001 tới 31/12/9999, với giá trị thời gian từ
00:00:00,0000000 tới 23:59:59,9999999.
1.5 Các kiểu dữ liệu giá trị lớn
Kiểu dữ liệu số
◦ Dùng lưu trữ các dữ liệu số, sử dụng trong tính toán
◦ Trong một số trường hợp thường sử dụng kiểu chuỗi làm kiểu dữ
liệu thay thế khi lưu trữ dữ liệu số như: số điện thoại, số chứng
minh, mã ZipCode
SQL Server cho phép sử dụng các từ đồng nghĩa với kiểu dữ
liệu chuẩn ANSI thay thế cho kiểu dữ liệu của SQL Server.
◦ Khi sử dụng từ đồng nghĩa, SQL Server tự động chuyển về kiểu
dữ liệu SQL Server tương ứng
◦ Tuy nhiên không nên sử dụng từ đồng nghĩa. Trừ từ đồng nghĩa
Rowversion
1.7 Ví dụ về kiểu dữ liệu
Khám phá cách sử dụng các kiểu dữ liệu của các bảng trong
cơ sở dữ liệu mẫu AP.
2. Tạo CSDL quan hệ
2.1 Tạo CSDL
2.2 Hướng dẫn tạo bảng
Click vào đây để thiết lập khóa
chính cho cột được chọn
Thay
thuộc
cho c
đây
2.3 Xoá và chỉnh sửa bảng
Chỉnh sửa
bảng
Xóa bảng
2.4 Các hướng dẫn làm việc với bảng khác
Danh
sách
khóa
ngoại
Đặt là No để
SQL Server
Danh sách các không kiểm tra
ràng buộc của dữ liệu đang tồn
bảng tại với điều kiện
ràng buộc
Hàm người dùng định nghĩa (Học trong các bài sau)
Câu lệnh Mô tả
CREATE DATABASE Tạo mới một CSDL
Đã học
CREATE TABLE Tạo mới một bảng trong CSDL hiện tại
CREATE INDEX Tạo một index mới cho bảng được chỉ định
trước
Câu lệnh Mô tả
Đã học ALTER TABLE Sửa thiết kế bảng
Câu lệnh Mô tả
Đã học DROP DATABASE Xóa một CSDL
DROP INDEX Xóa một index
Lưu trữ
Khai báo
◦ Cú pháp
DECLARE @<tên biến 1> <kiểu dữ liệu> [, @<tên biến 2> <kiểu dữ
liệu>]…
-- Gán giá trị cho biến @MaxInvoice bằng tổng số tiền hóa đơn lớn nhất tương ứng với
nhà cung cấp @VendorIDVar
SET @MaxInvoice = (SELECT MAX(InvoiceTotal) FROM Invoices WHERE
VendorID = @VendorIDVar)
-- Gán giá trị cho các biến được khai báo ở ví dụ 1 sử dụng câu lệnh SELECT
SELECT @MaxInvoice = MAX(InvoiceTotal),@MinInvoice = MIN(InvoiceTotal)
FROM Invoices
WHERE VendorID = @VendorIDVar
Cú pháp
IF <biểu thức điều kiện>
{<Câu lệnh>|BEGIN...END}
[ELSE
{<Câu lệnh>|BEGIN...END}]
Chú ý:
◦ Nếu thực thi hai hoặc nhiều câu lệnh trong mệnh đề IF hoặc
ELSE. Bạn cần bao các câu lệnh này trong khối BEGIN…END
Ví dụ
Sử dụng câu lệnh IF…ELSE
DECLARE @vendorID int
SELECT @vendorID = ISNULL(VendorID,0)
FROM VENDORS
WHERE VendorName ='US Postal Service'
IF @vendorID = 0
PRINT 'Không tồn tại nhà cung cấp US Postal Service'
ELSE
PRINT 'US Postal Service có VendorID là ' + CAST(@vendorID AS
VARCHAR)
3.5.4 Các câu lệnh điều khiển –WHILE
Cú pháp
WHILE <biểu thức điều kiện>
{<câu lệnh>|BEGIN...END}
[BREAK]
[CONTINUE]
Chú ý:
◦ Nếu thực thi hai hoặc nhiều câu lệnh trong mệnh đề WHILE. Bạn
cần bao các câu lệnh này trong khối BEGIN…END
Demo
sử dụng câu lệnh WHILE
Ví dụ: sử dụng vòng lặp WHILE để tính tổng các số từ 1 đến
10
DECLARE @a int ,
@Tổng int
SET @a = 1
SET @Tổng = 0
SELECT @Tổng
3.5.5 Hàm CASE
Trả về giá trị dựa vào điều kiện được chỉ định.
Có 2 loại hàm CASE
◦ Cú pháp hàm CASE đơn giản
CASE <biểu thức>
WHEN <biểu thức 1> THEN <biểu thức kết quả 1>
[WHEN <biểu thức 2> THEN <biểu thức kết quả 2>]...
[ELSE <biểu thức kết quả mệnh đề else>]
END
SELECT InvoiceNumber, TermsID,
◦ Ví dụ CASE TermsID
WHEN 1 THEN 'Net due 10 days'
WHEN 2 THEN 'Net due 20 days'
WHEN 3 THEN 'Net due 30 days'
WHEN 4 THEN 'Net due 60 days'
WHEN 5 THEN 'Net due 90 days'
END AS Terms
FROM Invoices
3.5.5 Hàm CASE
◦ Ví dụ
3.5.5 Hàm CASE
SELECT InvoiceNumber, InvoiceTotal, InvoiceDate, InvoiceDueDate,
CASE
WHEN DATEDIFF(day, InvoiceDueDate, GETDATE()) > 30
THEN 'Over 30 days past due'
WHEN DATEDIFF(day, InvoiceDueDate, GETDATE()) > 0
THEN '1 to 30 days past due'
ELSE 'Current'
END AS Status
FROM Invoices
WHERE InvoiceTotal - PaymentTotal - CreditTotal > 0
Tổng kết
T-SQL giống với ngôn ngữ SQL chuẩn đã học gồm có:
◦ Ngôn ngữ định nghĩa dữ liệu (DDL)
◦ Ngôn ngữ thao tác dữ liệu (DML)
◦ Ngôn ngữ điều khiển dữ liệu (DCL)
Tổng kết