SELECT – Tự học SQL cơ bản (phần 1) – Cách thức lấy dữ liệu trong bảng với SQL
Trong bài viết đầu tiên của Chương trình tự học SQL cơ bản, anh em sẽ được tìm hiểu các nội dung sau:
- Thế nào là Cơ sở dữ liệu và Ngôn ngữ truy vấn SQL?
- Cách thức lấy dữ liệu trong bảng với câu lệnh SELECT.
1. Các khái niệm cơ bản
Thế nào là Cơ sở dữ liệu?
Cơ sở dữ liệu – CSDL (Database) là tập hợp các thông tin có cấu trúc được lưu dưới dạng bản ghi, trường cột trong các bảng biểu để giúp cho việc truy xuất và quản lý dữ liệu nhanh và hiệu quả hơn. Vì các bảng này trong CSDL có quan hệ và liên kết với nhau nên ta gọi đó là CSDL Quan hệ (Relational Database).
Với CSDL không lưu trữ dữ liệu dưới dạng bảng biểu và không có ràng buộc liên kết các bảng với nhau thì sẽ được gọi là CSDL Không quan hệ (Non-relational Database). Vì chương trình sẽ chỉ tập trung vào CSDL Quan hệ nên khi nói CSDL ta sẽ tự hiểu là CSDL quan hệ.
Các CSDL trên một hệ thống sẽ được quản lý bởi một phần mềm chung gọi là Hệ quản trị CSDL (Relational Database Management System – RDBMS). Các Hệ CSDL quan hệ phổ biến hiện nay bao gồm có Oracle, SQL Server, PostgreSQL và MySQL. Đây cũng là những Hệ CSDL sẽ được sử dụng trong chương trình tự học SQL cơ bản.
Khái niệm bảng biểu, hàng và cột trong CSDL:
- Các bảng là đối tượng chính trong CSDL lưu trữ một loại thông tin gì đó. Ví dụ một CSDL có bảng Nhân viên, bảng Sản phẩm, bảng Khách hàng, v.v…
- Mỗi bảng lại được chia thành các trường thông tin nhỏ hơn gọi là các cột. Ví dụ với bảng Nhân viên sẽ có các trường hay cột là tên, tuổi, địa chỉ, bộ phận, email, v.v… của nhân viên.
- Các hàng hay bản ghi trong bảng chính là 1 thực thể tồn tại trong bảng. Ví dụ bảng Nhân viên có 37 bản ghi tức là có thông tin của 37 nhân viên được lưu trữ bên trong bảng.
Ngôn ngữ truy vấn SQL
SQL là viết tắt của cụm từ Structured Query Language, nghĩa là ngôn ngữ truy vấn có cấu trúc. Khái niệm “có cấu trúc” ở đây nghĩa là dữ liệu được lưu trữ theo cấu trúc dạng bảng biểu, hàng và cột. Nhờ có cấu trúc này mà chúng ta có thể thao tác với CSDL một cách dễ dàng và hiệu quả.
SQL có thể thực hiện các công việc sau trong CSDL.
- Tạo vào quản lý các CSDL khác nhau.
- Tạo và quản lý các bảng trong CSDL.
- Thêm, sửa xóa các bản ghi trong bảng
- Truy vấn dữ liệu bản ghi từ một hay nhiều bảng trong CSDL.
- Thiết lập quyền truy cập và tạo các đối tượng hỗ trợ khác trong CSDL.
Nói một cách ngắn gọn thì SQL sinh ra với mục đích để người dùng sử dụng có thể giao tiếp và thao tác với CSDL.
2. Chuẩn bị môi trường thực hành SQL
Nếu hiện tại chưa có CSDL nào để thực hành với SQL, anh em có thể sử dụng trang chủ Live SQL của Oracle để viết các câu lệnh truy vấn đầu tiên với SQL. Live SQL cũng dùng các tập dữ liệu có sẵn do chính Oracle cung cấp. Hướng dẫn chi tiết cách sử dụng Live SQL anh em có thể tham khảo trong bài viết dưới đây.
Link đến bài viết …
Anh em cũng không phải lo nếu mình đang sử dụng một Hệ CSDL khác với Oracle. Trong toàn bộ các bài viết của chương trình sẽ ghi cụ thể cú pháp câu lệnh truy vấn tương ứng cho các hệ CSDL khác ngoài Oracle (SQL Server, PostgreSQL và MySQL) để anh em có thể thực hành với câu lệnh SQL.
Tập dữ liệu mẫu mà ta sẽ sử dụng để thực hành với SQL là tập dữ liệu nhân sự công ty (HR). Dưới đây là sơ đồ tổng quan các bảng và danh sách các cột tương ứng trong tập dữ liệu HR.
2. Truy vấn dữ liệu trong bảng với SQL
Câu lệnh SELECT
Để xem dữ liệu trong một bảng, ta sử dụng câu lệnh SELECT với cú pháp như sau với tất cả các hệ CSDL.
SELECT <tên cột> FROM <tên bảng>;
Từ khóa FROM trong câu lệnh SELECT để chỉ định tên bảng mà anh em muốn truy vấn. Ghi nhớ luôn kết thúc câu lệnh với dấu chấm phẩy “;”. Một vài Hệ CSDL có thể không yêu cầu điều này nhưng đây là một thói quen tốt mỗi khi viết câu lệnh truy vấn với SQL. Ví dụ câu lệnh sau sẽ lấy ra danh sách email của tất cả nhân viên trong bảng EMPLOYEES.
SELECT email FROM employees;
SQL không phân biệt viết hoa thường nên câu lệnh SELECT cũng sẽ giống như select hay Select. Tên bảng và tên cột cũng có cú pháp hoa thường tương tự.
Để lấy dữ liệu từ nhiều cột khác nhau ta thêm dấu phẩy “,” ngăn cách giữa tên các cột trong câu lệnh.
SELECT
first_name, last_name, email
FROM employees;
Thứ tự các cột trong câu lệnh truy vấn không nhất thiết phải giống như trong bảng, miễn là đúng cú pháp là CSDL sẽ hiểu được. Thứ tự các cột trong lệnh cũng chính là thứ tự hiển thị trên kết quả truy vấn.
SELECT
phone_number, email, last_name, first_name
FROM employees;
Để lấy hết toàn bộ các cột trong bảng, thay vì ghi hết tên tất cả các cột ra ta sẽ sử dụng dấu sao * như câu lệnh dưới đây. Cú pháp này cũng tương tự với các Hệ CSDL khác.
SELECT * FROM employees;
Sử dụng định danh trong câu lệnh SELECT
Khi thực hiện câu lệnh SELECT, tên cột hiển thị sẽ tương tự như tên cột được định nghĩa khi tạo bảng. Nếu muốn hiển thị một tên khác khi truy vấn, ta có thể dùng từ khóa AS để làm định danh (Alias) như sau.
SELECT
first_name AS employee_first_name
FROM employees;
Với trường hợp muốn hiển thị định danh chứa ký tự đặc biệt, ta sử dụng dấu nháy kép ” “ bên ngoài tên định danh như sau. Mọi ký tự trong định danh sẽ được giữ nguyên khi hiển thị.
Với Oracle và PostgreSQL, định danh chỉ có thể được đặt trong dấu nháy kép.
SELECT first_name AS "Employee First Name"
FROM employees;
Với SQL Server, định danh cột có thể được đặt trong cả dấu nháy đơn ‘ ‘ , nháy kép ” “ hoặc dấu ngoặc vuông [ ] như sau.
SELECT first_name AS "Employee First Name"
FROM employees;
SELECT first_name AS 'Employee First Name'
FROM employees;
SELECT first_name AS [Employee First Name]
FROM employees;
Với MySQL, định danh có thể được đặt trong cả nháy đơn ‘ ‘ , nháy kép ” “ hoặc nháy ngược ` ` như sau.
SELECT first_name AS "Employee First Name"
FROM employees;
SELECT first_name AS 'Employee First Name'
FROM employees;
SELECT first_name AS `Employee First Name`
FROM employees;
Thực hiện các phép tính cơ bản trong câu lệnh SELECT
Khi thực hiện truy vấn dữ liệu với SELECT, ta có thể dùng các phép tính giữa các cột với nhau. Ví dụ muốn ghép chuỗi giá trị 2 cột với nhau ta thực hiện như dưới đây.
Với Oracle và PostgreSQL ta dùng dấu gạch dọc | | để cộng chuỗi (thêm một chuỗi rỗng chứa để tách biệt họ và tên của nhân viên.
SELECT first_name || ' ' || last_name AS full_name FROM employees;
Với SQL Server thì đơn giản hơn, ta dùng dấu + để cộng chuỗi.
SELECT first_name + ' ' + last_name AS full_name FROM employees;
Với MySQL ta không có dấu nào để thể hiện cú pháp cộng chuỗi, thay vào đó ta dùng hàm CONCAT() để thực hiện như sau.
SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM employees;
Với các cột có kiểu dữ liệu là số, ta dùng các phép công trừ nhân chia +, -, *, / (toán tử số học) như thực hiện tính toán thông thường trong ngôn ngữ lập trình.
Ví dụ câu lệnh truy vấn sau sẽ hiển thị thưởng tết cho nhân viên bằng công thức lấy lương nhân 1.5 cộng thêm 2000$.
SELECT first_name|| ' ' || last_name AS full_name, salary * 1.5 + 2000 AS bonus FROM employees;
Các phép tính trên cũng được thực hiện tương tự về cú pháp trên các Hệ CSDL khác.
Tiếp theo
WHERE – ORDER – Tự học SQL cơ bản (phần 2) – Chọn lọc và sắp xếp dữ liệu khi truy vấn với SQL.
Liên Hệ với Wecommit
Nếu bạn muốn liên hệ với Wecommit, bạn có thể trao đổi trực tiếp qua Facebook cùng Trần Quốc Huy – người sáng lập của Wecommit.
Nếu bạn muốn chúng tôi đồng hành xây dựng sự nghiệp với bạn trong 01 năm (bạn sẽ có rất nhiều kiến thức, kinh nghiệm ĐỘC QUYỀN về tối ưu cơ sở dữ liệu) bạn có thể đăng ký trải nghiệm chương trình Từ điển tối ưu 100x hiệu năng của chúng tôi.