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