Bài giảng Cơ sở Dữ liệu SQL – Phần 1 – Thiết kế CSDL và Truy vấn
* Kết nối SQL Server
Chạy chương trình HeidiSQL và nối kết vào SQL Server:
IT-1: Tên máy
Nếu khơng kết nối được thì cần cài Visual Studio 2008 (máy chạy Windows XP) hay Visual Studio
2010 (máy chạy Windows 7 trở lên)
* Tạo CSDL: Database QLHH
Kích chọn phần thực hiện Truy vấn SQL
rồi nhập lệnh
CREATE DATABASE "QLHH";
Bấm phím [F9] để thực thi hoặc nút mũi tên xanh giống như hình trên
USE "QLHH";
Thực thi xong chọn nút Refresh ([F5]) ñề quan sát kết quả. Bấm chọn vào Database QLHH
* Tạo Table: KhachHang
CREATE TABLE "KhachHang" (
"MaKH" NVARCHAR(4) NOT NULL,
"TenKH" NVARCHAR(30) NULL DEFAULT NULL,
"DiaChi" NVARCHAR(255) NULL DEFAULT NULL,
"DThoai" NVARCHAR(255) NULL DEFAULT NULL,
PRIMARY KEY ("MaKH")
)
;
Biên soạn: Th.s Nguyễn Anh Việt
Trang 1
Bài giảng Cơ sở Dữ liệu SQL – Phần 1 – Thiết kế CSDL và Truy vấn
* Tạo Table: MatHang
CREATE TABLE "MatHang" (
"MaMH" NVARCHAR(4) NOT NULL,
"TenMH" NVARCHAR(255) NOT NULL,
"DVT" NVARCHAR(255) NULL DEFAULT NULL,
"DonGia" INT NULL DEFAULT NULL,
PRIMARY KEY ("MaMH")
)
;
* Tạo Table: DonDH
CREATE TABLE DonDH (
"MaDH" NVARCHAR(4) NOT NULL,
"NgayDH" DATETIME NULL DEFAULT NULL,
"NgayGH" DATETIME NULL DEFAULT NULL,
"MaKH" NVARCHAR(255) NULL DEFAULT NULL,
PRIMARY KEY ("MaDH")
)
;
* Tạo Table: ChiTietDH
CREATE TABLE "ChiTietDH" (
"MaDH" NVARCHAR(4) NOT NULL,
"MaMH" NVARCHAR(4) NOT NULL,
"SoLuong" INT NULL DEFAULT NULL
)
;
* Nhập dữ liệu cho Table: KhachHang
Biên soạn: Th.s Nguyễn Anh Việt
Trang 2
Bài giảng Cơ sở Dữ liệu SQL – Phần 1 – Thiết kế CSDL và Truy vấn
* Nhập dữ liệu cho Table: MatHang
* Nhập dữ liệu cho Table: DonDH
* Nhập dữ liệu cho Table: ChiTietDH
Biên soạn: Th.s Nguyễn Anh Việt
Trang 3
Bài giảng Cơ sở Dữ liệu SQL – Phần 1 – Thiết kế CSDL và Truy vấn
* Khoá ngoại
Là các cột ở một Table khác nhưng có liên kết dữ liệu đến một cột là khố chính của một Table
Khố ngoại
Foreign key
* Hiển thị tất cả các Đơn ñặt hàng
SELECT DonDH.MaDH, DonDH.MaKH, KhachHang.TenKH, MatHang.TenMH,
MatHang.DVT, MatHang.DonGia, ChiTietDH.SoLuong, [DonGia]*[SoLuong] AS
[Thành tiền]
FROM MatHang INNER JOIN (KhachHang INNER JOIN (DonDH INNER JOIN ChiTietDH
ON DonDH.MaDH = ChiTietDH.MaDH) ON KhachHang.MaKH = DonDH.MaKH) ON
MatHang.MaMH = ChiTietDH.MaMH;
Muốn giới hạn chỉ hiển thị các đơn đặt hàng của cơng ty Hồng Hơn, thêm vào điều kiện WHERE
SELECT DonDH.MaDH, DonDH.MaKH, KhachHang.TenKH, MatHang.TenMH,
MatHang.DVT, MatHang.DonGia, ChiTietDH.SoLuong, [DonGia]*[SoLuong] AS
[Thành tiền]
FROM MatHang INNER JOIN (KhachHang INNER JOIN (DonDH INNER JOIN ChiTietDH
ON DonDH.MaDH = ChiTietDH.MaDH) ON KhachHang.MaKH = DonDH.MaKH) ON
MatHang.MaMH = ChiTietDH.MaMH
Where KhachHang.TenKH = 'Hoàng Hôn'
Biên soạn: Th.s Nguyễn Anh Việt
Trang 4
Bài giảng Cơ sở Dữ liệu SQL – Phần 1 – Thiết kế CSDL và Truy vấn
Tuy nhiên, để tìm các đơn đặt hàng của Biti’s thì khó hơn một chút:
SELECT DonDH.MaDH, DonDH.MaKH, KhachHang.TenKH, MatHang.TenMH,
MatHang.DVT, MatHang.DonGia, ChiTietDH.SoLuong, [DonGia]*[SoLuong] AS
[Thành tiền]
FROM MatHang INNER JOIN (KhachHang INNER JOIN (DonDH INNER JOIN ChiTietDH
ON DonDH.MaDH = ChiTietDH.MaDH) ON KhachHang.MaKH = DonDH.MaKH) ON
MatHang.MaMH = ChiTietDH.MaMH
Where KhachHang.TenKH = 'Biti' + Char(39) + 's'
* Hiển thị các Đơn đặt hàng có Ngày giao hàng trong thời điểm từ 1-3-2004 ñến 30-4-2004
Biên soạn: Th.s Nguyễn Anh Việt
Trang 5