MySQL là một hệ quản trị cơ sở dữ liệu mã nguồn mở, hoàn toàn miễn phí.Có thể chạy trên nhiều hệ điều hành: Window, Linux, ...Cung cấp một hệ thống lớn các hàm tiện ích. Thích hợp cho các ứng dụng internet.Phù hợp khi dùng với PHP được cộng đồng hỗ trợ.Dữ liệu lưu trữ trong MySQL dưới dạng các đối tượng được gọi là các bảng.
Trang 2• Giới thiệu về MySQL
• Làm việc với MySQL
• Kết nối với cơ sở dữ liệu MySQL
• Sử dụng phát biểu Select để hiển thị dữ liệu
Trang 3• MySQL là một hệ quản trị cơ sở dữ liệu mã nguồn mở, hoàn toàn miễn phí.
• Có thể chạy trên nhiều hệ điều hành: Window, Linux,
• Cung cấp một hệ thống lớn các hàm tiện ích Thích hợp cho các ứng dụng internet
• Phù hợp khi dùng với PHP được cộng đồng hỗ trợ
• Dữ liệu lưu trữ trong MySQL dưới dạng các đối tượng được gọi là các bảng
Kết nối tới Server MySQL
Trang 4• Chuỗi (String)
– Là một dãy kí tự đặt trong cặp nháy đơn (' ') hoặc cặp
nháy kép (" ") Ví dụ
' a string '
" another string "
– Thêm kí tự thoát (escape character) '\' vào trước các kí tự
có nghĩa đặc biệt.
Trang 5\0 Kí tự NUL (có mã ASCII là 0)
\n Kí tự xuống dòng
\t Kí tự tab
\r Kí tự về đầu dòng
\' Kí tự ' được dùng để bao quanh một chuỗi kí tự
\" Kí tự " được dùng để bao quanh một chuỗi kí tự
\\ Kí tự \ được dùng để làm kí tự thoát
\% % là kí tự được dùng để đại diện cho một chuỗi kí tự bất kỳ
\_ _ là kí tự được dùng đại diện cho một kí tự bất kỳ
Trang 6• Giá trị NULL
– NULL có nghĩa là một giá trị chưa xác định hay giá trị không tồn tại trong csdl MySQL hỗ trợ NULL để biểu đạt khái niệm thông tin còn thiếu
• Tên csdl, tên bảng, tên cột, bí danh (alias)
– Tên csdl tối đa 64 kí tự, tuân theo qui tắc đặt tên thư mục ngoại trừ kí tự ‘.’
và ‘/’
– Tên bảng tối đa 64 kí tự, tuân theo qui tắc đặt tên file ngoại trừ kí tự ‘.’ và ‘/’ – Tên cột tối đa 64 kí tự, cho phép sử dụng tất cả các kí tự
– Alias cho phép tối đa 255 kí tự và dùng tất cả các kí tự
• Chú thích
– Để chú thích một dòng: sử dụng kí tự # hoặc –
– Để chú thích một khối dòng đặt trong cặp /* và */
Trang 7• Dữ liệu dạng số
Kiểu Dữ liệu Kích thước (Bytes) Phạm vi biểu diễn
tinyint(size) 1 -127 128 hoặc 0 255
smallint(size) 2 -32768 32767 hoặc 0 65535
mediumint(size) 3 -8388608 838860 hoặc 0 16777215
int(size) 4 -231 231-1 hoặc 0 232-1
bigint(size) 8 -263 263-1 hoặc 0 264-1
float(size,d) Một số lớn với dấu chấm động size chỉ ra số các con số tối đa d chỉ số các
con số sau dấu chấm thập phân double(size,d) Một số lớn với dấu chấm động size chỉ ra số các con số tối đa d chỉ số các
con số sau dấu chấm thập phân decimal(size,d) Lưu trữ double như một chuỗi, cho phép cố định dấu chấm thập phân size
chỉ ra số các con số tối đa d chỉ số các con số sau dấu chấm thập phân
Trang 8Textual Data Types Description
char(size) Lưu trữ chuỗi có độ dài cố định Có thể lưu trữ tới 255 kí tự
varchar(size) Lưu trữ chuỗi có độ dài biến động Có thể lưu trữ tới 255 kí tự
tinytext Lưu trữ một chuỗi có độ dài tối đa 255 kí tự
text Lưu trữ một chuỗi với độ dài tối đa 65.535 kí tự
blob Cho BLOBs (Binary Large OBjects) Lưu trữ tới 65.535 byte dữ liệu
mediumtext Lưu trữ một chuỗi với độ dài tối đa 16.777.215 kí tự
mediumblob Cho BLOBs (Binary Large OBjects) Lưu trữ tới 16.777.215 byte dữ liệu longtext Lưu trữ một chuỗi có độ dài tối đa 4.294.967.295 kí tự
longblob Cho BLOBs (Binary Large OBjects) Lưu trữ tới 4.294.967.295 byte dữ liệu
• Dữ liệu dạng chuỗi
Trang 9Kiểu Dữ liệu Mô tả
Date Biểu dưới dạng YYYY-MM-DD (Từ '1000-01-01' tới '9999-12-31') Datetime Biểu dưới dạng YYYY-MM-DD HH:MM:SS (Từ '1000-01-01 00:00:00' đến '9999-12-31 23:59:59')
Time Biểu dưới dạng YYYY-MM-DD HH:MM:SSTừ -838:59:59' đến '838:59:59'
TimeStamp Biểu dưới dạng YYYY-MM-DD HH:MM:SS('1970-01-01 00:00:00' UTC)
Year(2|4) 1970 đến 2069
• Dữ liệu ngày tháng:
Trang 10• Dữ liệu ngày tháng:
Trang 11• Toán tử số học: +, -, *, /
• Toán tử so sánh: >, <, >=, <=, =, !=
• Toán tử logic: and, or, not
• Phép toán BETWEEN…AND…
• Phép toán IN, NOT IN
• Phép toán IFNULL:
– Ví dụ: IFNULL(11,‘’) =>0; IFNULL(1/0) =>1
• Toán tử LIKE
– Kí tự mở rộng dùng trong mẫu của toán tử LIKE
• Kí tự % : đại diện cho một chuỗi kí tự bất kì, kể cả chuỗi rỗng
• Kí tự _ : đại diện cho một kí tự bất kỳ
Biểu_thức LIKE mẫu [ESCAPE ‘escape_char’]
Trang 12• Phép toán LIKE
escape-char: gồm kí tự ‘%’ đại diện cho một chuỗi kí tự bất kỳ, kí
tự ‘-’ đại diện chi một kí tự bất kỳ
– Ví dụ
select ‘ha’ LIKE ‘ha\-’; trả về 1 select ‘10’ LIKE ‘1\%’; trả về 1
biểu_thức LIKE mẫu[ESCAPE ‘escape-char’]
Trang 13• Các hàm so sánh chuỗi có phân biệt chữ hoa chữ
thường
– Hàm CHAR(mã_ASCII_1, mã_ASCII_2, …
mã_ASCII_n) Hàm trả về dãy các kí tự có mã ASCII
tương ứng
– Hàm CONCAT(str1, str2, …, strN) : Hàm trả về một chuỗi được ghép từ các chuỗi tham số Trả về NULL nếu tham số là NULL
SELECT CHAR(77,121,83,81,'76');
=>trả về “MySQL”
SELECT CONCAT(‘My’,’S’,’QL’);
=>trả về “MySQL”
Trang 14• Hàm CONCAT_WS(separator,str1, str2, …, strN) : Hàm trả
về một chuỗi được ghép từ các str1,str2,strN, các chuỗi
ghép lại được phân cách bởi kí tự separator Nếu separator
là NULL hàm trả về NULL.
• Hàm LENGTH(str) Trả về độ dài của chuỗi str
• Hàm LOCATE(substr,str,[pos]) , POSITION(substr IN
str ) Trả về vị trí xuất hiện đầu tiên của chuỗi con substr trong chuỗi str.
SELECT CONCAT_WS(",","First name","Second name","Last Name"); ->Trả về: 'First name,Second name,Last Name'
Trang 15• Hàm UPPER(str): Hàm trả về chuỗi str được viết in hoa.
• Hàm LOWER(str): Hàm trả về chuỗi str được viết in thường.
• Hàm LTRIM(str): Bỏ khoảng trắng bên trái chuỗi
• Hàm RTRIM(str): Bỏ khoảng trắng bên phải chuỗi
• Hàm LEFT(str,n): Hàm trả về một chuỗi gồm len kí tự được cắt từ bên trái chuỗi str.
• Hàm RIGHT(str,n): Hàm trả về một chuỗi gồm len kí tự được cắt từ bên phải chuỗi str.
được cắt từ bắt đầu từ vị trí pos của chuỗi str.
• Hàm InSTR(str1, str2): Trả về vị trí bắt đầu của chuỗi str1 trong chuỗi str2
Trang 16• CURDATE(): trả về ngày hiện tại, giá trị được biểu diễn ở dạng
'YYYY-MM-DD' hoặc YYYYMMDD.
'HH:MM:SS' or HHMMSS
SELECT CURDATE();
-> '2011-07-15'
SELECT CURDATE()+0;
-> '20110715'
SELECT CURTIME();
-> '23:50:26'
SELECT CURTIME()+0;
-> '235026'
Trang 17• Hàm DATE(expr) trả về ngày tháng năm từ biểu thức expr có kiểu date, hay datetime.
• Hàm DATEDIFF(expr1,expr2): trả về khoảng thời gian giữa
hai ngày expr1 và expr2
• Hàm DAYNAME(date)trả về thứ của ngày
SELECT DATE('2003-12-31 01:02:03');
-> '2003-12-31'
SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30');
-> 1
SELECT DAYNAME(‘2011-07-11');
-> Monday
Trang 18Specifier Description
%a,%W, %w (Sun Sat), (Sunday Saturday),
(0=Sunday 6=Saturday)
%b,%M (Jan Dec),(January December)
%c, %m Month, numeric (0 12)
%d, %e Day of the month, numeric (00 31), (0 31)
%h,%H Hour (01 12), (00 23)
%i Minutes, numeric (00 59)
%s, %S Seconds (00 59)
%T Time, 24-hour (hh:mm:ss)
%Y, %y Year, numeric: four digits ; two digits
• Hàm DATE_FORMAT(date, format)
Các specifier sau đây được dùng trong chuỗi định dạng format
Trang 19• HOUR(time)
• DAY(date)
• MINUTE(time)
• MONTH(date)
• NOW()
• SECOND(time)
• TIME()
• YEAR()
Trang 20• Hàm IF
IF(điều_kiện, giá_trị_trả_về_1,
Giá_trị_trả_về_2)
– Giải thích: nếu biểu thức điều_kiện đúng (tức là
điều_kiện khác 0 hoặc khác NULL) thì hàm IF trả về giá trị giá_trị_trả_về_1 Trong trường hợp ngược lại, hàm IF trả về giá trị giá_trị_trả_về_2
• Hàm IFNULL(biểu_thức, giá_trị_trả_về_1)