1. Trang chủ
  2. » Luận Văn - Báo Cáo

luận văn công nghệ thông tin 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 xnk y tế tphcm

131 622 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 131
Dung lượng 1,36 MB

Nội dung

Hệ thống phân quyền của MySQL gồm các cấp độ như sau: Toàn quyền sử dụng Các quyền trên cơ sở dữ liệu Quyền trên các bảng table Quyền trên các cột Các cấp độ phân quyền được chia thành h

Trang 1

TRƯỜNG ĐẠI HỌC DÂN LẬP KỸ THUẬT CÔNG NGHỆ

GVHD : Th.S BÙI TRỌNG HIẾU

KHOÁ 98

TP HỒ CHÍ MINH

2003

Trang 2

TRƯỜNG ĐẠI HỌC DÂN LẬP KỸ THUẬT CÔNG NGHỆ

KHOA CÔNG NGHỆ THÔNG TIN

GVHD : Th.S BÙI TRỌNG HIẾU

KHOÁ 98

TP HỒ CHÍ MINH

Trang 4

Trong suốt quá trình học tập tại trường Đại Học Kỹ Thuật Công Nghệï, chúng em đã được các thầy cô tận tình giảng dạy, truyền đạt kiến thức và kinh nghiệm thực tiễn Luận văn tốt nghiệp là diệp để chúng em tổng kết và ứng dụng những kiến thức đã học

Chúng con xin tỏ lòng biết ơn Ba Mẹ và gia đình đã tạo mọi điều kiện thuận lợi động viên và cổ vũ tinh thần giúp chúng con hoàn thành tốt luận văn này, hoàn thành những năm đại học

Chúng em xin chân thành cảm ơn thầy Th.s Bùi Trọng Hiếu đã tận tình hướng dẫn, chỉ bảo chúng em trong suốt thời gian chúng em thực hiện đề tài Chúng em cũng xin cảm ơn quý thầy cô khoa Công Nghệ Thông Tin đã tạo điều kiện giúp chúng em thực hiện tốt luận văn này

Cuối cùng xin cảm ơn những người bạn, những người đã hết lòng động viên, giúp đỡ, nhận xét và góp ý chân tình

Thực hiện đề tài trong thời gian giới hạn,chúng em đã nỗ lực và cố gắng hoàn thành nhưng chắc chắn không tránh khỏi những thiếu sót nhất định Kính mong sự cảm thông và đóng góp ý kiến quý báo của quý Thầy Cô cùng các bạn nhằm phát triển đề tài tốt hơn

Tp Hồ Chí Minh

Nhóm SV thực hiện:

Nguyễn Đinh Châu Uyên 98 TH 304

Trang 5

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

Trang 6

Trang 7

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

Trang 8

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 106Tài liệu tham khảo

Phụ Lục

Trang 9

Chương 1 DẪN NHẬP

Trong bối cảnh ngành công nghệ thông tin phát triển nhanh chóng như hiện nay, việc tạo một trang Web động không còn là vấn đề khó khăn như trước đây nữa Các công nghệ thiết kế Web ngày càng được nâng cấp chất lượng và hoàn thiện hơn để tạo mọi hỗ trợ tối đa cho các nhà lập trình và thiết kế Web Hiện nay, trên thị trường có rất nhiều công nghệ dùng để thiết kế những trang Web động, hai trong số các công nghệ đó được các nhà lập trình chú ý nhiều nhất như là ASP của Microsoft, JSP của hãng Sun Hai công nghệ này hiện đang được phổ biến rất rộng rãi ở Việt Nam, bạn có thể dễ dàng đăng ký học và nghiên cứu ASP và JSP bất cứ khi nào bạn muốn Nhưng xu thế thiết kế những trang Web động hiện nay trên thế giới lại nghiên về một công nghệ khác, không phải ASP hay JSP mà chính là công nghệ MySQL và PHP

Có rất nhiều ưu điểm của MySQL và PHP đáng để chúng ta lưu tâm đến và sử dụng chúng, nhưng vấn đề khó khăn của các nhà lập trình Web tương lai tại Việt Nam là cách thức tiếp cận với hai công nghệ này Nếu nắm bắt kịp công nghệ nêu trên, nghĩa là chúng ta đã theo kịp tốc độ phát triển công nghệ của thế giới và cùng hoà vào dòng chảy của các công nghệ tiên tiến nhất hiện nay Cũng giống như ASP và JSP, công nghệ MySQL và PHP sẽ được giảng dạy rộng rãi trong các khoá học thiết kế Web động, sách viết về chúng sẽ được dịch chuyển sang tiếng việt và bày bán trong nhà sách, … nhưng đó là trong tương lai Còn như hiện nay, công nghệ mới này vẫn còn đang xa lạ và mới mẻ đối với giới sinh viên, những cử nhân, kỹ sư công nghệ thông tin tương lai Chính vì thế chúng tôi chọn đề tài “Tìm Hiểu Công Nghệ MySQL và PHP “ để làm Luận văn tốt nghiệp, mặt khác cũng là để nâng cao sự hiểu biết của mình, mở ra một tầm nhìn mới về lĩnh vực tạo trang Web, hoà nhập vào sự tiến bộ của thế giới

MySQL là một hệ quản trị cơ sở dữ liệu quan hệ, PHP là ngôn ngữ kịch bản trên máy chủ dùng để thiết kế trang Web Để tạo dữ liệu động cho một trang Web, chúng ta cần phải kết hợp giữa một hệ quản trị cơ sở dữ liệu với một ngôn ngữ tạo Web Sự kết hợp tuyệt vời giữa MySQL và PHP khiến cho chúng ngày càng được sử dụng rộng rãi hơn Nghĩa là công nghệ này đã tạo được sự hỗ trợ tối đa cho các nhà lập trình Web Cũng có nghĩa là PHP hỗ trợ tối đa các hàm để thao tác với dữ liệu của MySQL, kết nối cơ sở dữ liệu dễ dàng, tương tác dữ liệu nhanh chóng và đơn giản

Trang 10

Luận văn này đề cập đến phần lý thuyết về cách thức hoạt động cũng như cách thức tạo một cơ sở dữ liệu bằng hệ quản trị cơ sở dữ liệu MySQL, cách thức tương tác và kết nối giữa MySQL và PHP để thiết lập một trang web động bằng ngôn ngữ PHP Đề tài được trình bày gọn trong 5 chương sau:

Chương 1: Dẫn nhập

Chương 2: Khảo sát các công nghệ

Chương 3: Tìm hiểu về MySQL và PHP

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 - Yteco

Chương 5: Kết luận và hướng phát triển đề tài

Nội dụng chính của chương 2 sẽ là những đánh giá và so sánh giữa các hệ quản trị cơ sở dữ liệu như Access, SQL Server, Oracle với MySQL, đánh giá và so sánh giữa các công nghệ thiết kế Web động phổ biến hiện nay như ASP, JSP, Coldfusion với PHP, so sánh giữa các các web server như PWS, IIS, Jrun và Apache, và sau cùng là nêu những ưu điểm của hệ quản trị cơ sở dữ liệu MySQL, ưu điểm của PHP, cùng với cách thức hoạt động giữa MySQL – PHP thông qua một web server ví dụ như là Apache

Phần lý thuyết về tìm hiểu công nghệ sẽ được trình bày gói gọn trong chương 3 Ở đây chỉ nêu sơ lược một vài khái niệm chính về cách thức hoạt động của MySQL như các câu lệnh thao tác trên cơ sở dữ liệu, các câu lệnh thao tác trên dữ liệu, các phân quyền truy xuất, và một số tiện ích khác của MySQL Đoạn cuối của chương 3 này sẽ là các khái niệm cơ bản về công nghệ PHP, cách thức cài đặt, và các loại hàm mà PHP hỗ trợ Các cách thức để tạo một kết nối đến cơ sở dữ liệu cũng sẽ được chỉ ra cùng với cách lấy mẫu tin và cập nhật mẫu tin vào trong cơ sở dữ liệu cũng sẽ được trình bày ở dạng tóm lược thông qua các đoạn code ví dụ rất đơn giản

Vì mục đích chính của đề tài chỉ nhằm tìm hiểu công nghệ MySQL và PHP nên việc tạo một ứng dụng chỉ nhằm mục đích là thể hiện sự nghiên cứu và tìm hiểu công nghệ đã được nêu bên trên mà thôi Phạm vi của ứng dụng là xây dựng hệ thống quản lý xuất nhập trên mạng Internet thông qua trang Web của công ty Xuất Nhập Khẩu Y Tế Tp Hồ Chí Minh Trang Web gồm hai mảng chính là phần dành cho khách truy cập và phần dành cho các nhân viên của công ty truy cập để thực hiện các giao dịch của công ty, đó cũng chính là ý nghĩa chung của chương 4 Nội dung của chương 4 sẽ trình bày về hiện trạng của ứng dụng, các bước phân tích thiết kế dữ liệu, phân tích thiết kế xử lý, sơ đồ trang Web, hình ảnh của trang chủ cùng với một số trang cấp một

Trang 11

Phần cuối cùng của đề tài được trình bày trong chương 5 sẽ nêu lên một số kết luận, các đánh giá ưu khuyết điểm của đề tài, hướng phát triển của đề tài, các tài liệu tham khảo

Trang 12

Chương 2 TÌM HIỂU CÁC CÔNG NGHỆ

2.1 Sử dụng các hệ quản trị cơ sở dữ liệu

a Hệ quản trị cơ sở dữ liệu Access Access là một hệ quản trị cơ sở dữ liệu gọn nhỏ và linh động Tuy nhiên, khi đứng cạnh các hệ quản trị cơ sở dữ liệu mạnh như hiện nay, Access vẫn còn là một hệ quản trị cơ sở dữ liệu được ưa chuộng nhất Bởi sự dễ dàng khi thực hiện các thao tác, dễ sử dụng, dễ cài đặt, dễ học và còn nhiều ưu điểm khác nữa khiến cho ngôn ngữ này ngày càng mang tính phổ biến Một ưu điểm nữa của Access là bạn không phải mất công cài đặt nó lên máy tính, nó được hỗ trợ mặc định trong bộ Office của MicroSoft Nhưng khi chọn một hệ quản trị

cơ sở dữ liệu cho việc quản lý đặt nặng tính bảo mật thì Access lại không là một ứng cử viên sáng giá bởi bản thân nó mang tính bảo mật không cao Hoặc khi chọn một hệ thống quản lý dữ liệu phân bố, bản thân Access lại không đáp ứng được cho các yêu cầu này

Khi lượng dữ liệu trở nên quá lớn, mọi thao tác trên dữ liệu đều có tốc độ chậm hẳn đi, điều này khiến cho chúng ta gặp nhiều khó khăn hơn trong công việc

Thay vào những khuyết điểm trên, Access lại có khả năng tương thích cao với các hàm gởi truy vấn dữ liệu của ODBC và ngay cả JDBC nữa Chỉ cần cung cấp một đường dẫn đến tập tin cơ sở dữ liệu cho trình điều khiển là bạn đã có thể kết nối Access với một ngôn ngữ kịch bản tạo Web động như ASP, JSP hay thậm chí với cả PHP và PERL nữa

Tóm lại, chỉ nên chọn Access để quản lý dữ liệu cho các trang Web có số lượng mẫu tin ít, dữ liệu không cần ràng buột chi tiết, và đặc biệt là dành cho các trang sử dụng dữ liệu không đặt nặng vấn đề bảo mật và không có sự phân bố dữ liệu trên mạng

b Hệ quản trị cơ sở dữ liệu SQL SERVER

Tương tự như Access, SQL Server là một hệ quản trị cơ sở dữ liệu sử dụng ngôn ngữ truy vấn có cấu trúc chuẩn SQL, một hệ quản trị cơ sở dữ liệu quan hệ rất mạnh

Việc hỗ trợ tính phân bố dữ liệu và tính bảo mật dữ liệu cao làm cho SQL Server ngày càng tiến xa hơn nữa và trở thành một trong những chọn lựa

Trang 13

hàng đầu khi cần một hệ thống quản lý dữ liệu an toàn Nhưng SQL Server lại

không hề đơn giản chút nào trong việc cài đặt nó vào máy của bạn, nó không

tích hợp được với bất kỳ hệ điều hành nào khác ngoại trừ các hệ điều hành

Windows của Microsoft

Ngoài ra, nếu khối lượng dữ liệu quá lớn từ khoảng 50 GB trở lên thì

SQL Server lại trở nên chậm chạp và không còn thích hợp nữa cho dù chúng ta

thực hiện một truy vấn dữ liệu không điều kiện

c Hệ quản trị cơ sở dữ liệu ORACLE

Một lựa chọn khác để quản lý, chia sẻ và truy vấn dữ liệu là sử dụng hệ

quản trị cơ sở dữ liệu Oracle Phiên bản Oracle mới nhất hiện nay là Oracle 9i,

được hỗ trợ tối đa các hàm tiện ích giúp chúng ta có thể tạo các truy vấn chính

xác và mang tính bảo mật cao Không như SQL Server, Oracle 8i có thể thao

tác trên một lượng dữ liệu rất lớn với khoảng thời gian chấp nhận được (nhiều

hơn 50 GB dữ liệu) và cho bạn một kết quả như mong muốn Ngoài ra, bạn có

thể cài Oracle vào các hệ điều hành khác ngoài Windows như Unix và Linux

một cách dễ dàng vì chúng được thiết kế để tương thích với mọi hệ điều hành

Mặc dù được mệnh danh là hệ quản trị cơ sở dữ liệu mạnh nhất hiện

nay, nhưng người sử dụng lại gặp phải khá nhiều vấn đề khó khăn khi tiếp cận

với Oracle Vấn đề khó khăn đầu tiên là chi phí để trả cho một bản quyền đầy

đủ Nếu không, chúng ta sẽ khó lòng mà có được những điều mình mong muốn

Vì các lý do trên, Oracle chỉ thích hợp để quản lý những cơ sở dữ liệu lớn, có

nhu cầu về sự phân bố dữ liệu trên mạng và cần có độ an toàn cao cho dữ liệu

Nếu bạn cần chọn một hệ quản trị cơ sở dữ liệu linh động, gọn nhẹ, chi phí

thấp và dễ sử dụng để quản lý dữ liệu, bạn không nên chọn Oracle, có một giải

pháp mới dành cho bạn, đó là hệ quản trị cơ sở dữ liệu quan hệ MySQL

d Các ưu điểm nổi bật của MySQL

Đối thủ chính của MySQL là Microsoft SQL Server và Ocracle, nhưng

bản thân MySQL lại có nhiều điểm mạnh khiến nó đáng được quan tâm như:

 Tính thực thi cao: MySQL thực thi nhanh và rất đáng tin cậy để

chúng ta sử dụng Sự kết nối tốc độ và bảo mật làm MySQL phù hợp cho việc truy cập cơ sở dữ liệu trên Internet

 Chi phí thấp: MySQL miễn phí với bản quyền mã nguồn mở hoặc

chi phí thấp với bản quyền thương mại mà ứng dụng chúng ta cần

 Sử dụng: Hầu hết mọi cơ sở dữ liệu hiện nay đều dùng ngôn ngữ

truy vấn có cấu trúc chuẩn SQL Nếu bạn đã từng sử dụng một hệ

Trang 14

quản trị cơ sở dữ liệu quan hệ RDBMS thì bạn sẽ không gặp rắc rối gì khi sử dụng MySQLvà chúng cũng rất dễ cài đặt cấu hình.

 Tính linh động: MySQL tương thích với nhiều hệ điều hành khác nhau như UNIX cũng như Microsoft Windows

 Mã nguồn: Bạn có thể lấy mã nguồn của MySQL một cách dễ dàng và sửa đổi chúng theo ý thích của bạn

2.2 Trình kết nối cơ sở dữ liệu

a ODBC

ODBC – Open DataBase Connectivity - là một chương trình giao tiếp lập trình chuẩn cho người phát triển ứng dụng và nhà cung cấp cơ sở dữ liệu của Microsoft Để truy xuất đến các cơ sở dữ liệu thông qua ODBC, ta phải cài đặt Driver đến cơ sở dữ liệu đó ODBC có nhiều Driver hỗ trợ cho các cơ sở dữ liệu khác nhau, để chuyển các mẩu tin thành những dữ liệu nguồn (Data Source) Hệ điều hành căn cứ vào các thông tin khai báo để xác định cấp của ODBC Driver giao tiếp với Data Source Việc nạp ODBC là “trong suốt” đối với chương trình ứng dụng Trong môi trường mạng, ODBC đảm nhận luôn cả việc xử lý những vấn đề truy xuất dữ liệu trên mạng như việc truy cập đồng thời, giải quyết các xung đột, …

Vì ODBC cung cấp sự truy xuất bất kỳ dạng cơ sở dữ liệu thông dụng có sẵn nên tạo một sự uyển chuyển trong ứng dụng, từ đó giúp chúng ta đưa cơ sở dữ liệu lên trang Web một cách dễ dàng Nếu bạn có thể dùng ODBC với Web Server, tức là bạn có thể lấy dữ liệu từ cơ sở dữ liệu và đưa lên trang Web bất kể dữ liệu đó được lưu trữ trên môi trường nào

b JDBC

JDBC - Java Database Connectivity - tương tự như ODBC, là một giao thức để kết nối đến cơ sở dữ liệu, gởi các hàm truy vấn SQL và nhận dữ liệu trả về Công nghệ JDBC còn là giao thức độc lập của Java API, nó cung cấp tập hợp các lớp và giao diện cho phép phát triển các ứng dụng Java cũng như các ứng dụng Web liên quan đến truy xuất cơ sở dữ liệu Có bốn loại trình điều khiển JDBC được hãng Sun cung cấp như :

 Cầu nối ODBC – JDBC: Cầu nối này thực hiện việc truy cập đến

cơ sở dữ liệu thông qua trình điều khiển ODBC của Windows Loại trình điều khiển này thường dùng khi không có sẵn JDBC kết nối trực tiếp vào cơ sở dữ liệu quan hệ

Trang 15

 Trình điều khiển thuần tuý Java – Native API: Trình điều khiển này hoạt động bằng cách biến đổi lệnh JDBC thành cuộc gọi trực tiếp đến cơ sở dữ liệu Điều này làm cho trình điều khiển trở nên tiện lợi và nhanh hơn các trình điều khiển khác Tuy nhiên không phải cơ sở dữ liệu nào cũng cung cấp cho bạn cách giao tiếp thông qua JDBC – API trực tiếp

 Trình điều khiển JDBC – NET: Trình điều khiển này là giải pháp cho mô hình dữ liệu đa tầng Máy chủ server sẽ dịch các nghi thức độc lập của JDBC thành nghi thức cụ thể của hệ quản trị cơ sở dữ liệu

 Trình điều khiển Native Protocol: Đây là loại trình điều khiển thuần tuý Java, nó sẽ giao tiếp trực tiếp với cơ sở dữ liệu của nhà cung cấp

Có bốn bước cần thực hiện khi sử dụng trình điều khiển để kết nối đến

cơ sở dữ liệu như: Tạo một thiết lập kết nối với cơ sở dữ liệu, gởi câu lệnh SQL, xử lý kết quả và đóng kết nối

2.3 Sự hỗ trợ của Server đối với các ngôn ngữ kịch bản

Bước đầu tiên bạn cần thực hiện khi bắt đầu thiết kế hay lập trình Web là bạn phải cài một Web Server cùng với một ngôn ngữ kịch bản chạy trên server mà bạn muốn sử dụng Bạn cần cài đặt một trong bốn loại Web Server thông dụng nhất hiện nay, sẽ được giới thiệu bên dưới đây, tuỳ theo cấu hình máy của bạn

a Personal Web Server - PWS Đây là loại Web server thường dùng trên hệ điều hành Win9x, NT Workstation hay Win 2000 Workstation Cấu hình này thường được dùng cho các nhà lập trình Web trong thời gian thiết kế Web server này sẽ nhận các yêu cầu, tìm trang cần thiết, chạy kịch bản, liên kết với dữ liệu và trả về các trang đáp ứng

Ưu điểm của PWS là nó cung cấp một môi trường phát triển tiện lợi, chi phí thấp và không cần phần cứng mạnh Tuy nhiên, nhược điểm của nó là có độ tin cậy không cao và không thể mở rộng trang Web ra nhiều Server

Trang 16

b Internet Information Server – IIS Web server này dùng để cấu hình server trên nền hệ điều hành NT Server và Win 2000 Server, cấu hình này được dùng để triển khai các hệ thống trên qui mô lớn nên nó đòi hỏi nhiều tài nguyên của máy cũng như cấu hình máy phải mạnh

Ưu điểm của cấu hình NT Server/IIS là mang lại độ tin cậy cao và cho phép mở rộng trang Web ra nhiều server, nhưng nhược điểm của nó là cần chi phí cao hơn so với cấu hình Win9x/PWS

c JRUN Đây là trình chủ Web có khả năng hiểu Java do hãng Allaire cung cấp nhằm phục vụ những phiên bản của hãng Sun Microsystem dựa trên nền Java, nó có khả năng thích ứng tốt với nhiều hệ điều hành như Win9x, Windows

2000, Windows NT, Linux và Unix

Ngoài những tính năng của một trình chủ Web, JRUN còn có khả năng liên kết với các trình chủ khác như IIS và Apache Các yêu cầu về phần cứng cũng như phần mềm khi tạo trình chủ Web JRUN khiến cho JRUN trở nên phức tạp khi cài đặt và quản lý, đây cũng là một nhược điểm của JRUN

d APACHE Trình chủ Web Apache là trình chủ phổ biến nhất hiện nay trên thế giới, nó hiện đang quản lý hơn 50% số trang Web hiện có trên thế giới, nhiều hơn cả số trang mà PWS, IIS và JRUN hiện đang quản lý Vì thế, Apache có nhiều ưu điểm đáng để chúng ta quan tâm và lưu ý đến nó Cũng giống như JRUN, Apache có khả năng thích ứng tốt với nhiều hệ điều hành, nhưng một điểm khác với JRUN là nó không yêu cầu về cấu hình của máy khi cài đặt và các thao tác cài đặt lại vô cùng dễ dàng

2.4 Các ngôn ngữ kịch bản trên Server

Hiện nay, nếu bạn muốn tạo một trang Web động, không còn cách nào khác là bạn phải sử dụng một ngôn ngữ kịch bản chạy trên Server để liên kết với một trình điều khiển kết nối cơ sở dữ liệu Các ngôn ngữ kịch bản chạy trên server thông dụng nhất hiện nay gồm bốn loại sau:

Trang 17

a Active Sserver Pages - ASP ASP là một ngôn ngữ kịch bản chạy trên server, được hỗ trợ mặc định trong trình duyệt IE 4.0 ASP thực sự là phần mở rộng cho Web server của bạn Nó cung cấp một tập hợp các thành phần và các đối tượng đặc trưng để quản lý sự tương tác giữa Web server và trình duyệt

Một khuyết điểm của ASP khiến cho nhiều người không thích sử dụng ASP chính là khả năng bảo vệ mã nguồn của ASP (có nhiều người cho đây là

ưu điểm của nó) và sự tăng tải trên server Nhưng bù lại, ASP có khả năng thích ứng rộng, khả năng kết hợp với các phần mềm khác cao và tính dễ gỡ rối

b Java Server Pages – JSP JSP là một kỹ thuật mới kết hợp ngôn ngữ đánh dấu HTML (hoặc XML) với Java để tạo các trang Web động Cũng như Java, JSP là ngôn ngữ lập trình hướng đối tượng thuần tuý và tối ưu Một trong những ưu điểm chính của JSP là tính khả chuyển của mã nguồn giữa các server với nhau, và tính mã nguồn mở

c ColdFusion ColdFusion cho phép server truy xuất cơ sở dữ liệu khi tạo Web Trang Web tạo bởi ColdFusion ( tập tin cfm) có thể đọc được bởi mọi trình duyệt, tuy nhiên nó sử dụng các thẻ của riêng nó Điểm khác nhau cơ bản giữa ColdFusion và các ngôn ngữ khác đó là nó sử dụng các thẻ riêng của nó thay vì sử dụng các đối tượng và các ngôn ngữ kịch bản phía Client

d Personal Home Page – PHP Tương tự như ASP và ColdFusion, PHP là ngôn ngữ dùng để tạo các trang Web động từ server và gởi chúng tới trình duyệt Tuy nhiên, PHP tương thích với nhiều hệ điều hành hơn, và cũng tương thích với nhiều Web server hơn các ngôn ngữ khác Các điểm mạnh của PHP bao gồm:

 Tính thực thi cao: PHP rất hiệu quả, sử dụng server rẻ, bạn có thể đáp ứng hàng triệu lượt truy cập mỗi ngày vào trang Web của bạn

 Mạch ghép nối đến nhiều hệ thống cơ sở dữ liệu khác nhau: PHP kết nối đến nhiều hệ thống cơ sở dữ liệu Ngoài MySQL ra bạn còn có thể kết nối được với các hệ quản trị cơ sở dữ liệu khác như: PostgreSQL, mSQl, Ocracle, dbm, filePro, Hyperwave, Infomix, InterBase, và Sybase Dùng ODBC (Open Database Connectivity

Trang 18

Standard) bạn có thể kết nối đến bất kỳ cơ sở dữ liệu nào có hỗ trợ ODBC driver bao gồm các sản phẩm của Microsoft và nhiều hãng khác

 Xây dựng thư viện cho nhiều tác vụ Web thông dụng: Do PHP được thiết kế cho việc sử dụng Web nên nó có nhiều chức năng được xây dựng để thực thi nhiều tác vụ quan hệ Web hữu dụng Bạn có thể thao tác trên hình ảnh GIF, kết nối với những dịch vụ mạng khác, gởi mail, làm việc với cookie và tạo tài liệu PDF

 Chi phí thấp: PHP thì miễn phí Bạn có thể tải miễn phí phiên bản mới nhất tại Web site: http://www.php.net

 Dễ học và dễ sử dụng: Cú pháp của PHP dựa trên các ngôn ngữ lập trình khác, chủ yếu là C và Perl Nếu bạn đã biết C hay Perl hay một ngôn ngữ giống C như C++ hay Java thì bạn sẽ sử dụng PHP được ngay

 Linh hoạt: PHP thích hợp cho nhiều hệ điều hành khác nhau Bạn có thể viết mã trên hệ điều hành Unix, Linux và FreeBSD, phiên bản Unix thương mại, Solaris và IRIX hay trên những phiên bản của Microsoft Windows giống nhau

 Mã nguồn: Bạn đã truy cập mã nguồn PHP Không giống như trong thương mại hay những sản phẩm mã nguồn đóng, bạn có thể tự do sửa đổi hay thêm gì đó vào PHP và cũng không cần lo lắng về việc nhà sản xuất ngừng hỗ trợ

2.5 Công nghệ MySQL và PHP

Đây cũng chính là sự kết hợp tuyệt vời giữa hai công nghệ đang được ưa chuộng nhất hiện nay trên thế giới Một bộ đôi có nhiều điểm chung giống nhau như độc lập với hệ điều hành, mã nguồn mở, tiết kiệm chi phí, …

Sự hỗ trợ tối đa các loại hàm trong PHP đối với MySQL làm cho mọi thao tác trên dữ liệu trở nên nhanh chóng, phù hợp với xu thế thiết kế Web hiện nay là ưu tiên cho tốc độ lấy dữ liệu Sơ đồ làm việc giữa PHP và MySQL thông qua trình duyệt Web được minh hoạ như hình dưới đây:

Trang 19

Sơ đồ làm việc giữa PHP và MySQL với trình duyệt Web

Có 6 bước làm việc bao gồm

Bước 1 : Khi một địa chỉ Web được gọi thì trình duyệt Web sẽ gởi yêu cầu cho Apache

Bước 2 : Apache nhận yêu cầu đó và chuyển cho PHP xử lý

Bước 3 : Ngôn ngữ kịch bản PHP gồm các câu lệnh PHP , chẳng hạn như lệnh gọi kết nối cơ sở dữ liệu và truy xuất dữ liệu …

Bước 4 : Dữ liệu được lấy lên từ cơ sở dữ liệu và và kịch bản PHP sẽ làm một số việc định dạng dữ liệu

Bước 5 : Sau đó gởi trở về cho Apache

Bước 6 : Apache gởi đến trình duyệt các yêu cầu đã được đáp ứng Lúc này chúng ta sẽ thấy một số thông tin được lấy từ cơ sở dữ liệu

Trang 20

Chương 3 TÌM HIỂU VỀ MYSQL VÀ PHP

3.1 Tìm hiểu về MySQL

3.1.1 Giới thiệu về MySQL

MySQL là một hệ quản trị cơ sở dữ liệu quan hệ mạnh mẽ và tốc độ MySQL cho phép bạn lưu trữ, tìm kiếm, sắp xếp và lấy dữ liệu rất hiệu quả và nhanh chóng Cơ sở dữ liệu chủ MySQL điều khiển việc truy cập dữ liệu, cho phép nhiều người dùng cùng truy cập đồng thời mà an toàn và nhanh chóng Do đó MySQL trở thành một hệ quản trị cơ sở dữ liệu chủ đa người dùng và đa luồng Nó sử dụng ngôn ngữ truy vấn có cấu trúc SQL, là ngôn ngữ truy vấn cơ sở dữ liệu chuẩn trên thế giới hiện nay MySQL trở nên phổ biến từ những năm

1996 nhưng lịch sử phát triển của nó đã bắt nguồn từ những năm 1979

MySQL là phần mềm có mã nguồn mở, bạn có thể download phần mềm miễn phí trên Internet từ địa chỉ : http://mysql.com và bạn hoàn toàn có thể học mã nguồn, thay đổi mã nguồn để sử dụng theo mục đích riêng của bạn Nếu vẫn chưa đáp ứng đủ, hay khi bạn cần nhúng MySQL vào một ứng dụng thương mại nào đó thì bạn có thể mua một phiên bản thương mại từ công ty

a Cách cài đặt MySQL

 Cài đặt MySQL trên Windows 9x : Thư mục chính chứa MySQL sau khi cài mặc định sẽ là c:\mysql Sau khi chạy tập tin setup.exe, chúng ta bắt đầu khởi động MySQL trên Windows bằng cách vào Start -> Run và gõ lệnh:

c:\mysql\bin\mysql-opt Hoặc chúng ta shut down MySQL bằng cách thực thi dòng lệnh sau :

c:\mysql\bin\mysqladmin -u root shutdown

 Cài đặt MySQL trên Windows NT/Windows 2000 : Tùy thuộc vào việc chúng ta chạy MySQL trên Windows NT hay trên Windows 2000 có một số các vấn đề khác nhau không đáng kể Khi cài đặt trên Windows

NT hay trên Windows 2000 thì tên server là mysqld-nt và nó không được cài đặt bình thường giống như các service khác Chúng ta có thể cài đặt trên server như sau:

C:\mysql\bin\mysqld-nt -install

Trang 21

Sau đó chúng ta khởi động MySQL bằng cách gõ dòng lệnh sau :

NET START mysql Để thoát khỏi hệ thống, ta dùng câu lệnh sau:

NET STOP mysql Sau khi cài đặt xong ta có thể vào Service Control Manager (tìm trong Control Panel) để kiểm tra xem MySQL ở trạng thái started chưa

Để kiểm tra xem MySQL có làm việc hay không ta chạy một số lệnh sau:

C:\mysql\bin\mysqlshow C:\mysql\bin\mysqlshow –u root mysql C:\mysql\bin\mysqladmin version status proc C:\mysql\bin\mysqladmin –u root shutdown MySQL sẽ tạo cơ sở dữ liệu gồm mysql và test Cơ sở dữ liệu mysql được sử dụng để lưu trữ sự phân quyền và truy cập trên server

b Đăng nhập vào hệ thống MySQL

Để log vào MySQL, trước tiên bạn cần khởi động MySQL server bằng cách vào Start -> Run gõ dòng lệnh như sau:

NET START mysql

Biểu tượng đèn tín hiệu “giao thông” của MySQL server ở góc phải màn hình sẽ bật lên màu xanh để báo hiệu cho bạn biết MySQL server đã sẵng sàng Nếu không có dấu hiệu này, bạn hãy xem lại cách cài đặt của mình đã đúng chỉ dẫn hay chưa

Sau đó bạn vào Start -> Run và nhập tiếp dòng lệnh sau để Log vào MySQL server :

C:\mysql\bin\mysql –h hostname –u username –p password

Với vị trí hostname, bạn cần nhập vào tên host đang chạy MySQL mà bạn muốn kết nối đến

Với vị trí username, bạn cần nhập vào tên tài khoản người sử dụng mà người quản trị hệ thống thiết lập riêng cho ban Nếu bạn đang sử dụng máy riêng của mình, bạn có thể để trống phần này, MySQL server sẽ lấy giá trị mặc định là tên tại khoản đã đăng ký với hệ điều hành

Trong phần password, bạn cần nhập vào đúng mật khẩu được chỉ định đi kèm với username Vì lý do bảo mật, một lời khuyên dành cho bạn là không nên nhập mật khẩu vào đây, vì mật khẩu của bạn sẽ hiện nguyên từng ký tự một khi bạn gõ vao Chính vì thế bạn nên bỏ trống phần này, MySQL server sẽ

Trang 22

tự động hỏi bạn mật khẩu với dòng hỏi và bạn hãy nhập mật khẩu vào Nếu thành công, bạn sẽ có một lời chào như sau:

Wellcome to the MySQL monitor Commands end with ; or \g

Your MySQL connection id is 3 to server version : 3.23.47-nt

Type ‘help;’ or ‘\h’ for help Type ‘\c’ to clear the buffer

c Định danh trong MySQL

Qui tắc định danh rất đơn giản, gồm một số qui tắc như sau:

 Không dùng ký tự có mã ASCII(0) và mã ASCII(255) để định danh cho các loại đối tượng(như tên bảng, tên cột, tên database, tên alias,…)

 Nếu trong định danh có khoảng trắng thì định danh phải được đặt trong cặp dấu nháy đơn ( ‘ ’ ), trường hợp này chỉ dùng cho các phiên bản MySQL 3.23.6 trở lên

 Các phiên bản MySQL 3.23.6 trở xuống không được dùng khoảng trắng khi định danh các đối tượng kể cả khi định danh được đặt trong cặp dấu nháy đơn ( ‘ ‘ )

 Các trường hợp khác để định danh cho mọi đối tượng trong MySQL phải tuân theo nguyên tắc sau:

Đối tượng cần

định danh

Chiều dài tối đa

Trường hợp tương tự Ký tự được dùng

Cơ sở dữ liệu 64 Cách định danh cho một

thư mục trong hệ điều hành

Mọi ký tự cho phép ngoại trừ ký tự “/”

Bảng 64 Cách định danh cho một

tập tin trong hệ điều hành

Mọi ký tự cho phép ngoại trừ ký tự “/” và dấu “.”

Trang 23

3.1.2 Quản trị cơ sở dữ liệu trong MySQL

a Vấn đề phân quyền và người dùng

Mỗi hệ thống MySQL có thể có nhiều người sử sụng đồng thời Vì lý do bảo mật nên người quản trị hệ thống cần phải bảo vệ tài khoản và mật khẩu truy cập vào root Khi có một người dùng khác cần sử dụng hệ thống, người quản trị cần cấp cho người dùng này một tài khoản và mật khẩu riêng để log vào hệ thống Ngoài ra cần phải cấp cho người này một số quyền tối thiểu để thực hiện một vài thao tác Các quyền này dùng để xác định những điều gì người dùng này có thể làm được và những gì không thể làm được

Hệ thống phân quyền của MySQL gồm các cấp độ như sau:

Toàn quyền sử dụng

Các quyền trên cơ sở dữ liệu

Quyền trên các bảng (table)

Quyền trên các cột

Các cấp độ phân quyền được chia thành hai nhóm quyền như : nhóm các quyền cho người dùng và nhóm các quyền dùng để quản trị Phần chi tiết về các cấp độ phân quyền như sau:

 Phân quyền nhóm người dùng: Bạn chỉ nên cấp cho người dùng các quyền trên cơ sở dữ liệu, trên các bảng (table) hoặc trên các cột (column) như sau:

Phạm vi áp dụng Cấp quyền Mô tả

CREATE Tạo một cơ sở dữ liệu mới

Cơ sở dữ liệu

DROP Xoá cơ sở dữ liệu SELECT Cho phép lấy các mẫu tin trong bảng INSERT Thêm một dòng mới vào các bảng UPDATE Câp nhật mới các giá trị của bảng DELETE Xoá một bảng

INDEX Cho phép tạo và xoá các chỉ mục đặc biệt

trong bảng ALTER Chỉnh sửa cấu trúc của bảng như đổi tên bảng CREATE Tạo một bảng mới

Bảng (table)

DROP Xoá một bảng SELECT Cho phép lấy các mẫu tin trong cột INSERT Thêm một dòng mới vào cột

Cột (column)

UPDATE Cập nhật mới các giá trị trong cột

Trang 24

 Phân quyền nhóm quản trị hệ thống : Bạn có thể cấp các quyền này cho một người dùng đặc biệt nào đó để người này có thể quản lý hệ thống Cấp quyền Mô tả

RELOAD Cho phép được Reload

SHUTDOWN Cho phép một nhà quản trị có thể tắt hệ thống MySQL server PROCESS Cho phép một nhà quản trị có thể xem các tiến trình xử lý trên

server và ngăn chặn chúng

FILE Cho phép lấy dữ liệu từ các tập tin và đọc vào các bảng

 Các quyền đặc biệt khác: người quản trị hệ thống có thể cấp các quyền tổng quát này cho một người dùng mới để tiết kiệm thời gian phân quyền chi tiết như:

Cấp quyền Mô tả

ALL hay

ALL PRIVILEGES

Cho phép một người dùng có toàn quyền trên mọi cơ sở dữ liệu, mọi bảng, mọi cột, kể cả nhóm quyền dùng để quản trị hệ thống

USAGE Khi một người dùng được cấp quyền này, người đó chỉ

có thể đăng nhập (log) vào hệ thống mà không thể làm bất cứ điều gì khác, các quyền khác có thể được cấp sau (nếu có thể)

b Câu lệnh dùng để cấp quyền

Bạn có thể dùng câu lệnh này để tạo một tài khoản và mật khẩu cho một người dùng mới và phân cho người này các quyền chi tiết để sử dụng trong hệ thống Dạng tổng quát của câu lệnh này như sau:

GRANT priveleges [columns]

ON item

TO user_name [ IDENTIFIED BY ‘password’]

[ WITH GRANT OPTION ] Mô tả:

 priveleges : danh sách các quyền cần cấp (các quyền đã được mô tả ở

trên)

 [columns] : phạm vi các quyền được sử dụng trên một cột cụ thể hay trên danh sách các cột (phần này có thể không cần cung cấp)

 item : cung cấp tên cơ sở dữ liệu hoặc tên bảng mà các quyền mới cấp

này áp dụng lên Bạn có thể sử dụng các ký hiệu đặc biệt thay cho một danh sách cần cung cấp như sau:

* Đại diện cho mọi cơ sở dữ liệu nằm trong hệ thống

Trang 25

*.* Đại diện cho mọi cơ sở dữ liệu và mọi bảng nằm trong hệ thống

dbname.* Cung cấp danh sách tất cả các bảng nằm trong cơ sở dữ

liệu có tên dbname

dbname.tablename Chỉ định một bảng có tên dbname nằm trong cơ sở

dữ liệu có tên dbname

 user_name : Chỉ định tên một người dùng được cấp các quyền mới này

Nếu MySQL không tìm thấy tên user_name này trong danh sách các user của hệ thống MySQL thì hệ thống sẽ tự động tạo ra một user mới

với tên user_name và cập nhật vào hệ thống

 [ IDENTIFIED BY ‘password’] : Chỉ định mật khẩu đi kèm với tên

user_name trên (phần này có thể không cần cung cấp)

 [ WITH GRANT OPTION] : Nếu câu lệnh cấp quyền có phần này,

nghĩa là người có tên user_name ở trên có thể cấp lại các quyền này cho

một người khác

Ghi chú: Danh sách tên người dùng và các quyền đã cấp cho người dùng

sẽ được lưu trữ trong bốn bảng của cơ sỡ dữ liệu tên mysql Bốn bảng này có tên là mysql.user, mysql.db, mysql.tables_priv, mysql.columns_priv Bốn bảng

này có quan hệ mật thiết với bốn cấp độ phân quyền như đã đề cập ở trên Chính vì thế, bạn có thế chỉnh sửa câu lệnh GRANT bằng cách chỉnh sửa trực tiếp trên các bảng này

c Câu lệnh dùng để rút quyền Để rút lại các quyền đã cấp cho một người dùng, bạn có thể dùng câu lệnh REVOKE dưới dạng tổng quát như sau:

REVOKE priveleges [columns]

ON item FROM user_name

Trang 26

 user_name : Chỉ định tên người dùng cấn rút quyền Nếu MySQL không

tìm thấy tên user_name này trong danh sách các user của hệ thống MySQL thì hệ thống sẽ thông báo lỗi không tìm thấy user_name

Ngoài ra, nếu bạn cần rút lại quyền “cho phép người dùng cấp lại quyền của mình cho một người dùng khác”, thì bạn có thể dùng câu lệnh như sau:

REVOKE GRANT OPTION

ON item

FROM user_name

3.1.3 Lấy thông tin về cơ sở dữ liệu, bảng, cột, index

a Câu lệnh USE

Sau khi đăng nhập vào MySQL, để thao tác trên một cơ sở dữ liệu nào đó, bạn sử dụng câu lệnh sau:

mysql> use dbname;

Với dbname là tên cơ sở dữ liệu mà bạn cần dùng đến Nếu cơ sở dữ liệu

này đã có, một dòng thông báo đáp trả của MySQL sẽ hiện như sau:

Database changed Mysql> _

Một thông báo lỗi sẽ xuất hiện như bên dưới nếu MySQL không tìm

thấy cơ sở dữ liệu tên dbname trong hệ thống cơ sở dữ liệu của MySQL hay

nếu bạn không chọn một cơ sở dữ liệu trước khi bắt đầu mọi công việc, bạn cũng sẽ bị thông báo lỗi

b Câu lệnh KILL

Mỗi kết nối vào MySQL đều được thực hiện bằng một tuyến kết nối riêng biệt Bạn có thể xem các tuyến đang thực hiện (đang chạy ) bằng câu lệnh SHOW PROCESSLIST và ngăn chặn chúng lại bằng câu lệnh câu lệnh KILL này Nếu bạn được cấp quyền Process, bạn có thể thấy mọi tuyến và ngăn chặn chúng, nếu không có quyền đó, bạn chỉ có thể thấy được tuyến của mình và ngăn chặn nó Cú pháp như sau :

KILL thread_id

c Câu lệnh SHOW

Câu lệnh này được dùng để mô tả nội dung bên trong của một đối tượng như cơ sở dữ liệu, các bảng, các cột ( tức là xem thông tin về cơ sở dữ liệu, các bảng hay các cột ) với cú pháp như sau :

Trang 27

SHOW DATABASES [LIKE wild]

or SHOW [OPEN] TABLES [FROM db_name] [LIKE wild]

or SHOW COLUMNS FROM tbl_name [FROM db_name] [LIKE wild]

or SHOW INDEX FROM tbl_name [FROM db_name]

or SHOW TABLE STATUS [FROM db_name] [LIKE wild]

or SHOW STATUS [LIKE wild]

or SHOW VARIABLES [LIKE wild]

or SHOW LOGS

or SHOW [FULL] PROCESSLIST

or SHOW GRANTS FOR user

or SHOW CREATE TABLE table_name

 Show database: Xem danh sách các cơ sở dữ liệu có trong hệ thống cơ sở dữ liệu của MySQL Kết quả sau khi dùng câu lệnh này như sau:

 Show tables: Xem danh sách tất cả các bảng có trong cơ sở dữ liệu hiện hành

o Nếu trong cơ sở dữ liệu hiện hành không có bảng nào, bạn sẽ có thông báo như sau:

mysql> show tables;

Empty set ( 0.00 sec )

o Bạn có thể dùng lệnh SHOW để xem danh sách các bảng có trong một cơ sở dữ liệu khác được chỉ định cụ thể, không phải cơ sỡ dữ liệu hiện hành Dạng tổng quát cuả trường hợp này như sau:

SHOW TABLES FROM database_name

 Show columns: Ngoài ra bạn cũng có thể dùng lệnh này để xem cấu trúc chi tiết của các cột trong một bảng cụ thể thuộc một cơ sở dữ liệu được chỉ định

SHOW COLUMNS FROM table_name FROM database_name Hoặc SHOW COLUMNS FROM database_name Table_name

 Show index: Dùng để xem chi tiết tất cả các khoá trong một bảng cụ thể được chỉ ra trong cơ sở dữ liệu hiện hành Dạng tổng quát của cách dùng này như sau:

SHOW INDEX FROM table_name

o Dùng để xem chi tiết tất cả các khoá trong một bảng cụ thể nằm trong cơ sở dữ liệu chỉ định

SHOW INDEX FROM table_name FROM database_name

Trang 28

o Bạn có thể dùng từ KEYS để thay cho INDEX trong hai cách dùng trên, như:

SHOW KEYS FROM table_name SHOW KEYS FROM table_name FROM database_name

 Show status: Câu lệnh này cho ta thông tin về một vài đặc điểm của hệ thống, như số lượng các tuyến đang chạy, … Mệnh đề LIKE theo sau dùng để gắn tên của các đặc điểm của hệ thống cho ta dễ dàng theo dõi,

ví dụ như , LIKE ‘Threads%’ có nghĩa kết quả sẽ là ‘Threads_catched’,

‘Threads_connected’, ‘Threads_running’, … Dạng tổng quát của lệnh này như sau:

SHOW STATUS [ LIKE status_item ]

 Show variables: Cung cấp cho ta danh sách tên và giá trị của các biến trong hệ thống các biến của MySQL Mệnh đề LIKE theo sau dùng để gắn các tên các biến để ta dễ theo dõi như câu lệnh SHOW STATUS ở trên

SHOW VARIABLES [ LIKE variable_name ]

 Show processlist: Lệnh này dùng để hiển thị tất cả các tiến trình xử lý đang thực hiện, như các câu truy vấn Hầu hết mọi người dùng đều thấy các tiến trình xử lý của mình, nhưng nếu được cấp quyền PROCESS (như đả mô tả ở phần phân quyền ), một người dùng có thể thấy được mọi tiến trình xử lý cuả mọi người khác, kể cả tên người dùng, mật khẩu, các truy vấn đang thực thi, … bằng cách sử dụng phần mở rộng FULL, dạng tổng quát như sau:

SHOW [ FULL ] PROCESSLIST

 Show table status: Cung cấp các thông tin về mỗi bảng trong cơ sở dữ liệu hiện hành hoặc một cơ sở dữ liệu khác được chỉ ra trong phần mở

rộng database_name, các thông tin đi kèm là loại bảng và ở mỗi bảng có

các thông tin về lần cập nhật trước

SHOW TABLE STATUS [ FROM database_name ]

 Show grants: Câu lệnh này chỉ được sử dụng từ phiên bản 3.23.4 trở lên, nếu phiên bản MySQL của bạn cũ hơn thì bạn không thể dùng lệnh này được Mục đích của câu lệnh này là cung cấp cho ta danh sách các quyền mà một người dùng có được trên cơ sở dữ liệu hiện hành, và đương nhiên, người sử dụng lệnh phải có cấp quyền cao hơn người dùng cần xem Dạng tổng quát như sau:

SHOW GRANTS FOR user_name

Trang 29

d Câu lệnh DESCRIBE

Câu lệnh này được sử dụng để xem chi tiết cấu trúc của một bảng trong

cơ sở dữ liệu hiện hành Dạng tổng quát như sau:

DESCRIBE | DESC tbl_name {col_name | wild}

Giả sử cơ sở dữ liệu hiện hành là mysql, bạn muốn xem chi tiết cấu trúc

của bảng func, kết quả trả về sẽ giống như sau:

mysql> describe func;

PRI

0

function

4 rows in set ( 0.06 sec )

Nếu MySQL không tìm thấy tên bảng table_name trong cơ sở dữ liệu

hiện hành, một thông báo lỗi sẽ xuất hiện:

mysql> describe tablename;

ERROR 1146 : Table ‘mysql.tablename’ doesn’t exist

e Câu lệnh BEGIN / COMMIT / ROLLBACK

Mặc định, MySQL chạy trong chế độ autocommit Nghĩa là khi bạn thực thi một câu lệnh cập nhật dữ liệu, MySQL sẽ thực hiện việc cập nhật dữ liệu của bạn lên đĩa ngay lập tức

Để thiết lập lại chế độ autocommit, bạn sử dụng câu lệnh sau:

SET AUTOCOMMIT=0

Sau khi hoàn tất mọi công việc, bạn phải sử dụng lệnh COMMIT để lưu mọi sự thay đổi trong cơ sở dữ liệu vào đĩa, nếu không muốn lưu bạn có thể dùng lệnh ROLLBACK Ví dụ như :

mysql> USE thuoc_db;

mysql> SET AUTOCOMMIT=0;

mysql> SELECT @A:=SUM(soluong) FROM pn WHERE msthuoc=1;

mysql> UPDATE thuoc SET soluong=@A WHERE msthuoc=1;

mysql> COMMIT; //hay ROLLBACK

Bạn cũng có thể dùng câu lệnh BEGIN hoặc BEGIN WORK để đặt huỷ bỏ chế độ autocommit thay vì dùng lệnh SET AUTOCOMMIT = 0 Ví dụ: mysql> BEGIN; //hay BEGIN WORK

mysql> SELECT @A:=SUM(soluong) FROM pn WHERE

Trang 30

msthuoc=1;

mysql> UPDATE thuoc SET soluong=@A WHERE msthuoc=1;

mysql> COMMIT; //hay ROLLBACK

f Câu lệnh LOCK TABLES / UNLOCK TABLES

Lệnh LOCK TABLES dùng để khóa tất cả các bảng dữ liệu của tuyến kết nối hiện tại Lệnh UNLOCK TABLES dùng để ‘mở khoá’ cho các bảng đã

bị khóa trước đó bởi tuyến kết nối hiện tại, hoặc khi tuyến kết nối hiện tại bị huỷ thì các bảng đã bị khóa trước đó cũng sẽ được ‘mở khoá’ Cú pháp của câu lệnh này như sau:

LOCK TABLES tbl_name [AS alias]

{READ | [READ LOCAL] | [LOW_PRIORITY] WRITE}

[, tbl_name {READ | [LOW_PRIORITY] WRITE} ]

g Câu lệnh CREATE INDEX

Câu lệnh tạo chỉ mục này sẽ cho phép bạn tạo một cột chỉ mục trong một bảng đã có sẵn Bạn cũng có thể tạo chỉ mục cho nhiều cột bằng cách cung cấp một danh sách tên các cột cần tạo chỉ mục cho câu lệnh tạo chỉ mục Cú pháp như sau:

CREATE [UNIQUE|FULLTEXT] INDEX index_name

ON tbl_name (col_name[(length)], )

h Câu lệnh DROP INDEX

Câu lệnh xoá chỉ mục này sẽ cho phép bạn xoá một cột chỉ mục trong một bảng đã có sẵn Cú pháp như sau:

DROP INDEX index_name ON tbl_name

i Câu lệnh CREATE FUNCTION / DROP FUNCTION

Bạn có thể tự tạo riêng cho mình các hàm để sử dụng bằng câu lệnh tạo hàm giống như hàm nối chuỗi hay hàm tính tổng để tiện cho các công việc Cú pháp hàm :

CREATE [AGGREGATE] FUNCTION function_name

RETURNS {STRING|REAL|INTEGER}

Trang 31

SONAME shared_library_name Để xoá một hàm đã định nghĩa trước đó, ta dùng câu lệnh sau :

DROP FUNCTION function_name

Lưu ý rằng mọi giá trị trả về từ hàm sẽ không bị thay đổi khi hàm bị xoá

đi bằng câu lệnh DROP FUNCTION

3.1.4 Các lệnh thao tác trên cơ sở dữ liệu

a Tạo cơ sở dữ liệu

Để tạo một cơ sở dữ liệu, bạn phải cung cấp cho hệ thống tên của cơ sở dữ liệu (tham khảo thêm mục 5 ở trên: Định danh trong MySQL ) sau đó sử dụng câu lệnh tạo cơ sở dữ liệu với cú pháp đơn giản như sau:

CREATE DATABASE [IF NOT EXISTS] dbname

Nếu trong hệ thống không tồn tại một cơ sở dữ liệu nào trùng tên với cơ sở dữ liệu bạn vừa tạo, một thông báo lỗi sẽ xuất hiện Nếu trong hệ thống đã tồn tại một cơ sở dữ liệu trùng tên với cơ sở dữ liệu bạn vừa tạo, một dòng thông báo lỗi sẽ xuất hiện

b Xoá cơ sở dữ liệu

Chúng ta có thể xóa toàn bộ cơ sở dữ liệu chỉ bằng một lệnh rất đơn giản, chính vì vậy bạn hãy cẩn thận với câu lệnh này vì sau khi thực hiện, tất cả các mẫu tin, tất cả các bảng, và cơ sở dữ liệu sẽ bị xóa Cú pháp rất đơn

giản: DROP DATABASE [IF EXISTS] dbname

Nếu thật sự có một cơ sở dữ liệu tên ‘db_name’ tồn tại trong hệ thống cơ

sở dữ liệu của MySQL, bạn sẽ có thông báo như sau:

Query OK, 0 rows affected ( 0.01 sec ) mysql> _

Nếu không có cơ sở dữ liệu nào tên ‘db_name’ tồn tại trong hệ thống cơ

sở dữ liệu của MySQL, bạn sẽ có thông báo lỗi:

ERROR 1008 : Cant’s drop database ‘dbname’ Database doesn’t exists

c Tạo bảng

Để tạo một bảng (table) trong MySQL bạn cần phải biết các loại dữ liệu mà hệ thống hỗ trợ (xem phần 6 : Định nghĩa các kiểu dữ liệu) và cách đặt tên cho các cột (xem phần 5 : Định danh trong MySQL ) Bạn cũng cần phải chú ý đến cơ sở dữ liệu hiện hành, nghĩa là bạn chỉ tạo được bảng khi bạn đang ở

Trang 32

trong một cơ sở dữ liệu cụ thể nào đó (bằng cách sử dụng câu lệnh USE

db_name) Dạng tổng quát của câu lệnh tạo bảng như sau:

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name

[(create_definition, )] [table_options] [select_statement]

Create_definition col_name type [NOT NULL | NULL]

[DEFAULT default_value] [AUTO_INCREMENT]

[PRIMARY KEY] [reference_definition]

or PRIMARY KEY (index_col_name, )

or KEY [index_name] (index_col_name, )

or INDEX [index_name] (index_col_name, )

or UNIQUE [INDEX] [index_name] (index_col_name, )

or SMALLINT[(length)] [UNSIGNED] [ZEROFILL]

or MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL]

or INT[(length)] [UNSIGNED] [ZEROFILL]

or INTEGER[(length)] [UNSIGNED] [ZEROFILL]

or BIGINT[(length)] [UNSIGNED] [ZEROFILL]

or REAL[(length,decimals)] [UNSIGNED] [ZEROFILL]

or DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL]

or FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL]

or DECIMAL(length,decimals) [UNSIGNED] [ZEROFILL]

or NUMERIC(length,decimals) [UNSIGNED] [ZEROFILL]

Trang 33

[MATCH FULL | MATCH PARTIAL]

[ON DELETE reference_option]

[ON UPDATE reference_option]

| NO ACTION | SET DEFAUL

or ROW_FORMAT= { default | dynamic | static | compressed }

or RAID_TYPE= {1 | STRIPED | RAID0 } RAID_CHUNKS=# RAID_CHUNKSIZE=#;

or UNION = (table_name,[table_name ])

(Some legal select statement) Nếu bạn tạo một bảng mà chỉ cung cấp tên bảng cần tạo, không tạo các cột thì một thông báo lỗi sẽ xuất hiện Đó là một qui luật tự nhiên, một bảng phải có ít nhất một cột, nếu không có cột nào đó không phải là một bảng Ví dụ như:

mysql> create table tbl_name;

ERROR 1113 : A table must have at least 1 column mysql> _

Trong trường hợp tên bảng cần tạo đã có trong cơ sở dữ liệu hiện hành, thông báo lỗi sẽ xuất hiện:

mysql> create table tbl_name(col1 char(5));

ERROR 1050 : Table ‘tbl_name’ already exists mysql> _

Nếu xuất hiện một thông báo như dưới đây, nghĩa là việc tạo bảng của bạn đã hoàn tất đúng như yêu cầu

Query OK, 0 rows affected ( 0.01 sec ) Mysql> _

Trang 34

d Xoá bảng

Điều kiện cần thiết để có thể xoá một bảng (table) trong cơ sở dữ liệu hiện hành là bảng đó phải tồn tại Khi thực hiện câu lệnh xoá bảng, toàn bộ các cột có trong bảng và các mẫu tin sẽ bị xoá đi Câu lệnh xoá bảng có cú pháp rất đơn giản:

DROP TABLE [IF EXISTS] tbl_name

[, tbl_name, ] [RESTRICT | CASCADE]

Nếu bạn xoá một bảng không tồn tại trong cơ sở dữ liệu hiệ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> _

e 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, )

{SET DEFAULT literal | DROP DEFAULT}

or CHANGE [COLUMN] old_col_name create_definition

or MODIFY [COLUMN] create_definition

Trang 35

or DROP [COLUMN] col_name

or DROP PRIMARY KEY

or DROP INDEX index_name

or RENAME [TO] new_tbl_name

or ORDER BY col

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

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)

ALTER [COLUMN] column_name

{ SET DEFAULT new_value

Đổ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

Trang 36

f 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, ]

g 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'

h 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'

3.1.5 Các lệnh thao tác trên dữ liệu

a 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

Trang 37

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

b 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:

REPLACE [LOW_PRIORITY | DELAYED] [INTO] tbl_name

SET col_name=expression, col_name=expression,

c 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]

Trang 38

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

d 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

e 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, )]

f 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

Trang 39

mysql> UPDATE persondata SET age=age+1;

mysql> UPDATE persondata SET age=age*2,

age=age+1;

g 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]

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 (<), lớn hơn hay bằng (>=), nhỏ hơn hay bằng (<=), kiểm tra rỗng (IS NULL hay IS NOT

Trang 40

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

mysql> select IF(1>2,2,3); //-> 3 mysql> select IF(1<2,'yes','no'); //-> '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, ))

Ngày đăng: 25/12/2014, 19:37

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w