Bài 16. Tạo bảng, đặt ràng buộc và thống kê dữ liệu bằng SQL
Bài học chỉ cách dùng CREATE TABLE để dựng khung một bảng dữ liệu, cách gài sẵn các ràng buộc để hệ quản trị tự từ chối dữ liệu sai, và cách dùng các hàm tổng hợp cùng GROUP BY, HAVING để máy tính thống kê thay cho việc đếm tay.
- Cánh DiềuTin học 11 (Khoa học máy tính) - Chủ đề F · Bài 6. Truy vấn trong cơ sở dữ liệu quan hệ (tiếp theo)tr. 71
- Cánh DiềuTin học 11 (Tin học ứng dụng) - Chủ đề F · Bài 6. Truy vấn trong cơ sở dữ liệu quan hệ (tiếp theo)tr. 71
Bắt đầu bằng một hình dung
Tháng mười, trường của Long tổ chức giải bóng đá học sinh. Ban tổ chức dán ở bảng tin một tờ giấy khổ lớn: đội nào muốn dự thì tự ghi vào bốn ô - tên đội, lớp, tên đội trưởng và một số điện thoại để ban tổ chức gọi khi có thay đổi lịch thi đấu.
Đến hạn chốt danh sách, tờ giấy kín chữ nhưng rắc rối thì đủ kiểu. Có đội đặt tên thật kêu rồi bỏ trống hẳn ô số điện thoại, đến hôm trời mưa phải dời trận thì chẳng biết báo cho ai. Hai đội ở hai lớp khác nhau lại cùng chọn tên "Sấm Sét", loa gọi lên sân mà cả hai bên cùng đứng dậy. Lại có một dòng ghi lớp 11A9, trong khi cả trường chỉ có đến lớp 11A8 - hoá ra bạn ấy viết vội, nhầm mất một chữ số.
Sang năm sau, thầy tổng phụ trách làm khác. Thay cho tờ giấy, thầy đặt ở phòng Đoàn một máy tính mở sẵn biểu mẫu đăng kí. Bỏ trống số điện thoại thì máy không cho gửi. Gõ một tên đội đã có người đặt thì máy báo ngay tại chỗ để đổi sang tên khác. Còn lớp thì không phải gõ tay mà chọn trong danh sách các lớp có thật của trường, nên không thể xuất hiện lớp 11A9 nào nữa. Cái sai bị chặn ngay ở cửa, thay vì nằm im trong danh sách chờ đến ngày thi đấu mới lộ ra.
Chưa hết. Cuối đợt đăng kí, thầy còn cần biết mỗi khối có bao nhiêu đội, khối nào từ năm đội trở lên thì tách ra một bảng đấu riêng. Với tờ giấy ngoài bảng tin thì phải ngồi đếm tay, đếm hai lượt ra hai con số. Với chiếc máy tính kia, thầy chỉ gõ một câu hỏi là có ngay bảng kết quả. Dặn máy trước những gì nó phải kiểm tra, rồi hỏi máy đúng cách để lấy con số thống kê - đó chính là hai việc ta sẽ học trong bài này.
Nội dung bài học
- 1) Dựng khung cho bảng bằng lệnh CREATE TABLE
- 2) Ràng buộc: hàng rào chặn dữ liệu sai ngay từ cửa
- 3) Thống kê dữ liệu: hàm tổng hợp, GROUP BY và ghép bảng
Tóm tắt lý thuyết cần nhớ
- Lệnh
CREATE TABLEdựng khung một bảng mới: đặt tên bảng và khai báo từng cột kèm kiểu dữ liệu (INTEGER,REAL,TEXT,DATE); cònDROP TABLExoá cả cấu trúc lẫn dữ liệu, khác hẳnDELETEchỉ xoá các dòng. - Các ràng buộc
PRIMARY KEY(không trùng, không rỗng),NOT NULL(bắt buộc có giá trị),UNIQUE(không trùng) vàFOREIGN KEY(phải tồn tại ở bảng được tham chiếu) được khai báo ngay lúc tạo bảng, giúp hệ quản trị tự động từ chối dữ liệu sai ngay khi thêm hoặc sửa. - Năm hàm tổng hợp
COUNT,SUM,AVG,MAX,MINrút cả một cột về một con số; kết hợpGROUP BYđể gộp các dòng cùng giá trị thành nhóm rồi thống kê riêng cho từng nhóm. WHERElọc từng dòng TRƯỚC khi gộp nhóm, cònHAVINGlọc từng nhóm SAU khi gộp; muốn lấy dữ liệu từ hai bảng thì dùngJOIN ... ONnối qua đúng cặp khoá chính - khoá ngoại.
Thuật ngữ tiếng Anh trong bài
| Tiếng Anh | Đọc là | Nghĩa |
|---|---|---|
| table | TÂY-bồ | bảng (trong CSDL) Nơi chứa dữ liệu theo hàng và cột - giống bảng điểm của lớp: mỗi hàng một bạn, mỗi cột một thông tin. |
| primary key | PRAI-mơ-ri ki | khoá chính Cột dùng để phân biệt mỗi hàng, không ai trùng ai - như số báo danh riêng của mỗi học sinh. |
| CREATE TABLE | cri-ÊT TÂY-bồ | lệnh SQL tạo bảng mới Là lệnh dựng khung cho một bảng: đặt tên bảng rồi khai báo từng cột kèm kiểu dữ liệu (INTEGER, REAL, TEXT, DATE). |
| constraint | cơn-STRÂY-nt | ràng buộc Là điều kiện gài sẵn ở từng cột để hệ quản trị tự động từ chối dữ liệu sai ngay khi nhập. |
| aggregate function | É-gri-gợt PHĂNG-sần | hàm tổng hợp Là nhóm hàm rút cả một cột dữ liệu về một con số duy nhất: COUNT đếm, SUM cộng, AVG lấy trung bình, MAX và MIN lấy lớn nhất, nhỏ nhất. |
| GROUP BY | grúp BAI | gộp nhóm theo cột Là mệnh đề gộp các dòng có cùng giá trị ở một cột thành một nhóm, rồi tính hàm tổng hợp cho từng nhóm. |
Câu hỏi trắc nghiệm có đáp án
Mấy câu mẫu để bạn tự kiểm tra ngay. Trong ứng dụng, bài này có đủ 23 câu, chấm điểm tự động và giải thích từng câu sai.
- INSERT INTO ... VALUES ...
- SELECT ... FROM ...
- CREATE TABLE ... ( ... )
- UPDATE ... SET ...
- Mọi dòng thêm vào đều bắt buộc phải có giá trị ở cột HoTen, không được để trống
- Các giá trị trong cột HoTen không được trùng nhau giữa các dòng
- Giá trị của cột HoTen phải tồn tại sẵn ở một bảng khác được tham chiếu
- Hệ quản trị sẽ tự động điền họ tên nếu người dùng bỏ trống ô này
- Cả hai đều xoá toàn bộ dữ liệu và giữ lại bảng, chỉ khác nhau về tốc độ thực hiện
- DROP TABLE chỉ xoá những dòng thoả điều kiện, còn DELETE xoá mọi dòng của bảng
- DROP TABLE xoá dữ liệu nhưng giữ lại cấu trúc bảng, còn DELETE xoá luôn cả cấu trúc
- DROP TABLE xoá cả cấu trúc bảng lẫn dữ liệu bên trong, còn DELETE chỉ xoá các dòng dữ liệu và bảng rỗng vẫn còn tồn tại
- a)Ràng buộc FOREIGN KEY buộc giá trị điền vào cột khoá ngoại phải là một giá trị đã tồn tại ở cột khoá chính của bảng được tham chiếu.Đúng
- b)Hàm AVG(SoNgayMuon) trả về số lượng dòng đang có trong cột SoNgayMuon.Sai
- c)Mệnh đề GROUP BY Lop gộp các dòng có cùng giá trị ở cột Lop thành một nhóm, để hàm tổng hợp được tính riêng cho từng lớp.Đúng
- d)Trong một truy vấn, WHERE và HAVING có thể thay thế cho nhau vì cả hai đều làm nhiệm vụ lọc dữ liệu.Sai
- (a) Đúng - đó chính là tác dụng của khoá ngoại: không thể ghi một lượt mượn cho mã độc giả chưa hề có trong bảng DocGia.
- (b) Sai - AVG tính trung bình cộng các giá trị của cột; hàm đếm số dòng là COUNT.
- (c) Đúng - GROUP BY gom các dòng cùng giá trị thành nhóm rồi COUNT, SUM, AVG... được tính riêng rẽ trên từng nhóm.
- (d) Sai - hai mệnh đề làm việc ở hai thời điểm khác nhau: WHERE lọc từng dòng trước khi gộp nhóm, HAVING lọc từng nhóm sau khi đã gộp; điều kiện chứa hàm tổng hợp bắt buộc phải đặt ở HAVING.
Thử ngay: minh hoạ từng bước
Bấm từng bước để tự xem cơ chế hoạt động, hoặc bấm “Tự chạy” cho nó tiến mỗi giây một lần. Đổi được dữ liệu đầu vào - không cần đăng nhập.
Học trọn bài này trong ứng dụng
Bài giảng đầy đủ, 23 câu luyện tập chấm tự động, thi thử đúng cấu trúc đề tốt nghiệp (24 trắc nghiệm + 4 Đúng/Sai), bài thực hành máy tự chấm và gia sư AI giải thích chỗ sai.
Phần học miễn phí, không cần tạo tài khoản.
Bài liên quan - Tổ chức, lưu trữ & tìm kiếm thông tin
Cùng mạch kiến thức với bài này, học nối tiếp cho chắc phần lí thuyết.