Mục lục
Chương 1 DẪN NHẬP trang1
Chương 2 TÌM HIỂU CÁC CÔNG NGHỆ trang 4
2.1. Sử dụng các hệ quản trị cơ sở dữ liệu trang 4
2.2. Trình kết nối cơ sở dữ liệu trang 6
2.3. Sự hỗ trợ của Server đối với các ngôn ngữ kịch bản trang 7
2.4. Các ngôn ngữ kịch bản trên Server trang 8
2.5. Công nghệ MySQL và PHP trang 10
Chương 3 TÌM HIỂU VỀ MYSQL VÀ PHP trang 12
3.1. Tìm hiểu về MySQL trang 12
3.1.1. Giới thiệu về MySQL và cách cài đặt trang 12
3.1.2. Quản trị cơ sở dữ liệu trong MySQL trang 15
3.1.3. Lấy thông tin về cơ sở dữ liệu, bảng, cột, index trang 18
3.1.4. Các lệnh thao tác trên cơ sở dữ liệu trang 23
3.1.5. Các lệnh thao tác trên dữ liệu trang 28
3.1.6. Các tiện ích khác trang 36
3.2. Tìm hiểu về PHP trang 38
3.2.1. Giới thiệu về PHP trang 38
3.2.2. Sử dụng PHP trang 41
3.2.3. Các đặc điểm khác trong PHP trang 54
3.2.4. Các loại hàm trong PHP trang 60
Chương 4 HIỆN THỰC ỨNG DỤNG QUẢN LÝ XUẤT NHẬP TÂN
DƯỢC CHO CÔNG TY XUẤT NHẬP KHẨU Y TẾ TP HỒ CHÍ
MINH trang 63
4.1. Tổng quan về hệ thống trang 63
4.1.1. Mục đích trang 63
4.1.2. Cách quản lý thuốc tại công ty trang 64
4.2. Thiết kế cơ sở dữ liệu trang 66
4.2.1. Thiết kế cơ sở dữ liệu mức quan niệm trang 66
4.2.2. Thiết kế dữ liệu mức logic trang 73
4.2.3. Thiết kế dữ liệu mức vật lý trang 83
4.3. Thiết kế xử lý trang 86
4.4. Sơ đồ Web Site trang 92
4.5. Các giao diện trang 96
Chương 5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI trang 105
5.1. Kết luận trang 105
5.2. Hướng phát triển đề tài trang 106
Tài liệu tham khảo
Phụ Lục
62 trang |
Chia sẻ: maiphuongdc | Lượt xem: 2411 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Luận văn Tìm hiểu MySQL và PHP, hiện thực ứng dụng quản lý xuất nhập tân dược cho công ty xuất nhập khẩu y tế thành phố Hồ Chí Minh, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
hành, một thông báo lỗi sẽ xuất hiện.
ERROR 1051 : Unknown table ‘table_name’
mysql> _
Bảng bạn cần xoá chỉ thực sự được xoá xong nếu như có một dòng thông báo đáp trả như sau:
Query OK, 0 rows affected ( 0.01 sec )
Mysql> _
Chỉnh sửa bảng
Nếu bạn cần chỉnh sửa lại cấu trúc của một bảng như thêm/xoá một hay nhiều cột, các chỉ mục, các khoá, … câu lệnh sau sẽ giúp bạn với cú pháp tổng quát là:
ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...]
alter_specification
ADD [COLUMN] create_definition [FIRST | AFTER column_name ]
or ADD [COLUMN] (create_definition, create_definition,...)
or ADD INDEX [index_name] (index_col_name,...)
or ADD PRIMARY KEY (index_col_name,...)
or ADD UNIQUE [index_name] (index_col_name,...)
or ADD FULLTEXT [index_name] (index_col_name,...)
or ADD [CONSTRAINT symbol] FOREIGN KEY index_name (index_col_name,...)
[reference_definition]
or ALTER [COLUMN] col_name
{SET DEFAULT literal | DROP DEFAULT}
or CHANGE [COLUMN] old_col_name
create_definition
or MODIFY [COLUMN] create_definition
or DROP [COLUMN] col_name
or DROP PRIMARY KEY
or DROP INDEX index_name
or RENAME [TO] new_tbl_name
or ORDER BY col
or table_options
( tương tự như option của câu lệnh Create)
Lưu ý rằng trong ANSI SQL chỉ sửa đổi trên một cột bằng lệnh ALTER TABLE, nhưng MySQL thì cho phép ta sửa được nhiều cột hơn. Mỗi mệnh đề sửa đổi có thể được dùng để thay đổi nhiều phần khác nhau của bảng như mô tả chi tiết dưới đây.
Cú pháp
Chú thích
ADD [COLUMN]
column_name column_type
[FIRST | AFTER column_name ]
Thêm một cột mới vào vị trí được chỉ định (nếu chưa được chỉ định thì cột mới sẽ thêm vào cuối).
ADD [COLUMN]
(column_name1 column_type,
column_name2 column_type, … )
Thêm một hay nhiều cột mới vào cuối bảng.
ADD INDEX [index]
(column_name1, column_name2, … )
Thêm một chỉ mục vào một hay nhiều cột trong bảng.
ADD PRIMARY KEY
(column_name1, column_name2, … )
Các cột có tên trong danh sách sẽ là khoá chính trong bảng.
ADD UNIQUE [index]
(column_name1, column_name2, … )
Thêm một chỉ mục duy nhất tại các cột có trong danh sách chỉ định trong bảng.
ALTER [COLUMN] column_name
{ SET DEFAULT new_value
| DROP DEFAULT}
Khởi tạo giá trị mặc định mới cho một cột hoặc xoá giá trị mặc định.
CHANGE [COLUMN]
column_name new_column_name
new_column_type
Đổi tên mới và kiểu dữ liệu mới cho cột có tên column_name.
MODIFY [COLUMN]
column_name column_type
Tương tự như CHANGE nhưng ta có thể sử dụng để đổi kiểu dữ liệu của cột mà không cần đổi tên cột.
DROP [COLUMN] column_name
Xóa một cột có tên column_name khỏi bảng.
DROP PRIMARY KEY
Xóa khoá chính trong bảng (không phải xoá cột).
DROP INDEX index
Xóa chỉ mục đã đặt tên.
RENAME [AS] new_table_name
Đặt tên mới cho bảng.
Câu lệnh RENAME TABLE
Câu lệnh này dùng để đổi tên một cột đã có trong một bảng. Bạn cũng có thể đổi tên nhiều cột trong cùng một câu lệnh rename, lưu ý rằng câu lệnh chỉ làm thay đổi tên gọi của cột mà không làm thay đổi kiểu dữ liệu của cột cũng như các tham chiếu liên quan đến cột này. Cú pháp câu lệnh như sau:
RENAME TABLE tbl_name TO new_table_name[, tbl_name2 TO new_table_name2,...]
Câu lệnh BACKUP TABLE
Câu lệnh này dùng để sao lưu lai cấu trúc của một bảng trong cơ sở dữ liệu, cách thức hoạt động của câu lệnh là tạo một bản copy của bảng được chỉ định thành các tập tin có dung lượng nhỏ trong thư mục được chỉ định. Bạn cũng có thể sao lưu nhiều bảng một lần trong cùng một câu lệnh Backup, và để đảm bảo an toàn, bạn hãy khoá các bảng cần sao lưu lại trước khi thực hiện câu lệnh Backup. Cú pháp :
BACKUP TABLE tbl_name[,tbl_name...]
TO '/path /to /backup /directory'
Câu lệnh RESTORE TABLE
Câu lệnh này dùng để phục hồi lại cấu trúc của một bảng (hay nhiều bảng ) đã được sao lưu trước đó bằng câu lệnh Backup Table. Cú pháp :
RESTORE TABLE tbl_name[,tbl_name...]
FROM '/path /to /backup /directory'
Các lệnh thao tác trên dữ liệu
Câu lệnh INSERT
Các mẫu tin có trong cơ sở dữ liệu được nhập vào chỉ bằng một cách duy nhất đó là dùng câu lệnh chèn mẫu tin. Câu lệnh này có thể dùng để thêm một hay nhiều mẫu tin mới vào một bảng có trong cơ sở dữ liệu hiện hành, cú pháp của câu lệnh này gồm các dạng
Dạng 1 :
INSERT [LOW_PRIORITY | DELAYED] [IGNORE] [INTO]
tbl_name [(col_name,...)] VALUES (expression,...),(...),...
Dạng 2 :
INSERT [LOW_PRIORITY | DELAYED] [IGNORE] [INTO]
tbl_name [(col_name,...)] SELECT ...
Dạng 3 :
INSERT [LOW_PRIORITY | DELAYED] [IGNORE] [INTO] tbl_name
SET col_name=expression, col_name=expression, ...
Các thông báo lỗi sẽ xuất hiện nếu bạn cung cấp sai tên bảng, sai tên cột hay giá trị của dữ liệu không phù hợp với kiểu dữ liệu của cột. Các tên cột chỉ ra không nhất thiết phải đúng thứ tự trong cấu trúc của bảng, nhưng dữ liệu nhập vào sẽ đúng với thứ tự của các cột được chỉ ra trong danh sách các cột cần nhập dữ liệu. Ngoài ra các cột không cần nhập dữ liệu thì không cần thiết phải có tên trong danh sách chỉ định cột trong dòng lệnh, nhưng các cột không có dữ liệu nhập vào thì nhất định phải có phần mô tả IS NULL sau phần định dạng kiểu dữ liệu của cột.
Nếu bạn không cung cấp danh sách các cột cần thêm dữ liệu ở câu lệnh dạng 1, MySQL sẽ xem như tất cả các cột đều được thêm dữ liệu, dữ liệu sẽ được lưu tuần tự vào vị trí các cột đúng như trong cấu trúc các cột của bảng.
Câu lệnh REPLACE
Dùng để thay thế một mẩu tin đã có trong một bảng, nếu mẩu tin cũ và mẩu tin mới có cùng giá trị trên cột mang chỉ số duy nhất thì mẩu tin cũ sẽ bị xoá đi trước khi mẩu tin mới được thêm vào. Cú pháp như sau:
Dạng 1 :
REPLACE [LOW_PRIORITY | DELAYED] [INTO] tbl_name [(col_name,...)]
VALUES (expression,...)
Dạng 2 :
REPLACE [LOW_PRIORITY | DELAYED] [INTO] tbl_name [(col_name,...)]
SELECT ...
Dạng 3 :
REPLACE [LOW_PRIORITY | DELAYED] [INTO] tbl_name
SET col_name=expression, col_name=expression,...
Câu lệnh DELETE
Để xoá các mẫu tin trong một bảng ta dùng câu lệnh xoá mẫu tin với cú pháp tổng quát như sau:
DELETE [LOW_PRIORITY] FROM tbl_name
[WHERE where_definition]
[LIMIT rows]
Nếu chỉ dùng câu lệnh DELETE FROM table_name; thì tất cả các dữ liệu trong bảng có tên table_name sẽ bị xóa hết, vì thế hãy cẩn thận. Thông thường, khi chúng ta muốn xóa một hay nhiều dòng, ta cần xác định những dòng cần xoá bằng mệnh đề WHERE. Mệnh đề LIMIT dùng để giới hạn số dòng tối đa muốn xóa.
Câu lệnh TRUNCATE
Câu lệnh này dùng để xoá các mẩu tin trong cơ sở dữ liệu giống như câu lệnh Delete from, nhưng có một điểm khác biệt với câu lệnh Delete là bạn không thể phục hồi lại các mẫu tin đã xoá sau khi hoàn tất câu lệnh Truncate, và bạn cũng không thể biết được số mẫu tin đã xoá đi là bao nhiêu. Cú pháp :
TRUNCATE table_name
Câu lệnh LOAD DATA INFILE
Câu lệnh này dùng để thêm nhiều mẫu tin vào một bảng, dữ liệu có thể được lưu trữ trong một tập tin văn bản bình thường, mỗi phần tử của mẩu tin chỉ cần cách nhau bằng một ký hiệu Tab khoảng trắng hoẵc bàng những ký hiệu theo qui ước trước trong phần option của câu lệnh. Cú pháp :
LOAD DATA [LOW_PRIORITY] [LOCAL]
INFILE 'file_name.txt' [REPLACE | IGNORE]
INTO TABLE tbl_name [FIELDS [TERMINATED BY '\t']
[[OPTIONALLY] ENCLOSED BY ''] [ESCAPED BY '\\' ] ]
[LINES TERMINATED BY '\n'] [IGNORE number LINES]
[(col_name,...)]
Câu lệnh UPDATE
Để thay đổi giá trị của dữ liệu đã có trong bảng, ta dùng câu lệnh cập nhật dữ liệu như sau:
UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
SET col_name1=expr1, [col_name2=expr2, ...]
[WHERE where_definition] [ORDER BY ...] [LIMIT #]
Bạn cần cung cấp tên bảng muốn cập nhật dữ liệu vào vị trí table_name, ở vị trí expression bạn có thể là đặt một toán tử hay một giá trị mặc định mới nào đó vẫn được. Có thể giới hạn phạm vi cập nhật bằng mệnh đề WHERE nên chỉ có những mẫu tin nào thoả mãn điều kiện condition thì mới được cập nhật dữ liệu, ngoài ra để giới hạn tổng số mẫu tin cần cập nhật ta dùng mệnh để LIMIT với số lượng mẫu tin muốn cập nhật đặt tại vị trí number.
mysql> UPDATE persondata SET age=age+1;
mysql> UPDATE persondata SET age=age*2, age=age+1;
Câu lệnh SELECT
Với câu lệnh chọn mẫu tin này, chúng ta có thể lấy bất cứ mẫu tin nào thoả mãn điều kiện cần của chúng ta ngay cả khi dữ liệu không nằm trong cùng một bảng. Cú pháp chung:
SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT]
[SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
[HIGH_PRIORITY] [DISTINCT | DISTINCTROW | ALL]
select_expression,...
[INTO {OUTFILE | DUMPFILE} 'file_name' export_options]
[FROM table_references
[WHERE where_definition]
[GROUP BY {unsigned_integer | col_name | formula}]
[HAVING where_definition]
[ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] ,...]
[LIMIT [offset,] rows]
[PROCEDURE procedure_name] ]
Bạn có thể cung cấp một danh sách các tên cột thuộc các bảng, hay chỉ đơn giản là những hàm chức năng vào vị trí sau từ khoá Select để trình bày kết quả trả về, ngoài ra bạn cũng có thể nhận kết quả trả về và tự động lưu chúng trong một tập tin văn bản. Các điều kiện để lấy mẫu tin sẽ được đặt ở vị trí mệnh đề WHERE. Bạn có thể dùng các toán tử so sánh dưới đây được MySQL hỗ trợ để đặt trong mệnh đề điều kiện của bạn.
Các hàm sử dụng trong mệnh để WHERE và SELECT :
Tính toán các giá trị
Có thể +,-,*,/ các giá trị trong mệnh đề Select trả về như sau:
mysql> select 1+2*3; -> 7
mysql> select (1+2)*3; -> 9
Sử dụng các toán tử Logic
Các toán tử Logic bao gồm AND(&&), OR(||), NOT, NOT NULL sẽ trả về các giá trị là 1(true) hoặc 0(false) hoặc NULL.
Toán tử so sánh
Bao gồm toán tử tương đương (), bằng (=), khác ( hay != ), lớn hơn (>), nhỏ hơn (=), nhỏ hơn hay bằng (<=), kiểm tra rỗng (IS NULL hay IS NOT NULL), hàm BETWEEN min AND max, IN, NOT IN, COALESCE(list),
INTERVAL(N,N1,N2,N3,...), giá trị trả về sẽ là 0(false) hay 1(true) hay NULL .
Các hàm so sánh chuỗi
Hàm LIKE (giá trị trả về là 0 hay 1), NOT LIKE , REGEXP, RLIKE, NOT REGEXP, NOT RLIKE, STRCMP(expr1,expr2),
MATCH (col1,col2,...) AGAINST (expr),
IFNULL
(expr1,expr2)
Nếu expr1 không rỗng thì trả về giá trị của expr1, ngược lại thì trả về giá trị của expr2. giá trị trả về có thể lả một số hay một chuỗi ký tự tuỳ thuộc vào ngữ cảnh sử dụng hàm. Ví du:
mysql> select IFNULL(1,0); //-> 1
mysql> select IFNULL(NULL,10); //-> 10
mysql> select IFNULL(1/0,'yes'); //-> 'yes'
NULLIF
(expr1,expr2)
Giá trị trả về sẽ là NULL nếu expr1=epxr2, ngược lại thì trả về giá trị của expr1.
IF (expr1 ,expr2, expr3)
Nếu expr1 có giá trị (nghĩa là expr1 khác 0 và khác NULL) thì trả về giá trị của expr2, ngược lại thì trả về giá trị của expr3. ví dụ như :
mysql> select IF(1>2,2,3); //-> 3
mysql> select IF(1 'yes'
Các hàm toán học
Gồm hàm tính giá trị tuyệt đối ABS(X)
Hàm kiểm tra số là âm hay 0 hay dương (SIGN(X))
Hàm lấy phần dư của phép chia (MOD(N,M))
Hàm lấy số nguyên (FLOOR(X) hoặc CEILING(X))
Hàm làm tròn số (ROUND(X))
Hàm tính logarit (LOG(X))
Hàm luỹ thừa (POW(X,Y) hay POWER(X,Y))
Hàm tính căn bậc hai (SQRT(X))
Hàm lấy số PI (PI())
Hàm tính lượng giác (COX(X) – SIN(X) – TAN(X) – ACOS(X) – ASIN(X) – ATAN(X) – ATÀN(X) – COT(X) )
Hàm lấy số ngẫu nhiên (RAND() - RAND(N))
Hàm lấy số nhỏ nhất có trong danh sách (LEAST(X,Y,...))
Hàm lấy số lớn nhất (GREATEST(X,Y,...))
Hàm chuyển giữa số radian và độ (DEGREES(X) - RADIANS(X)), …
Các hàm về chuỗi
Gồm hàm lấy mã ASCII của một chuỗi (ASCII(str))
Hàm hoán chuyển số giữa các hệ đếm (BIN(N) - OCT(N) - HEX(N))
Hàm nối chuỗi (CONCAT(str1,str2,...))
Hàm đếm độ dài của chuỗi (LENGTH(str))
Hàm định vị trí của chuỗi con (LOCATE(substr,str) - POSITION(substr IN str) - INSTR(str,substr) - LPAD(str,len,padstr))
Hàm cắt chuỗi (LEFT(str,len) - RIGHT(str,len)- SUBSTRING(str,pos,len) - SUBSTRING(str FROM pos FOR len) - MID(str,pos,len) - SUBSTRING_INDEX(str,delim,count) - LTRIM(str) - RTRIM(str) )
Hàm thay thế chuỗi (SPACE(N) - REPLACE(str,from_str,to_str) - REPEAT(str,count))
Hàm đảo chuỗi (REVERSE(str))
Hàm đổi chữ hoa – thường
(LCASE(str) - LOWER(str) )
Hàm về ngày giờ
DAYOFWEEK(date)
WEEKDAY(date)
DAYOFMONTH(date)
DAYOFYEAR(date)
MONTH(date)
DAYNAME(date)
MONTHNAME(date)
QUARTER(date)
HOUR(time)
MINUTE(time)
SECOND(time)
TO_DAYS(date)
CURDATE()
CURRENT_DATE
CURTIME()
CURRENT_TIME
NOW()
SYSDATE()
Tính ngày trong tuần(1=Sunday,..7=Saturday)
Trả về chỉ số của ngày trong tuần
Tính số ngày trong tháng
Tính số ngày trong tháng
Tính tháng
Tính thứ của ngày
Lấy tên của tháng
Tính tuần thứ mấy trong tháng
Lấy giờ của time
Lấy phút của time
Lấy giây của time
Tính số ngày từ năm 0 đến ngày date
Trả về ngày hiện hành
Trả về ngày hiện hành
Trả về giờ hiện hành
Trả về giờ hiện hành
Trả về ngày, giờ hiện hành
Trả về ngày, giờ hiện hành
Hàm trên cơ sở dữ liệu và dữ liệu
Gồm hàm xem cơ sở dữ liệu hiện hành DATABASE()
Hàm xem thông tin về user hiện hành USER() - SYSTEM_USER() - SESSION_USER() - PASSWORD(str) - ENCRYPT(str[,salt])
Hàm mã hoá dữ liệu ENCODE(str,pass_str) - DECODE() - DECODE(crypt_str,pass_str)
Hàm xem phiên bản mysql VERSION()
Các hàm sử dụng trong mệnh để GROUP BY :
COUNT(expr)
Đếm số mẩu tin của expr
AVG(expr)
Tính giá trị trung bình của các mẩu tin
MIN(expr)
Trả về giá trị nhỏ nhất trong cột expr
MAX(expr)
Trả về giá trị lớn nhất trong cột expr
SUM(expr)
Trả về tổng giá trị các mẩu tin của cột expr
STD(expr)
Độ lệch chuẩn của các giá trị trong cột
STDDEV(expr)
Giống STD(expr)
Câu lệnh JOIN
Để truy xuất dữ liệu từ nhiều bảng ta phải kết nối các bảng lại bằng cách dùng toán tử JOIN. Toán tử này kết nối dữ liệu hai hay nhiều bảng với nhau theo mối quan hệ của chúng trong cơ sở dữ liệu. Có nhiều kiểu kết nối khác nhau được dùng trong MySQL và mỗi kiểu đều được dùng cho mỗi mục đích khác nhau. Cú pháp chung :
table_reference, table_reference
table_reference [CROSS] JOIN table_reference
table_reference INNER JOIN table_reference join_condition
table_reference STRAIGHT_JOIN table_reference
table_reference LEFT [OUTER] JOIN table_reference join_condition
table_reference LEFT [OUTER] JOIN table_reference
table_reference NATURAL [LEFT [OUTER]] JOIN table_reference
{ oj table_reference LEFT OUTER JOIN table_reference ON conditional_expr }
table_reference RIGHT [OUTER] JOIN table_reference join_condition
table_reference RIGHT [OUTER] JOIN table_reference
table_reference NATURAL [RIGHT [OUTER]] JOIN table_reference
Lưu ý: khi kết nối các bảng với nhau thì trước hết phải có tên các bảng đó. Chúng ta phải chỉ định kiểu kết nối. Dấu phẩy giữa tên các bảng tương đương với kiểu INTER JOIN or CROSS JOIN, đây là kiểu kết nối được xem là kết nối đầy đủ.
Khi ta kết nối hai bảng với nhau, để đơn giản ta chỉ cần dùng dấu phẩy giữa hai tên bảng, sau đó bắt buột ta phải đặt điều kiện kết nối vào mệnh đề WHERE. Đây là kiểu câu lệnh theo điều kiện mà có giải thích các đặc tính giữa các bảng theo mối quan hệ của chúng.
Khi ta kết nối nhiều hơn hai bảng thì cũng không khó hơn khi ta kết nối hai bảng. Điều kiện chung là chúng ta cần kết nối các bảng theo từng cặp điều kiện kết nối.
Các ví dụ :
mysql> select table1.* from table1LEFT JOIN table2 ON table1.id=table2.id
where table2.id is NULL;
------------------------------------------------------------------
mysql> select * from table1,table2 where table1.id=table2.id;
mysql> select * from table1 LEFT JOIN table2 ON table1.id=table2.id;
mysql> select * from table1 LEFT JOIN table2 USING (id);
mysql> select * from table1 LEFT JOIN table2 ON table1.id=table2.id
LEFT JOIN table3 ON table2.id=table3.id;
------------------------------------------------------------------
mysql> select * from table1 USE INDEX (key1,key2)
WHERE key1=1 and key2=2 AND key3=3;
------------------------------------------------------------------
mysql> select * from table1 IGNORE INDEX (key3)
WHERE key1=1 and key2=2 AND key3=3;
Dùng bí danh cho bảng
Chúng ta có thể dùng một tên khác (bí danh) để gọi ra một bảng có trong cơ sở dữ liệu trong trường hợp ta không thích dùng tên thật của bảng. Ta có thể tạo các bí danh từ đầu câu truy vấn và sử dụng bí danh đó trong suốt quá trình truy vấn. Để tiện lợi, bí danh thường là viết tắt. Những câu truy vấn lớn, nhiều bảng, nhiều cột thường dùng các bí danh. Để khai báo bí danh ta thêm vào từ khoá AS sau đối tượng cần đặt bí danh và trước bí danh của đối tượng. Đối tượng được đặt bí danh ở đây bao gồm cả đối tượng bảng và cột.
Cần dùng bí danh cho một bảng khi ta muốn kết nối với chính bảng đó. Ví dụ như ta muốn tìm những dòng trong cùng một bảng mà những dòng này có chung giá trị.
Các tiện ích khác
Cơ chế Replication trong MySQL
Sao lưu cơ sở dữ liệu là một phần hết sức quan trọng trong công việc quản trị cơ sở dữ liệu. Sử dụng cơ chế sao lưu theo lịch trình là sẽ tạo được sự an toàn cho cơ sở dữ liệu của bạn. Bạn cũng có thể sao lưu một phần của cơ sở dữ liệu như các bảng trong cơ sở dữ liệu để phục vụ cho như cầu riêng của mình mà không hề gặp trở ngại nào cả. Hệ thống mysql hỗ trợ cho cho chúng ta câu lệnh Dump để thực hiện việc này. Cú pháp chung :
mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR mysqldump [OPTIONS] --all-databases [OPTIONS]
Để thực hiện câu lệnh này, trước tiên bạn cần phải được cấp quyền sao lưu cơ sở dữ liệu. Thực hiện một câu lệnh Dump thành công, nghĩa là bạn đã sao lưu được toàn bộ cấu trúc của đối tượng cần sao lưu và bao gồm luôn cả dữ liệu của đối tượng đó (tương đương với một câu lệnh Create và câu lệnh Insert into).
Một số tùy chọn OPTIONS của câu lệnh:
Tuỳ chọn
Yù nghĩa
--add-locks
Thêm vào câu lệnh khoá bảng trước câu lệnh Insert into và sau đó thêm vào câu lệnh mở khoá cho bảng trong tập tin kết xuất.
--add-drop-table
Thêm vào câu lệnh xoá bảng trước câu lệnh tạo bảng.
-A hay --all-databases
Sao lưu tất cả mọi cơ sở dữ liệu có trong hệ thống.
--allow-keywords
Thêm từ tiền tố trong Keyword trước các bảng.
-c hay
--complete-insert
Sử dụng câu lệnh Complete Insert.
-B hay --databases
Sao lưu nhiều cơ sở dữ liệu và trước mỗi cơ sở dữ liệu có dùng lệnh USE db_name;
--delayed
Insert các dòng với câu lệnh INSERT DELAYED.
-e hay
--extended-insert
Chỉ dùng một câu lệnh Insert dữ liệu cho tất cả mọi dữ liệu của một bảng.
-F hay --flush-logs
Thực thi câu lệnh Flush trước khi bắt đầu câu lệnh sao lưu
-f hay –force
Bỏ qua các lỗi trong khi sao lưu.
--h hay --host = …
Tên Host mặc định là Localhost
-n hay --no-create-db
Thêm câu lệnh :’CREATE DATABASE /*!32312 IF NOT EXISTS*/ db name;’ vào kết xuất.
-t hay --no-create-info
Không viết thông tin về bảng vào kết xuất.
-d hay --no-data
Chỉ sao lưu cấu trúc của bảng mà không sao lưu dữ liệu.
-P port_num hay
--port=port_num
Địa chỉ cổng Port sẽ được sử dụng khi kết nối đến server.
-q hay –quick
Sao lưu thẳng kết xuất thành tập tin mà không thông qua bộ đệm.
-T hay
--tab=path/to/directory
Tạo kết xuất là hai tập tin .sql (cho câu lệnh Create )và .txt (cho câu lệnh Insert).
-u user_name hay
--user=user_name
Dùng tên user name để truy cập vào server.
-O var=option hay
--set-variablevar=option
Khởi tạo các giá trị cho biến cung cấp trong danh sách.
-v hay –verbose
Sao lưu và in lại mọi thông tin về server.
-w hay
--where='condition'
Sao lư có chọn lọc mẫu tin.
Chú ý : Nếu bạn thực hiện lệnh mysqldump không có tùy chọn -- opt hay –quick thì mysqldump sẽ load toàn bộ tập kết quả vào bộ nhớ trước khi kết xuất ra file backup. Vì vậy, nếu database của bạn quá lớn hay bộ nhớ server của bạn không đủ lớn thì bạn nên dùng tuỳ chọn -- opt hay –quick mỗi khi thực hiện lệnh mysqldump.
Ngoài các tùy chọn OPTIONS đã giới thiệu ở trên, mysqldump còn hổ trợ nhiều tùy chọn OPTIONS khác nữa. Bạn có thể dùng mysqldump --help để xem một danh sách các tùy chọn OPTIONS của mysqdump.
Để phục hồi một database được sao lưu bằng lệnh mysqldum bạn thực hiện như sau:
Nếu trước đây bạn sao lưu database thành một file .sql chứa toàn bộ một database (bao gồm tất cả các lệnh tạo bảng và các lệnh chèn dữ liệu vào bảng). Để phục hồi file .sql này, từ dấu nhắc lệnh (command line), bạn gỏ:
mysql database < backup_file.sql
Ví dụ: Để phục hồi database mysql được backup từ lệnh
mysqldump --opt mysql > d:\ test\ bk_mysql.sql bạn tiến hành như sau:
Tạo một database mới với tên copyof_mysql trên MySQL server:
mysql > create database copyof_mysql;
Phục hồi file ‘d:\ bk_mysql.sql’ vào MySQL server với tên copyof_mysql. Từ dấu nhắc dòng lệnh (command line), bạn gỏ:
C:\mysql\bin\mysql copyof_mysql < d:\ bk_mysql.sql
Nếu trước đây bạn sao lưu database thành các file .sql và .txt (mỗi table sẽ bao gồm một file .sql và một file .txt). Để phục hồi database này, bạn phải dùng lệnh mysql database < backup-file.sql để phục hồi từng table, sau đó dùng lệnh load data infile ‘file_name.txt’ into table_name để load dữ liệu cho từng table.
Đọc dữ liệu vào cho từng table vừa restore từ các file ‘d:\test\ *.txt’: Từ dấu nhắc dòng lệnh (command line) của mysql, bạn gỏ các lệnh:
mysql> use copyof_mysql ;
mysql> load data infile “d:/test/columns_priv.txt” into table columns_priv;
mysql> load data infile “d:/test/ user.txt” into table user;
Tạo Functions trong MySQL
Câu lệnh tạo và xoá Function trong mysql rất đơn giản, cú pháp như sau:
CREATE FUNCTION
DROP FUNCTION
Hoặc bạn có thể sử dụng một Function đã được định nghĩa trước đó viết bằng ngôn ngữ lập trình C++, … . Nhưng việc rắc rối là ở chỗ cách thức khai báo và đăng ký hàm này cho server của mysql hiểu và thược hiện chúng.
Tìm hiểu về PHP
Giới thiệu về PHP
Giới thiệu về PHP
PHP (Personal Home Page) là ngôn ngữ kịch bản phía Server. Đoạn mã PHP nhúng vào một trang HTML sẽ được thực thi tại Web server mỗi khi trang được gọi.
PHP là một sản phẩm có mã nguồn mở, được biết đến từ năm 1994 do một tổ chức tư nhân thiết kế. Phiên bản PHP mới nhất hiện nay là PHP 4 và có khoảng trên năm triệu Web site trên thế giới hiện đang sử dụng ngôn ngữ này. Để biết thêm nhiều thông tin về PHP hay nhận phiên bản mới nhất về nó, xin vào địa chỉ
Cách cài đặt PHP
Sau khi cài đặt file set up, ta thực hiện các bước cấu hình như sau:
Copy file ‘php.ini_dist’ vào thư mục WINDOWS và đổi tên thành ‘php.ini’ (Thư mục WINDOWS trong c:\ WINDOWS đối với Windows 9x và c:\ WINNT đối với WinNT)
Soạn thảo thêm file httpd.conf trong thư mục conf của Apache để cấu hình Apache làm việc với PHP. Thêm các dòng sau vào file:
ScripAlias /php/ “c:/path-to-your-php-dir/”
AddType application/x-httpd-php .php
AddType application/x-httpd-php .phtml
Action application/x-httpd-php “/php/php.exe”
AddType application/x-httpd-php .html
AddType application/x-httpd-php .htm
Kiểm tra: Soạn thảo file ‘test.