Ghi chú học MySQL: Cơ bản (DQL, DCL, Hàm)

DQL - Ngôn ngữ truy vấn dữ liệu

Giới thiệu về DQL

DQL (Data Query Language - Ngôn ngữ truy vấn dữ liệu) được sử dụng để truy vấn các bản ghi trong bảng cơ sở dữ liệu.

Từ khóa truy vấn: SELECT

Cú pháp DQL

CHỌN
    danh sách_các_cột
TỪ
    danh_sách_bảng
Ở ĐÂU
    danh_sách_điều_kiện
NHÓM THEO
    danh_sách_cột_nhóm
CÓ
    danh_sách_điều_kiện_sau_nhóm
SẮP XẾP THEO
    danh_sách_cột_sắp_xếp
GIỚI HẠN
    tham_số_phân_trang

Truy vấn cơ bản

  • Truy vấn nhiều cột
CHỌN cột1, cột2, cột3 ... TỪ tên_bảng;
CHỌN * TỪ tên_bảng;
  • Đặt bí danh
CHỌN cột1 [AS bí_danh1], cột2 [AS bí_danh2] ... TỪ tên_bảng;
  • Loại bỏ bản ghi trùng lặp
CHỌN DISTINCT danh_sách_cột TỪ tên_bảng;

Truy vấn có điều kiện

  • Cú pháp
CHỌN danh_sách_cột TỪ tên_bảng Ở ĐÂU danh_sách_điều_kiện;
  • Điều kiện

Hàm tổng hợp

  • Giới thiệu

Xem một cột dữ liệu như một tổng thể, thực hiện tính toán theo chiều dọc.

  • Các hàm tổng hợp phổ biến

  • Cú pháp

CHỌN hàm_tổng_hợp(danh_sách_cột) TỪ tên_bảng;

Truy vấn nhóm

  • Cú pháp
CHỌN danh_sách_cột TỪ tên_bảng [Ở ĐÂU điều_kiện] NHÓM THEO tên_cột_nhóm [CÓ điều_kiện_sau_lọc_nhóm];
  • Sự khác biệt giữa where và having

Thời điểm thực thi khác nhau: where được lọc trước khi nhóm, các bản ghi không thỏa mãn điều kiện where sẽ không tham gia nhóm; trong khi having được lọc sau khi nhóm kết quả.

Thời điểm đánh giá khác nhau: where không thể đánh giá hàm tổng hợp, trong khi having có thể.

Lưu ý:

· Thứ tự thực thi: where > hàm_tổng_hợp > having.

· Sau khi nhóm, các cột được truy vấn thường là hàm tổng hợp và cột nhóm, việc truy vấn các cột khác không có ý nghĩa.

Truy vấn sắp xếp

  • Cú pháp
CHỌN danh_sách_cột TỪ tên_bảng SẮP XẾP THEO cột1 phương_thức1, cột2 phương_thức2;
  • Phương thức sắp xếp

· ASC: Sắp xếp tăng dần (giá trị mặc định)

· DESC: Sắp xếp giảm dần

Lưu ý: Nếu sắp xếp theo nhiều cột, khi cột đầu tiên có giá trị giống nhau, sẽ sắp xếp theo cột thứ hai.

Truy vấn phân trang

  • Cú pháp
CHỌN danh_sách_cột TỪ tên_bảng GIỚI HẠN chỉ_số_bắt_đầu, số_bản_ghi_truy_vấn;

Lưu ý:

· Chỉ số bắt đầu từ 0, chỉ_số_bắt_đầu = (số_trang - 1) * số_bản_ghi_mỗi_trang.

· Truy vấn phân trang là phương ngữ của cơ sở dữ liệu, các cơ sở dữ liệu khác nhau có cách triển khai khác nhau, trong MySQL là LIMIT.

· Nếu truy vấn trang đầu tiên, có thể bỏ qua chỉ số bắt đầu, viết tắt là limit 0.

Thứ tự thực thi DQL

DCL - Ngôn ngữ kiểm soát dữ liệu

Giới thiệu về DCL

DCL (Data Control Language - Ngôn ngữ kiểm soát dữ liệu) được sử dụng để quản lý người dùng cơ sở dữ liệu và kiểm soát quyền truy cập cơ sở dữ liệu.

Quản lý người dùng

  • Xem người dùng
SỬ DỤNG mysql;
CHỌN * TỪ user;
  • Tạo người dùng
CREATE USER 'tên_người_dùng'@'tên_máy_chủ' IDENTIFIED BY 'mật_khẩu';
  • Thay đổi mật khẩu người dùng
ALTER USER 'tên_người_dùng'@'tên_máy_chủ' IDENTIFIED WITH mysql_native_password BY 'mật_khẩu_mới';
  • Xóa người dùng
DROP USER 'tên_người_dùng'@'tên_máy_chủ';

Lưu ý:

· Tên máy chủ có thể sử dụng % làm ký tự đại diện.

· Các câu lệnh SQL này ít được lập trình viên sử dụng, chủ yếu do DBA (Database Administrator - Quản trị viên cơ sở dữ liệu) sử dụng.

Kiểm soát quyền hạn

  • Xem quyền
SHOW GRANTS FOR 'tên_người_dùng'@'tên_máy_chủ';
  • Trao quyền
GRANT danh_sách_quyền ON tên_cơ_sở_dữ_liệu, tên_bảng TO 'tên_người_dùng'@'tên_máy_chủ';
  • Thu hồi quyền
REVOKE danh_sách_quyền ON tên_cơ_sở_dữ_liệu, tên_bảng FROM 'tên_người_dùng'@'tên_máy_chủ';

Lưu ý:

· Nhiều quyền được phân cách bằng dấu phẩy.

· Khi trao quyền, tên cơ sở dữ liệu và bảng có thể sử dụng * để đại diện cho tất cả.

Hàm

Hàm là một đoạn chương trình hoặc mã có thể được gọi trực tiếp bởi một chương trình khác.

Hàm chuỗi

Ví dụ:

select concat('Xin chào', 'MySQL');

select lower('Xin chào');

select UPPER('Xin chào');

select lpad('01', 5, '-');

select rpad('01', 5, '-');

select trim(' Xin chào  MySQL ');

select substring('Xin chào MySQL', 1, 5);

Hàm số

Ví dụ:

select ceil(1.1);

select floor(1.9);

select mod(7, 4);

select rand();

select round(2.344, 2);

select lpad(round(rand() * 1000000, 0), 6, '0');

Hàm ngày

Ví dụ:

select curdate();

select curtime();

select now();

select year(now());

select month(now());

select day(now());

select date_add(now(), INTERVAL 70 DAY );

select datediff('2021-12-01', '2021-10-01');

Hàm luồng

Ví dụ:

select if(true, 'OK', 'Lỗi');

select ifnull('OK', 'Mặc định');
select ifnull(null, 'Mặc định');

Thẻ: mysql DQL DCL SQL-functions database-query-language

Đăng vào ngày 2 tháng 7 lúc 20:06