Cơ sở dữ liệu MySQL – Học lập trình, học sử dụng máy tính từ số 0 – ZeZo.dev https://zezo.dev Fri, 29 Nov 2024 15:03:28 +0000 vi hourly 1 https://wordpress.org/?v=6.7.1 https://zezo.dev/wp-content/uploads/2024/11/cropped-zzel-32x32.png Cơ sở dữ liệu MySQL – Học lập trình, học sử dụng máy tính từ số 0 – ZeZo.dev https://zezo.dev 32 32 Note các câu lệnh truy vấn SQL Server https://zezo.dev/view/note-cac-cau-lenh-truy-van-sql-server Fri, 29 Nov 2024 15:03:28 +0000 https://zezo.dev/?p=184  

-- Lấy ra toàn bộ thông tin các nhân viên SELECT * FROM nhan_vien;
-- Lấy ra ds nv gồm Mã NV, họ tên, giới tính SELECT ma_nv, hoten, gt FROM nhan_vien; 
-- Đặt bí danh cho cột gt để hiển thị rõ hơn ở câu lệnh trên SELECT hoten, ma_nv, gt as gioi_tinh FROM nhan_vien; 
-- Dùng phép toán + để ghép nối cột hoặc nối thêm chuỗi 
-- VD: Hiển thị ds nv mà tên hiển thị như sau: 01.Nguyen Van A SELECT ma_nv + '.' + hoten AS ho_va_ten FROM nhan_vien; 
-- Sử dụng mệnh đề DISTINCT để loại bỏ bản ghi trùng lặp 
-- VD: Lấy thông tin cột giới tính; SELECT DISTINCT gt as gioi_tinh FROM nhan_vien; 
-- Dùng mệnh đề TOP để giới hạn số lượng bản ghi cần lấy ra SELECT TOP 2 * FROM nhan_vien; 
-- Mệnh đề WHERE 
-- Lấy ra ds các nhân viên có lương lớn hơn 500 SELECT * FROM nhan_vien WHERE luong > 500; 
-- Lấy ra ds các nhân viên có lương nhỏ hơn 500 SELECT * FROM nhan_vien WHERE luong < 500; 
-- Sử dụng toán tử AND 
-- Lấy ds nv có lương <500 và ở phòng P1 SELECT * FROM nhan_vien WHERE luong<500 AND ma_p = 'P1'; 
-- câu lệnh dưới đây cho kết quả giống câu lệnh trên SELECT * FROM nhan_vien WHERE luong<500 AND ma_p LIKE 'P1'; 
-- Toán tử LIKE với đại diện %, 
-- chú ý: ký tự N đặt trước dấu nháy đơn đối với cột có kiểu dữ liệu nvarchar. 
-- Lấy ds nv có họ là nguyễn SELECT * FROM nhan_vien WHERE hoten LIKE N'Nguyễn%'; 
-- Làm việc với toán tử IN: 
-- Lấy ds nv thuộc phòng P1 và P2 SELECT * FROM nhan_vien WHERE ma_p IN ('P1','P2'); 
-- Sử dụng between...and 
-- lấy ds nv có lương trong khoảng từ 300 đến 600 SELECT * FROM nhan_vien WHERE luong between 300 and 600;

 

 

]]>
Bảng tổng hợp các hàm làm việc với chuỗi trong MySQL – P2 https://zezo.dev/view/bang-tong-hop-cac-ham-lam-viec-voi-chuoi-trong-mysql-p2 Fri, 29 Nov 2024 03:42:34 +0000 https://zezo.dev/?p=92 KẾT HỢP BIỂU THỨC CHÍNH QUY TRONG CÂU LỆNH:

– Biểu thức chính quy được sử dụng khá thường xuyên và đây là một phương pháp tương đối hiệu quả cho các công việc tìm kiếm phức tạp.

– Sử dụng biểu thức chính quy trong MySQL được chi thành 3 nhóm từ khóa sau:

o NOT_REGEXP

o REGEXP

o RLIKE

– Trong nội dung này trình bày việc sử dụng biểu thức chính quy với từ khóa REGEXP. Kết quả tìm kiếm sẽ trả về 1 nếu tìm thấy hoặc trả về 0 nếu không tìm thấy.

 

TT Ký hiệu Diễn giải Ví dụ
Đầu vào Đầu ra
1 ^ Tìm từ đầu chuỗi nguồn SELECT ‘MySQL is easy’ REGEXP ‘^MyN’; 0
2 $ Tìm từ cuối chuỗi nguồn SELECT ‘MySQL is easy’ REGEXP ‘easy$’; 1
3 . Đại diện một ký tự bất kỳ SELECT ‘MySQL’ REGEXP ‘^M.SQL$’; 1
4 * Ký tự xuất hiện 0 hoặc nhiều lần SELECT ‘MyyySQL’ REGEXP ‘^M.*SQL$’; 1
5 + Ký tự xuất hiện 1 hoặc nhiều lần SELECT ‘MSQL’ REGEXP ‘^M.+SQL$’; 0
6 ? Ký tự xuất hiện 0 hoặc 1 lần SELECT ‘MyyySQL’ REGEXP ‘^M.?SQL$’; 0
7 | Sự lựa chọn (hoặc) SELECT ‘My’ REGEXP ‘^(My|Me)$’; 1
 

8

{n.m} Số lần xuất hiện của ký tự (a* tương đương a{0}; a+ tương đương a{1}; a? tương đương a{0,1})  

SELECT ‘abcde’ REGEXP ‘a[bcd]{1,10}e’;

 

1

 

]]>
Bảng tổng hợp các hàm làm việc với chuỗi trong MySQL – P1 https://zezo.dev/view/bang-tong-hop-cac-ham-lam-viec-voi-chuoi-trong-mysql-p1 Fri, 29 Nov 2024 03:42:07 +0000 https://zezo.dev/?p=90 Trong nội dung này, tập trung trình bày các hàm xử lý chuỗi, các thao tác tìm kiếm chuỗi cơ bản kết hợp với việc sử dụng biểu thức chính quy trong hệ quản trị cơ sở dữ liệu MySQL.

CÁC HÀM XỬ LÝ CHUỖI CƠ BẢN:

1. LENGTH (str):

– Xác định chiều dài chuỗi str

 

STT Đầu vào Đầu ra
1 SELECT LENGTH (‘MySQL is easy’); 13

2. CONCAT (str1, str2, …, strn)

– Nối các chuỗi str1str2, …, strn thành một chuỗi duy nhất

 

STT Đầu vào Đầu ra
1 SELECT CONCAT (‘MySQL’, ‘ is’, ‘ easy’); MySQL is easy
2 SELECT CONCAT (‘MySQL’, ‘ is’, NULL, ‘ easy’); NULL

3. FORMAT (str, n)

– Chuyển đổi định dạng chuỗi str theo dạng #,###,###.##, trong đó làm tròn đến số thập phân.

 

STT Đầu vào Đầu ra
1 SELECT FORMAT (12345.678901, 4); 12,345.6789
2 SELECT FORMAT (12345.54321, 0); 12,346

4. INSERT (str, pos, len, newstr)

– Thay thế các ký tự trong chuỗi str từ vị trí thứ pos đến vị trí thứ pos+len-1 bởi chuỗi ký tự newstr.

 

STT Đầu vào Đầu ra
1 SELECT INSERT (‘MySQL is easy’, 3, 3, ‘Library’); MyLibrary is easy
2 SELECT INSERT (‘MySQL is easy’, 3, 100, ‘Library’); MyLibrary

5. INSTR (str, substr)

– Trả về vị trí xuất hiện đầu tiên của chuỗi substr trong chuỗi str

 

STT Đầu vào Đầu ra
1 SELECT INSTR (‘MySQL’, ‘SQL’); 3
2 SELECT INSTR (‘MySQL’, ‘Server’); 0

 

6. LEFT (str, len)

– Trả về chuỗi ký tự tính từ vị trí bên trái của chuỗi str từ vị trí thứ nhất đến vị trí thứ len.

 

STT Đầu vào Đầu ra
1 SELECT LEFT (‘MySQL is easy’, 5); MySQL

7. RIGHT (str, len)

– Trả về chuỗi ký tự tính từ vị trí bên phải của chuỗi str từ vị trí thứ nhất đến vị trí thứ len.

 

STT Đầu vào Đầu ra
1 SELECT RIGHT (‘MySQL is easy’, 7); is easy

8. LOCATE (substr, str, pos)

– Trả về vị trí xuất hiện đầu tiên của chuỗi substr trong chuỗi str tính từ vị trí thứ pos

 

STT Đầu vào Đầu ra
1 SELECT LOCATE (‘very’, ‘MySQL is very very easy’); 10
2 SELECT LOCATE (‘very’, ‘MySQL is very very easy’, 11); 15

9. LOWER (str)

– Chuyển đổi chuỗi str thành chữ thường

 

STT Đầu vào Đầu ra
1 SELECT LOWER (‘MySQL is easy’); mysql is easy

10. UPPER (str)

– Chuyển đổi chuỗi str thành chữ hoa

 

STT Đầu vào Đầu ra
1 SELECT UPPER (‘MySQL is easy’); MYSQL IS EASY

11. LTRIM (str)

– Loại bỏ tất cả khoảng trắng bên trái chuỗi str

 

STT Đầu vào Đầu ra
1 SELECT LTRIM(‘ MySQL is easy’); MySQL is easy

12. RTRIM (str)

– Loại bỏ tất cả khoảng trắng bên phải chuỗi str

 

STT Đầu vào Đầu ra
1 SELECT RTRIM(‘MySQL is easy ‘); MySQL is easy

 

13. REPLACE (str, from_str, to_str)

– Thay thế các ký tự from_str trong chuỗi str bởi các ký tự to_str

 

STT Đầu vào Đầu ra
1 SELECT REPLACE (‘MySQL is easy’, ‘MySQL’, ‘PHP’); PHP is easy

14. REVERSE (str)

– Đảo ngược chuỗi str

 

STT Đầu vào Đầu ra
1 SELECT REPLACE (‘MySQL is easy’, ‘MySQL’, ‘PHP’); PHP is easy

15. SUBSTRING (str FROM pos FOR len)

– Trích lọc từ chuỗi str một chuỗi mới, chuỗi mới này có các ký tự bắt đầu từ vị trí pos (tính từ vị trí biên trái) cho đến vị trí pos+len-1.

 

STT Đầu vào Đầu ra
1 SELECT SUBSTRING(‘MySQL is easy’ FROM 5 FOR 10); L is easy
2 SELECT SUBSTRING(‘MySQL is easy’ FROM -4 FOR 2); ea

16. TRIM ([{BOTH | LEADING | TRAILING} [remstr] FROM] str), TRIM([remstr FROM] str)

– Trả về chuỗi str với các ký tự remstr đã bị loại bỏ, theo các tiêu chí LEADING (bên trái),

TRAILING (bên phải) và BOTH (cả hai vị trí bên trái và bên phải).

 

STT Đầu vào Đầu ra
1 SELECT TRIM (‘ MySQL is easy ‘); — MySQL is easy MySQL is easy
2 SELECT TRIM (LEADING ‘-‘ FROM ‘—MySQL is easy ‘); MySQL is easy—–
3 SELECT TRIM (TRAILING ‘-‘ FROM ‘—MySQL is easy ‘); —MySQL is easy
4 SELECT TRIM (BOTH ‘-‘ FROM ‘—MySQL is easy ‘); MySQL is easy

 

]]>
Bảng tổng hợp các hàm làm việc với thời gian trong MySQL (tiếp theo) https://zezo.dev/view/bang-tong-hop-cac-ham-lam-viec-voi-thoi-gian-trong-mysql-tiep-theo Fri, 29 Nov 2024 03:41:34 +0000 https://zezo.dev/?p=88 Bảng định dạng và kiểu của các thuộc tính expr và unit

 

unit expr
MICROSECOND MICROSECONDS
SECOND SECONDS
MINUTE MINUTES
HOUR HOURS
DAY DAYS
WEEK WEEKS
MONTH MONTHS
QUARTER QUARTERS
YEAR YEARS
SECOND_MICROSECOND ‘SECONDS.MICROSECONDS’
MINUTE_MICROSECOND ‘MINUTES:SECONDS.MICROSECONDS’
MINUTE_SECOND ‘MINUTES:SECONDS’
HOUR_MICROSECOND ‘HOURS:MINUTES:SECONDS.MICROSECONDS’
HOUR_SECOND ‘HOURS:MINUTES:SECONDS’
HOUR_MINUTE ‘HOURS:MINUTES’
DAY_MICROSECOND ‘DAYS HOURS:MINUTES:SECONDS.MICROSECONDS’
DAY_SECOND ‘DAYS HOURS:MINUTES:SECONDS’
DAY_MINUTE ‘DAYS HOURS:MINUTES’
DAY_HOUR ‘DAYS HOURS’
YEAR_MONTH ‘YEARS-MONTHS’

 

1. DATE_ADD(date, INTERVAL expr unit)

– Cộng vào thời điểm date một giá trị expr thuộc dạng unit

 

STT Đầu vào Đầu ra
1 SELECT DATE_ADD(‘2006-05-12’,INTERVAL 1 MONTH); 2006-06-12

2. DATEDIFF(expr1,expr2)

– Tính số ngày giữa hai khoảng thời gian cụ thể (chỉ phần ngày, tháng, năm của hai khoảng thời gian nay mới được tính toán)

 

STT Đầu vào Đầu ra
1 SELECT DATEDIFF(‘2011-12-30’, ‘2011-12-23 09:22:03’); 7

3. SUBDATE(date, INTERVAL expr unit)

– Trừ vào thời điểm date một giá trị expr thuộc dạng unit

 

STT Đầu vào Đầu ra
1 SELECT SUBDATE(‘2006-05-12’,INTERVAL 1 DAY); 2006-05-11

4. DATE_SUB(date, INTERVAL expr unit)

– Trừ vào thời điểm date một giá trị expr thuộc dạng unit

 

STT Đầu vào Đầu ra
1 SELECT DATE_SUB (‘2006-05-12’,INTERVAL 1 MONTH); 2006-04-12

5. SUBTIME(expr1,expr2)

– Xác định hiệu của expr1 và expr2, giá trị kết quả này có định dạng như expr1

 

STT Đầu vào Đầu ra
1 SELECT SUBTIME(‘2007-12-31 23:59:59.999999′,’1 1:1:1.000002’); 2007-12-30

22:58:58.999997

6. EXTRACT(unit FROM date)

– Xác định chính xác thành phần unit tại thời điểm date

 

STT Đầu vào Đầu ra
1 SELECT EXTRACT(YEAR FROM ‘2011-12-23’); 2011
2 SELECT EXTRACT(YEAR_MONTH FROM ‘2011-12-23 01:02:03’); 201112

7. DATE_FORMAT(date,format)

– Địng dạng thời gian tại thời điểm date với kiểu định dạng format.

 

Bảng các ký hiệu định dạng:

 

Ký hiệu Ý nghĩa
%a Tên viết tắt các ngày trong tuần (Sun, …, Sat )
%b Tên viết tắt các tháng trong năm (Jan, …, Dec )
%c Tháng (0,1, …, 12)
%D Thứ tự các ngày trong tháng (0th, 1st, 2nd, …)
%d Thứ tự các ngày trong tháng (00, 01, …, 31)
%e Thứ tự các ngày trong tháng (0, 1, …, 31)
%f Microseconds (000000..999999)
%H Giờ (00..23)
%h Giờ (01..12)
%I Giờ (01..12)
%i Phút (00..59)
%j Số thứ tự ngày trong năm (001..366)
%k Giờ (0..23)
%l Giờ (1..12)
%M Tên tháng (January..December)
%m Tháng (00..12)
%p AM hoặc PM
%r Giờ (00..12) (hh:mm:ss theo sau bởi AM hoặc PM)
%S Giây (00..59)
%s Giây (00..59)
%T Giờ (00..23) (hh:mm:ss)
%U Số thứ tự tuần trong năm (00..53), khi chủ nhật là ngày đầu tiên của tuần
%u Số thứ tự tuần trong năm (00..53), khi thứ hai là ngày đầu tiên của tuần
%w Số thứ tự của ngày trong tuần (0=Sunday..6=Saturday)

 

 

STT Đầu vào Đầu ra
1 SELECT DATE_FORMAT(‘2009-10-04 22:23:00’, ‘%W %M %Y’); ‘Sunday October 2009’
2 SELECT DATE_FORMAT(‘2007-10-04 22:23:00’, ‘%H:%i:%s’); ’22:23:00′
3 SELECT DATE_FORMAT(‘1999-01-01’, ‘%X %V’); ‘1998 52’
4 SELECT DATE_FORMAT(‘2006-06-01’, ‘%d’); ’01’

 

8. GET_FORMAT({DATE|TIME|DATETIME}, {‘EUR’|’USA’|’JIS’|’ISO’|’INTERNAL’})

– Xác định định dạng thời gian theo từng vùng. Hàm này thường đường sử dụng kết hợp với hàm

DATE_FORMAT

 

STT Đầu vào Đầu ra
1 SELECT DATE_FORMAT(‘2003-10-03′,GET_FORMAT(DATE,’EUR’)); 03.10.2003
2 SELECT STR_TO_DATE(‘10.31.2003′, GET_FORMAT(DATE,’USA’)); 2003-10-31

 

]]>
Bảng tổng hợp các hàm làm việc với thời gian trong MySQL https://zezo.dev/view/bang-tong-hop-cac-ham-lam-viec-voi-thoi-gian-trong-mysql Fri, 29 Nov 2024 03:40:52 +0000 https://zezo.dev/?p=86 Trong nội dung này, tập trung trình bày các hàm xử lý thời gian, ngày, tháng, năm, … các thao cộng trừ và định dạng thời gian trong hệ quản trị cơ sở dữ liệu MySQL.

1. NOW()

– Xác định thời gian tại thời điểm hiện tại

 

STT Đầu vào Đầu ra
1 SELECT NOW(); 2011-12-26 19:50:24
2 SELECT NOW() + 0; 20111226195113

2. CURDATE()

– Xác định ngày, tháng, năm tại thời điểm hiện tại

 

STT Đầu vào Đầu ra
1 SELECT CURDATE(); 2011-12-26

3. CURTIME()

– Xác định giờ, phút, giây tại thời điểm hiện tại

 

STT Đầu vào Đầu ra
1 SELECT CURTIME(); 19:54:27

4. DATE(expr)

– Xác định ngày, tháng, năm tại thời điểm expr

 

STT Đầu vào Đầu ra
1 SELECT DATE(‘2011-12-23 09:22:03’); 2011-12-23

5. TIME(expr)

– Xác định giờ, phút, giây tại thời điểm expr

 

STT Đầu vào Đầu ra
1 SELECT TIME(‘2011-12-23 09:22:03’); 09:22:03

6. YEAR(expr)

– Xác định năm tại thời điểm expr

 

STT Đầu vào Đầu ra
1 SELECT YEAR(‘2011-12-23’); 2011

 

7. MONTH(expr)

– Xác định tháng (chỉ số 1, 2, 3, …) tại thời điểm expr

 

STT Đầu vào Đầu ra
1 SELECT MONTH(‘2011-12-23’); 12

8. MONTHNAME(expr)

– Xác định tên tháng tại thời điểm expr

 

STT Đầu vào Đầu ra
1 SELECT MONTHNAME(‘2011-12-23’); December

9. WEEKDAY(expr)

– Xác định chỉ số ngày trong tuần (0 = Monday, 1 = Tuesday, … 6 = Sunday)

 

STT Đầu vào Đầu ra
1 SELECT WEEKDAY(‘2011-12-23’); 4

10. WEEKOFYEAR(expr)

– Xác định chỉ số tuần trong năm (kết quả nằm trong khoảng từ 1 đến 55)

 

STT Đầu vào Đầu ra
1 SELECT WEEKOFYEAR(‘2011-12-23’); 51

11. DAY(expr)

– Xác định ngày (chỉ số) tại thời điểm expr

 

STT Đầu vào Đầu ra
1 SELECT DAY(‘2011-12-23’); 23

12. DAYOFYEAR(expr)

– Xác định số thứ tự của ngày trong năm tại thời điểm expr (kết quả nằm trong khoảng từ 1 đến 366)

 

STT Đầu vào Đầu ra
1 SELECT DAYOFYEAR(‘2011-12-23’); 357

13. DAYOFMONTH(expr)

– Xác định số thứ tự của ngày trong tháng tại thời điểm expr (kết quả nằm trong khoảng từ 1 đến 31)

 

STT Đầu vào Đầu ra
1 SELECT DAYOFMONTH(‘2011-12-23’); 23

 

14. DAYNAME(expr)

– Xác định tên (thứ) của ngày tại thời điểm expr

 

STT Đầu vào Đầu ra
1 SELECT DAYNAME(‘2011-12-23’); Friday

15. DAYOFWEEK(expr)

– Xác định ngày (chỉ số) của ngày tại thời điểm expr (1 = Sunday, 2 = Monday, …, 7 = Saturday)

 

STT Đầu vào Đầu ra
1 SELECT DAYOFWEEK(‘2011-12-23’); 6

16. HOUR(expr)

– Xác định giờ tại thời điểm expr

 

STT Đầu vào Đầu ra
1 SELECT HOUR(‘2011-12-23 09:22:03’); 9

17. MINUTE(expr)

– Xác định phút tại thời điểm expr

 

STT Đầu vào Đầu ra
1 SELECT MINUTE(‘2011-12-23 09:22:03’); 22

18. SECOND(expr)

– Xác định giây tại thời điểm expr

 

STT Đầu vào Đầu ra
1 SELECT SECOND(‘2011-12-23 09:22:03’); 3

19. MICROSECOND(expr)

– Xác định mili giây tại thời điểm expr

 

STT Đầu vào Đầu ra
1 SELECT MICROSECOND(’12:00:00.123456′); 123456

20. TIME_TO_SEC(expr)

– Chuyển thời gian tại thời điểm expr ra số giây

 

STT Đầu vào Đầu ra
1 SELECT TIME_TO_SEC(’22:23:00′); 80580

 

21. FROM_DAYS(N)

– Chuyển về định dạng thời gian của giá trị số N

 

STT Đầu vào Đầu ra
1 SELECT FROM_DAYS(730669); 2000-07-03

22. LAST_DAY(expr)

– Xác định ngày cuối cùng trong tháng của tháng tại thời điểm expr

 

STT Đầu vào Đầu ra
1 SELECT LAST_DAY(‘2011-12-23 09:22:03’); 2011-12-31

23. ADDDATE(date, INTERVAL expr unit)

– Cộng vào thời điểm date một giá trị expr thuộc dạng unit

 

STT Đầu vào Đầu ra
1 SELECT ADDDATE(‘2006-05-12’,INTERVAL 1 DAY); 2006-05-13
2 SELECT ADDDATE(‘2006-05-12’,INTERVAL 8 MONTH); 2007-01-12
]]>