Bài Giảng Cơ Sở Dữ Liệu (CTT102) - Chương 5: SQL và Lệnh Định Nghĩa Dữ Liệu

Tài liệu nghiên cứu Ctt102 chuong 5 sql 2, tổng hợp lý thuyết và thực hành, cung cấp kiến thức chuyên sâu về ., phục vụ nghiên cứu và ứng dụng thực tiễn

Trường đại học

Trường Đại Học

Chuyên ngành

Ctt102

Người đăng

Ẩn danh

Thể loại

Tài Liệu Học Tập

2023

153
3
0

Phí lưu trữ

45 Point

Tóm tắt

I. Tổng quan Ctt102 chương 5 Khám phá ngôn ngữ SQL

Ngôn ngữ truy vấn cấu trúc, hay SQL (Structured Query Language), là một công cụ không thể thiếu trong lĩnh vực quản trị cơ sở dữ liệu. Được phát triển ban đầu bởi IBM vào những năm 1970 với tên gọi SEQUEL, SQL đã nhanh chóng trở thành tiêu chuẩn được Viện Tiêu chuẩn Quốc gia Hoa Kỳ (ANSI) công nhận và phát triển qua nhiều phiên bản như SQL-86, SQL-92, và SQL-99. Không giống như Đại số quan hệ yêu cầu người dùng chỉ định cách thức truy vấn, SQL là một ngôn ngữ cấp cao, cho phép người dùng chỉ cần mô tả nội dung cần lấy. Điều này giúp đơn giản hóa đáng kể quá trình tương tác với dữ liệu. Nội dung môn học Ctt102 chương 5 SQL 2 tập trung vào việc cung cấp kiến thức nền tảng và kỹ năng thực hành vững chắc về SQL. Ngôn ngữ này bao gồm ba thành phần chính. Thứ nhất là Ngôn ngữ Định nghĩa Dữ liệu (DDL), được sử dụng để tạo và quản lý cấu trúc của các đối tượng cơ sở dữ liệu như bảng, chỉ mục. Thứ hai là Ngôn ngữ Thao tác Dữ liệu (DML), cho phép người dùng truy vấn, chèn, cập nhật và xóa dữ liệu. Cuối cùng là các thành phần khác như định nghĩa khung nhìn, quản lý ràng buộc toàn vẹn, phân quyền bảo mật và điều khiển giao tác. Trong thực tế, các hệ quản trị cơ sở dữ liệu thương mại như SQL Server có thể sử dụng thuật ngữ riêng, ví dụ: 'Bảng' thay cho 'quan hệ', 'Cột' thay cho 'thuộc tính', và 'Dòng' thay cho 'bộ'. Việc nắm vững SQL là yêu cầu cơ bản để xây dựng và vận hành các hệ thống thông tin hiệu quả, từ các ứng dụng web đơn giản đến các hệ thống doanh nghiệp phức tạp. Kiến thức trong chương này là chìa khóa để làm chủ việc quản lý dữ liệu một cách chuyên nghiệp.

1.1. Lịch sử và vai trò của SQL trong quản lý dữ liệu

SQL ra đời như một giải pháp để đơn giản hóa việc tương tác với cơ sở dữ liệu quan hệ, vốn trước đây phụ thuộc vào các ngôn ngữ phức tạp hơn như Đại số quan hệ. Được IBM tiên phong phát triển, nó nhanh chóng được chuẩn hóa và trở thành ngôn ngữ toàn cầu cho việc quản lý dữ liệu. Vai trò của SQL không chỉ dừng lại ở việc truy vấn. Nó là một hệ thống toàn diện, cho phép định nghĩa cấu trúc dữ liệu, thao tác trên dữ liệu, và kiểm soát quyền truy cập. Tài liệu gốc ghi nhận, SQL là 'ngôn ngữ cấp cao' giúp người dùng 'chỉ cần đưa ra nội dung cần truy vấn', giảm bớt gánh nặng kỹ thuật và tập trung vào mục tiêu nghiệp vụ. Đây chính là yếu tố then chốt giúp SQL được áp dụng rộng rãi trong mọi ngành công nghiệp.

1.2. Phân biệt Ngôn ngữ DDL DML và các thành phần khác

Chương trình học Ctt102 phân chia SQL thành các nhóm lệnh chức năng rõ ràng. Ngôn ngữ Định nghĩa Dữ liệu (DDL) bao gồm các lệnh như CREATE, ALTER, DROP, có nhiệm vụ xây dựng và thay đổi 'bộ xương' của cơ sở dữ liệu, tức là các bảng và mối quan hệ giữa chúng. Ngược lại, Ngôn ngữ Thao tác Dữ liệu (DML) tập trung vào 'dòng máu' của cơ sở dữ liệu, bao gồm các lệnh SELECT, INSERT, UPDATE, DELETE để làm việc trực tiếp với các dòng dữ liệu. Ngoài ra, SQL còn các thành phần quan trọng khác như định nghĩa khung nhìn (view) để tạo các bảng ảo, và chỉ mục (index) để tăng tốc độ truy vấn, cùng với các cơ chế phân quyền và bảo mật để đảm bảo an toàn dữ liệu.

II. Cách định nghĩa dữ liệu hiệu quả bằng các lệnh DDL

Việc định nghĩa cấu trúc dữ liệu là bước đầu tiên và quan trọng nhất trong việc xây dựng một cơ sở dữ liệu. Ngôn ngữ Định nghĩa Dữ liệu (DDL) trong SQL cung cấp một bộ công cụ mạnh mẽ để thực hiện nhiệm vụ này. Các lệnh DDL cho phép mô tả chi tiết lược đồ của mỗi quan hệ, xác định miền giá trị cho từng thuộc tính, áp đặt các ràng buộc toàn vẹn và tạo chỉ mục. Ba lệnh DDL cơ bản và phổ biến nhất là CREATE TABLE để tạo một bảng mới, ALTER TABLE để sửa đổi cấu trúc của một bảng đã tồn tại, và DROP TABLE để xóa hoàn toàn một bảng. Việc sử dụng thành thạo các lệnh này đòi hỏi sự hiểu biết về các kiểu dữ liệu chuẩn trong SQL. Việc lựa chọn kiểu dữ liệu phù hợp, ví dụ như INTEGER cho số nguyên, VARCHAR(n) cho chuỗi ký tự có độ dài thay đổi, hay DATETIME cho ngày giờ, không chỉ đảm bảo tính đúng đắn của dữ liệu mà còn tối ưu hóa không gian lưu trữ và hiệu suất truy vấn. Thêm vào đó, việc thiết lập các ràng buộc toàn vẹn (RBTV) như PRIMARY KEY (khóa chính), FOREIGN KEY (khóa ngoại), NOT NULL, và CHECK là cực kỳ quan trọng để duy trì sự nhất quán và chính xác của dữ liệu trong toàn bộ hệ thống. Nắm vững DDL là nền tảng để thiết kế một cơ sở dữ liệu có cấu trúc tốt, dễ bảo trì và mở rộng.

2.1. Lựa chọn kiểu dữ liệu SQL phù hợp cho từng thuộc tính

Việc chọn đúng kiểu dữ liệu là một quyết định thiết kế quan trọng. Tài liệu Ctt102 giới thiệu ba nhóm chính: số, chuỗi ký tự, và ngày giờ. Với kiểu số, lập trình viên có các lựa chọn như INTEGER, SMALLINT cho số nguyên, hoặc NUMERIC(p,s), DECIMAL(p,s) cho các số thập phân cần độ chính xác cao. Với chuỗi ký tự, CHAR(n) phù hợp cho các chuỗi có độ dài cố định, trong khi VARCHAR(n) linh hoạt hơn cho các chuỗi có độ dài thay đổi. Kiểu dữ liệu ngày giờ bao gồm DATE (chỉ lưu ngày, tháng, năm), TIME (lưu giờ, phút, giây), và TIMESTAMP hoặc DATETIME (lưu cả ngày và giờ). Lựa chọn sai kiểu dữ liệu có thể dẫn đến lãng phí dung lượng lưu trữ hoặc gây ra lỗi khi xử lý dữ liệu.

2.2. Thiết lập ràng buộc toàn vẹn RBTV để bảo vệ dữ liệu

Ràng buộc toàn vẹn (RBTV) là các quy tắc được áp đặt lên các cột của bảng để đảm bảo tính chính xác và tin cậy của dữ liệu. NOT NULL đảm bảo một cột không thể có giá trị rỗng. UNIQUE yêu cầu tất cả các giá trị trong một cột phải là duy nhất. PRIMARY KEY là sự kết hợp của NOT NULLUNIQUE, dùng để xác định duy nhất mỗi dòng trong bảng. FOREIGN KEY tạo ra một liên kết giữa hai bảng, đảm bảo rằng giá trị trong cột của bảng con phải tồn tại trong cột khóa chính của bảng cha. Ràng buộc CHECK cho phép định nghĩa một điều kiện mà giá trị của cột phải thỏa mãn (ví dụ: CHECK (PHAI IN ('Nam', 'Nu'))). Cuối cùng, DEFAULT cung cấp một giá trị mặc định cho cột khi không có giá trị nào được chỉ định lúc chèn dữ liệu.

III. Hướng dẫn tạo và sửa đổi cấu trúc bảng trong SQL

Quản lý vòng đời của các bảng dữ liệu là một nhiệm vụ cốt lõi của người quản trị cơ sở dữ liệu. SQL cung cấp các lệnh DDL trực quan để thực hiện việc này. Lệnh CREATE TABLE là công cụ chính để định nghĩa một bảng mới. Cú pháp của nó yêu cầu tên bảng, theo sau là danh sách các cột. Mỗi cột được định nghĩa bởi tên, kiểu dữ liệu và các ràng buộc toàn vẹn tùy chọn. Ví dụ, việc tạo bảng GIAOVIEN đòi hỏi phải xác định các cột như MaGV, HoTen, Luong cùng với các ràng buộc như PRIMARY KEY cho MaGVNOT NULL cho HoTen. Tuy nhiên, cấu trúc của một cơ sở dữ liệu không phải lúc nào cũng cố định. Khi yêu cầu thay đổi, lệnh ALTER TABLE trở nên hữu ích. Nó cho phép thêm một cột mới (ADD), xóa một cột hiện có (DROP COLUMN), hoặc thay đổi kiểu dữ liệu của một cột (ALTER COLUMN). Ngoài ra, ALTER TABLE cũng có thể được sử dụng để thêm hoặc xóa các ràng buộc toàn vẹn sau khi bảng đã được tạo. Cuối cùng, khi một bảng không còn cần thiết, lệnh DROP TABLE sẽ xóa hoàn toàn cả cấu trúc và dữ liệu của nó. Đây là một hành động không thể hoàn tác, đòi hỏi sự cẩn trọng tuyệt đối.

3.1. Cú pháp và ví dụ chi tiết lệnh CREATE TABLE

Cú pháp cơ bản của lệnh tạo bảng là: CREATE TABLE <Tên_bảng> (<Tên_cột> <Kiểu_dữ_liệu> [<RBTV>], ...);. Trong tài liệu gốc, ví dụ tạo bảng GIAOVIEN minh họa rõ ràng cách áp dụng: CREATE TABLE GIAOVIEN (MAGV CHAR(9) PRIMARY KEY, HOTEN NVARCHAR(50) NOT NULL, LUONG INT DEFAULT (1000), PHAI CHAR(3) CHECK (PHAI IN('Nam', 'Nu')), ...);. Ở đây, MAGV được định nghĩa là khóa chính. HOTEN không được phép để trống. LUONG có giá trị mặc định là 1000. PHAI chỉ được chấp nhận giá trị 'Nam' hoặc 'Nu'. Việc đặt tên cho ràng buộc bằng từ khóa CONSTRAINT (ví dụ: CONSTRAINT PK_GV PRIMARY KEY) cũng là một thực hành tốt để dễ dàng quản lý và tham chiếu sau này.

3.2. Phương pháp thay đổi cấu trúc bảng với ALTER TABLE

Lệnh ALTER TABLE cung cấp sự linh hoạt để điều chỉnh cấu trúc bảng mà không cần phải xóa và tạo lại. Để thêm một cột mới, sử dụng cú pháp: ALTER TABLE <Tên_bảng> ADD <Tên_cột> <Kiểu_dữ_liệu>;. Để xóa một cột, cú pháp là: ALTER TABLE <Tên_bảng> DROP COLUMN <Tên_cột>;. Việc thay đổi kiểu dữ liệu của một cột hiện có được thực hiện qua: ALTER TABLE <Tên_bảng> ALTER COLUMN <Tên_cột> <Kiểu_dữ_liệu_mới>;. Ví dụ trong bài giảng cho thấy việc thêm ràng buộc khóa chính vào bảng BOMON sau khi đã tạo: ALTER TABLE BOMON ADD CONSTRAINT PK_BOMON PRIMARY KEY (MABM);. Điều này rất hữu ích khi thiết kế cơ sở dữ liệu theo từng giai đoạn.

IV. Bí quyết truy vấn dữ liệu SQL với mệnh đề SELECT

Sau khi cấu trúc cơ sở dữ liệu được định hình bằng DDL, bước tiếp theo là khai thác dữ liệu bằng Ngôn ngữ Thao tác Dữ liệu (DML). Lệnh SELECT là lệnh DML phổ biến và mạnh mẽ nhất, được sử dụng để rút trích dữ liệu từ một hoặc nhiều bảng. Một câu truy vấn SQL cơ bản bao gồm ba mệnh đề chính: SELECT, FROM, và WHERE. Mệnh đề SELECT xác định danh sách các cột sẽ được hiển thị trong kết quả. Có thể sử dụng dấu * để chọn tất cả các cột hoặc liệt kê tên từng cột cụ thể. Mệnh đề FROM chỉ định (các) bảng nguồn chứa dữ liệu cần truy vấn. Khi truy vấn từ nhiều bảng, một phép tích Đề-các (Cartesian product) sẽ được thực hiện ngầm định. Mệnh đề WHERE đóng vai trò bộ lọc, chứa một biểu thức logic để xác định những dòng nào thỏa mãn điều kiện và sẽ được trả về. Mối tương quan giữa SQL và Đại số quan hệ được thể hiện rõ: SELECT tương đương phép chiếu (π), WHERE tương đương phép chọn (σ), và FROM tương đương phép tích (×). Việc hiểu và kết hợp nhuần nhuyễn ba mệnh đề này là kỹ năng nền tảng để thực hiện hầu hết các tác vụ truy vấn dữ liệu, từ đơn giản đến phức tạp.

4.1. Khai thác mệnh đề SELECT và FROM để trích xuất dữ liệu

Mệnh đề SELECT cho phép tùy chỉnh kết quả trả về. Ngoài việc chọn cột, người dùng có thể sử dụng bí danh (alias) với từ khóa AS để đổi tên cột trong kết quả cho dễ đọc, ví dụ: SELECT MAKHOA AS 'Mã khoa', TENKHOA AS 'Tên khoa'. Cũng có thể thực hiện các phép toán hoặc nối chuỗi trực tiếp trong mệnh đề này, ví dụ: SELECT MAGV, LUONG*1.1 AS 'LUONG10%'. Từ khóa DISTINCT được dùng để loại bỏ các dòng kết quả trùng lặp. Mệnh đề FROM liệt kê các bảng cần thiết. Khi có nhiều bảng, việc sử dụng bí danh cho bảng (ví dụ: FROM GIAOVIEN G, BOMON B) là rất quan trọng để tránh sự nhập nhằng (ambiguous) khi các bảng có cột trùng tên, và làm cho câu lệnh ngắn gọn hơn.

4.2. Tối ưu điều kiện lọc với mệnh đề WHERE và các toán tử

Mệnh đề WHERE là nơi định nghĩa logic lọc dữ liệu. Nó sử dụng các toán tử so sánh (=, >, <, <>) và các toán tử logic (AND, OR, NOT) để kết hợp các điều kiện. SQL cung cấp các toán tử tiện lợi như BETWEEN để kiểm tra một giá trị có nằm trong một khoảng hay không (ví dụ: WHERE LUONG BETWEEN 20000 AND 30000). Toán tử LIKE được dùng để so khớp chuỗi theo mẫu, với _ đại diện cho một ký tự bất kỳ và % đại diện cho một chuỗi ký tự bất kỳ. Việc xử lý giá trị NULL cũng rất đặc biệt, phải sử dụng IS NULL hoặc IS NOT NULL thay vì các toán tử so sánh thông thường. Hiểu rõ cách sử dụng các toán tử này giúp xây dựng các điều kiện lọc chính xác và hiệu quả.

V. Ứng dụng SQL truy vấn dữ liệu từ nhiều bảng phức tạp

Sức mạnh thực sự của SQL và cơ sở dữ liệu quan hệ nằm ở khả năng kết hợp thông tin từ nhiều bảng khác nhau. Các ví dụ trong Ctt102 chương 5 SQL 2 cho thấy cách xây dựng các câu truy vấn phức tạp để trả lời những câu hỏi nghiệp vụ thực tế. Kỹ thuật cơ bản nhất để kết hợp các bảng là thông qua điều kiện kết (join condition) trong mệnh đề WHERE. Điều kiện này thường so sánh cột khóa ngoại của một bảng với cột khóa chính của bảng khác (ví dụ: WHERE GIAOVIEN.MABM = BOMON.MABM). Thao tác này tương đương với phép kết trong Đại số quan hệ, giúp lọc ra những cặp dòng có liên quan từ tích Đề-các của các bảng. Khi làm việc với nhiều bảng, việc sử dụng bí danh cho bảng trở nên cực kỳ cần thiết để giữ cho câu truy vấn rõ ràng và tránh lỗi nhập nhằng tên cột. Chẳng hạn, để tìm tên trưởng bộ môn của các bộ môn thuộc khoa 'CNTT', cần kết nối bảng BOMONGIAOVIEN thông qua mã trưởng bộ môn. Câu truy vấn sẽ phải tham chiếu đến cả hai bảng và lọc theo mã khoa. Việc phân tích yêu cầu, xác định các bảng liên quan, tìm ra các cột chung để tạo điều kiện kết, và xây dựng các điều kiện lọc bổ sung là quy trình chuẩn để giải quyết các bài toán truy vấn phức tạp.

5.1. Kỹ thuật kết hợp nhiều bảng thông qua điều kiện kết

Để lấy thông tin từ nhiều bảng, trước tiên cần xác định mối quan hệ giữa chúng, thường được thể hiện qua cặp khóa chính – khóa ngoại. Điều kiện kết được viết trong mệnh đề WHERE để liên kết các dòng tương ứng. Ví dụ, để tìm giáo viên làm việc ở bộ môn 'Hệ thống thông tin', ta cần kết hai bảng GIAOVIENBOMON. Câu lệnh sẽ có dạng: SELECT G.MAGV, G.HOTEN FROM GIAOVIEN G, BOMON B WHERE G.MABM = B.MABM AND B.TENBM = N'Hệ thống thông tin'. Ở đây, G.MABM = B.MABM chính là điều kiện kết, đảm bảo rằng mỗi giáo viên được ghép đúng với thông tin bộ môn của họ.

5.2. Phân tích ví dụ truy vấn SQL từ bài toán thực tế

Hãy xem xét ví dụ: 'Tìm họ tên giáo viên thuộc bộ môn “HTTT” có tham gia đề tài “Mobile Database”'. Bài toán này yêu cầu thông tin từ ba bảng: GIAOVIEN (họ tên, mã bộ môn), DETAI (tên đề tài), và THAMGIADT (bảng trung gian kết nối giáo viên và đề tài). Do đó, câu truy vấn cần hai điều kiện kết: một giữa GIAOVIENTHAMGIADT qua MAGV, và một giữa THAMGIADTDETAI qua MADT. Ngoài ra, cần thêm các điều kiện lọc trên MABM của giáo viên và TENDT của đề tài. Việc phân tích bài toán thành các thực thể, mối quan hệ và điều kiện lọc là kỹ năng quan trọng để viết các câu lệnh SQL phức tạp một cách chính xác.

VI. Tổng kết và định hướng học SQL nâng cao sau CTT102

Nội dung Ctt102 chương 5 SQL 2 đã cung cấp một nền tảng vững chắc về hai khía cạnh quan trọng nhất của SQL: Ngôn ngữ Định nghĩa Dữ liệu (DDL) và các truy vấn cơ bản sử dụng Ngôn ngữ Thao tác Dữ liệu (DML). Người học đã được trang bị kiến thức để tạo, sửa đổi và xóa cấu trúc bảng bằng các lệnh CREATE, ALTER, DROP. Đồng thời, kỹ năng truy vấn dữ liệu đã được hình thành thông qua việc sử dụng thành thạo bộ ba mệnh đề SELECT, FROM, và WHERE, bao gồm cả việc kết hợp dữ liệu từ nhiều bảng. Tuy nhiên, thế giới của SQL còn rất rộng lớn. Đây chỉ là những bước khởi đầu. Để trở thành một chuyên gia về cơ sở dữ liệu, việc tiếp tục tìm hiểu các khái niệm nâng cao là vô cùng cần thiết. Các chủ đề như hàm kết hợp, gom nhóm dữ liệu, truy vấn con, và các đối tượng cơ sở dữ liệu như khung nhìn và chỉ mục sẽ mở ra những khả năng xử lý dữ liệu mạnh mẽ hơn rất nhiều. Việc nắm vững các khái niệm này không chỉ giúp giải quyết các bài toán phức tạp hơn mà còn là chìa khóa để tối ưu hóa hiệu suất của toàn bộ hệ thống cơ sở dữ liệu. Kiến thức từ chương này là tiền đề quan trọng để tiếp tục khám phá và chinh phục những chủ đề SQL nâng cao.

6.1. Tóm tắt các lệnh SQL cơ bản đã học trong chương 5

Chương 5 đã giới thiệu các lệnh SQL nền tảng. Về DDL, các lệnh CREATE TABLE, ALTER TABLE, và DROP TABLE cho phép quản lý hoàn toàn vòng đời của một bảng. Người học đã biết cách định nghĩa cột, chọn kiểu dữ liệu, và áp đặt các ràng buộc toàn vẹn để đảm bảo chất lượng dữ liệu. Về DML, cấu trúc truy vấn SELECT ... FROM ... WHERE ... đã được phân tích chi tiết. Đây là cấu trúc phổ biến nhất, cho phép lấy dữ liệu từ một hoặc nhiều bảng và lọc kết quả dựa trên các điều kiện cụ thể. Những kiến thức này là đủ để thực hiện phần lớn các tác vụ cơ bản trong quản lý và khai thác cơ sở dữ liệu.

6.2. Các chủ đề nâng cao Hàm gom nhóm View và Index

Để tiến xa hơn, người học cần khám phá các chủ đề nâng cao được liệt kê trong đề cương. Các hàm kết hợp như COUNT(), SUM(), AVG(), MIN(), MAX() cho phép tính toán trên một tập hợp các dòng. Chúng thường đi kèm với mệnh đề GROUP BY để gom nhóm dữ liệu và thực hiện tính toán trên từng nhóm. Khung nhìn (View) là các câu lệnh SELECT được lưu trữ, hoạt động như một bảng ảo giúp đơn giản hóa các truy vấn phức tạp hoặc hạn chế quyền truy cập dữ liệu. Chỉ mục (Index) là một cấu trúc dữ liệu đặc biệt giúp tăng tốc độ truy vấn một cách đáng kể. Nắm vững những công cụ này sẽ nâng cao đáng kể năng lực làm việc với SQL.

15/07/2025

Trích đoạn nội dung tài liệu

CHƯƠNG 5 SQL (Structured Query Language) Bài giảng môn Cơ sở dữ liệu © Bộ môn Hệ Thống Thông Tin ‐ Khoa Công Nghệ Thông Tin ‐ Trường Đại học Khoa học Tự nhiên Nội dung  Giới thiệu  Định nghĩa dữ liệu  Truy vấn dữ liệu  Cập nhật dữ liệu  Khung nhìn (view)  Chỉ mục (index) © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 2 Giới thiệu  Ngôn ngữ ĐSQH - Cách thức truy vấn dữ liệu - Khó khăn cho người sử dụng  SQL (Structured Query Language) - Ngôn ngữ cấp cao - Người sử dụng chỉ cần đưa ra nội dung cần truy vấn - Được phát triển bởi IBM (1970s) - Được gọi là SEQUEL - Được ANSI công nhận và phát triển thành chuẩn  SQL‐86  SQL‐92  SQL‐99 © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 3 Giới thiệu (tt)  SQL gồm - Định nghĩa dữ liệu (DDL) - Thao tác dữ liệu (DML) - Định nghĩa khung nhìn Lý thuyết : Chuẩn SQL‐92 - Ràng buộc toàn vẹn - Phân quyền và bảo mật - Điều khiển giao tác  SQL sử dụng thuật ngữ Thương mại : SQL Server - Bảng ~ quan hệ - Cột ~ thuộc tính - Dòng ~ bộ © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 4 Nội dung chi tiết  Giới thiệu  Định nghĩa dữ liệu - Kiểu dữ liệu - Các lệnh định nghĩa dữ liệu  Truy vấn dữ liệu  Cập nhật dữ liệu  Khung nhìn (view)  Chỉ mục (index) © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 5 Định nghĩa dữ liệu  Là ngôn ngữ mô tả - Lược đồ cho mỗi quan hệ - Miền giá trị tương ứng của từng thuộc tính - Ràng buộc toàn vẹn - Chỉ mục trên mỗi quan hệ  Gồm - CREATE TABLE (tạo bảng) - DROP TABLE (xóa bảng) - ALTER TABLE (sửa bảng) - CREATE DOMAIN (tạo miền giá trị) - CREATE DATABASE © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 6 Kiểu dữ liệu  Số (numeric) - INTEGER - SMALLINT - NUMERIC, NUMERIC(p), NUMERIC(p,s) - DECIMAL, DECIMAL(p), DECIMAL(p,s) - REAL - DOUBLE PRECISION - FLOAT, FLOAT(p) © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 7 Kiểu dữ liệu (tt)  Chuỗi ký tự (character string) - CHARACTER hoặc CHAR - CHARACTER(n) hoặc CHAR (n) - CHARACTER VARYING(n) hoặc VARCHAR(n) - NATIONAL CHARACTER (n) hoặc NCHAR(n)  Chuỗi bit (bit string) - BIT, BIT(x) - BIT VARYING(x)  Ngày giờ (datetime) - DATE gồm ngày, tháng và năm - TIME gồm giờ, phút và giây - TIMESTAMP gồm ngày và giờ - DATETIME: gồm DATE và TIME (Chỉ có trong SQL của SQL © Bộ môn Server) HTTT - Khoa CNTT - Trường ĐH KHTN 8 Lệnh tạo bảng  Để định nghĩa một bảng - Tên bảng - Các thuộc tính  Tên thuộc tính  Kiểu dữ liệu  Các RBTV trên thuộc tính  Cú pháp CREATE TABLE <Tên_bảng> ( <Tên_cột> <Kiểu_dữ_liệu> [<RBTV>], <Tên_cột> <Kiểu_dữ_liệu> [<RBTV>], … [<RBTV>] ) © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 9 Ví dụ ‐ Tạo bảng  Tạo bảng lưu trữ thông tin giáo viên với các thuộc tính và quy định sau: - MaGV : Khoá chính - HoTen: Họ tên của giáo viên không được để trống - Luong: Mặc định là 1000 - Phai: Phải là Nam hoặc Nữ - NgaySinh: Ngày tháng năm sinh của giáo viên - SoNha, Duong, Quan, ThanhPho : địa chỉ của giáo viên - GVQLCM: mã giáo viên quản lý chuyên môn của giáo viên (khoá ngoại) - MaBM: mã bộ môn của giáo viên (khoá ngoại) © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 10 Ví dụ ‐ Tạo bảng CREATE TABLE GIAOVIEN ( MaGV CHAR(9), HoTen NVARCHAR(50), Luong INT, Phai CHAR(3), NgaySinh DATETIME, SoNha NVARCHAR(10), Duong NVARCHAR(50), Quan NVARCHAR(50), ThanhPho NVARCHAR(50), GVQLCM CHAR(9), MaBM CHAR(9) ) © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 11 Lệnh tạo bảng (tt)  <RBTV> - NOT NULL - NULL - UNIQUE - DEFAULT - PRIMARY KEY - FOREIGN KEY / REFERENCES - CHECK  Đặt tên cho RBTV CONSTRAINT <Ten_RBTV> <RBTV> © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 12 Ví dụ ‐ RBTV CREATE TABLE GIAOVIEN ( MAGV CHAR(9) PRIMARY KEY, HOTEN NVARCHAR(50) NOT NULL, LUONG INT DEFAULT (1000), PHAI CHAR(3) CHECK (PHAI IN(‘Nam’, ‘Nu’)), NGAYSINH DATETIME, SONHA NVARCHAR(10), DUONG NVARCHAR(50), QUAN NVARCHAR(50), THANHPHO NVARCHAR(50), GVQLCM CHAR(9), MABM CHAR(9) © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 13 ) Ví dụ ‐ RBTV CREATE TABLE CONGVIEC ( MADT VARCHAR(10), STT INT, TENCV NVARCHAR(50), NGAYBD DATETIME, NGAYKT DATETIME, PRIMARY KEY(MADT, STT) ) CREATE TABLE DETAI ( MADT VARCHAR (10) PRIMARY KEY, TENDT NVARCHAR (50) UNIQUE, KINHPHI INT, CAPQL NVARCHAR (50), NGAYBD DATETIME, NGAYKT DATETIME, MACD VARCHAR (10), GVCNDT CHAR (9) ) CNTT - Trường ĐH KHTN © Bộ môn HTTT - Khoa 14 Ví dụ ‐ Đặt tên cho RBTV CREATE TABLE GIAOVIEN ( MAGV CHAR(9) CONSTRAINT PK_GV PRIMARY KEY, HOTEN NVARCHAR(50) CONSTRAINT NN_HOTEN NOT NULL, LUONG INT CONSTRAINT DE_LUONG DEFAULT (10000), PHAI CHAR(3) CONSTRAINT CK_PHAI CHECK (PHAI IN('Nam', 'Nu')) CONSTRAINT NN_PHAI NOT NULL, NGAYSINH DATETIME, SONHA NVARCHAR(10), DUONG NVARCHAR(50), QUAN NVARCHAR(50), THANHPHO NVARCHAR(50), GVQL CHAR(9), MABM CHAR(9) ) © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 15 Ví dụ ‐ Đặt tên cho RBTV CREATE TABLE CONGVIEC( MADT VARCHAR(10), STT INT, TENCV NVARCHAR(50), NGAYBD DATETIME, NGAYKT DATETIME, CONSTRAINT PK_CV PRIMARY KEY(MADT, STT), CONSTRAINT FK_CONGVIEC_DETAI FOREIGN KEY MADT REFERENCES DETAI(MADT) ) © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 16 Lệnh sửa bảng  Được dùng để - Thay đổi cấu trúc bảng - Thay đổi RBTV  Thêm cột ALTER TABLE <Tên_bảng> ADD <Tên_cột> <Kiểu_dữ_liệu> [<RBTV>]  Xóa cột ALTER TABLE <Tên_bảng> DROP COLUMN <Tên_cột>  Cập nhật cột ALTER TABLE <Tên_bảng> ALTER COLUMN <Tên_cột> <Kiểu_dữ_liệu_mới> © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 17 Lệnh sửa bảng (tt)  Thêm RBTV ALTER TABLE <Tên_bảng> ADD CONSTRAINT <Ten_RBTV> <RBTV>, CONSTRAINT <Ten_RBTV> <RBTV>, …  Xóa RBTV ALTER TABLE <Tên_bảng> DROP <Tên_RBTV> © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 18 Ví dụ ‐ Thay đổi cấu trúc bảng ALTER TABLE GIAOVIEN ADD TUOI INT CONSTRAINT CK_TUOI CHECK (TUOI >= 23 AND TUOI <=60) NOT NULL ALTER TABLE GIAOVIEN DROP COLUMN HOTEN ALTER TABLE GIAOVIEN ALTER COLUMN HOTEN NVARCHAR(100) © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 19 Ví dụ ‐ Thay đổi RBTV CREATE TABLE BOMON( MABM INT NOT NULL, Phải xác định NOT NULL TENBM NVARCHAR(50), trước khi tạo khóa chính PHONG CHAR(10), DIENTHOAI CHAR(15), TRUONGBM CHAR(9), MAKHOA CHAR(4), NGAYNHANCHUC DATETIME ) ALTER TABLE BOMON ADD CONSTRAINT PK_BOMON PRIMARY KEY (MABM), CONSTRAINT FK_TRBOMON FOREIGN KEY (TRUONGBM) Cần có bảng REFERENCES GIAOVIEN(MAGV), GIAOVIEN trước CONSTRAINT UNI_TENBM UNIQUE(TENBM), CONSTRAINT DF_NGAYNHANCHUC DEFAULT(GETDATE()) FOR NGAYNHANCHUC © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 20 Lệnh xóa bảng  Được dùng để xóa cấu trúc bảng - Tất cả dữ liệu của bảng cũng bị xóa  Cú pháp DROP TABLE <Tên_bảng>  Ví dụ DROP TABLE GIAOVIEN DROP TABLE BOMON DROP TABLE THAMGIADT © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 21 Lệnh xóa bảng (tt) GIÁOVIÊN MãGV HọTên Lương Phái NgàySinh SốNhà Đường Quận ThànhPhố GVQL MãBM BỘMÔN MãKhoa TrưởngBM NgàyNhậnChức ĐiệnThoại MãBM TênBM Phòng KHOA TrưởngKhoa NgàyNhậnChức TênKhoa NămTL Phòng ĐiệnThoại MãKhoa © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 22 Lệnh tạo miền giá trị  Tạo ra một kiểu dữ liệu mới kế thừa những kiểu dữ liệu có sẳn  Cú pháp CREATE DOMAIN <Tên_kdl_mới> AS <Kiểu_dữ_liệ u>  Ví dụ CREATE DOMAIN MyString30 AS VARCHAR(30) © Bộ môn HTTT ‐ Khoa CNTT ‐ Trường ĐH KHTN 23 Nội dung chi tiết  Giới thiệu  Định nghĩa dữ liệu  Truy vấn dữ liệu - Truy vấn cơ bản - Tập hợp, so sánh tập hợp và truy vấn lồng - Hàm kết hợp và gom nhóm - Một số kiểu truy vấn khác  Cập nhật dữ liệu  Khung nhìn (view)  Chỉ mục (index) © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 24 Truy vấn cơ bản  Là ngôn ngữ rút trích dữ liệu thỏa một số điều kiện nào đó  Gồm 3 mệnh đề SELECT <danh sách các cột> FROM <danh sách các bảng> WHERE <điều kiện> - <danh sách các cột>  Tên các cột cần được hiển thị trong kết quả truy vấn - <danh sách các bảng>  Tên các bảng liên quan đến câu truy vấn - <điều kiện>  Biểu thức boolean xác định dòng nào sẽ được rút trích  Nối các biểu thức: AND, OR, và NOT  Phép © Bộ môn HTTT - Khoa toán:  ,  ĐH CNTT - Trường ,  KHTN ,  ,  , , LIKE và BETWEEN 25 Truy vấn cơ bản (tt)  SQL và ĐSQH  SELECT <danh sách các cột>  FROM <danh sách các bảng> WHERE <điều kiện>  SELECT L FROM R WHERE C L (C (R)) © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 26 Mệnh đề SELECT Lấy ra tất cả các cột Lấy tất cả các cột của quan hệ SELECT * kết quả FROM KHOA WHERE PHONG='I53' AND NAMTL = '1995' MaKhoa TenKhoa Phong NamTL DienThoai TruongKhoa NgayNhanChuc CNTT Công nghệ thông tin I53 1995 08313964145 GV130 01/01/2007 SH Sinh học B32 1975 08313123545 GV250 01/01/1990  PHG='I53'NamTL='1995' (KHOA) © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 27 Mệnh đề SELECT (tt) Lấy ra một số cột SELECT MAKHOA, TENKHOA, PHONG FROM KHOA WHERE PHONG='I53' AND NAMTL = '1995' MaKhoa TenKhoa Phong CNTT Công nghệ thông tin I53  MAKHOA, TENKHOA, PHONG(  PHG='I53'NamTL='1995' (KHOA)) © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 28 Mệnh đề SELECT (tt) Tên bí danh SELECT MAKHOA AS 'Mã khoa', TENKHOA AS 'Tên khoa', PHONG AS 'Mã phòng' FROM KHOA WHERE PHONG='I53' AND NAMTL = '1995' Mã Tên khoa Mã phòng khoa CNTT Công nghệ thông I53 tin   Mã khoa, Tên khoa, Mã phòng( MANV,HONV,TENLOT,TENNV(  PHG='I53'NamTL='1995' (KHOA))) © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 29 Mệnh đề SELECT (tt) Mở rộng SELECT MAGV, HOTEN, SONHA + ',' + DUONG + ',' + ',' + QUAN + ',' + THANHPHO AS 'DIA CHI' FROM GIAOVIEN WHERE PHAI='Nam' MAGV HOTEN DIA CHI GV001 Nguyễn Văn A 123 Phan Đăng Lưu, Q.Phú Nhuận, TP.Hồ Chí Minh  MAGV,HOTEN,DIA CHI(  MAGV,HOTEN,SONHA+DUONG+QUAN+THANHPHO( PHAI=‘Nam’(GIAOVIEN))) © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 30 Mệnh đề SELECT (tt) Mở rộng SELECT MAGV, LUONG*1.1 AS 'LUONG10%' FROM GIAOVIEN WHERE PHAI='Nam' MAGV LUONG10% GV001 550000  MAGV,LUONG10%(  MAGV,LUONG*1.1(  PHAI=‘Nam’(GIAOVIEN))) © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 31 Mệnh đề SELECT (tt) Loại bỏ các dòng trùng nhau SELECT LUONG SELECT DISTINCT LUONG FROM GIAOVIEN FROM GIAOVIEN WHERE PHAI=‘Nam’ WHERE PHAI=‘Nam’ LUONG LUONG 30000 30000 25000 25000 25000 38000 38000 ‐ Tốn chi phí ‐ Người dùng muốn thấy © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 32 Ví dụ  Cho biết MAGV và TENGV làm việc ở bộ môn ‘Hệ thống thông tin’ R1  GIAOVIEN GIAOVIEN.MABM BOMON KQ   MAGV, HOTEN (  TENBM='Hệ thố ng thông tin' (R1)) SELECT MAGV, HOTEN FROM GIAOVIEN, BOMON WHERE TENBM= N'Hệ thống thông tin' AND GIAOVIEN.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ