SQL là giải pháp chuẩn để thao tác với cơ sở dữ liệu (CSDL). Nó được thực hiện theo nhiều dạng khác nhau trong các hệ thống CSDL quan hệ, bao gồm Microsoft Access và SQL Server.
Nói chung, các câu lệnh SQL được chia thành 2 loại:
- Các câu lệnh thuộc ngôn ngữ định nghĩa dữ liệu (DDL): cho phép sử dụng truy vấn SQL để tạo các thành phần trong cơ sở dữ liệu như là bảng, trường và chỉ mục.
- Các câu lệnh thuộc ngôn ngữ tao tác dữ liệu: được thiết kế để lấy các mẩu tin từ các cơ sở dữ liệu.
1. Các lệnh làm việc với cấu trúc bảng
1.1. Tạo bảng
Cú pháp:
Create table Tên_bảng (Tên_cột kiểu_DL [kích_thước] [Notnull], …
Primany key (khoá_chính) [Unique (khoá), …]
[Foreign key (khoá_ngoài) Reference Tên_bảng,…] [Check Điều_kiện _ ràng _ buộc,…])
Trong đó:
- Tên bảng: là xâu ký tự không trùng từ khoá, không chứa dấu cách. - Tên cột: là xâu ký tự bất kỳ, không chứa dấu cách trống.
- Kiểu dữ liệu:
Integer: số nguyên từ – 2147483648 đến 2147483647 Smallinteger: số nguyên từ – 32768 đến 32767
Decimal (n, p): số thực dài tối đa n chữ số, p chữ số thập phân Float: số thực dạng chấm động
Char(n): Xâu ký tự độ dài cố định (n) (n < = 255) Var char(n): xâu ký tự có độ dài thay đổi từ 0 đến n Date: kiểu ngày tháng
Boolean: kiểu logic. Ví dụ:
Tạo bảng HDTD
Create table HDTD( SHDTD char(5) Notnull Makhh char(5) notnull HOTEN char(25) notnull TONGGTTSDB REAL notnull NGAYKIHD Char(10) notnull Primary Key (SHDTD)
Foreign Key (MAKH) Reference HSPLCT, Xoá bảng
Cú pháp:
DROP TABLE Tên_bảng
1.2. Thêm, huỷ các cột của bảng
Cú pháp:
- Thêm cột:
ALTER TABLE Tên_bảng ADD Tên_cột Kiểu_dữ_liệu [kích thước] [Not null]
Thêm cột DIENTHOAI vào bảng HPLCT
ALTER TABLE HSPLCT ADD DIENTHOAI Char(10) Not Null
- Xoá cột:
ALTER TABLE Tên_bảng DROP Tên_cột Ví dụ: Xoá cột DIENTHOAI của bảng HSPLCT ALTER TABLE HSPLCT DROP DIENTHOAI 2. Các lệnh làm việc với dữ liệu
2.1. Nhập dữ liệu cho bảng
Cú pháp:
INSERT INTO Tên_bảng VALUES (Bộ_giá_trị) Ví dụ:
1) Giá trị cố định
INSER INTO LNT (MLNT,LOAINGOAITE) VALUES (‘ 001’, ‘Dola’)
2) Thông qua biến
Insert Into LNT (MLNT,LOAINGOAITE)
Values (Trim(txtfields(0).Text), txtfields(1).Text)
2.2. Xoá bản ghi trong bảng
Cú pháp:
DE LETE FROM Tên_bảng [WHERE điều_kiện]
DE LETE FROM LNT WHERE MAHE=’001’.
2.3. Sửa nội dung các bản ghi trong bảng
Cú pháp:
UPDATE TABLE Tên_bảng SET Tên_cột = Biểu_thức,… [WHERE Điều_kiện]
Ví dụ: Sửa đổi nội dung bản ghi trong bảng MNT(Mua ngoại tệ)
UPDATE MNT SET
HOTEN = Txtfields(1).Text , DIACHI= Txtfields(3)
LOAINGOAITE = Cbotg.Text, WHERE DIACHI = txtfields(2).Text
2.4. Tạo tệp chỉ số
Cú pháp:
CREATE INDEX Têntệp_chỉ_số ON Tên_bảng (Tên cột [ASC/DESC])
2.5. Khối select
Cú pháp:
SELECT [DISTINCT] * | DS_cột cần lấy kết quả| DS_biểu thức
FROM Danh_sách_các bảng [WHERE Biểu_thức_điều_kiện]
[HAVING Biểu_thức_điều_kiện]
[ORDER BY {Tên cột/ Biểu thức} [ASC/ DESC]] Trong đó:
• Select: Dùng để xác định nội dung của các cột đưa ra kết quả
• From: Để xác định các bảng cần lấy thông tin
• Where: Xác định bản ghi thoả mãn yêu cầu để lọc
• Dấu *: Chỉ toàn bộ (ALL) các cột của bảng
• Biểu thức: Bao gồm các toán tử tác động lên các toán hạng + Các toán tử bao gồm:
- Toán tử số học: *, /, Mod, +, - - Toán tử logic: Not, And, Or
- Các toán tử tập hợp: Union, Intersect, Minus - Các toán tử so sánh: =, < >, >, >=, <, < = - Các toán tử khác: Like, Between, exists + Các toán hạng bao gồm các cột và các hàm
- DISTINCT: để chỉ rằng không có bản ghi trùng nhau
- GROUP BY: Danh_sách_các_cột: nhóm các bản ghi theo các cột trong danh sách các cột.
- HAVING biểu thức điều kiện: Dùng cùng với GROUP BY. Nó không tác động lên toàn bảng mà chỉ tác động lần lượt lên từng nhóm các bản ghiđược phân ra nhờ GROUP BY.
- ORDER BY { Tên cột| Biểu thức} [ASC/ DESC]: Sắp xếp các bản ghi trong bảng kết quả.
Ví dụ:
Lấy thông tin các khách hàng từ bảng HSPLCT(hồ sơ pháp lý cá thể)
Select * from HSPLCT
where TENKH = ‘Nguyễn văn A’ ORDER BY MAKH
2.6. Tạo VIEW của người sử dụng
Cú pháp:
CREATE VIEW Tên_view (Danh_sách_tên_cột) AS Mệnh_đề: Select
3. Một số hàm mẫu
• SUM (Tên_cột): Tính tổng giá trị theo cột có tên là tên cột của các bộ
• MAX (Tên_cột): Cho giá trị lớn nhất trong cột có tên là tên_cột
• MIN (Tên_cột): Cho giá trị nhỏ nhất trong cột có tên là tên_cột
• AVR (Tên_cột): Tính giá trị trung bình theo cột có tên là tên cột của các bộ
• COUNT (*/ Tên cột / DSTINCT Tên_cột): Đếm số bản ghi trong bảng
theo tuỳ chọn.
- *: Đếm tất cả các bản ghi trong bảng
- Tên_cột: Đếm các bản ghi mà giá trị của cột Tên_cột khác null
DISTINCT: Đếm các bản ghi mà giá trị tên cột khác null và các bản ghi
giống nhau chỉ tính một.
V. HỆ QUẢN TRỊ CSDL SQL SERVER
Nhiều nhà lập trình Visual Basic thường làm việc với bộ máy cơ sở dữ liệu JET chia sẻ giữa Visual Basic và Access. Nhưng khi ứng dụng cần làm việc với số lượng mẫu tin rất lớn với nhiều người sử dụng, nó gặp phải
chậm chạp, thiếu những tính năng nâng cao vể quản lí Server và dữ liệu làm cho các nhà lập trình phải thiết kế những cấu trúc nặng nề để giải quyết các vấn đề này.
Không nên lầm lẫn giữa môi trường Client/Server và môi trường máy tính nhiều người sử dụng. Môi trường Client/Server chứa trong chương trình tự động trả về và lưu trữ dữ liệu, phân quyền truy cập giữa nhiều người sử dụng, xử lý bảo mật. Trong khi Microsoft Access chỉ hỗ trợ máy tính đa người sử dụng, không phải là môi trường Client/Server vì nhiều yêu cầu thông tin đều được xử lý trên máy Client cá nhân. Nó không có chương trình điều khiển nào tồn tại qua mạng để xử lý và trả về dữ liệu.
Microsoft SQL Server là chọn lựa tốt nhất vì nó đi kèm với Visual Basic. Hơn nữa :
• Phần lớn cơ sở dữ liệu sử dụng ngôn ngữ phổ biến nhất, ngôn ngữ truy vấn theo cấu trúc - SQL ( Structure Query Language ).
• Trong Visual Basic ta thường xuyên truy cập cơ sở dữ liệu thông qua Đối tượng dữ liệu từ xa ( Remote Data Object – RDO ), một phương thức độc lập với cơ sở dữ liệu và thi hành với môi trường Client / Server.
1. Cài đặt Microsoft SQL Server
Cài đặt Microsoft SQL Server dễ hơn nhiều so với các sản phẩm cùng loại:
Phiên bản phát triển của Microsoft SQL Server đi kèm với phiên bản
Enterprise của Visual Basic, phiên bản này cung cấp bản cài đặt đầy đủ của
SQL Server, nhưng giới hạn cho 15 client. Để tạo ứng dụng thương mại
1.1. Yêu cầu cài đặt SQL Server
Để cài đặt SQL Server 2000 Microsoft khuyên cần có WINDOWS2000 SERVER hoặc WINXP. Tuy nhiên, đây chỉ là cấu hình tối thiểu mà thôi. Nếu muốn dùng làm Server cho hệ thống lớn ta cần nâng cấp thêm, nhất là bộ nhớ. Nếu không các nhà lập trình sẽ gặp khó khăn khi máy chủ không đáp ứng kịp thời.
1.2. Cài đặt SQL Server
Nhấn đúp chuột lên tập tin Setup. exe trong thư mục \ i386 trên ổ CD ( Nếu ta đang sử dụng Intel ).
Trước hết, chương trình cài đặt yêu cầu ta chỉ ra thư mục cài SQL Server
Kế đến, nó yêu cầu ta chỉ ra nơi tạo tập tin Master.dat. Đây là tập tin cơ sở dữ liệu mà SQL Server dùng theo dõi toàn bộ cơ sở dũ liệu. Ta nên chọn nơi mà người sử dụng thông thường không thể truy cập được vào và trên ổ đĩa luôn có đủ khoảng trống (25MB là kích thước tối thiểu cho cơ sở dữ liệu chủ).
Sau đó, ta cung cấp trang mã và thứ tự sắp xếp. Trang mã ( Code Page ) là bảng chữ cái cho người ứng dụng. Chọn trang mã tương thích với địa phương của người sử dụng.
Về thứ tự sắp xếp, ta chọn mặc định là không phân biệt chữ thường chữ in hoa.
SQL Server hỗ trợ một số giao thức mạng. Ta nên chọn giao thức mà
người sử dụng mạng đang dùng. Nếu không chắc, ta nên liên hệ với người quản trị mạng hoặc đối chiếu giá trị ta chọn với giá trị định sẵn trong cửa sổ
Network của Control panel.
Kế tiếp ta xác định SQL Server có khởi động ngay lúc khởi động WinNT hay không. Nếu chọn, SQL Server sẽ hoạt động như một dịch vụ của
thúc chúng theo cách một ứng dụng thông thường.
1.3. Kiểm soát cách khởi động SQL Server
Sau khi cài SQL Server, hệ điều hành tự động phóng SQL Server khi máy tính được khởi động. Thông qua bảng điều khiển Services ta có thể kiểm soát SQL Server có luôn khởi động khi máy tính khởi động hay không.
2. Thi hành Microsoft SQL Server
Sau khi cài đặt xong ta phải hoàn tất một số việc trước khi SQL Server
bắt đầu lưu trữ dữ liệu :
•Tạo một hay nhiều thiết bị đĩa.
• Tạo một hay nhiều cơ sở dữ liệu trên một thiết bị đĩa đặc biệt.
•Tạo bảng trong cơ sở dữ liệu.
•Tạo ra các tài khoản người sử dụng và nhóm bảo mật.
Hầu hết các công việc này đều thi hành với SQL Enterprise Manager, không cần phải lập trình.
2.1. Thi hành SQL Enterprise Manager
SQL Enterprise Manager là một trong những phần tăng cường quan
trọng nhất của SQL Server 6.5. Nó giúp công việc quản trị cơ sở dữ liệu trở nên dễ dàng hơn nhờ giao diện đồ hoạ thay vì phải dùng dòng lệnh như trước ( cách này cũng vẫn tồn tại ).
Phóng SQL Enterprise Manager từ biểu tượng nhóm SQL Server . Khi đó, ta có thể truy cập cơ sở dữ liệu trên mạng.
2.2. Dùng SQL Enterprise Manager để tạo thiết bị cơ sở dữ liệu mới
Trước khi tạo cơ sở dữ liệu, ta phải tạo thiết bị cơ sở dữ liệu. Đây là nơi lưu trữ của cơ sở dữ liệu trong không gian SQL Server. Mỗi thiết bị cơ sở dữ liệu có thể chứa nhiều cơ sở dữ liệu.
Một thiết bị cơ sở dữ liệu có thể trải qua nhiều đĩa cứng vật lý. Nhờ đó, ta có thuận lợi là không gian chứa lớn, có thể lên đến Gigabyte, và nếu có một đĩa hư, ta vẫn có thể truy cập được cơ sở dữ liệu chứa trong các đĩa khác.
1. Chọn SQL Enterprise Manager từ nhóm SQL Server
2. Lần đầu thi hành SQL Enterprise Manager, ta phải đăng ký việc cài đặt SQL Server. Nó giúp SQL Enterprise Manager xác định SQL
Server nào ta muốn làm việc, nó cũng cho phép quản lý nhiều SQL
Server.
3. Sau khi đăng ký xong, nhấn nút Close trong hộp thoại Register Server
( Ta chỉ thực hiện điều này một lần. Sau khi làm xong, SQL Enterprise Manager sẽ nhớ cách thức nối với Server ).
2.2.1. Tạo thiết bị cơ sở dữ liệu
1. Trong cửa sổ Server Manager của SQL Enterprise Manager, mở thư mục Database Devices bên dưới SQL Server.
2. Ta thấy có một số thiết bị mặc định ( như là Master và Temp_data ) được cung cấp bởi chương trình cài đặt.
3. Nhấn nút phải chuột trên thư mục Database Devices, từ menu bật ra, chọn New Device.
4. Hộp thoại New Database Device mở ra.
• Tạo thiết bị cơ sở dữ liệu mới từ hộp thoại New Database Device. 1. Trong ô Name, nhập họ tên cho thiết bị mới.
2. Từ hộp kết hợp Location, chọn ổ đĩa chứa thiết bị cơ sở dữ liệu. Đồ thị bên dưới cho thấy ổ đĩa nào đang có sẵn và khoảng trống đĩa hiện hành.
Megabyte ). Điều khiển nút trượt bên phải ô Size cho thấy tỉ lệ giữa kích cỡ của thiết bị với tổng số khoảng trống đĩa. Nó cũng cho phép ta điều chỉnh kích cỡ bằng đồ họa.
4. Nhấn chọn Create Now để tạo thiết bị.
5. SQL Enterprise Manager hiển thị thông báo rằng thiết bị vừa được
tạo xong. Nếu đóng hộp thoại, ta sẽ thấy thiết bị xuất hiện trong thư mục Database Device của cửa sổ Server Manager.
2.2.2 Tạo thiết bị định kỳ
1. Trong hộp thoại New Database Device, chỉ định thuộc tính của thiết bị, nhấn nút Schedule. Hộp thoại Schedule Database xuất hiện.
2. Ấn nút One Time.
3. Trong hộp văn bản, chỉ ra ngày giờ ta muốn SQL Server tạo thiết bị, nhấn OK.
2.3. Chỉ định thiết bị mặc định
Thiết bị mặc định khi cài đặt là master, dùng cho mục đích quản lí. Nếu không thay đổi, cơ sở dữ liệu sẽ được tạo nên trên thiết bị master.
Khi mới tạo thiết bị, ta có thể quy định thiết bị mặc định bằng cách chọn và hộp đánh dấu Default Devices trong hộp thoại New Database Device. Hay là, để chuyển một thiết bị hiện hành thành mặc định:
1) Nhấn đúp lên thiết bị trong cửa sổ Server Manager. 2) Hộp thoại Edit Database Device xuất hiện.
3) Chọn vào hộp đánh dấu Default Device, rồi nhấn vào Change now. Thiết bị được chuyển thành mặc định.
1. Nhấn nút phải chuột trên thư mục Database trong cửa sổ Server
Manager của SQL Enterprise Manager.
2. Chọn New Database từ menu bật ra. 3. Hộp thoại New Database xuất hiện. 4. Nhập tên cơ sở dữ liệu trong ô Name.
5. Trong hộp thoại Size, nhập kích cỡ cơ sở dữ liệu tính theo Megabyte. Cơ sở dữ liệu có thể chiếm toàn bộ thiết bị mà nó đang được chứa, nhưng không thể lớn hơn. Có thể điều chỉnh lại kính cỡ cơ sở dữ liệu về sau nhưng tốt nhất là nên dành sẵn khoảng trống tối đa cho cơ sở dữ liệu, vì vậy việc điều chỉnh về sau hơi bất tiện.
6. Nhấn Create Now.
7. Cơ sở dữ liệu mới được tạo và hộp thoại New Database đóng. Ta sẽ thấy cơ sở dữ liệu mới xuất hiện trong thư mục Database của cửa sổ Server Manager.
2.5. Tạo bảng trong cơ sở dữ liệu
Có 2 cách tạo bảng :
1. Dùng SQL DDL( Ngôn ngữ định nghĩa dữ liệu – Database Define Language), Kỹ thuật này dùng với cơ sở dữ liệu Jet.
2. Dùng tính năng đồ hoạ của SQL Enterprise Manager.
Cả hai cách này có những ưu và nhược điểm. SQL DDL rất phức tạp nhất là nếu ta chưa quen với SQL. Sử dụng SQL dùng chương trình để tạo cơ sở dữ liệu. Sử dụng SQL Enterprise Manager, trái lại, cho phép tạo cấu trúc cơ sở dữ liệu dễ dàng và nhanh chóng thông qua thế mạnh trực quan đồ hoạ.
• Sử dụng SQL Enterprise Manager để tạo bảng trong SQL Server
Sau khi tạo một cơ sở dữ liệu trong SQL Server ta có thể dùng SQL Enterprise Manager để tạo bảng trong cơ sở dữ liệu:
mở rộng cơ sở dữ liệu mà ta muốn tạo bảng.
2. Hai thư mục xuất hiện bên dưới thư mục cơ sở dữ liệu là: Groups/
Users và Objects. Nhấn nút phải chuột lên thư mục Objects.
3. Từ menu bật ra, chọn New Table. 4. Hộp thoại Manager Talbes xuất hiện .
5. Nhập tên trường vào cột có tên là Column Name.
6. Nhấn Tab để chuyển sang cột kế, Datatype để chọn kiểu dữ liệu. 7. Trong cột Size ta nhập kích thước dữ liệu.
8. Cột Null xác định trường có cho phép giá trị Null hay không. Nếu hộp được đánh dấu thì có thể nhập giá trị Null vào trường.
9. Nhập vào định nghĩa và kiểu dữ liệu của các trường khác vào lưới cùng lúc.
10.Khi đã hoàn tất thiết kế bảng, nhấn nút Save ở phần trên trong hộp thoại.
11.Hộp thoại Specisy Table Name xuất hiện. Nhập tên bảng và nhấn OK. 12.Bảng mới được tạo và xuất hiện trong cửa sổ Server Manager.
2.6. Tạo cột định danh để xác định duy nhất các mẩu tin
Từng mẫu tin có một thông tin duy nhất xác định mẫu tin đó. Cột định danh phải được tạo vào lúc tạo bảng, bởi vì SQL Server yêu cầu trường bất kỳ được tạo sau này phải cho phép giá trị Null, trường khác Null chỉ có thể được tạo vào lúc tạo bảng. Để tạo một cột định danh sử dụng SQL Enterprise Manager ta theo các bước sau:
1. Trong hộp thoại Manager Tables, tạo một trường mới gọi là ID. Kiểu dữ liệu là int. Đây là kiểu 4 byte, tương tự kiểu dữ liệu của Visual Basic, vì vậy giá trị int trong SQL Server tương đương long integer.
2. Bỏ dấu chọn trong hộp Null. Đảm bảo rằng giá trị Null không được chèn vào cột này, cột này trở thành cột định danh.
3. Nhấn nút Advanced Features trong hộp thoại, nó mở rộng thêm hộp thoại.
4. Trong hộp kết hợp Identity Column, chọn tên trường làm cột định danh. Ta có một tuỳ chọn để có thể quy định giá trị trong hộp Seed