So sánh thông tin trong csdl php

ASP.NET nhưng có thể cải thiện bằng phần cứng máy tính Visual Studio có thể sinh mã, tiết kiệm thời gian viết code. Dễ học khi đã biết HTML, C + Dựa vào XAMP + Tomcat plugin (dễ cấu hình). Hoạt động trên Linux, có thể trên

IIS – Windows!

Mã nguồn rõ ràng, tách biệt với giao diện HTML. Visual Studio có thể sinh mã, tiết kiệm thời gian viết code. Có thể dùng C#, VB hoặc

Managed C++ Cấu hình nhiều khi chạy

Không thể chạy trên

Linux Nếu không có Visual

Studio thì khó viết code!

3.3. Hệ quản trị cơ sở dữ liệu MySQL

MySQL là hệ quản trị dữ liệu miễn phí, được tích hợp sử dụng chung với apache, PHP. Chính yếu tố phát triển trong cộng đồng mã nguồn mở nên MySQL đã qua rất nhiều sự hỗ trợ của những lập trình viên yêu thích mã nguồn mở. MySQL cũng có cùng một cách truy xuất và mã lệnh tương tự với ngôn ngữ SQL. Nhưng MySQL không bao quát toàn bộ những câu truy vấn cao cấp như SQL. Về bản chất MySQL chỉ đáp ứng việc truy xuất đơn giản trong quá trình vận hành của website nhưng hầu hết có thể giải quyết các bài toán trong PHP.

3.3.1. Loại dữ liệu trong MySQL

Mỗi hệ quản trị CSDL sử dụng những kiểu dữ liệu nhất định để lưu trữ dữ liệu. Trong yêu cầu thiết kế trường, quan trọng nhất là phải chọn kiểu dữ liệu phù hợp. Để làm được điều đó ta thường quan tâm đến các mục tiêu sau khi lựa chọn dữ liệu: - Tiết kiệm không gian lưu trữ - Biểu diễn được mọi giá trị có thể có thuộc miền giá trị của thuộc tính - Cải thiện tính toàn vẹn như tổ chức việc nhập dữ liệu, kiểm tra dữ liệu đầu vào,… - Hỗ trợ các thao tác dữ liệu như thao tác với dữ liệu số nhanh hơn so với dữ liệu kiểu kí tự,… Hệ quản trị MySQL cung cấp một số kiểu dữ liệu cơ bản sau: Bảng 3: Một số kiểu dữ liệu cơ bản trong MySQL

3.3.2. Các cú pháp cơ bản

- Tạo một CSDL: CREATE DATABASE <tên_cơ_sở_dữ_liệu>; - Các lệnh thao tác với bảng dữ liệu Lệnh tạo bảng: CREATE TABLE <Tên bảng>( <Tên cột> <Kiểu dữ liệu> [<RBTV>], <Tên cột> <Kiểu dữ liệu> [<RBTV>],

… [<RBTV>]); Thêm cột mới vào bảng: ALTER TABLE <Tên bảng> ADD COLUMN <Tên cột> <Kiểu dữ liệu> [<RBTV>]; Mở rộng cột: ALTER TABLE <Tên bảng> ALTER COLUMN <Tên cột> <Kiểu dữ liệu mới>; Xóa một cột khỏi bảng: ALTER TABLE <Tên bảng> DROP COLUMN <Tên cột>; Thêm ràng buộc toàn vẹn:

ALTER TABLE <Tên bảng> ADD CONSTRAINT <Tên RBTV><RBTV>, CONSTRAINT <Tên RBTV><RBTV>, …; Xóa một ràng buộc đối với bảng: ALTER TABLE <Tên bảng> DROP CONSTRAINT<Tên RBTV>; Lệnh xóa bảng: DROP TABLE <Tên bảng>; Ví dụ: Tạo bảng KHOHANG với các thuộc tính MAKHO: varchar(15), TENKHO: varchar(15), DIACHI: varchar(20), với ràng buộc là giá trị các thuộc tính phải xác định, MAKHO là khóa chính.

CREATE TABLE KHOHANG( MAKHO VARCHAR(15) PRIMARY KEY, TENKHO VARCHAR(15) NOT NULL, DIACHI VARCHAR(20) NOT NULL);

Thêm cột SONHANVIEN, kiểu dữ liệu integer(15) vào bảng: ALTER TABLE KHOHANG ADD COLUMN SONHANVIEN INTEGER(15);

Xóa cột DIACHI: ALTER TABLE KHOHANG DROP COLUMN DIACHI;

Mở rộng cột SONHANVIEN, kiểu dữ liệu integer(50): ALTER TABLE KHOHANG

ALTER COLUMN SONHANVIEN INTEGER(50); Xóa bảng KHOHANG có MANV là khóa ngoại ALTER TABLE NHANVIEN DROP CONSTRAINT FK_MANV DROP TABLE KHOHANG; Các lệnh truy xuất dữ liệu Các lệnh truy vấn đơn giản Cú pháp: SELECT <Danh sách các cột> FROM <Danh sách các bảng> [WHERE <Điều kiện>]

Mệnh đề SELECT: Sử dụng để liệt kê các cột sẽ hiển thị trong kết quả truy vấn. Chú ý: Ký tự (*) được dùng để ký hiệu tất cả các cột.

Mệnh đề FROM: Liệt kê các bảng cần tra cứu để đánh giá kết quả của biểu thức. Danh sách các bảng cách nhau bởi dấu phẩy. Mệnh đề WHERE: Dùng để đưa ra các điều kiện chọn, điều kiện chọn là một tân từ chứa các thuộc tính của các bảng xuất hiện trong mệnh đề FROM. Mệnh đề WHERE được biểu diễn dưới các dạng sau:

WHERE [NOT] <Biểu thức> <Phép so sánh> <Biểu thức>

WHERE [NOT] <Tên cột> [NOT] LIKE < Xâu ký tự>

WHERE [NOT] <Biểu thức> [NOT] IN ({ Danh sách câu truy vấn})

WHERE [NOT] EXISTS (<Câu truy vấn con>)

WHERE [NOT] <Biểu thức> <Phép so sánh> {SOME, ANY, ALL (Câu truy vấn con)}

WHERE [NOT] <Biểu thức logic>

WHERE [NOT] <Biểu thức logic> { AND, OR} [NOT] <Biểu thức logic> Ví dụ: Hiển thị thông tin về MAKHO, TENKHO, DIACHI trong bảng KHOHANG:

SELECT*

FROM KHOHANG; Ví dụ: Hiển thị thông tin về MANV, TENNV, DIACHI những nhân viên làm việc ở kho có tên “Kho A”.

SELECT MANV, TENNV, DIACHI FROM NHANVIEN, KHOHANG WHERE TENKHO= “kho A” AND

NHANVIEN.MANV=KHOHANG.MAKHO; Mệnh đề ORDER BY Mệnh đề ORDER BY dùng để sắp xếp các kết quả trả về theo thứ tự tăng dần hoặc giảm dần theo giá trị của các cột nào đó.

Ví dụ: Hiển thị thông tin của tất cả các cột trong bảng KHOHANG, sắp xếp theo thứ tự MAKHO giảm dần:

SELECT *

FROM KHOHANG

ORDER BY MAKHO DESC; Sử dụng hàm gộp và mệnh đề GROUP BY, HAVING

Hàm gộp: COUNT:

COUNT(*): Đếm số dòng.

COUNT(<Tên thuộc tính>) Đếm số giá trị khác NULL của thuộc tính.

COUNT( DISTINCT <Tên thuộc tính>) Đếm số giá trị khác nhau và khác NULL của thuộc tính. - MAX <Tên cột>: Tìm giá trị lớn nhất của các thuộc tính. - MIN <Tên cột>: Tìm giá trị nhỏ nhất của các thuộc tính. - SUM <Tên cột>: Tính tổng các giá trị của thuộc tính. - AVG <Tên cột>: Tính trung bình các giá trị của thuộc tính. Mệnh đề GROUP BY: Dùng để phân chia các dòng dữ liệu trong bảng thành các nhóm dữ liệu, trên mỗi nhóm dữ liệu thực hiện tính toán các giá trị thống kê (tính tổng, tính giá trị trung bình,…) Mệnh đề HAVING: Mệnh đề HAVING sử dụng các hàm kết hợp trong mệnh đề SELECT để kiểm tra một số điều kiện trên nhóm. Sau khi gom nhóm thì điều kiện trên mệnh đề HAVING mới được thực hiện. Ví dụ: Hiển thị thông tin về số phiếu nhập kho, số lượng trung bình hàng nhập kho, lọc ra số phiếu nhập có số lượng hàng nhập trung bình lớn hơn 500.

SELECT SOPN, AVG(SOLUONG) AS SLNHAPTB

FROM PHIEUNK

GROUP BY SOPN

HAVING AVG(SOLUONG) >500;

Các lệnh truy vấn lồng Cú pháp: SELECT <Danh sách các cột> FROM <Danh sách các bảng> Câu truy vấn cha WHERE <So sánh tập hợp>(

SELECT <Danh sách các cột> FROM <Danh sách các bảng> Câu truy vấn con WHERE <Điều kiện >); Truy vấn lồng là các truy vấn có từ hai câu lệnh SELECT trở nên. Các câu lệnh SELECT bên trong nằm sau mệnh đề WHERE hoặc HAVING của câu lệnh SELECT ngoài.

Các lệnh truy vấn lồng được thực hiện theo thứ tự : Thực hiện lệnh SELECT bên trong trước, sau đó sử dụng kết quả của lệnh SELECT bên trong để thực hiện lệnh SELECT bên ngoài. Truy vấn lồng được chia làm hai loại: Lồng phân cấp và lồng tổng quan Lồng phân cấp: Mệnh đề WHERE của truy vấn con không tham chiếu đến thuộc tính của các quan hệ trong mệnh đề FROM ở truy vấn cha. Khi thực hiện, câu truy vấn con sẽ được thực hiện trước và thực hiện một lần. Lồng tổng quan: Mệnh đề WHERE của truy vấn con tham chiếu đến ít nhất một thuộc tính của các quan hệ trong mệnh đề FROM ở truy vấn cha. Khi thực hiện, câu truy vấn con sẽ được thực hiện nhiều lần, mỗi lần tương ứng với một bộ của truy vấn cha. Ví dụ: Tìm số phiếu xuất có số lượng hàng xuất trung bình lớn nhất. SELECT SOPX

FROM PHIEUXK

GROUPBY SOPX

HAVING AVG (SOLUONG) >= ALL (SELECT AVG (SOLUONG) FROM PHIEUXK

GROUP BY SOPX);

3.3.3. Mối liên hệ giữa PHP và MySQL

- PHP có nhiệm vụ kết nối MySQL và yêu cầu MySQL thực thi các câu truy vấn và trả kết quả về cho PHP để từ đó PHP lấy kết quả để xử lý. Ví dụ: // Kết nối $connect = @mysql_pconnect('localhost', 'user', 'password') or die ('Can\'t connect to database'); @mysql_select_db('database', $connect) or die('Can\'t select database'); // Tạo câu truy vấn và thực thi

$result = mysql_query('SELECT * FROM SinhVien'); // Xử lý kết quả trả về while ($row = mysql_fetch_assoc($result)){ var_dump($row); } // Ngắt kết nối mysql_close($conn); - Các hàm cơ bản sử dụng MySQL trong PHP 1. Kết nối CSDL: mysql_connect("hostname","user","pass") 2. Lựa chọn CSDL: mysql_select_db("tên_CSDL")

Ví dụ: $conn=mysql_connect("localhost","root","root") or die(" khong the ket noi"); mysql_select_db("demo"); 3. Thực thi câu lệnh truy vấn: mysql_query("Câu truy vấn"); 4. Đếm số dòng dữ liệu trong bảng: mysql_num_rows(); 5. Lấy dữ liệu từ bảng đưa vào mảng: mysql_fetch_array(); 6. Lấy dữ liệu từ bảng đưa vào biến: mysql_fetch_assoc(); 7. Đóng kết nối CSDL: mysql_close();

CHƯƠNG 4: ỨNG DỤNG PHP VÀ MYSQL ĐỂ XÂY DỰNG WEBSITE HỖ TRỢ GIẢNG DẠY VÀ HỌC TẬP HỌC PHẦN CSDL2 4.1. Mục tiêu của website

Website được xây dựng nhằm khắc phục những hạn chế của phương pháp giảng dạy truyền thống đồng thời nâng cao hiệu quả của việc dạy và học học phần CSDL2. Mục tiêu của website là: - Phổ biến nội dung học phần CSDL2 theo chương trình giảng dạy của khoa HTTTKT&TMĐT, Trường Đại học Thương mại. - Tạo môi trường thuận lợi cho mọi hoạt động liên quan dạy và học học phần cho giáo viên và sinh viên của khoa. - Tạo môi trường trao đổi, tra cứu thông tin thuận lợi, hiệu quả về cách khai thác CSDL cũng như các kiến thức liên quan cho tất cả đối tượng quan tâm.

4.1.1. Chức năng dành cho khách

Khách ở đây có thể là giáo viên hoặc sinh viên khi chưa đăng ký làm thành viên. Đây là một website trợ giúp việc học tập, nghiên cứu về học phần CSDL2. Khách có thể thực hiện các tác vụ trên website như: - Tra cứu các kiến thức cơ bản và nâng cao về CSDL. Có thể tra cứu theo tên câu lệnh, theo từ khóa, theo tác giả gửi bài, theo thời gian, theo các bài viết liên quan. - Kiểm tra khả năng hiểu câu lệnh và chương trình thông qua hình thức trắc nghiệm, ô chữ. - Tra cứu thuật ngữ Anh -Việt -Anh về CSDL - Tải các tài liệu và chương trình liên quan đến học phần.

4.1.2. Chức năng dành cho thành viên

Sau khi thực hiện đăng ký, thành viên của website có thể là sinh viên hoặc giáo viên trong trường. Thành viên có thể thực hiện các tác vụ trên website, như: - Tham gia viết các bài viết về các câu lệnh hoặc đóng góp ý kiến, sửa đổi câu lệnh. - Tham gia các cuộc thi trên website: đề xuất đề bài, xem luật thi, đăng ký, tham gia thi, nộp bài, xem thông báo kết quả bài thi. - Cập nhật thông tin cho từ điển thuật ngữ của học phần. - Trao đổi về các câu lệnh của các bài toán thông qua diễn đàn. - Thay đổi thông tin cá nhân của bản thân.

4.1.3. Chức năng dành cho người quản lý

Thành viên được cấp quyền quản lý sẽ trở thành người quản lý – trong một số trường hợp đối tượng này được gọi là giáo viên. Ban đầu, khi mới cài đặt, hệ thống mặc định có một người quản lý, tên đăng nhập là admin. Người quản lý có thể thực hiện các tác vụ trên website: