1. Trang chủ
  2. » Cao đẳng - Đại học

Tài liệu giảng dạy Quản trị cơ sở dữ liệu SQL server (NgànhNghề Công nghệ thông tin – Trình độ Cao đẳng)

95 7 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Quản trị cơ sở dữ liệu SQL Server
Tác giả Trần Xuân Hải, Nguyễn Tiến Dũng
Người hướng dẫn Ths. Trịnh Công Nhựt
Trường học Trường Cao Đẳng Kinh Tế - Kỹ Thuật VINATEX TP.HCM
Chuyên ngành Công nghệ Thông tin
Thể loại Tài liệu giảng dạy
Năm xuất bản 2019
Thành phố TP. HCM
Định dạng
Số trang 95
Dung lượng 1,95 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • Chương 1: Giớ i thi ệ u v ề SQL Server (8)
    • 1.1 Cài đặt SQL Server 2005 (13)
      • 1.1.1 Các yêu cần cho hệ thống 32 bit (0)
      • 1.1.2 Các bước cài đặt SQL Server 2005 Express Edition (15)
    • 1.2 Một số thao tác cơ bản trên SQL Server 2005 (24)
      • 1.2.1 Tạo một CSDL mới (24)
      • 1.2.2 T ạ o b ả ng m ớ i (25)
      • 1.2.3 Xóa b ả ng, xóa CSDL (27)
      • 1.2.4 M ở m ột query editor để vi ế t câu l ệ nh SQL (27)
  • Chương 2: Ngôn ngữ định nghĩa dữ li ệ u – DDL (8)
    • 2.1 T ạ o và ch ỉ nh s ửa cơ sở d ữ li ệ u (30)
      • 2.1.1 T ạ o CSDL (30)
      • 2.1.2 Ch ỉ nh s ử a CSDL (30)
      • 2.1.3 Xóa CSDL (0)
    • 2.2 Các ki ể u d ữ li ệ u (8)
    • 2.3 T ạ o b ả ng (8)
    • 2.4 Các loại ràng buộc (8)
      • 2.4.1 Ràng bu ộ c CHECK (33)
      • 2.4.2 Ràng bu ộ c PRIMARY KEY (34)
      • 2.4.3 Ràng bu ộ c FOREIGN KEY (35)
    • 2.5 S ửa đổi định nghĩa bả ng (8)
    • 2.6 Xóa b ả ng (9)
    • 2.7 Thêm, c ậ p nh ậ t và xóa d ữ li ệ u (39)
      • 2.7.1 Thêm d ữ li ệ u (39)
      • 2.7.2 C ậ p nh ậ t d ữ li ệ u (40)
      • 2.7.3 Xóa d ữ li ệ u (40)
  • Chương 3: Ngôn ngữ thao tác d ữ li ệ u – DML (9)
    • 3.1 Câu lệnh SELECT (50)
    • 3.2 Danh sách chọn trong câu lệnh SELECT (51)
      • 3.2.1 Thay đổi tiêu đề c ộ t (52)
      • 3.2.2 S ử d ụ ng c ấ u trúc CASE … WHEN (53)
      • 3.2.3 Lo ạ i b ỏ các dòng d ữ li ệ u trùng nhau (54)
      • 3.2.4 L ự a ch ọ n m ộ t s ố lượ ng gi ớ i h ạ n (54)
    • 3.3 M ệnh đề WHERE – điề u ki ệ n truy v ấ n d ữ li ệ u (55)
      • 3.3.1 Các toán t ử so sánh (55)
      • 3.3.2 Ki ể m tra gi ớ i h ạ n c ủ a d ữ li ệ u (56)
      • 3.3.3 Toán t ử làm vi ệ c trên t ậ p h ợ p (IN/NOT IN) (56)
      • 3.3.4 Toán t ử LIKE/NOT LIKE và ký t ự đạ i di ệ n (57)
      • 3.3.5 Giá tr ị NULL (57)
      • 3.3.6 S ắ p x ế p truy v ấ n (0)
    • 3.4 Phép n ố i (59)
      • 3.4.1 Phép n ố i b ằ ng (59)
      • 3.4.2 Phép t ự n ố i (60)
      • 3.4.3 Phép nối ngoài (61)
    • 3.5 Mệnh đề GROUP BY (63)
      • 3.5.1 Th ố ng kê trên toàn b ộ d ữ li ệ u (63)
      • 3.5.2 Th ố ng kê trên nhóm (0)
      • 3.5.3 M ệnh đề HAVING ch ỉ định điề u ki ệ n trong hàm g ộ p (0)
    • 3.6 Truy v ấ n con (65)
      • 3.6.1 Phép so sánh đố i v ớ i k ế t qu ả truy v ấ n con (0)
      • 3.6.2 Toán t ử IN/NOT IN (66)
      • 3.6.3 Truy v ấ n con v ớ i EXISTS (66)
      • 3.6.4 Truy v ấ n con và m ệnh đề HAVING (66)
    • 3.7 Khung nhìn – VIEW (67)
      • 3.7.1 Tạo khung nhìn (67)
      • 3.7.2 Xóa khung nhìn (0)
  • Chương 4: Thủ t ục lưu trữ - Strore procedure (0)
    • 4.1 Khái ni ệ m (72)
    • 4.2 Ngôn ng ữ T-SQL (72)
      • 4.2.1 Khai báo bi ế n (72)
      • 4.2.2 Gán giá tr ị cho bi ế n (72)
      • 4.2.3 Các hàm thườ ng dùng trong SQL (72)
      • 4.2.4 C ấu trúc điề u khi ể n (74)
    • 4.3 T ạ o – Xóa th ủ t ụ c (76)
      • 4.3.1 T ạ o th ủ t ụ c (76)
      • 4.3.2 Th ự c thi th ủ t ụ c (76)
      • 4.3.3 Bi ế n trong th ủ t ục lưu trữ (76)
      • 4.3.4 Giá tr ị tr ả v ề trong th ủ t ục lưu trữ (77)
      • 4.3.5 Tham s ố v ớ i giá tr ị m ặc đị nh (0)
      • 4.3.6 S ửa đổ i th ủ t ụ c (0)
      • 4.3.7 Xóa th ủ t ụ c (0)
  • Chương 5: Hàm (9)
    • 5.1 Khái ni ệ m – Phân lo ạ i (81)
    • 5.2 Hàm vô hướ ng – Scalar UDF (81)
    • 5.3 Hàm n ộ i tuy ế n – Inline UDF (82)
    • 5.4 Hàm bao g ồ m nhi ề u câu l ệ nh bên trong – Multi statement UDF (83)
    • 5.5 Thay đổ i hàm (84)
    • 5.6 Xóa hàm (85)

Nội dung

Tài liệu giảng dạy bao gồm: Chương 1: Giới thiệu về SQL Server 2005 Chương 2: Ngôn ngữ định nghĩa dữ liệu DDL Chương 3: Ngôn ngữ thao tác dữ liệu DML Chương 4: Thủ tục lưu trữ Stored Pro

Giớ i thi ệ u v ề SQL Server

Cài đặt SQL Server 2005

1.1.1 Các yêu cầu cho hệ thống 32bit

Processor PIII 600MHZ hoặc cao hơn

Tốt nhất: 1GHZ hoặc cao hơn

• Microsoft Windows 2000 Server Service Pack 4 hoặc cao hơn

• Windows Server 2003 Standard, Enterprise, or Datacenter editions with Service Pack 1 hoặc cao hơn

• Windows Server 2003 Web Edition SP1

• Windows Small Business Server 2003 with Service Pack 1 hoặc cao hơn

• Vista Home Basic và các phiên bản cao hơn (SQL Express SP1 and SQL Express Advanced SP2)

• Windows XP Embedded SP2 Feature Pack 2007

• Windows Embedded for Point of Service SP2

• 350 MB ổ cứng cho các cài đặt cơ bản

• 425 MB ổ cứng cho các cài đặt SQL Server Books Online, SQL Server Mobile Books Online, và sample databases

Memory 192 MB RAM hoặc cao hơn; tốt nhất: 512 MB hoặc cao hơn

Drive CD-ROM or DVD-ROM drive

Display Super VGA (1,024x768) hoặc cao hơn

Microsoft Internet Explorer 6.0 SP1 hoặc cao hơn

Chi tiết yêu cầu hệ thống cho các phiên bản Microsoft SQL Server 2005 có thể tham khảo tại địa chỉ: http://www.microsoft.com/sql/prodinfo/sysreqs/default.mspx

Download and install Microsoft NET Framework 2.0, the prerequisite for SQL Server setup To successfully install SQL Server Express Edition or other SQL Server 2005 variants, ensure Microsoft NET Framework 2.0 is installed first.

Gỡ bỏ các phiên bản Beta, CTP hoặc Tech Preview của SQL Server 2005, Visual Studio

Cài đặt SQL Server 2005 Express Edition: Microsoft SQL Server 2005 Express Edition là phiên bản miễn phí, dễ sử dụng và nhẹ của Microsoft SQL Server 2005 SQL Server 2005 Express Edition được tích hợp với Visual Studio 2005, tạo điều kiện thuận lợi cho việc phát triển các ứng dụng hướng cơ sở dữ liệu Phiên bản này có thể được sử dụng trong các ứng dụng thương mại và dễ dàng cập nhật lên các phiên bản cao hơn khi cần thiết. -**Support Pollinations.AI:**🌸 **Quảng cáo** 🌸 Khám phá Pollinations.AI API miễn phí giúp tối ưu hóa nội dung SEO cho bài viết về [SQL Server 2005 Express Edition](https://pollinations.ai/redirect/kofi)!

SQL Server Management Studio Express provides a user-friendly interface to interact with the components of Microsoft SQL Server 2005 Express Edition Before installing SQL Server Management Studio Express, MSXML 6.0 must be installed.

Download tại địa chỉ: http://www.microsoft.com/express/sql/download/default.aspx

1.1.2 Các bước cài đặt SQL Server 2005 Express Edition

Double click vào file cài đặt Microsoft SQL Server Express Edition

L ư u ý : SQL Server 2005 có hai kiểu authentication (kiểm tra người dùng)

Windows authentication mode trong SQL Server 2005 phụ thuộc hoàn toàn vào kiểm tra người dùng của Windows Khi người dùng được cấp quyền đăng nhập vào Windows, người dùng đó sẽ có quyền đăng nhập vào SQL Server, do cơ chế xác thực được đồng bộ với hệ điều hành Kiểu kiểm tra người dùng này thường được sử dụng khi ứng dụng truy xuất dữ liệu và SQL Server được cài đặt trên cùng một máy tính, giúp quản lý quyền truy cập dễ dàng và tăng cường an ninh cho hệ thống.

SQL Server authentication mode cho phép kiểm tra người dùng riêng biệt với Windows Dù người dùng có quyền đăng nhập vào Windows, họ chưa chắc đã có quyền đăng nhập vào SQL Server Để đăng nhập vào SQL Server, người dùng phải có một username và password do SQL Server quản lý Chế độ kiểm tra này thường được sử dụng khi ứng dụng khai thác dữ liệu và SQL Server không được cài trên cùng một máy tính.

Chọn chế độ Mixed mode trong SQL Server cho phép dùng cả hai kiểu xác thực Windows và SQL Server khi cần thiết, mang lại sự linh hoạt quan trọng cho việc xây dựng các ứng dụng CSDL Đây là một thiết lập hữu ích cho các dự án phát triển ứng dụng cơ sở dữ liệu nhằm đảm bảo khả năng đăng nhập linh hoạt và quản lý quyền truy cập Để đăng nhập vào SQL Server khi phát triển ứng dụng truy cập CSDL từ máy này sang máy khác, người dùng cần điền mật khẩu vào hai ô bên dưới để xác thực thành công.

Cài đặt SQL Server Management Studio Express Sau khi cài đặt, đăng nhập vào SQL Server 2005 Express Edition như sau:

During login, you can choose between Windows Authentication and SQL Server Authentication If you select SQL Server Authentication, you must enter a password, which is set during the installation of SQL Server 2005 Express Edition.

During the installation of SQL Server 2005 Express Edition, if you disable SQL Server from starting automatically at boot, clicking Connect will trigger an error; to fix this, go to Start, Run, type services.msc, and press Enter.

Tìm service SQL Server (SQLExpress), double click và trong comboxbox Startup type chọn Automatic -> Apply - >Start -> OK

Giao diện sau khi đăng nhập thành công

Ngôn ngữ định nghĩa dữ li ệ u – DDL

S ửa đổi định nghĩa bả ng

Thực hành, thí nghiệm, thảo luận, bài tập

1 Chương 1: Giới thiệu về SQL Server 2005 3 1 2

2 Chương 2: Ngôn ngữ định nghĩa dữ liệu

3 Chương 3: Ngôn ngữ thao tác dữ liệu

4 Chương 4: Thủ tục lưu trữ (Stored

Chương 1: Giới thiệu về SQL Server 2005 Thời gian: 3 giờ

- Trình bày được cách cài đặt SQL Server.

- Cài đặt được phần mềm vào máy tính.

- Nêu các thao tác cơ bản trong SQL Server.

- Thực hiện các thao tác cơ bản trong SQL Server

Chương 2: Ngôn ngữ định nghĩa dữ liệu (DDL) Thời gian: 15 giờ

- Trình bày được cách tạo và chỉnh sửa CSDL

- Nêu được các kiểu ràng buộc và cách thêm, cập nhật, xóa dữ liệu trong bảng.

- Tạo và chỉnh sửa được CSDL.

- Tạo bảng và thực hiện ràng buộc trên các bảng.

- Thực hiện được xóa bảng, thêm, cập nhật, xóa dữ liệu trong bảng.

2.1.Tạo và chỉnh sửa CSDL Thời gian: 2 giờ

2.2.Các kiểu dữ liệu Thời gian: 1 giờ

2.3.Tạo bảng Thời gian: 2 giờ

Xóa b ả ng

2.7.Thêm, cập nhật, xóa dữ liệu trong bảng Thời gian: 3 giờ

Kiểm tra Thời gian: 1 giờ

2.7.Khung nhìn (view) Thời gian: 2 giờ

Kiểm tra Thời gian: 2 giờ

2.1.Khái niệm Thời gian: 2 giờ

Chương 3: Ngôn ngữ thao tác dữ liệu (DML) Thời gian: 15 giờ

- Trình bày được cách tạo câu lệnh Select.

- Nêu đươc các cú pháp thường dùng trong câu lệnh Select.

- Tạo được câu lệnh Select với các cú pháp khác nhau như dùng where, phép nối, group by, truy vấn con…

2.1.Câu lệnh Select Thời gian: 1 giờ

2.2.Danh sách chọn trong câu lệnh SELECT Thời gian: 1 giờ

2.3.Mệnh đề Where Thời gian: 3 giờ

2.4.Phép nối Thời gian: 2 giờ

2.5.Group By Thời gian: 2 giờ

2.6.Truy vấn con Thời gian: 2 giờ

Chương 4: Thủ tục lưu trữ (Stored Procedure) Thời gian: 12 giờ

- Nêu được cách tạo T_SQL, cách tạo và xóa thủ tục.

- Tạo được các câu lệnh tạo và xóa thủ tục trong SQL Server.

2.2.Ngôn ngữ T_SQL Thời gian: 5 giờ

2.3.Tạo - xóa thủ tục Thời gian: 5 giờ

Chương 5: Hàm (Funtion) Thời gian: 15 giờ

- Nêu được cách tạo các hàm vô hướng, hàm nội tuyến, hàm bao và cách thay đổi và xóa hàm

- Tạo, thay đổi và xóa được các hàm hàm vô hướng, hàm nội tuyến và hàm bao

2.1 Khái niệm Thời gian: 1 giờ

2.2 Hàm vô hướng (Scalar UDF) Thời gian: 2 giờ

2.3 Hàm nội tuyến (Inline UDF) Thời gian: 2 giờ 2.4 Hàm bao gồm nhiều câu lệnh bên trong

(Multi-statement UDF) Thời gian: 3 giờ

2.5 Thay đổi hàm Thời gian: 3 giờ

2.6 Xóa hàm Thời gian: 2 giờ

Kiểm tra Thời gian: 2 giờ

2.3 Tạo Trigger Thời gian: 5 giờ

IV Điều kiện thực hiện môn học:

1 Phòng học chuyên môn hóa/nhà xưởng: phòng lab tin học

2 Trang thiết bị máy móc: máy vi tính có phần mềm chuyên dụng.

3 Học liệu, dụng cụ, nguyên vật liệu: sách, tập, máy tính có phần mềm chuyên dụng.

4 Các điều kiện khác: không.

V Nội dung và phương pháp đánh giá:

+ Trình bày được quá trình cài đặt và quản trị SQL Server.

Để nắm vững một hệ quản trị cơ sở dữ liệu, cần hiểu cấu trúc bên trong của CSDL và cách tổ chức bảng dữ liệu, từ đó nắm các khái niệm như khóa chính (primary key) và khóa ngoại (foreign key), cùng các ràng buộc miền giá trị (domain constraints) để đảm bảo tính nhất quán của dữ liệu Việc tạo chỉ mục (index) giúp tăng tốc độ truy vấn và tối ưu hiệu suất, trong khi thiết lập giá trị mặc định đảm bảo dữ liệu có giá trị hợp lệ khi trường tương ứng trống Cấu trúc của view cho phép truy vấn dữ liệu một cách linh hoạt mà không làm thay đổi bảng gốc; thủ tục lưu trữ (store procedure) và trigger tự động hóa các thao tác và kiểm soát luồng dữ liệu Cơ chế phân quyền quy định ai được truy cập và thao tác với dữ liệu ở mức độ nào, còn các thao tác nhập khẩu (import), xuất khẩu (export), sao lưu và phục hồi (backup và restore) là các hoạt động quản trị thiết yếu để bảo đảm an toàn và khả năng phục hồi của dữ liệu trong thực tế Hiểu đầy đủ các thành phần này giúp thiết kế cơ sở dữ liệu tối ưu, an toàn và dễ bảo trì, phù hợp với yêu cầu vận hành và chuẩn hóa dữ liệu.

Bài viết trình bày cú pháp để tạo, thay đổi hoặc xóa CSDL, bảng và các đối tượng liên quan như khóa chính, khóa ngoại, default, check, rule và unique, đồng thời quản lý index, view, stored procedure và trigger Nội dung mô tả chi tiết các thao tác thêm, xóa hoặc sửa trên bảng để đảm bảo tính nhất quán dữ liệu và tối ưu hiệu suất hệ quản trị cơ sở dữ liệu Các ví dụ cú pháp kèm theo giúp người đọc nắm vững cách triển khai thực tế, áp dụng linh hoạt trong quản trị CSDL và các hoạt động bảo trì, bổ sung cấu trúc dữ liệu một cách hiệu quả.

+ Áp dụng được các thao tác import, export, backup và restore trong SQL Server

+ Thực hiện được các thao tác trên một hệ quản trị CSDL SQL Server (kể cả phần quản trị và viết mã lệnh).

Vận dụng hiệu quả các thao tác quản trị dữ liệu, bao gồm import, export, backup và restore, kết hợp với cơ chế phân quyền trên nền hệ quản trị CSDL chuyên nghiệp SQL Server nhằm đảm bảo tính nhất quán, an toàn và khả năng phục hồi của dữ liệu Quản trị dữ liệu trên nền tảng này yêu cầu thiết kế quy trình nhập/xuất dữ liệu và sao lưu phù hợp, đồng thời kiểm soát quyền truy cập người dùng dựa trên vai trò để tối ưu hóa vận hành, tăng tính bảo mật và giảm thiểu rủi ro cho hệ thống CSDL SQL Server.

+ Sử dụng được các cú pháp thao tác trên CSDL, bảng, view, store procedure, trigger, v.v để hỗ trợ công việc lập trình với CSDL.

- Năng lực tự chủ và trách nhiệm:

+ Tích cực tham gia tự học, tham gia xây dựng bài, làm việc nhóm

Các kiến thức và kỹ năng trên sẽ được đánh giá qua các nội dung tự nghiên cứu,

Chương 6: Bẫy lỗi (Trigger) Thời gian: 15 giờ

- Nêu được cách sử dụng và tạo các Trigger.

- Tạo được các Trigger trong SQL Server.

2.1 Đặc điểmcủa Trigger Thời gian: 5 giờ

2.2 Các trường hợpsử dụng Trigger Thời gian: 5 giờ ý thức thực hiện môn học, kiểm tra thường xuyên, kiểm tra định kỳ và kiểm tra kết thúc môn học:

Điểm môn học được xác định bằng trung bình các điểm kiểm tra gồm tự nghiên cứu, kiểm tra thường xuyên, kiểm tra định kỳ có trọng số 0,4 và điểm thi kết thúc môn học có trọng số 0,6.

Điểm trung bình các điểm kiểm tra được tính là trung bình có trọng số của ba loại điểm: kiểm tra thường xuyên, kiểm tra định kỳ và tự nghiên cứu Trong đó, điểm kiểm tra thường xuyên và điểm tự nghiên cứu được tính với hệ số 1, còn điểm kiểm tra định kỳ có hệ số 2, nên công thức tính là Điểm trung bình = (Điểm kiểm tra thường xuyên × 1 + Điểm kiểm tra định kỳ × 2 + Điểm tự nghiên cứu × 1) / 4.

- Hình thức thi: thực hành (90 phút) (được thông báo vào đầu mỗi học kỳ).

VI Hướng dẫn thực hiện môn học:

1 Phạm vi áp dụng môn học: Chương trình môn học được sử dụng để giảng dạy cho trình độ Cao đẳng.

2 Hướng dẫn về phương pháp giảng dạy, học tập môn học:

 Trước khi giảng dạy cần phải căn cứ vào nội dung của từng bài học chuẩn bịđầy đủ các điều kiện cần thiết đểđảm bảo chất lượng giảng dạy

 Khi thực hiện chương trình môn học cần xác định những điểm kiến thức cơ bản, xác định rõ các yêu cầu về kiến thức, kỹnăng ở từng nội dung

 Cần liên hệ kiến thức với thực tế sản xuất và đời sống, đặc biệt là các phần mềm thực tế sử dụng mạng Internet có hiệu quả

 Chủ động, tích cực tiếp thu kiến thức, tự nghiên cứu, chuẩn bị bài theo nội dung giảng viên hướng dẫn, yêu cầu trước khi đến lớp

Để nâng cao hiệu quả học tập của môn học, người học nên làm đầy đủ các bài tập và tự nghiên cứu các bài toán thực tế có liên quan để củng cố, ghi nhớ và khắc sâu kiến thức đã học.

 Xây dựng kế hoạch tự học, tự nghiên cứu cho cá nhân

Để đáp ứng yêu cầu của chương trình môn học, sinh viên cần tham dự ít nhất 70% thời gian học lý thuyết và hoàn thành đầy đủ các bài học tích hợp, bài học thực hành, thực tập cũng như các yêu cầu của môn học được quy định trong chương trình.

3 Những trọng tâm cần lưu ý:

[1] Hệ quản trị CDSL SQL Server 2005 - Trần Xuân Hải, Nguyễn Tiến Dũng

- Ngôn ngữ định nghĩa dữ liệu (DDL).

- Ngôn ngữ thao tác dữ liệu (DML)

- Thủ tục lưu trữ (Stored Procedure).

[2] Đề cương bài giảng HỆ QUẢN TRỊ CSDL SQL SERVER, Trường CĐ Kinh Tế -

Kỹ Thuật Vinatex TP.HCM

[3] Phạm Hữu Khang –Đoàn Thiện Ngân; Quản trị SQL Server 2000; NXB Thống kê.

• Windows XP with Service Pack 2 hoặc cao hơn

Chương 1 Giới thiệu về SQL Server 2005

SQL Server 2005 is a relational database management system (RDBMS) that uses Transact-SQL to exchange data between a client computer and the SQL Server server An RDBMS comprises databases, the database engine, and the applications that manage data and the other components inside the system.

SQL Server 2005 is optimized to run in Very Large Database Environment (VLDB) settings that scale to terabytes and can serve thousands of users simultaneously It can integrate smoothly with other Microsoft server solutions, including Internet Information Services (IIS), E‑Commerce Server, and Proxy Server, enabling a cohesive and high‑performance infrastructure.

Các phiên bản của SQL Server 2005:

Enterprise cho phép mở rộng tối đa với số lượng CPU và kích thước cơ sở dữ liệu không giới hạn; đồng thời RAM được hỗ trợ không giới hạn về lý thuyết, tùy thuộc vào giới hạn RAM tối đa mà hệ điều hành và các hệ thống 64-bit cho phép.

Standard: Tương tự như bản Enterprise nhưng chỉ hỗ trợ 4 CPU Ngoài ra phiên bản này cũng không được trang bị một số tính năng cao cấp khác

Workgroup: Tương tự bản Standard nhưng chỉ hỗ trợ 2 CPU và tối đa 3GB RAM

Express: Bản miễn phí, hỗ trợ tối đa 1CPU, 1GB RAM và kích thước Database giới hạn trong 4GB

Chi tiết có thể tham khảo tại địa chỉ: http://www.microsoft.com/sql/prodinfo/features/compare-features.mspx

1.1 Cài đặt SQL Server 2005 Express Edition

1.1.1 Các yêu cầu cho hệ thống 32bit

Processor PIII 600MHZ hoặc cao hơn

Tốt nhất: 1GHZ hoặc cao hơn

• Microsoft Windows 2000 Server Service Pack 4 hoặc cao hơn

• Windows Server 2003 Standard, Enterprise, or Datacenter editions with Service Pack 1 hoặc cao hơn

• Windows Server 2003 Web Edition SP1

• Windows Small Business Server 2003 with Service Pack 1 hoặc cao hơn

• Vista Home Basic và các phiên bản cao hơn (SQL Express SP1 and SQL Express Advanced SP2)

• Windows XP Embedded SP2 Feature Pack 2007

• Windows Embedded for Point of Service SP2

• 350 MB ổ cứng cho các cài đặt cơ bản

• 425 MB ổ cứng cho các cài đặt SQL Server Books Online, SQL Server Mobile Books Online, và sample databases

Memory 192 MB RAM hoặc cao hơn; tốt nhất: 512 MB hoặc cao hơn

Drive CD-ROM or DVD-ROM drive

Display Super VGA (1,024x768) hoặc cao hơn

Microsoft Internet Explorer 6.0 SP1 hoặc cao hơn

Chi tiết yêu cầu hệ thống cho các phiên bản Microsoft SQL Server 2005 có thể tham khảo tại địa chỉ: http://www.microsoft.com/sql/prodinfo/sysreqs/default.mspx

To successfully install SQL Server Express Edition or any SQL Server 2005 version, you must first download and install Microsoft NET Framework 2.0 Ensure the NET Framework 2.0 is installed before starting the SQL Server setup to guarantee a smooth installation and proper operation of SQL Server components.

Gỡ bỏ các phiên bản Beta, CTP hoặc Tech Preview của SQL Server 2005, Visual Studio

Cài đặt SQL Server 2005 Express Edition: Microsoft SQL Server 2005 Express Edition là phiên bản miễn phí, dễ sử dụng và “nhẹ” của Microsoft SQL Server 2005 Nó được tích hợp với Visual Studio 2005, tạo sự dễ dàng trong việc phát triển các ứng dụng hướng CSDL SQL Server 2005 Express Edition được tự do sử dụng trong các ứng dụng thương mại và có thể dễ dàng cập nhật lên các phiên bản cao hơn khi cần thiết.

SQL Server Management Studio Express provides a user-friendly interface to interact with the components of Microsoft SQL Server 2005 Express Edition Before installing SQL Server Management Studio Express, ensure MSXML 6.0 is installed.

Download tại địa chỉ: http://www.microsoft.com/express/sql/download/default.aspx

1.1.2 Các bước cài đặt SQL Server 2005 Express Edition

Double click vào file cài đặt Microsoft SQL Server Express Edition

L ư u ý : SQL Server 2005 có hai kiểu authentication (kiểm tra người dùng)

Windows authentication mode trong SQL Server 2005 phụ thuộc vào việc kiểm tra người dùng Windows: khi một người dùng được cấp quyền đăng nhập vào Windows, người đó sẽ có quyền đăng nhập vào SQL Server Kiểu kiểm tra người dùng này thường được áp dụng khi ứng dụng truy xuất dữ liệu và SQL Server được cài đặt trên cùng một máy tính.

Trong chế độ xác thực của SQL Server 2005 (SQL Server authentication mode), việc kiểm tra người dùng không phụ thuộc vào Windows authentication Dù người dùng có quyền đăng nhập vào Windows, họ chưa chắc đã có quyền đăng nhập vào SQL Server, vì để đăng nhập vào SQL Server họ cần có một tài khoản (username) và mật khẩu do SQL Server quản lý Kiểu xác thực này thường được áp dụng khi ứng dụng khai thác dữ liệu và SQL Server không được cài đặt trên cùng một máy tính.

Ngôn ngữ thao tác d ữ li ệ u – DML

Câu lệnh SELECT

Câu lệnh SELECT cho phép truy xuất dữ liệu từ các dòng và cột của một hoặc nhiều bảng và khung nhìn Câu lệnh này có thể thực hiện các phép cơ bản như phép chọn (truy xuất một tập con các dòng), phép chiếu (truy xuất một tập con các cột) và phép nối (liên kết các dòng từ hai hay nhiều bảng để lấy dữ liệu) Ngoài ra, câu lệnh SELECT còn cung cấp khả năng thực hiện các thao tác truy vấn và thống kê dữ liệu phức tạp khác.

Cú pháp chung của câu lệnh SELECT có dạng:

SELECT [ALL | DISTINCT][TOP n] danh_sách_ch ọ n

FROM danh_sách_b ả ng/khung_nhìn

Trong câu lệnh COMPUTE có danh sách hàm gộp và BY danh sách cột, các thành phần này phải tuân thủ đúng cú pháp và thứ tự được quy định Điều cần lưu ý đầu tiên là các thành phần trong câu lệnh SELECT được sử dụng phải tuân theo đúng thứ tự như trong cú pháp; nếu không, câu lệnh sẽ bị xem là không hợp lệ.

Câu lệnh SELECT được sử dụng để tác động lên các bảng dữ liệu và kết quả của câu lệnh này được hiển thị dưới dạng bảng, tức là một tập hợp các dòng và cột; trong hầu hết trường hợp, người dùng sẽ nhận được dữ liệu được sắp xếp thành bảng rõ ràng để tiện quan sát và phân tích Tuy nhiên, khi sử dụng mệnh đề COMPUTE cùng với SELECT, kết quả có thể không tuân theo cấu trúc bảng tiêu chuẩn.

Ví dụ dưới đây hiển thị tên khách hàng và địa chỉ các khách hàng hiện có select customername, gender, address from customers

Danh sách chọn trong câu lệnh SELECT

Danh sách chọn trong câu lệnh SELECT được dùng để chỉ định các trường và các biểu thức cần hiển thị trên kết quả truy vấn Các trường và biểu thức này được nêu ngay sau từ khóa SELECT và phân cách bằng dấu phẩy, cho phép kết hợp dữ liệu từ nhiều cột hoặc tạo giá trị tính toán trong một cột ảo Việc sử dụng danh sách chọn giúp xác định rõ những gì sẽ xuất hiện ở mỗi cột của bảng kết quả, bao gồm các trường cơ bản, các biểu thức tính toán và alias để đổi tên cột cho rõ ràng Các trường hợp sử dụng điển hình của danh sách chọn bao gồm chọn dữ liệu từ bảng, tính toán trên cột, ghép dữ liệu bằng các hàm và phép toán, và áp dụng alias nhằm tối ưu hóa hiển thị kết quả.

Chỉ định cột hiển thị trong kết quả truy vấn cho phép hiển thị đúng dữ liệu cần thiết Khi cần chọn các cột cụ thể, hãy liệt kê tên các cột vào phần SELECT; thứ tự các cột trong kết quả sẽ tuân theo trình tự các trường được liệt kê trong danh sách SELECT.

Lưu ý: Khi truy vấn SQL được thực hiện trên nhiều bảng hoặc khung nhìn và có các trường trùng tên, danh sách SELECT phải ghi đầy đủ dạng tên_bảng.tên_trường để phân biệt Quy tắc này giúp tránh nhầm lẫn giữa các cột từ các bảng khác nhau và đảm bảo kết quả đúng với mục tiêu truy vấn, đặc biệt khi làm việc với nhiều bảng có trường trùng tên Việc sử dụng định danh đầy đủ theo tên bảng trong phần SELECT cũng hỗ trợ việc tối ưu hóa đọc hiểu và tối ưu SEO cho nội dung kỹ thuật liên quan đến SQL.

3.2.1 Thay đổ i tiêu đề các c ộ t:

Trong kết quả truy vấn, tiêu đề mặc định của các cột là tên của các trường tương ứng trong bảng Để làm tiêu đề trở nên thân thiện và dễ đọc hơn, ta có thể đổi tên tiêu đề của các cột Để đặt tiêu đề cho một cột, ta có thể dùng các cách sau: tiêu_đề_cột = tên_trường, hoặc tên_trường AS tiêu_đề_cột, hoặc tên_trường tiêu_đề_cột Việc alias tiêu đề cột giúp người đọc dễ hiểu hơn và cũng hỗ trợ tối ưu hóa SEO cho bảng và kết quả truy vấn bằng cách dùng đúng từ khóa và cú pháp rõ ràng.

Ví dụ: select [Mã khách hàng] = Customerid, customername as [Tên khách hàng], address [Địa chỉ] from Customers

Cấu trúc CASE trong SQL được dùng trong danh sách SELECT để thay đổi kết quả của truy vấn dựa trên các trường hợp khác nhau Cú pháp phổ biến gồm CASE WHEN điều kiện THEN giá trị WHEN điều kiện THEN giá trị … ELSE giá trị END, hoặc CASE cột WHEN giá trị THEN giá trị … END, và kết quả có thể gán với một alias để hiển thị rõ ràng trong kết quả trả về; CASE cho phép đánh giá nhiều điều kiện và trả về giá trị tương ứng khi điều kiện được thỏa mãn, giúp tối ưu hoá việc lọc, chuyển đổi và trực quan hóa dữ liệu trong báo cáo.

WHEN bi ể u_th ứ c_ki ể m_tra THEN k ế t_qu ả

An SQL query demonstrates how to display a customer's gender by mapping a stored value to a readable label It selects CUSTOMERNAME and ADDRESS from the customers table and uses a CASE expression on GENDER to return NAM when the value is 1 (male) and NỮ otherwise (female) The resulting columns are CUSTOMERNAME, ADDRESS, and GIỚI TÍNH, the computed gender label.

Câu lệnh trên cũng có thể viết như sau: select CUSTOMERNAME, ADDRESS, case when GENDER = 1 then 'NAM' else N'NỮ' end as [GIỚI TÍNH] from customers

3.2.3 Lo ạ i b ỏ các dòng d ữ li ệ u trùng nhau:

Distinct là từ khóa giúp loại bỏ các dòng dữ liệu giống nhau trong kết quả truy vấn Trong ví dụ này, bảng customers có hai khách hàng có tên Cao Van Trung; khi chỉ muốn lấy tên khách hàng mà không lặp lại, ta sử dụng từ khóa DISTINCT Cú pháp tương ứng là: SELECT DISTINCT CUSTOMERNAME FROM customers và nó sẽ trả về danh sách tên khách hàng duy nhất, loại bỏ sự trùng lặp.

3.2.4 L ự a ch ọ n m ộ t s ố l ượ ng gi ớ i h ạ n các dòng :

Từ khóa TOP n sẽ trả về chỉ n dòng dữ liệu

Ví dụ: ví dụ sau chỉ trả về duy nhất hai dòng dữ liệu select top 2 Customername from customers

Nếu sử dung TOP n PERCENT thì sẽ trả về n % số dòng dữ liệu hiện có trong CSDL.

M ệnh đề WHERE – điề u ki ệ n truy v ấ n d ữ li ệ u

Trong câu lệnh SELECT, mệnh đề WHERE được sử dụng để xác định điều kiện lọc dữ liệu, giúp giới hạn số bản ghi được truy vấn Sau mệnh đề WHERE là một biểu thức logic, và chỉ những dòng dữ liệu thỏa mãn điều kiện mới được trả về trong kết quả truy vấn Việc nắm vững cách xây dựng biểu thức trong WHERE sẽ tối ưu hóa hiệu suất truy vấn và mang lại kết quả chính xác cho các yêu cầu tìm kiếm dữ liệu.

Ví dụ: Lọc ra thông tin các khách hàng có mã

Trong mệnh đề WHERE thường sử dụng:

Các toán tử kết hợp điều kiện (AND, OR)

Các toán tử so sánh

Kiểm tra giới hạn của dữ liệu (BETWEEN/ NOT BETWEEN)

Kiểm tra khuôn dạng dữ liệu

Example: The following SQL query retrieves each customer's name, birthday formatted as dd/MM/yyyy, and address for customers named Le Thi Hoa who are older than 20 years: SELECT CUSTOMERNAME, CONVERT(varchar, BIRTHDAY, 103) AS BIRTHDAY, ADDRESS FROM Customers WHERE CustomerName = 'Le Thi Hoa' AND YEAR(GETDATE()) - YEAR(BIRTHDAY) > 20.

3.3.2 Ki ể m tra gi ớ i h ạ n c ủ a d ữ li ệ u Để kiểm tra xem giá trị dữ liệu nằm trong (ngoài) một khoảng nào đó, ta sử dụng toán tử BETWEEN/ NOT BETWEEN như sau:

Mệnh đề Ý nghĩa variable BETWEEN a AND b a = 7)

3.3.4 Toán t ử LIKE/ NOT LIKE và ký t ự đạ i di ệ n (WildCard)

LIKE (NOT LIKE) được dùng trong câu lệnh SELECT để mô tả khuôn dạng dữ liệu cần tìm kiếm và cho phép lọc hàng dựa trên sự khớp giữa chuỗi và mẫu đã chọn; chúng được kết hợp với ký tự đại diện % và _ để xây dựng mẫu tìm kiếm linh hoạt, ví dụ SELECT * FROM customers WHERE name LIKE 'Anh%' hoặc SELECT * FROM users WHERE email NOT LIKE '%@example.com' NOT LIKE dùng để loại bỏ những chuỗi không khớp với mẫu, giúp tập kết quả truy vấn trở nên sắc nét Lưu ý về phân biệt chữ hoa chữ thường tùy hệ quản trị cơ sở dữ liệu: có thể cần chuyển đổi chuỗi về cùng chuẩn hoặc sử dụng ILIKE ở PostgreSQL để so khớp không phân biệt chữ hoa chữ thường Để tối ưu hiệu suất, tránh dùng LIKE trên cột được lập chỉ mục lớn hoặc cân nhắc dùng chỉ mục phù hợp, hoặc thay thế bằng các giải pháp tìm kiếm đầy đủ văn bản khi cần so khớp phức tạp; đồng thời ESCAPE cho phép thoát ký tự đặc biệt trong mẫu khi mẫu chứa ký tự có ý nghĩa đặc biệt Những nguyên tắc này làm cho LIKE và NOT LIKE trở nên công cụ mạnh cho tìm kiếm chuỗi trong câu lệnh SELECT.

Ký tự đại diện Ý nghĩa

% Chuỗi ký tự bất kỳ gồm không hoặc nhiều ký tự

Một ký tự bất kì

[] Một ký tự nằm trong giới hạn được chỉ định Ví dụ:[a-f] hàm ý chỉ một trong các ký tự: a, b, c, d, e, f.

[^] Một ký tự không nằm trong giới hạn được chỉ định Ví dụ:[^a-f] hàm ý chỉ một ký tự khác tất cả các ký tự: a, b, c, d, e, f.

Ví dụ: Ví dụ dưới đây tìm ra các khách hàng có tên bắt đều bằng Nguyen select * from customers where customername like 'Nguyen%'

Dữ liệu trong một cột cho phép NULL sẽ nhận giá trị NULL trong các trường hợp sau:

Nếu không có dữ liệu được nhập cho cột và không có mặc định cho cột hay kiểu dữ liệu trên cột đó

Người sử dụng trực tiếp đưa giá trị NULL vào cho cột đó

Một cột có kiểu dữ liệu là kiểu số sẽ chứa giá trị NULL nếu giá trị được chỉ định gây tràn số

Trong mệnh đề WHERE, để kiểm tra giá trị của một cột có giá trị NULL hay không, ta sử dụng cách viết:

WHERE tên_cột IS NULL hoặc:

WHERE tên_cột IS NOT NULL

Ví dụ: select * from Customers where birthday is null

Mặc định, các dòng dữ liệu trong kết quả của câu truy vấn được trả về theo thứ tự tồn tại trong bảng hoặc theo thứ tự của chỉ mục (nếu bảng có chỉ mục) Để sắp xếp dữ liệu theo chiều tăng hoặc giảm của một hoặc nhiều trường, ta dùng mệnh đề ORDER BY trong câu lệnh SELECT và chỉ định các trường cần sắp xếp cùng với hướng ASC hoặc DESC; ORDER BY có thể áp dụng cho nhiều trường để xác định cách xếp hạng khi có giá trị trùng nhau Lưu ý rằng nếu không có ORDER BY, thứ tự kết quả không được đảm bảo và có thể thay đổi giữa các lần truy vấn Có thể kết hợp ORDER BY với LIMIT và OFFSET để giới hạn số dòng trả về hoặc bỏ qua một phần kết quả.

ORDER BY xác định danh sách các cột cần sắp xếp, tối đa 16 cột Dữ liệu có thể được sắp xếp theo chiều tăng ASC hoặc chiều giảm DESC, và mặc định là ASC Khi có nhiều cột sau ORDER BY, việc sắp xếp dữ liệu sẽ được ưu tiên theo thứ tự từ trái sang phải.

An example SQL query demonstrates how to sort customer records by age in descending order It selects CUSTOMERNAME, computes AGE as the difference between the current year and the birth year, and returns ADDRESS from the Customers table, with the results ordered so the oldest customers appear first.

To control how results are sorted, you can specify the ordinal position of the column in the ORDER BY clause The example can be written as: select CUSTOMERNAME, year(getdate())- year(BIRTHDAY) as AGE, ADDRESS from Customers order by 2 DESC This query selects the customer name, calculates AGE as the current year minus the birth year, retrieves the address, and sorts the results by the AGE column in descending order.

Phép n ố i

Phép nối là nền tảng để thực hiện các truy vấn dữ liệu liên quan đến nhiều bảng Một câu lệnh nối sẽ lấy các dòng dữ liệu từ các bảng tham gia truy vấn, so sánh giá trị của các dòng này trên một hoặc nhiều cột được chỉ định trong điều kiện nối, và ghép những dòng thỏa mãn điều kiện thành các bản ghi trong kết quả truy vấn.

Các toán tử so sánh dưới đây được sử dụng để xác định điều kiện nối

Phép nối bằng (equi-join) là phép nối giữa các bảng dựa trên sự so sánh bằng nhau của giá trị ở các cột được dùng làm khóa nối Với equi-join, tiêu chuẩn so sánh là bằng và kết quả trả về sẽ chứa đầy đủ các cột từ các bảng tham gia nối.

Phép nối tự nhiên (natural join) là một dạng đặc biệt của phép nối được sử dụng phổ biến trong cơ sở dữ liệu Trong phép nối tự nhiên, điều kiện nối giữa hai bảng là sự bằng nhau giữa khoá ngoại của một bảng và khoá chính của bảng kia, và trong danh sách chọn của câu lệnh chỉ giữ lại một trong hai cột tham gia vào điều kiện của phép nối.

Ví dụ phép kết nối bằng: select * from Customers c, Orders o where c.customerid = o.customerid

A natural join example in SQL shows how to combine customers with their orders by matching the customer ID across the Customers and Orders tables The explicit form lists individual fields: select c.CUSTOMERID, c.CUSTOMERNAME, c.BIRTHDAY, c.GENDER, c.ADDRESS, o.ORDERDATE from Customers c, Orders o where c.customerid = o.customerid A more concise variant omits the individual customer fields in favor of all columns from Customers plus the order date: select c.*, o.ORDERDATE from Customers c, Orders o where c.customerid = o.customerid.

Trong phép nối, trường CUSTOMERID xuất hiện hai lần, gây dư thừa dữ liệu Để loại bỏ sự lặp lại này và tối ưu truy vấn, ta sử dụng phép nối tự nhiên và chỉ định rõ các cột cần truy xuất, nhằm đảm bảo kết quả trả về đúng thông tin cần thiết mà không lặp lại các trường không cần thiết.

Trong các câu lệnh nối, điều kiện của phép nối được xác định trong mệnh đề WHERE, đồng thời có thể chỉ định thêm các điều kiện tìm kiếm dữ liệu khác (điều kiện chọn) để ràng buộc dữ liệu cần lấy Thông thường, các điều kiện này được kết hợp với điều kiện nối thông qua toán tử AND để lọc kết quả một cách chính xác.

Ví dụ: select c.*, o.ORDERDATE from Customers c, Orders o where c.customerid = o.customerid and c.customerid = 3

Phép tự nối, hay self-join, là phép nối giữa các bản ghi của cùng một bảng, nơi điều kiện nối được xác định giữa các cột của chính bảng đó Vì bảng này sẽ xuất hiện nhiều lần trong mệnh đề FROM, các tham chiếu cần được đặt bí danh (alias) để phân biệt từng bản ghi và đảm bảo cú pháp SQL đúng và dễ đọc.

This SQL example demonstrates how to find customers who place more than one order on the same day by performing a self-join across the customers and orders tables It aliases the tables as c1, c2, o1, and o2, linking c1 to o1 and c2 to o2 by customer ID, requiring that both aliases refer to the same customer (c1.customerid = c2.customerid), and matching on the same order date (o1.orderdate = o2.orderdate) while excluding identical orders (o1.orderid o2.orderid) The result returns the customer ID and name for customers who have two distinct orders dated the same day, effectively identifying customers with multiple orders on a single day.

Truy vấn được giải thích như sau: lần lượt lấy mã khách hàng, mã hóa đơn và ngày đặt hàng từ bảng c1, o1 rồi so sánh với các mã tương ứng từ bảng c2, o2; nếu hai tập hợp trùng nhau ở mã khách hàng và ngày đặt hàng nhưng có mã hóa đơn khác nhau thì thông tin khách hàng đó được đưa vào kết quả truy vấn.

SQL cung cấp các phép nối ngoài sau đây:

Phép nối ngoài trái (LEFT OUTER JOIN)

Phép nối ngoài phải (RIGHT OUTER JOIN)

Phép nối ngoài đầy đủ (FULL OUTER JOIN)

Phép nối ngoài (LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN) được mô tả tương tự phép nối trong và điều kiện nối được chỉ định ngay trong mệnh đề FROM theo cú pháp: tên_bảng_1 LEFT|RIGHT|FULL [OUTER] JOIN tên_bảng_2 Dạng nối này cho phép ghép dữ liệu giữa hai bảng và giữ lại các hàng từ bảng nằm ngoài ở đúng loại nối (LEFT, RIGHT hoặc FULL), ngay cả khi không có khớp ở bảng kia Việc nắm bắt cú pháp phép nối ngoài và cách xác định điều kiện nối giúp tối ưu hóa truy vấn SQL và kiểm soát kết quả trả về dựa trên quan hệ giữa các bảng.

Ví dụ: Để tìm ra các khách hàng có đặt hàng thay vì sử dụng câu truy vấn sau: select * customers c, orders o where c.customerid = o.orderid

Ta có thể sử dụng câu truy vấn sau: select * from customers c inner join orders o on c.customerid = o.customerid

Phép nối ngoài trái đảm bảo hiển thị toàn bộ các dòng dữ liệu từ bảng bên trái ngay cả khi không có khớp với điều kiện nối ở bảng bên phải Ngược lại, phép nối ngoài đầy đủ (full outer join) sẽ trả về tất cả các dòng dữ liệu không thỏa điều kiện nối từ cả hai bảng tham gia phép nối, nghĩa là các dòng không khớp ở bảng trái hoặc bảng phải đều được đưa vào kết quả truy vấn.

Ví dụ: Giả sử có CSDL như sau:

Để kết hợp dữ liệu từ hai bảng faculty và class, ta có thể thực hiện các phép nối ngoài trái, nối ngoài phải và nối ngoài đầy đủ Phép nối ngoài trái được thực hiện bằng câu lệnh: select * from faculty f left join class c on f.facultyid = c.facultyid, cho phép hiển thị tất cả các bản ghi từ bảng faculty cùng với các bản ghi tương ứng từ bảng class hoặc để trống (NULL) khi không có bản ghi đối ứng Tương tự, phép nối ngoài phải cho kết quả mà mọi bản ghi từ bảng class được hiển thị và bảng faculty được ghép với NULL khi thiếu đối ứng, ví dụ: select * from faculty f right join class c on f.facultyid = c.facultyid Phép nối ngoài đầy đủ kết hợp cả hai, cho phép hiển thị mọi bản ghi từ cả hai bảng với NULL ở vị trí đối ứng khi không có bản ghi liên quan: select * from faculty f full outer join class c on f.facultyid = c.facultyid Các loại nối này giúp người dùng phân tích mối quan hệ giữa bảng faculty và bảng class một cách linh hoạt và đầy đủ.

Phép nối ngoài phải: select * from faculty f right join class c on f.facultyid = c.facultyid

Phép nối ngoài đầy đủ: select * from faculty f full join class c on f.facultyid = c.facultyid

SQL cho phép biểu diễn phép nối trên nhiều bảng dữ liệu một cách rõ ràng và trực quan, giúp người dùng dễ theo dõi nguồn dữ liệu của từng bảng khi kết hợp chúng qua các JOIN Thứ tự thực hiện các phép nối được xác định dựa trên ý nghĩa của kết quả từ phép nối trước được dùng làm đầu vào cho phép nối tiếp theo, từ đó đảm bảo tính nhất quán và khả năng mở rộng khi làm việc với dữ liệu liên bảng.

To list the item names in the order with ID 1, use an SQL query that joins the Orders, OrderDetail, and Items tables It selects ITEMNAME and ORDERDATE by linking orders to their details on orderid and details to items on itemid, while filtering for o.orderid = 1.

Mệnh đề GROUP BY

Câu lệnh SQL SELECT không chỉ thực hiện các thao tác truy vấn dữ liệu cơ bản như chọn cột, lọc dữ liệu và ghép nối bảng mà còn cho phép thực hiện các thao tác phân tích và tính toán thống kê trên dữ liệu Nhờ khả năng này, người dùng có thể tạo báo cáo dữ liệu, tính toán tổng, trung bình, đếm và các thống kê khác, đồng thời nhóm dữ liệu bằng GROUP BY để khai thác thông tin chi tiết và đưa ra quyết định dựa trên số liệu một cách hiệu quả.

Mệnh đề GROUP BY trong câu lệnh SELECT cho phép phân nhóm các dòng dữ liệu trong bảng theo các cột đã chọn, từ đó chia dữ liệu thành các nhóm riêng biệt và trên mỗi nhóm thực hiện các phép tính thống kê như tính tổng (SUM), giá trị trung bình (AVG) và các hàm tổng hợp khác để tạo báo cáo tổng hợp theo nhóm Việc sử dụng GROUP BY giúp phân tích dữ liệu một cách có tổ chức, hiển thị các kết quả thống kê theo từng nhóm, từ đó người dùng nắm bắt được xu hướng và sự phân bổ dữ liệu một cách rõ ràng.

Các hàm gộp (aggregate functions) được sử dụng để tính giá trị thống kê cho toàn bảng hoặc trên mỗi nhóm dữ liệu Chúng có thể được sử dụng như là các cột trong danh sách chọn của câu lệnh SELECT hoặc xuất hiện trong mệnh đề HAVING, nhưng không được phép xuất hiện trong mệnh đề WHERE

SQL cung cấp các hàm gộp dưới đây:

SUM([ALL| DISTINCT] biểu_thức) Tính tổng các giá trị

AVG([ALL| DISTINCT] biểu_thức) Tính trung bình của các giá trị

COUNT([ALL|DISTINCT] biểu_thức) Đếm số các giá trị trong biểu thức

COUNT(*) Đếm số các dòng được chọn

MAX(biểu_thức) Tính giá trị lớn nhất

MIN(biểu_thức) Tính giá trị nhỏ nhất

Hàm SUM và AVG chỉ làm việc với các biểu thức số

Hàm SUM, AVG, COUNT, MIN và MAX bỏ qua các giá trị NULL khi tính toán Hàm COUNT(*) không bỏ qua các giá trị NULL

Mặc định, các hàm gộp thực hiện tính toán thống kê trên toàn bộ dữ liệu Trong trường hợp cần loại bỏ bớt các giá trị trùng nhau (chỉ giữ lại một giá trị), ta chỉ định thêm từ khoá DISTINCT ở trước biểu thức là đối số của hàm

3.5.1 Th ố ng kê trên toàn b ộ d ữ li ệ u

Khi cần tính toán giá trị thống kê trên toàn bộ dữ liệu, ta sử dụng các hàm gộp trong danh sách chọn của câu lệnh SELECT Trong trường hợp này, trong danh sách chọn không được sử dụng bất kỳ một tên cột hay biểu thức nào ngoài các hàm gộp

This example shows how to compute core age metrics for customers The youngest, oldest, and average ages can be derived by calculating the difference between the current year and each customer's birth year, all in one query Use the following SQL statement: select min(year(getdate())-year(BIRTHDAY)) as MINAGE, max(year(getdate())-year(BIRTHDAY)) as MAXAGE, avg(year(getdate())-year(BIRTHDAY)) as AVGAGE from customers.

3.6.2 Th ố ng kê trên nhóm

Trong trường hợp cần tính toán các giá trị thống kê trên các nhóm dữ liệu, ta sử dụng mệnh đề GROUP BY để phân chia dữ liệu thành các nhóm Các hàm gộp được áp dụng trên từng nhóm sẽ thực hiện các phép tính và trả về giá trị thống kê tương ứng cho từng nhóm dữ liệu, giúp phân tích và so sánh dữ liệu theo nhóm một cách hiệu quả.

Câu truy vấn SQL trong ví dụ này cho biết tổng số tiền mà mỗi khách hàng phải trả cho tất cả các lần đặt hàng Nó trả về CUSTOMERID và CUSTOMERNAME, đồng thời tính tổng tiền bằng cách lấy UNITPRICE nhân với QUANTITY cho từng mặt hàng, sau đó cộng dồn bằng SUM và chuyển đổi kết quả sang kiểu tiền để hiển thị dưới dạng chữ số có định dạng Kết quả được nhóm theo từng khách hàng nhằm hiển thị chi tiêu theo từng cá nhân Hàm HAVING cho phép chỉ định điều kiện lọc trên tập hợp các nhóm đã gộp, giúp lọc danh sách khách hàng dựa trên tổng chi tiêu hoặc các điều kiện liên quan Đoạn mã minh họa cách kết hợp bảng dữ liệu, tổng hợp thông tin và định dạng đầu ra để phục vụ báo cáo tài chính khách hàng và tối ưu hoá cho các từ khóa SEO như câu truy vấn SQL, tổng tiền, khách hàng, HAVING và nhóm dữ liệu.

Mệnh đề HAVING được dùng để chỉ định điều kiện đối với các giá trị thống kê được sinh ra từ các hàm gộp, tương tự như cách mệnh đề WHERE thiết lập điều kiện cho câu lệnh SELECT HAVING thường không có ý nghĩa nếu không đi kèm với mệnh đề GROUP BY, và nó trở nên hữu dụng khi lọc kết quả sau khi thực hiện gộp dữ liệu Điểm khác biệt giữa HAVING và WHERE là điều kiện trong WHERE không được chứa các hàm gộp, còn HAVING cho phép sử dụng các hàm gộp trong điều kiện của mình.

SQL query to identify customers whose total payments across all orders exceed 100 million By joining the customers, orders, order details, and items tables on customer and item/order IDs, it sums the revenue per customer with SUM(i.UNITPRICE * od.QUANTITY), groups by customer ID and name, and filters with a HAVING clause to keep only those with totals above 100,000,000 The result returns the customer ID, customer name, and a formatted SUMTOTAL value displayed as money with thousand separators. -**Support Pollinations.AI:**🌸 **Ad** 🌸 Boost your SQL analytics with [Pollinations.AI](https://pollinations.ai/redirect/kofi) and discover customers with payments over 100 million in seconds!

Truy v ấ n con

Truy vấn con là một câu lệnh SELECT được lồng bên trong một câu lệnh SELECT, INSERT, UPDATE hoặc DELETE hoặc bên trong một truy vấn con khác Loại truy vấn này dùng để mô tả các tình huống mà điều kiện truy vấn dữ liệu phải dựa vào kết quả của một truy vấn khác Nói cách khác, truy vấn con cho phép lọc, so sánh hoặc xác nhận dữ liệu dựa trên dữ liệu trả về từ một truy vấn phụ, đồng thời hỗ trợ các mệnh đề như IN và EXISTS để làm việc với tập kết quả của truy vấn con Việc sử dụng truy vấn con giúp truy vấn dữ liệu phức tạp linh hoạt hơn và tối ưu hóa quá trình lấy dữ liệu khi làm việc với cơ sở dữ liệu quan hệ.

Cú pháp của truy vấn con như sau:

(SELECT [ALL | DISTINCT] danh_sách_ch ọ n

Khi sử dụng truy vấn con cần lưu ý một số quy tắc sau:

Một truy vấn con phải được viết trong cặp dấu ngoặc và đặt bên trong câu lệnh cha để đảm bảo cú pháp đúng Trong hầu hết các trường hợp, truy vấn con phải có kết quả là một cột duy nhất, nghĩa là danh sách chọn của truy vấn con chỉ chứa đúng một cột.

Mệnh đề COMPUTE và ORDER BY không được phép sử dụng trong truy vấn con

Các tên cột xuất hiện trong truy vấn con có thể là các cột của các bảng trong truy vấn ngoài

Một truy vấn con thường được sử dụng làm điều kiện trong mệnh đề WHERE hoặc HAVING của một truy vấn khác

Trong SQL, khi truy vấn con trả về đúng một giá trị duy nhất, kết quả này có thể được dùng như một thành phần bên trong một biểu thức Điều này cho phép giá trị từ truy vấn con xuất hiện trong các điều kiện so sánh bằng, hoặc các phép toán trong câu lệnh SELECT, UPDATE và DELETE Sử dụng truy vấn con với một giá trị duy nhất giúp tối ưu hóa hiệu suất và đơn giản hóa logic truy vấn, đồng thời giảm tải xử lý cho ứng dụng Tuy nhiên, nếu truy vấn con trả về nhiều giá trị hoặc không trả về giá trị, cần cân nhắc cách giới hạn kết quả hoặc kết hợp với các kỹ thuật như EXISTS hoặc IN để đảm bảo tính hợp lệ của truy vấn và tránh lỗi.

3.6.1 Phép so sánh đố i v ớ i v ớ i k ế t qu ả truy v ấ n con

Kết quả của truy vấn con có thể được dùng để thực hiện các phép so sánh số học với một biểu thức của truy vấn cha Trong trường hợp này, truy vấn con được sử dụng dưới dạng một giá trị đơn hoặc một danh sách giá trị để so sánh với điều kiện trong truy vấn cha, từ đó tối ưu hóa việc lọc dữ liệu và làm rõ logic của truy vấn.

WHERE biểu_thức phép_toán_số_học [ANY|ALL] (truy_vấn_con)

Trong đó phép toán số học có thể sử dụng bao gồm: =, , >, =, = ALL (SELECT AVG(DIEM) FROM KETQUA GROUP BY MASV)

Khi bạn cần kiểm tra xem giá trị của một biểu thức có xuất hiện hay không trong tập giá trị trả về bởi một truy vấn con, bạn có thể sử dụng toán tử IN (để kiểm tra sự có mặt) hoặc NOT IN (để kiểm tra sự vắng mặt) Cú pháp IN cho phép xác định nhanh chóng xem một giá trị có thuộc danh sách giá trị do truy vấn con trả về hay không, trong khi NOT IN giúp loại trừ các giá trị không thuộc danh sách đó Việc áp dụng IN và NOT IN giúp viết câu lệnh SQL ngắn gọn, dễ đọc và tối ưu hóa quá trình so sánh dữ liệu giữa biểu thức và kết quả của truy vấn phụ.

WHERE biểu_thức [NOT] IN (truy_vấn_con)

Ví dụ: Cho biết những sinh viên nào chưa có điểm thi

WHERE MASV = NOT IN (SELECT DISTINCT MASV FROM KETQUA)

EXISTS được sử dụng kết hợp với truy vấn con dưới dạng:

WHERE [NOT] EXISTS (truy_vấn_con)

EXISTS (tương ứng NOT EXISTS) trả về giá trị True khi kết quả của truy vấn con có ít nhất một dòng và trả về False khi truy vấn con không có dòng nào Điều khác biệt khi sử dụng EXISTS so với hai cách đã nêu ở trên là danh sách chọn của truy vấn con có thể có nhiều hơn hai cột; EXISTS chỉ kiểm tra sự tồn tại của các dòng thỏa điều kiện, bất kể số cột được chọn, trong khi NOT EXISTS trả về giá trị ngược lại dựa trên sự vắng mặt của các dòng đó.

3.6.4 Truy v ấ n con và m ệ nh đề HAVING

Một truy vấn con có thể được sử dụng trong mệnh đề HAVING của một truy vấn khác hàm gộp

Khung nhìn – VIEW

Khung nhìn (VIEW) là một bảng ảo, có cấu trúc tương tự bảng dữ liệu nhưng không lưu trữ dữ liệu riêng Khung nhìn được tạo ra từ một truy vấn và hoạt động như một đối tượng trong cơ sở dữ liệu, cho phép bạn truy vấn dữ liệu từ các bảng khác mà không cần lưu trữ dữ liệu trực tiếp trong khung nhìn.

Khung nhìn được tạo ra từ câu lệnh truy vấn dữ liệu (lệnh SELECT), truy vấn từ một hoặc nhiều bảng dữ liệu

Có thể thực hiện truy vấn dữ liệu trên cấu trúc của khung nhìn

Câu lệnh CREATE VIEW được sử dụng để tạo ra khung nhìn và có cú pháp như sau:

CREATE VIEW tên_khung_nhìn[(danh_sách_tên_c ộ t)]

Ví dụ: Tạo khung nhìn (view) danh sách sinh viên có điểm trung bình lớn hơn hay bằng 5

Xem dữ liệu view vừa tạo

Câu lệnh DROP VIEW dùng để xóa khung nhìn có cấu trúc như sau:

DROP VIEW tên_khung_nhìn

Ví dụ: DROP VIEW vw_DSSV

1 Sử dụng CSDL bài tập 2 QLDeAn trong Chương 2

2 Viết các câu lệnh truy vấn SQL như sau:

Thủ t ục lưu trữ - Strore procedure

Khái ni ệ m

Thủ tục lưu trữ là một đối tượng trong CSDL cho phép tập hợp nhiều câu lệnh T-SQL thành một nhóm và sẽ được thực thi khi thủ tục lưu trữ được gọi Toàn bộ các lệnh trong thủ tục lưu trữ được thực thi theo trình tự đã định, giúp đảm bảo tính nhất quán dữ liệu, tối ưu hiệu suất và tăng khả năng tái sử dụng mã lệnh SQL trong ứng dụng.

Lợi ích của việc sử dụng thủ tục lưu trữ:

SQL Server chỉ biên dịch thủ tục lưu trữ một lần và sẽ tái sử dụng kết quả biên dịch cho các lần gọi tiếp theo, trừ khi người dùng có thiết lập khác Việc tái sử dụng kết quả biên dịch không ảnh hưởng đến hiệu suất hệ thống khi thủ tục lưu trữ được gọi liên tục nhiều lần.

Thủ tục lưu trữ được phân tích và tối ưu ngay khi tạo ra, nhờ đó quá trình thực thi chúng diễn ra nhanh hơn nhiều so với việc thực thi một tập hợp các câu lệnh SQL rời rạc tương đương theo cách thông thường Việc tối ưu sẵn có giúp tối ưu hóa kế hoạch thực thi, giảm tải cho cơ sở dữ liệu và cải thiện hiệu suất của ứng dụng, đồng thời tăng tính nhất quán và dễ bảo trì cho logic nghiệp vụ.

Thủ tục lưu trữ cho phép thực thi cùng một truy vấn bằng một câu lệnh đơn giản, thay vì phải viết nhiều dòng SQL phức tạp Nhờ vậy, ứng dụng gửi ít lệnh hơn và giảm lưu lượng mạng giữa client và máy chủ cơ sở dữ liệu Việc đóng gói logic trong thủ tục lưu trữ cũng giúp chuẩn hóa quy trình truy vấn, giảm thiểu lỗi và tăng tính bảo trì cho hệ thống.

Ngôn ng ữ T-SQL

DECLARE @tenbien

4.2.2 Gán giá trị cho biến

SET @ten_bien=giá_trị

4.2.3 Các hàm thường dùng trong SQL

Hàm GETDATE trả về ngày giờ lúc thực hiện câu truy vấn

DATEPART giúp giải quyết các yêu cầu trên một cách dễ dàng

Cấu trúc hàm DATEPART như sau:

DATEPART (yêu_c ầ u_trích_xu ấ t, giá_tr ị _trích_xu ấ t) giá_trị_trích_xuất là một giá trị thuộc kiểu datetime yêu_cầu_trích_xuất: ngày, tháng, năm, quý,…

Bảng dưới đây mô tả các yêu chữ viết tắt và các yêu cầu trích xuất tương ứng Ý nghĩa Chữ viết tắt

Số ngày đã qua trong năm dy,y

Số ngày đã qua trong tuần Dw

Ví dụ: select datepart(yyyy, orderdate)as YEAROFORDERDATE

Chuyển đổi một giá trị từ kiểu dữ liệu này sang kiểu dữ liệu khác là mục đích của hai hàm CAST và CONVERT Cả hai đều cung cấp cùng một chức năng: chuyển đổi kiểu dữ liệu cho giá trị đầu vào sang kiểu dữ liệu mong muốn Một lợi thế khi dùng CONVERT là nó cho phép định dạng lại kết quả sau khi chuyển đổi, giúp kiểm soát cách hiển thị của giá trị theo ý muốn bằng tham số định dạng Khi làm việc với SQL, người dùng có thể chọn CAST hoặc CONVERT tùy thuộc vào cú pháp và yêu cầu về định dạng kết quả.

Cấu trúc hàm CAST và CONVERT như sau:

CAST (bi ể u_th ứ c/giá_ tr ị AS ki ể u_d ữ li ệ u [ độ _dài_ki ể u_d ữ _li ệ u ] )

CONVERT ( ki ể u_d ữ li ệ u [ độ _dài_ki ể u_d ữ _li ệ u ] , bi ể u_th ứ c/giá_ tr ị [ ,ki ể u_ đị nh_d ạ ng] )

Năm 2 chữ số Năm 4 chữ số Output

0 hoặc 100 mon dd yyyy hh:mi AM (PM)

9 hoặc 109 mon dd yyyy hh:mi:ss:mmmAM (PM)

13 hoặc 113 dd mon yyyy hh:mm:ss:mmm(24h)

Ví dụ: select CUSTOMERNAME, convert (varchar, BIRTHDAY, 103) as BIRTHDAY, ADDRESS from Customers where Customername = 'Le Thi Hoa' and year(getdate()) - year(BIRTHDAY) > 20

4.2.4.1 Cấu trúc rẽ nhánh IF … ELSE

IF biểu_thức_điều_kiện

Ví dụ: Tìm số lớn hơn trong 2 số a,b

4.2.4.2 Cấu trúc rẽ nhánh CASE

CASE gia_tri_điều_kiện

WHEN | THEN

- BREAK: thoát khỏi vòng while

- CONTINUE: tiếp tục vòng lặp, bỏ qua các lệnh sau CONTINUE

Ví dụ: In ra 10 số nguyên dương bắt đầu từ 100

Print "So nguyen: " + Convert(Char(3), @songuyen)

Hàm

Ngày đăng: 29/10/2022, 09:45

TỪ KHÓA LIÊN QUAN