Blog của Lê Văn Luật

Đời người thì có hạn mà sự học thì vô hạn!

SQL Server 1: Lệnh và gói lệnh (batch)

Lệnh và gói lệnh (Batch)

Khi cho chạy các câu lệnh T-SQL đánh trong cửa sổ Query hoặc trong các view, các hàm, thủ tục lưu trữ (bằng cách bấm phím F5 hoặc kích chuột vào Execute) SQL Server sẽ phân tích tất cả các lệnh trong cửa sổ và tạo một Kế hoạch thực thi (Execution plan) cho các lệnh đó. Kế hoạch thực thi cho phép SQL Server tối ưu hiệu suất của các câu lệnh.
Việc tạo kế hoạch thực thi được SQL Server thực hiện cho từng gói lệnh (Batch).
Một gói lệnh là một nhóm lệnh T-SQL nằm giữa hai lệnh GO.
Một số câu lệnh T-SQL yêu cầu phải nằm ở đầu gói. Như một số câu lệnh CREATE (CREATE VIEW, CREATE FUNCTION, CREATE PROCEDURE,…)

Tập lệnh T-SQL

Trong SQL Server Management studio ta có thể tạo các file kịch bản T-SQL (T-SQL script) có phần mở rộng .SQL. Kịch bản T-SQL là tập hợp các lệnh T-SQL được thực thi theo trình tự liệt kê lệnh từ trên xuống.
Lưu ý: Một số lệnh cần tách thành gói (batch) riêng để được thực thi trước các lệnh sau nó.
VD:

CREATE DATABASE CSDL
GO
CREATE TABLE HocSinh(...

Trong ví dụ này, sau lệnh CREATE DATABASE phải có lệnh GO để thực hiện lệnh CREATE DATABASE nhằm tạo database trước khi có thể tạo bảng trong nó.

Mô hình CSDL thực hành
Trong loạt bài này ta sẽ dùng CSDL có mô hình như sau:
bt1
Dữ liệu thử cho trong file Ms Excel 2003 theo link sau: http://www.mediafire.com/?g4f9p914cv9sc0n

Các vị từ:
Mã học sinh (HSMa) là chuỗi 5 ký tự số. 2 ký tự đầu cho biết khóa học (36, 37,…). 3 ký tự còn lại là số thứ tự tăng dần theo bảng chữ cái (trong 1 khóa). Mỗi học sinh có một mã duy nhất và không đổi dù có chuyển khóa.
Ví dụ: 36001, 36002, 35001, 35099, 37197
LMa – Mã lớp là chuỗi tối đa 8 ký tự, tối thiểu 6 ký tự. 4 ký tự đầu là mã ngành (viết tắt. VD: QTKD = Quản trị kinh doanh, KTDN = Kế toán doanh nghiệp, CNTT = Công nghệ thông tin). 2 chữ số kế tiếp là khóa học, 2 ký tự cuối có thể có hoặc không *nếu không có tức là trong khóa chỉ có [i]một[i] lớp thuộc ngành đó). Nếu có nó cho biết thứ tự lớp trong ngành, khóa.
Ví dụ: CNTT3501, CNTT37 (ngành CNTT khóa 37 chỉ có 1 lớp), CNTT3602
LBo – cho biết lớp đang học hay đã kết thúc.
DLan – trong khoảng từ 1 đến 3, cho biết lần thi thứ mấy
DDiem – điểm thi. Là rỗng nếu được miễn thi. Trong khoảng từ 0 đến 10 (cấm thi là 0 điểm).
MHLyThuyet, MHThucHanh – số tiết lý thuyết, thực hành. Phải có.

Các lệnh định nghĩa dữ liệu

Tạo CSDL: CREATE DATABASE TênCSDL

VD:

CREATE DATABASE QLHS

Xóa CSDL: DROP DATABASE TênCSDL

VD:

DROP DATABASE QLHS

Tạo bảng: CREATE TABLE TênBảng(ĐịnhNghĩaCột, RàngBuộcMứcBảng, …)

VD: Tạo bảng có 1 trường làm khóa chính

CREATE TABLE tblLop(
 LMa NVARCHAR(8) PRIMARY KEY,
 LBo BIT DEFAULT(0)
)

Trong câu lệnh trên ta lưu ý:
Định nghĩa của mỗi cột (mỗi trường) nên được đặt trên một dòng riêng, cuối cùng luôn phải có dấy phẩy (,).
PRIMARY KEY – ràng buộc khóa chính. Chỉ định trường HSMa là trường khóa chính. Đây là ràng buộc mức trường (khác với ràng buộc mức bảng).
DEFAULT(0) – xác định giá trị mặc cho trường. Giá trị mặc định được đặt trong ngoặc và có thể là một biểu thức hằng (biểu thức cho về một giá trị cụ thể). Trong biểu thức có thể dùng các hàm không có tham số (như GetGate,…).

VD: Tạo bảng có khóa ngoại

CREATE TABLE tblHocSinh(
  HSMa NVARCHAR(5) PRIMARY KEY,
  HSHo NVARCHAR(30),
  HSTen NVARCHAR(10),
  HSNgaySinh DATETIME,
  HSGioiTinh BIT DEFAULT(0),
  LMa NVARCHAR(8) REFERENCES tblLop(LMa) -- Từ khóa REFERENCES xác định khóa ngoại (tên bảng và tên trường).
)

Lưu ý đoạn REFERENCES tblLop(LMa)

VD: Tạo bảng có khóa gồm nhiều trường, có ràng buộc miền trị

CREATE TABLE tblDiem(
  MHMa NVARCHAR(10) REFERENCES tblMonHoc(MHMa),
  HSMa NVARCHAR(5) REFERENCES tblHocSinh(HSMa),
  DLan INT CHECK (DLan>=1 AND DLan<=3), -- Lần thi (1, 2 hoặc 3)
  PRIMARY KEY(MHMa, HSMa, DLan), -- Ràng buộc khóa chính mức bảng
  DDiem DECIMAL(5,2)
)

Lưu ý: CHECK (DLan>=1 AND DLan<=3) là ràng buộc miền trị. Đây là ràng buộc mức trường. Ta có thể đưa ràng buộc miền trị vào ràng buộc mức bảng.

Xóa bảng DROP TABLE TênBảng

VD:

DROP TABLE tblHocSinh
Advertisements

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

Information

This entry was posted on 23/02/2013 by in Cơ sở dữ liệu and tagged , , .

Điều hướng

%d bloggers like this: