I/Truy vấn đơn giản SELECT … FROM
1/ Mệnh đề WHERE
❖ Cú pháp:
SELECT tên danh sách các cột
FROM tên bảng
[WHERE điều kiện chọn]
❖Các phép toán thường gặp trong điều kiện chọn
- So sánh: >, >=, <, <=, =, !=, <>
- Logic: and, or, not, in, not in, between, like, not like
2/Truy vấn có sắp xếp dữ liệu
❖ Cú pháp:
SELECT tên danh sách các cột
FROM tên bảng
[WHERE điều kiện chọn]
[ORDER BY Tên cột sắp xếp [DESC, ASC]]
3/ Sử dụng mệnh đề UNION trong truy vấn
❖ Cú pháp:
SELECT statement
UNION [DISTINCT | ALL]
SELECT statement UNION
[DISTINCT | ALL] …
❖ Nguyên tắc:
- Số lượng các cột trong mỗi câu lệnh SELECT phải giống nhau.
- Các kiểu dữ liệu của cột trong danh sách cột của câu lệnh SELECT phải giống nhau hoặc ít nhất là có thể chuyển đổi sang cho nhau
- Mặc định UNION loại bỏ tất cả các hàng trùng lặp từ kết quả ngay cả khi không sử dụng từ khoá DISTINCT
- Muốn các hàng trùng lặp vẫn còn trong tập hợp kết quả thì sử dụng từ khóa UNION ALL.
- Khi sử dụng ORDER BY để sắp xếp kết quả với UNION, phải đặt nó ở vị trí cuối cùng trong mệnh đề SELECT
4/ Các hàm cấu trúc điều khiển
- Tham số đầu tiên là biểu thức so sánh sẽ được kiểm tra là đúng hay sai. Biểu thức so sánh thì không bằng 0 và không bằng NULL.
- Khi biểu thức so sánh đúng thì kết quả trả về là biểu thức 1, ngược lại thì kết quả trả về là biểu thức 2
❖ Hàm IFNULL: kiểm tra giá trị NULL
❖ Cú pháp: IFNULL(biểu thức 1, biểu thức 2)
- Nếu biểu thức 1 khác NULL thì hàm IFNULL có kết quả trả về là biểu thức 1, ngược lại thì kết quả trả về là biểu thức 2
- Hàm IFNULL trả về giá trị số hoặc chuỗi tùy thuộc vào nội dung trong các biểu thức.
❖ Hàm NULLIF: So sánh sự khác biệt
❖ Cú pháp: NULLIF(biểu thức 1, biểu thức 2)
- Nếu biểu thức 1 bằng biểu thức 2 thì hàm NULLIF có kết quả trả về là NULL, ngược lại thì kết quả trả về là biểu thức 1.
❖ CASE dạng đơn giản:
- Cú pháp:
CASE biểu_thức_giá_trị
WHEN giá_trị_so_sánh
THEN kết_quả
[WHEN giá_trị_so_sánh THEN kết_quả ...]
[ELSE kết_quả] END
❖ CASE dạng có điều kiện:
- Cú pháp:
CASE WHEN điều_kiện_1
THEN kết_quả_1 WHEN điều_kiện_2
THEN kết_quả_2 ... [WHEN điều_kiện_n-1
THEN kết_quả_n-1] [ELSE kết_quả_n]
END
5/Các hàm chuyển đổi kiểu dữ liệu
❖ Hàm CAST
- Dùng để chuyển đổi một giá trị hoặc biểu thức sang một kiểu dữ liệu khác.
- Kết quả trả về là giá trị hoặc biểu thức với kiểu dữ liệu mới
❖ Cú pháp:
CAST(biểu_thức AS kiểu_dữ_liệu) Kiểu dữ liệu có thể là một trong các kiểu sau: BINARY[(N)], CHAR[(N)], DATE, DATETIME, DECIMAL, SIGNED [INTEGER], TIME, UNSIGNED [INTEGER]
❖ Hàm CONVERT
- Dạng 1: dùng để chuyển đổi một giá trị hoặc biểu thức sang một kiểu dữ liệu khác.
- Kết quả trả về là giá trị hoặc biểu thức với kiểu dữ liệu mới
- Cú pháp: CONVERT(biểu_thức, kiểu_dữ_liệu)
6/Các hàm xử lý chuỗi
❖ Hàm CHAR_LENGHT(), CHARACTER_LENGTH() và LENGTH()
- Kết quả trả về là chiều dài của chuỗi (str) nhưng theo hai dạng là chiều dài tính theo ký tự (char_length(), character_length()) và chiều dài tính theo byte (length)
- Cú pháp:
CHAR_LENGTH(str)
CHARACTER_LENGTH(str)
- Kết quả trả về số ký tự có trong chuỗi bao gồm cả khoảng trắng
❖ Hàm CHAR_LENGHT(), CHARACTER_LENGTH() và LENGTH()
- Cú pháp: LENGTH(str)
- Kết quả trả về chiều dài của chuỗi được tính bằng byte
❖ Hàm CONCAT()
- Nối hai hoặc nhiều chuỗi thành một chuỗi mới.
- Nếu các đối số là số, chúng sẽ được chuyển đổi thành chuỗi trước khi nối.
- Nếu bất kỳ đối số trong danh sách đối số là NULL, hàm CONCAT sẽ trả về NULL
- Cú pháp: CONCAT(str1,str2,...)
- Nối hai hay nhiều hơn hai chuỗi với một dấu phân cách được xác định trước.
- Cú pháp: CONCAT_WS(chỉ định cách,str1,str2,...)
❖ Hàm LOWER()
- Kết quả trả về là một chuỗi sau khi đã chuyển các ký tự trong chuỗi thành chữ thường
- Cú pháp: LOWER(str)
❖ Hàm LEFT() và RIGHT()
- Kết quả trả về là một chuỗi con được trích ra từ chuỗi gốc. Trong đó chuỗi con được trích ra có thể bắt đầu từ bên trái (LEFT()) hay bên phải (RIGHT()) của chuỗi.
- Cú pháp :
LEFT(str, số_byte)
RIGHT(str, số_byte)
❖ Hàm MID() và SUBSTRING()
- Hàm Substring cho phép trích xuất một chuỗi con từ một chuỗi khác, bắt đầu tại vị trí cụ thể và với một độ dài nhất định
- Cú pháp 1:
MID(str,pos);
SUBSTRING(str,pos);
SUBSTRING(str FROM pos);
- Cú pháp 2:
MID(str,pos,len);
SUBSTRING(str,pos,len);
SUBSTRING(str FROM pos FOR len);
❖ Hàm MID() và SUBSTRING()
- Chú ý: Nếu sử dụng giá trị âm cho tham số pos, sự bắt đầu của chuỗi con được tính từ cuối của chuỗi.
❖ Hàm REVERSE()
- Kết quả trả về là một chuỗi đảo ngược.
- Cú pháp: REVERSE(str)
- Kết quả trả về là một chuỗi mới sau khi tìm và thay thế một chuỗi con trong chuỗi nguồn bằng một chuỗi khác
- Cú pháp:
UPDATE
❖ Hàm ENCODE(): Dùng để mã hóa một chuỗi
- Cú pháp: ENCODE(str, khóa)
▪ str: là chuỗi sẽ được mã hóa dưới dạng chuỗi nhị phân.
▪ khóa: là password do chúng ta đặt ra để không cho phép người khác giải mã
❖ Hàm DECODE() dùng để giải mã thông tin đã bị mã hóa.
❖ Cú pháp: DECODE(str, khóa)
▪ str: là chuỗi đã bị mã hóa.
▪ khóa: là mật khẩu được đặt ra khi tiến hành mã hóa. Không có mật khẩu này thì không thể giải mã
❖ Hàm SPACE()
- Kết quả trả về là một chuỗi có N khoảng trắng
- Cú pháp: SPACE(N)
❖ Hàm STRCMP()
- Dùng để so sánh chính xác hai chuỗi
- Kết quả trả về bằng 0 nếu hai chuỗi giống nhau, trả về -1 nếu chuỗi 1 nhỏ hơn chuỗi 2, trả về 1 nếu chuỗi 1 lớn hơn chuỗi 2
- Cú pháp: STRCMP(str1, str2)
❖ Hàm CEILING() / CEIL(): dùng để làm tròn số theo cận trên
- Kết quả trả về là số nguyên nhỏ nhất có giá trị không nhỏ hơn X
- Cú pháp: CEILING(X) CEIL(X)
❖ Hàm FLOOR() dùng để làm tròn số theo cận dưới
- Kết quả trả về là số nguyên lớn nhất có giá trị không lớn hơn X
- Cú pháp: FLOOR(X)
❖ Hàm SIGN(): xét dấu của số hay biểu thức’
- Kết quả trả về là 1 nếu số hay biểu thức là số dương, -1 nếu số âm, 0 nếu số bằng 0
- Cú pháp: SIGN(số)
7/Các hàm xử lý thời gian
❖ Hàm ADDDATE() và DATE_ADD(): có cùng kết quả trả về là một ngày mới sau khi đã cộng thêm một đơn vị thời gian
- Cú pháp 1:
ADDDATE(ngày, số_ngày)
DATE_ADD(ngày, số_ngày)
- Cú pháp 2:
ADDDATE(ngày, INTERVAL giá_trị kiểu)
DATE_ADD(ngày, INTERVAL giá_trị kiểu)
❖ Hàm SUBDATE() và DATE_SUB(): có cùng kết quả trả về là một ngày mới sau khi đã trừ đi một đơn vị thời gian
- Cách sử dụng và cú pháp của hai hàm này tương tự như hai hàm ADDDATE() và DATE_ADD()
❖ Hàm CURDATE(), CURRENT_DATE() có kết quả trả về là ngày hiện hành của hệ thống
Cú pháp: CURDATE() CURRENT_DATE()
❖ Hàm CURTIME(), CURRENT_TIME() có kết quả trả về là giờ hiện hành của hệ thống.
Cú pháp: CURTIME() CURRENT_TIME()
❖ Hàm NOW(): có kết quả trả về là ngày giờ hiện hành của hệ thống
- Cú pháp: NOW()
❖ Hàm DATE() có kết quả trả về là ngày-tháng-năm của một biểu thức thời gian bất kỳ
- Cú pháp: DATE(biểu thức thời gian)
❖ Hàm MONTH() có kết quả trả về là tháng của một biểu thức thời gian bất kỳ
- Cú pháp: MONTH(biểu thức thời gian)
❖ Hàm MONTHNAME() có kết quả trả về là tên của tháng (tiếng Anh) của của một biểu thức thời gian bất kỳ
- Cú pháp: MONTHNAME(biểu thức thời gian)
❖ Hàm YEAR() có kết quả trả về là năm của một biểu thức thời gian bất kỳ
- Cú pháp YEAR(biểu thức thời gian)
❖ Hàm DAY() và DAYOFMONTH() có kết quả trả về là giá trị ngày của một biểu thức thời gian có kiểu ngày/ngày giờ bất kỳ
- Cú pháp:
DAY(biểu thức thời gian)
DAYOFMONTH(biểu thức thời gian)
❖ Hàm DAYNAME() có kết quả trả về là tên của ngày trong tuần của một biểu thức thời gian có kiểu ngày/ngày giờ bất kỳ
- Cú pháp: DAYNAME(biểu thức thời gian)
❖ Hàm DAYOFWEEK(): kết quả trả về là giá trị số tương ứng với ngày trong tuần
- Kết quả trả về từ 1->7, trong đó 1 tương ứng với ‘Sunday’, 2 tương ứng với ‘Monday’, …
- Cú pháp: DAYOFWEEK(biểu thức thời gian)
❖ Hàm DAYOFYEAR() có kết quả trả về là ngày trong năm của một biểu thức thời gian có kiểu ngày/ngày giờ bất kỳ
- Cú pháp: DAYOFYEAR(biểu thức thời gian)
❖ Các hàm SECOND(), MINUTE(), HOUR(), TIME() có kết quả trả về là một số nguyên chỉ định giây, phút, giờ và thời gian của một biểu thức thời gian có kiểu giờ:phút:giây hoặc kiểu ngàythángnăm giờ:phút:giây bất kỳ
- Cú pháp:
SECOND(biểu thức thời gian)
MINUTE(biểu thức thời gian)
HOUR(biểu thức thời gian)
TIME(biểu thức thời gian)
❖ Hàm DATEDIFF: có kết quả trả về là khoảng cách đại số giữa hai ngày bất kỳ
- Cú pháp: DATEDIFF(expr1,expr2)
- Chú ý: Nếu expr1 nhỏ hơn expr2 thì kết quả sẽ là số nguyên âm, ngược lại thì kết quả sẽ là số nguyên dương
❖ Hàm TIMEDIFF() có kết quả trả về là khoảng cách đại số của hai biểu thức thời gian bất kỳ
- Cú pháp: TIMEDIFF(expr1, expr2)
SELECT TIMEDIFF('23:59:59', '10:44:45')
❖ Hàm ADDDATE: trả về một giá trị thời gian là kết quả của thao tác trên một giá trị thời gian khác.
Ví dụ 1: đưa ra ngày tháng sau ngày giờ hiện tại 30 ngày:
SELECT ADDDATE(NOW(), INTERVAL 30 DAY);
❖ Hàm EXTRACT: tách ra các giá trị như ngày, tháng, năm từ một giá trị có kiểu thời gian
Ví dụ: đưa ra tháng của một giá trị thời gian:
SELECT EXTRACT(MONTH FROM '2004-12-31 23:59:59’);
SELECT LAST_INSERT_ID();
❖ MySQL LAST_INSERT_ID hoạt động dựa trên nguyên tắc độc lập với client 119 SELECT LAST_INSERT_ID();
8/Truy vấn nhóm
❖ Hàm SUM :Hàm trả về tổng các giá trị theo nhóm
SELECT sum(quantityInStock) FROM products
❖ Hàm AVG :Tính giá trị trung bình của một biểu thức, Nó không chấp nhận giá trị NULL.
SELECT AVG(buyPrice) average_buy_price FROM Products
❖ Hàm COUNT Hàm trả về số lượng mẩu tin theo nhóm.
SELECT COUNT(*) AS Total FROM products
❖ Hàm MAX và MIN Hàm MAX trả về giá trị lớn nhất và hàm MIN trả về giá trị nhỏ nhất của một tập các giá trị.
SELECT MAX(buyPrice) highest_price, MIN(buyPrice) lowest_price FROM Products
9/Mệnh đề nhóm GROUP BY
10/Mệnh đề điều kiện HAVING
❖ HAVING thường được sử dụng cùng với GROUP BY, điều kiện lọc chỉ được áp dụng trên các cột xuất hiện trong mệnh đề GROUP BY.
❖ HAVING không đi kèm với GROUP BY có ý nghĩa là WHERE
❖ Cú pháp:
SELECT Danh sách các cột, Hàm thống kê [as tên]
FROM Tên bảng
[WHERE Điều kiện lọc]
GROUP BY Danh sách các cột nhóm dữ liệu
HAVING Điều kiện lọc sau khi nhóm [ORDER BY Tên cột sắp xếp [DESC, …]
11/Truy xuất dữ liệu từ nhiều bảng
a/INNER JOIN
❖ Kết quả sau khi thực hiện câu lệnh truy vấn kết hợp INNER JOIN là các mẩu tin thỏa điều kiện quan hệ ở cả hai bảng
❖ Cú pháp:
SELECT Danh sách các cột
FROM Bảng 1 INNER JOIN Bảng 2 ON điều kiện nối 1
INNER JOIN Bảng 3 ON điều kiện nối 2 ...
[WHERE Điều kiện lọc] [ORDER BY Danh sách các cột sắp xếp [DESC]];
b/LEFT JOIN
❖ Chọn tất cả các hàng từ bảng bên trái ngay cả khi không có bản ghi phù hợp với nó trong bảng bên phải
❖ Cú pháp:
SELECT Danh sách các cột
FROM Bảng 1 LEFT JOIN Bảng 2 ON điều kiện nối 1
LEFT JOIN Bảng 3 ON điều kiện nối 2 ...
[WHERE Điều kiện lọc] [ORDER BY Danh sách các cột sắp xếp [DESC]];
❖ Chỉ định việc so sánh giá trị trong các cột của các bảng được ưu tiên cho mối quan hệ bên nhánh phải
❖ Cú pháp:
SELECT Danh sách các cột
FROM Bảng 1 RIGHT JOIN Bảng 2 ON điều kiện nối 1
RIGHT JOIN Bảng 3 ON điều kiện nối 2 ...
[WHERE Điều kiện lọc] [ORDER BY Danh sách các cột sắp xếp [DESC]];

0 Nhận xét