Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 20 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
20
Dung lượng
1,95 MB
Nội dung
Simpo PDF Merge and Split Unregistered COMPUTER LEARNING CENTER Version - http://www.simpopdf.com WWW.HUUKHANG.COM SIZE = 10, MAXSIZE = 50, FILEGROWTH = ) LOG ON ( NAME = 'Testlog', FILENAME = 'c:\mssql7\data\Testlog.ldf', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB ) GO Để đơn giản hoá đối tượng Table sở liệu Test, trình bày vài phát biểu SQL dạng Create Table, Table khác bạn tìm thấy sở liệu đính kèm Ví dụ 8-32: Tạo số bảng Test /* Tạo bảng danh sách khách hàng thường xuyên */ CREATE TABLE tblcustomers ( CustID int(3) unsigned NOT NULL auto_increment, Username varchar(20) NOT NULL DEFAULT '' , Password varchar(10) NOT NULL DEFAULT '' , CustName varchar(50) , Address varchar(100) , Tel varchar(20) , FaxNo varchar(10) , Email varchar(50) , Contact varchar(50) , CountryCode char(3) , ProvinceCode char(3) , PRIMARY KEY (CustID), INDEX CustID (CustID) ); /* Tạo bảng hợp đồng mua hàng qua mạng */ CREATE TABLE tblorders ( OrderID int(3) NOT NULL auto_increment, OrderDate date , CustID int(11) , Description varchar(100) DEFAULT '0' , TranID tinyint(3) DEFAULT '0' , PaymentID tinyint(3) DEFAULT '0' , Amount float DEFAULT '0' , ShipCost float DEFAULT '0' , TotalAmount float DEFAULT '0' , PRIMARY KEY (OrderID), INDEX OrderID (OrderID) ); /* Tạo bảng hợp đồng chi tiết mua hàng qua mạng */ CREATE TABLE tblorderdetails ( ItemID int(3) unsigned DEFAULT '0' , OrderID int(3) unsigned DEFAULT '0' , No tinyint(3) unsigned DEFAULT '0' , Qtty int(3) unsigned DEFAULT '0' , Price int(3) unsigned DEFAULT '0' , Discount int(3) unsigned DEFAULT '0' , Amount bigint(3) unsigned DEFAULT '0' ); Giáo viên: Phạm Hữu Khang Simpo PDF Merge and Split Unregistered COMPUTER LEARNING CENTER Version - http://www.simpopdf.com WWW.HUUKHANG.COM Một số quy đònh thiết kế Table 6.7.4 Tên cột - Column Name Đặt tên cột giống đặt tên bảng, có nhiều quy tắc đặt tên (như trình bày phần table), khuyến khích bạn nên theo số quy tắc sau: ¾ Tên cột bắt đầu chữ hoa, lại chữ thường ¾ Tên ngắn gọn đầy đủ ý nghóa ¾ Không nên đặt tên cột có khoảng trắng, sau bạn gặp phiền toái tham chiếu đến cột ¾ Không đặt tên cột trùng với từ khoá, từ dành riêng, ký tự đặc biệt phép toán hay toán tử khác ¾ Chú ý, nên đặt tên cột tên cột có quan hệ với bảng khác sở liệu, giúp dễ hiểu tránh bò nhầm lẫn Một số người thích thêm vào dấu gạch chân (_) để phân biệt ý nghóa hay tên gọi cột, điều tùy vào sở thích bạn Tuy nhiên không thích qui tắc Nhưng kinh nghiệm lập thiết kế xây dựng sở liệu bạn không nên dùng dấu gạch _, dó nhiên nhiều trường hợp khác bạn cảm thấy khó chòu thêm dấu _ tên đối tượng sở liệu Mặc dù vấn đề cho cú pháp hay phát biểu tham chiếu đến chúng, bạn thấy không nên dùng dấu gạch chân (_) đặt tên đối tượng hay tên sở liệu MySQL ¾ Nếu bạn đặt tên có dấu _ ,bạn phải tốn thời gian hay lượng cho hành động tạo dấu _ ¾ Trong chừng mực hay giới hạn hiệu ứng Font chữ phát sinh lỗi gây nhầm lẫn cho người lập trình ¾ Nói tóm lại bạn thêm thời gian lưu tâm đến chúng 6.7.5 Kiểu liệu - Data type Như trình bày lại liệu phần trên, xây dựng sở liệu, tất trường bảng cần phải có kiểu liệu cụ thể Vấn đề quan trọng chọn kiểu liệu cho phù hợp với liệu mà người dùng nhập vào Để thiết kế liệu phù hợp với thực tế, tính ứng dụng hợp với ngữ cảnh bạn cần quan tâm đến kiểu liệu tương thích chiều dài cột Chẳng hạn như: [CustID] [varchar] (10) /* hay */ [CustID] int 6.7.6 Giá trò mặc đònh - Default Thông thường tạo cột bảng cần áp dụng giá trò mặc đònh, không cho trường hợp số liệu không nhập từ bên mà cho cột tự động có giá trò tự sinh Với lý vậy, cần có số giá trò mặc đònh cho cột cần thiết, ví dụ : ¾ Nếu cột số có giá trò mặc đònh Giáo viên: Phạm Hữu Khang Simpo PDF Merge and Split Unregistered COMPUTER LEARNING CENTER Version - http://www.simpopdf.com WWW.HUUKHANG.COM ¾ Nếu cột ngày tháng có giá trò mặc đònh ngày (như 0000-00-00 CurDate()) ¾ Nếu cột có giá trò 1, bạn khai báo giá trò mặc đònh ¾ Nếu cột chuỗi có giá trò mặc đònh 'A' 6.7.7 Số tự động auto_increment auto_increment khái niệm quan trọng MySQL (tương đương với Identity SQL Server, Autonumber MS Access) Khi bạn muốn cột có giá trò tăng tự động AutoNumber/Identity, bạn nên đònh nghóa cột auto_increment, lớn Khi sử dụng auto_increment làm số tăng tự động kiểu liệu số nguyên số nguyên Trong trường hợp, bạn khai báo số tự động SQL Server, bạn cần phải khai báo thêm thông số seed Seed giá trò khởi đầu SQL Server tự động tăng giá trò, Increament bước tăng, cho biết lần tăng cần giá trò Vì dụ tạo auto_increment cho cột ItemID [Int] auto_increment, nghóa bắt đầu số lần tăng số Kết bạn có 1,2,3,4, n Trong phát biểu SQL MySQL, để tạo bảng có gá trò tăng tự động bạn cần khai báo tên cột, kiểu liệu Int (Integer) auto_increment sau: IDNO Int auto_increment NOT NULL Trong giao diện đồ họa bạn cần check vào tuỳ chọn AutoIncreament hình 8-10 Hình 8-10: Chọn auto_increment Giáo viên: Phạm Hữu Khang Simpo PDF Merge and Split Unregistered COMPUTER LEARNING CENTER Version - http://www.simpopdf.com WWW.HUUKHANG.COM NULL / NOT NULL Đây trạng thái cột bảng cho phép chấp nhận giá trò NULL hay không? Nếu bạn ràng buộc giá trò NOT NULL bắt buộc phải có giá trò cột mẩu tin nhập vào Đối với số kiểu liệu không cho phép NULL bạn nên thiết lập giá trò mặc đònh cho cột đó, ví dụ kiểu liệu bit không cho phép NULL Trong phát biểu SQL tạo bảng, bạn cần khai báo NULL hay NOT NULL sau kiểu liệu cột Trong giao diện đồ họa cần đánh dấu chọn vào tuỳ chọn Not NULL hình 8-10 6.8 Thay cấu trúc đối tượng ALTER Khi cần thiết phải sửa đổi phần cấu trúc đối tượng table (view, hay SP SQL Server) mục đích đó, Bạn sử dụng phát biểu ALTER để thay đổi cấu trúc đối tượng có: ALTER Khi bảng tồn sở liệu, nhu cầu cần thiết phải thay đổi cấu trúc bảng, bạn sử dụng phát biểu ALTER TABLE tham số chúng cú pháp sau: ALTER TABLE table alteration [,alteration] Chẳng hạn, bạn sử dụng phát biểu ALTER TABLE để thêm cột tên Activate với kiểu liệu TinyInt có giá trò mặc đònh Ví dụ 8-33: Thêm cột tên Activate vào bảng tblOrders ALTER TABLE tblorders ADD Activate TINYINT DEFAULT "1" Khi thay đổi thiết lập giá trò mặc đònh cho cột bạn nên quan tâm đến giá trò mặc đònh có phù hợp cho mẩu tin tồn hay không Muốn thay đổi giá trò mặc đònh cột cho mẩu tin tồn tại, bạn sử dụng đến mệnh đề phụ ví dụ sau: Ví dụ 8-34: Thiết lập giá trò mặc đònh bảng tblOrders ALTER TABLE tblorders CHANGE OrderDate OrderDate DATETIME DEFAULT "0000-00-00" Thay đổi kiểu liệu từ Date dang DateTime, bạn khai báo ví dụ 4-35 sau: Ví dụ 8-35: Thay đổi kiểu liệu ALTER TABLE tblorders CHANGE OrderDate OrderDate DATE DEFAULT "0000-00-00 00:00:00" Giáo viên: Phạm Hữu Khang Simpo PDF Merge and Split Unregistered COMPUTER LEARNING CENTER Version - http://www.simpopdf.com WWW.HUUKHANG.COM Mặc khác, bạn tạo hay thay đổi bảng hình MySQL-Front Chỉ cần chọn ngăn Database | R-Click | Create New Table, cửa sổ xuất hình 8-11 Hình 8-11: Giao diện tạo bảng MySQL-Front 6.9 Phát biểu SQL dạng DROP Drop phát biểu thực phép xoá DROP dùng để xoá đối tượng sở liệu bảng, sở liệu, Cú pháp phát biểu DROP: DROP [, n] Bạn xoá sở liệu, cách khai báo sau: Drop Database Test /* Phát biểu DROP TABLE rõ bảng cần xoá, xoá nhiều bảng bạn cần dùng dấu phẩy (,) */ DROP TABLE tblCustomers, tblSuppliers Ngoài ra, bạn dùng MySQl-Front để xoá bảng hay đối tượng Table sở liệu đònh Nếu chọn nhiều bảng lúc bạn sử dụng phím Control hay Shift sau: Giáo viên: Phạm Hữu Khang Simpo PDF Merge and Split Unregistered COMPUTER LEARNING CENTER Version - http://www.simpopdf.com WWW.HUUKHANG.COM Hình 8-12: Chọn đối tượng để xoá bảng MySQL-Front TẠO KỊCH BẢN SQL- SQL SCRIPTS Thông thường xây dựng sở liệu để phát triển ứng dụng, bạn cần chuyển sở liệu từ máy sang máy khác, hay từ khu vực hay đến khu vực khác Có nhiều cách để làm điều này, giới thiệu đến bạn công cụ tái tạo lại sở liệu từ kòch sở liệu gốc Kòch SQL (SQL Script) tổng hợp tất phát biểu SQL dùng để tạo sở liệu trình xây dựng chúng, chúng lưu trữ dạng văn có tên mở rộng sql (cautruc.sql) Công cụ tạo kòch cho tất đối tượng sở liệu với thuộc tính Tuy nhiên, bạn chọn vào tuỳ chọn Data, SQL Script bao gồm phát biểu SQL dạng Insert với liệu bảng Trước tiên bạn nhận thấy cửa sổ công cụ MySQL-Front, cách chọn tên sở liệu Test, sau chọn Tools / Im-Export / Export Table, cửa sổ xuất hình 8-13 sau: Giáo viên: Phạm Hữu Khang Simpo PDF Merge and Split Unregistered COMPUTER LEARNING CENTER Version - http://www.simpopdf.com WWW.HUUKHANG.COM Hình 8-13: Tạo kòch MySQl-Front KẾT CHƯƠNG Trong chương này, giới thiệu với bạn hầu hết phát biểu SQL thuộc loại đònh nghóa sở liệu, thao tác liệu Select, Insert, Delete Update Phát biểu SQL dạng Select với mệnh đề JOIN phép toán hai hay nhiều bảng phát biểu SQL dạng SELECT Ngoài ra, trình bày hai loại phát biểu SQL dạng đònh nghóa thay đổ sở liệu tạo CREATE ALTER, DROP Giáo viên: Phạm Hữu Khang Simpo PDF Merge PHP VÀ DATABASE and Split Unregistered Version - http://www.simpopdf.com 9-1 Môn học: PHP BÀI 9: PHP VÀ DATABASE Để kết nối sở liệu mySQL PHP, có nhiều cách ứng với nhiều phương thức kết nối sở liệu, phần tập trung tìm hiểu cách kết nối sở liệu mySQL từ PHP gói Những 9 9 vấn đề đề cập học Khai báo kết nối sở liệu Thêm mẩu tin Cập nhật mẩu tin Xoá mẩu tin Truy vấn liệu KẾT NỐI CƠ SỞ DỮ LIỆU Để kết nối sở liệu mySQL bạn sử dụng khai báp sau: Trong khai báo sau kết nối sở liệu mySQL với tên server/ip với username vá password: mysql_connect ("localhost", "root", "") Và mysql_select_db("TestDB", $link); để chọn tên sở liệu sau mở kết nối sở liệu, biến $link có giá trò false kết nối sở liệu không thành công Sau mở kết nối sở liệu mà không sử dụng tìh bạn đóng kết nối sở liệu với cú pháp sau: mysql_close($link); Chẳng hạn, bạn khai báo trang connection.php để kết nối sở liệu đóng kết nối sau mở thành công ::Welcome to PHP and mySQL Mo va dong ket noi CSDL MySQL and Split Unregistered Version - http://www.simpopdf.com 9-2 THÊM MẨU TIN Để thêm mẩu tin, bạn sử dụng hàm mysql_query(chuỗi Insert) Chẳng hạn, khai báo trang insert.php để thêm mẩu tin vào bảng tblships có hai cột liệu ShipID ShipName ví dụ trang insert.php ::Welcome to PHP and mySQL Them mau tin [...]... WWW.HUUKHANG.COM Simpo PDF Merge and Split Unregistered Version PHP VÀ DATABASE So mau tin cap nhat - http://www.simpopdf.com 9-6 4 XOÁ MẨU TIN Tương tự như vậy khi xoá mẩu tin, bạn chỉ thay đổi phát biểu SQL dạng Delete như ví dụ trong tập tin delete .php ::Welcome to PHP and mySQL Xoa mau tin < ?php require("dbcon .php" );... cần xoá, nếu người sử dụng nhấn nút Delete lập tức trang dodelete .php sẽ triệu gọi và xoá mẩu tin tương ứng ::Welcome to PHP and mySQL COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Simpo PDF Merge and Split Unregistered Version PHP VÀ DATABASE Xoa mau tin < ?php $affectrow=0; require("dbcon .php" ); $sql="delete from tblships "; $sql =" where ShipID='".$txtID."'";... update .php để cập nhật mẩu tin trong bảng tblShips với tên là UpdateTesting khi mã có giá trò là A01 ::Welcome to PHP and mySQL Cap nhat mau tin < ?php require("dbcon .php" ); $sql="Update tblships set ShipName='UpdateTesting' "; $sql.=" where ShipID='A01'"; $result = mysql_query($sql,$link); $affectrow=0; if($result) COMPUTER LEARNING CENTER WWW.HUUKHANG.COM... trang capnhat .php, sau khi học phần truy vấn xong, thaqy vì nhập mã bạn cho phép người sử dụng chọn trong danh sách đã có như hình 9-2 Hình 9-2: Cập nhật dữ liệu Sau khi người sử dụng nhấn nút submit, trang doupdate .php sẽ triệu gọi, kết quả trả về 1 hay 0 mẩu tin ::Welcome to PHP and mySQL Cap nhat mau tin < ?php $affectrow=0; require("dbcon .php" ); $sql="update... < ?php require("dbcon .php" ); $totalRows = 0; $stSQL ="select * from tblShips"; $result = mysql_query($stSQL, $link); $totalRows=mysql_num_rows($result); ?> Sau đó, dùng hàm mysql_fetch_array để đọc từng mẩu tin và in ra như sau: < ?php if($totalRows>0) { $i=0; while ($row = mysql_fetch_array ($result)) { $i+=1; COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Simpo PDF Merge and Split Unregistered Version PHP. .. LEARNING CENTER WWW.HUUKHANG.COM Simpo PDF Merge and Split Unregistered Version PHP VÀ DATABASE $strid=str_replace(",","','",$strid); - http://www.simpopdf.com 9-5 Dựa vào thẻ hidden khai báo trong các trang trình bày danh sách (chẳng ạn lietketheonhom .php) mẩu tin như sau: Bạn có thể biết từ trang nào gọi đến trang dodelete .php để quay trở về khi... lấy giá trò nhập bằng cách sử dụng biến form hay $HTTP_POST_VARS Đối với trường hợp này chúng ta sử dụng biến form như trang doinsert .php ::Welcome to PHP and mySQL Them mau tin < ?php $affectrow=0; require("dbcon .php" ); $sql="insert into tblships(ShipID,ShipName) "; $sql =" values('".$txtID."','".$txtName."')"; $result = mysql_query($sql,$link);... sau: < ?php } }else{ ?> Oop! Ship not found! < ?php ?> } 6 KẾT LUẬN Trong bài này, chúng ta tập trung tìm hiểu cách kết nối cơ sở dữ liệu, thêm, xoá cập nhật và liệt kê mẩu tin Trong bài kế tiếp chúng ta tìm hiểu nhiều các trình bày dữ liệu, xoá mẩu tin theo dạng mảng COMPUTER LEARNING CENTER WWW.HUUKHANG.COM... khai báo trang PHP để liệt kê danh sách mẩu tin trong mảng dữ liệu chằng hạn, mỗi mẩu tin xuất hiện một checkbox tương ứng Checkbox này có giá trò là mã nhận dạng của mẩu tin đó Trong trường hợp này chúng ta dùng cột khoá của mã chuyển hàng (SubCateID) trong bảng tblSubCategories đònh nghóa trong trang lietke .php như hình 10-1 COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Simpo PDF Merge PHP VÀ DATABASE... ví dụ 10-1 trong trang lietke .php < ?php if($totalRows>0) { $i=0; while ($row = mysql_fetch_array ($result)) { $i+=1; ?> ... biểu SQL dạng SELECT Ngoài ra, trình bày hai loại phát biểu SQL dạng đònh nghóa thay đổ sở liệu tạo CREATE ALTER, DROP Giáo viên: Phạm Hữu Khang Simpo PDF Merge PHP VÀ DATABASE and Split Unregistered... Hình 8-10: Chọn auto_increment Giáo viên: Phạm Hữu Khang Simpo PDF Merge and Split Unregistered COMPUTER LEARNING CENTER Version - http://www.simpopdf.com WWW.HUUKHANG.COM NULL / NOT NULL Đây... DEFAULT "0000-00-00 00:00:00" Giáo viên: Phạm Hữu Khang Simpo PDF Merge and Split Unregistered COMPUTER LEARNING CENTER Version - http://www.simpopdf.com WWW.HUUKHANG.COM Mặc khác, bạn tạo hay