Câu 2: Chọn phát biểu sai:A.Ký hiệu “=” là một phép gán giá trị trong mệnh đề where B.INT là một kiểu dữ liệu trong DBMS MySQL C.Có thể thêm thuộc tính cho một bảng khi bảng đó đã chứa d
Trang 1PHẦN 5:
Trang 3 Most applications that you will work with or encounter will involve the use of some sort of data storage container In some cases, you will need nothing more than files for this purpose, but often, that container is some sort of database engine PHP provides access to a great number of different database systems, many of which are relational in nature and can
be interrogated using Structured Query Language (SQL).
In order to utilize these databases, it is important to have a firm grasp on SQL, as well as the means to connect to and interact with databases from PHP.
This chapter reviews the basic concepts of SQL and database connectivity from PHP using PHP Data Objects
(PDO) interfaces (ref: page 132 of ebook “phparchitects
Zend PHP 5 Certification Study Guide”)
1 Giới thiệu
Trang 6int or integer Signed integer number, 32 bits in length smallint Signed integer number, 16 bits in length real Signed floating-point number, 32 bits in length float Signed floating-point number, 64 bits in length char Fixed-length character string
varchar Variable-length character string
2 Các vấn đề cơ bản về DBMS MySQL
Trang 7CREATE DATABASE <dbname>
CREATE SCHEMA <dbname>
CREATE TABLE <tablename> (
<col1name> <col1type> [<col1attributes>], [
<colnname> <colntype> [<colnattributes>]]
)
2 Các vấn đề cơ bản về DBMS MySQL
Trang 8INSERT INTO <tablename> VALUES (<field1value>[, , <fieldnvalue>])
INSERT INTO <tablename>(<field1>[, , <fieldn>]) VALUES
(<field1value>[, , <fieldnvalue>])
DELETE FROM <tablename>;
DELETE FROM <tablename> WHERE <conditions>;
UPDATE <tablename> SET field = value;
UPDATE <tablename>
SET field1 = value1,…, fieldn = valuen WHERE <conditions>;
2 Các vấn đề cơ bản về DBMS MySQL
Trang 9GROUP BY < field1value>[, , <fieldnvalue>] HAVING <conditions>
ORDER BY <field1value>[, , <fieldnvalue>] ]
2 Các vấn đề cơ bản về DBMS MySQL
Trang 11Câu 1: Câu truy vấn nào sau đây gây ra lỗi:
•SELECT column1, column2, column2 FROM tablename;
•SELECT * FROM tablename WHERE columnname LIKE
Trang 12Câu 2: Chọn phát biểu sai:
A.Ký hiệu “=” là một phép gán giá trị trong mệnh đề where
B.INT là một kiểu dữ liệu trong DBMS MySQL
C.Có thể thêm thuộc tính cho một bảng khi bảng đó đã chứa dữ liệu
D.Các từ khóa trong câu truy vấn của DBMS MySQL không phân biệt chữ hoa hay chữ thường
Trang 13Câu 3: Cho bảng emplyees và các bộ giá trị như sau:
empid name managerid
NULLa1 a1
Chọn phát biểu đúng từ câu truy vấn sau
select count(managerid) from employees
Trang 14Câu 4: Chọn lệnh cần điền cho từ key:
CREATE TABLE tblPRODUCT_1 key
•SELECT * FROM tblPRODUCT_1;
•(tblPRODUCT_1 varchar(20));
•SELECT * FROM tblPRODUCT_2;
•Tất cả đều sai
Trang 15Câu 5: Chọn biết kết quả của câu truy vấn từ bảng tblPRODUCT sau:
select count(*)from tblPRODUCT
where productid='bo01' and productid='pe01';
A.1
B.2
C.Câu lệnh thực thi báo lỗi
D.Câu lệnh thực thi nhưng không trả về kết quả
Trang 17b Các bước thao tác CSDL trong PHP:
Bước 1: Kết nối với CSDL
Bước 2: Xây dựng câu truy vấn dữ
liệu
Bước 3: Thực thi câu truy vấn
Bước 4: Xử lí kết quả
Bước 5: Ngắt kết nối với CSDL
3 PHP và các thao tác cơ bản với DBMS MySQL
Trang 18resource mysql_connect ( string host,
3 PHP và các thao tác cơ bản với DBMS MySQL
Trang 19//Không kết nối được, thoát ra và báo lỗi
die("không nết nối được vào MySQL server");
Trang 20UPDATE $strSQL = " UPDATE Users SET Password = 'abc'
WHERE UserName = 'admin' "
SELECT $strSQL = " SELECT * FROM Users WHERE UserName =
'admin' "
3 PHP và các thao tác cơ bản với DBMS MySQL
Trang 21$strSQL = "SELECT * FROM Users";
$result = mysql_query ($strSQL,$conn);
?>
3 PHP và các thao tác cơ bản với DBMS MySQL
Trang 22 Hiển thị dữ liệu trả về
Trang 23 Tự động thực thi khi kết thúc mã lệnh nhờ cơ chế tự động thu rác
(garbage collector)
bool mysql_close( resource connection);
3 PHP và các thao tác cơ bản với DBMS MySQL
Trang 24c Ví dụ xây dựng đối tượng xử lý các bước thao tác CSDL:
-// next slide 02
3 PHP và các thao tác cơ bản với DBMS MySQL
Trang 25c Ví dụ xây dựng đối tượng xử lý các bước thao tác CSDL:
Trang 26c Ví dụ xây dựng đối tượng xử lý các bước thao tác CSDL:
<?php // slide 03
class cProccessDB
// … continue
function
$this ->init $this
$this - mysql_select_db $this
Trang 27c Ví dụ xây dựng đối tượng xử lý các bước thao tác CSDL:
function mysql_close $this
Trang 28a MySQL và font Unicode:
Tạo trong trình quản trị CSDL MySQL:
4 Các vấn đề lưu ý trong xử lý CSDL
Trang 29a MySQL và font Unicode:
Tạo trong trình quản trị CSDL MySQL:
4 Các vấn đề lưu ý trong xử lý CSDL
Trang 30a MySQL và font Unicode:
Dùng câu lệnh SQL để tạo:
Thiết lập thuộc tính Database: khi tạo CSDL MySQL phải thiết lập CHARACTER SET utf8 COLLATE utf8_general_ci.
Hoặc thiết lập các thuộc tính của
bảng
Ví dụ:
CREATE DATABASE sinhvien DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE TABLE SinhVien (
MaSV VARCHAR(8) NOT NULL,
HoTen VARCHAR(50),
NgaySinh DATE, PRIMARY KEY(MaSV) ) COLLATE utf8_general_ci;
4 Các vấn đề lưu ý trong xử lý CSDL
Trang 31a MySQL và font Unicode:
Dùng câu lệnh SQL để tạo:
Hoặc thiết lập các thuộc tính của
field Ví dụ:
CREATE TABLE SinhVien (
MaSV VARCHAR(8) NOT NULL ,
HoTen VARCHAR(50) COLLATE utf8_general_c i NOT NULL , NgaySinh DATE ,
PRIMARY KEY (MaSV)
);
4 Các vấn đề lưu ý trong xử lý CSDL
Trang 32a MySQL và font Unicode:
Thiết lập unicode trong tập tin *.php:
Khai báo thẻ meta, charset=utf-8.
Ěoạn code kết nối CSDL MySQL
Ví dụ:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Trang quản lý thông tin SV</title>
</head>
// Thêm dòng này sau hàm mysql_connect ($server, $user, $pass):
mysql_query ('SET NAMES "utf8"');
4 Các vấn đề lưu ý trong xử lý CSDL
Trang 33b MySQL và mã hóa dữ liệu:
Encryption and Compression Functions
Name Description AES_DECRYPT() Decrypt using AES
AES_ENCRYPT() Encrypt using AES COMPRESS() Return result as a binary string DECODE() Decodes a string encrypted using ENCODE() DES_DECRYPT() Decrypt a string
DES_ENCRYPT() Encrypt a string ENCODE() Encode a string ENCRYPT() Encrypt a string MD5() Calculate MD5 checksum OLD_PASSWORD() Return the value of the pre-4.1 implementation of
PASSWORD PASSWORD() Calculate and return a password string SHA1(), SHA() Calculate an SHA-1 160-bit checksum SHA2() Calculate an SHA-2 checksum
UNCOMPRESS() Uncompress a string compressed UNCOMPRESSED_LENGTH() Return the length of a string before compression
4 Các vấn đề lưu ý trong xử lý CSDL
Trang 3436
Trang 36Câu 1: Chọn phát biểu đúng thay cho câu lệnh chứa từ key ở dòng 1 (giả sử: server chạy cục bộ ở localhost, user và password của MySQL: root và pass):
Trang 37Câu 2: Cho cấu trúc bảng tblProduct thuộc database 'db_php_mysql' như sau
CREATE TABLE tblPRODUCT(
ProdID varchar(50) primary key, ProdName varchar(50)
Bảng tblProduct được chèn thêm 2 bộ dữ liệu ('p01','book') và ('p01','pen')
Ěoạn lệnh thông báo lỗi "Database error"
Bảng tblProduct được chèn thêm 1 bộ dữ liệu ('p01', 'book ')
Tất cả đều sai
Trang 38Câu 3: Cho cấu trúc bảng tblAccount thuộc database 'db_php_mysql' như sau
CREATE TABLE tblACCOUNT(
UserName varchar(50) primary key, Password varchar(50)
3 $query = "insert into tblAccount values('abc','pass')";
4 $query = "insert into tblAccount values(‘abc',‘123')";
Bảng tblAccount được chèn thêm 2 bộ dữ liệu ('abc','pass') và (‘abc',‘123')
Bảng tblAccount được chèn thêm 1 bộ dữ liệu (‘abc',‘123')
Ěoạn lệnh thông báo lỗi "Database error"
Ěoạn lệnh báo lỗi ở dòng 4 do trùng khóa ‘abc’
Trang 39Câu 4: Cho cấu trúc và dữ liệu bảng tblAccount thuộc database 'db_php_mysql' như sau
CREATE TABLE tblACCOUNT(
UserName varchar(50) primary key, Password varchar(50)
"select password from tblaccount";
"select password(“abc”)+password(“def”) from tblaccount";
"select count(password) from tblaccount";
"select sum(password) from tblaccount";
UserName Password
Trang 40Câu 5: Cho cấu trúc và dữ liệu bảng tblAccount thuộc database 'db_php_mysql' như sau
CREATE TABLE tblPRODUCT(
ProdID varchar(50) primary key, ProdName varchar(50),
Trang 41Câu 6: Cho cấu trúc và dữ liệu bảng tblAccount thuộc database 'db_php_mysql' như sau
CREATE TABLE tblACCOUNT(
UserName varchar(50) primary key, Password varchar(50)
);
Cho biết kết quả của đoạn lệnh sau (giả sử: server chạy cục bộ ở localhost, user của MySQL
là root và không đặt password):
Ěoạn lệnh xuất kết quả là 24
Ěoạn lệnh thông báo lỗi Fatal error
Ěoạn lệnh xuất cảnh báo Warning
Tất cả đều sai
UserName Password
Trang 42Câu 7: Cho cấu trúc và dữ liệu bảng tblAccount thuộc database 'db_php_mysql' như sau
CREATE TABLE tblPRODUCT(
ProdID varchar(50) primary key, ProdName varchar(50),
Price float
);
Cho biết kết quả của đoạn lệnh sau (giả sử: server chạy cục bộ ở localhost, user của MySQL
là root và không đặt password):
<?php
1 $db = mysql_connect('localhost','root','') or die("Database error");
2 mysql_select_db('db_php_mysql', $db);
3 $rs = mysql_query("SELECT count(*) FROM tblPRODUCT ");
4 if($rs) {echo mysql_num_rows($rs);}
Ěoạn lệnh xuất kết quả là 1
Ěoạn lệnh xuất kết quả là 2
Ěoạn lệnh thông báo lỗi dòng 4
Tất cả đều sai
Trang 43Câu 8: Cho cấu trúc và dữ liệu bảng tblAccount thuộc database 'db_php_mysql' như sau
CREATE TABLE tblPRODUCT(
ProdID varchar(50) primary key, ProdName varchar(50),
Trang 44Câu 9: Cho cấu trúc và dữ liệu bảng tblAccount thuộc database 'db_php_mysql' như sau
CREATE TABLE tblACCOUNT(
UserName varchar(50) primary key, Password varchar(50)
);
Cho biết kết quả của đoạn lệnh sau (giả sử: server chạy cục bộ ở localhost, user của MySQL
là root và không đặt password):
Ěoạn lệnh xuất kết quả là abc def
Ěoạn lệnh xuất kết quả là UserName Password
UserName Password
Trang 45Câu 10: Cho cấu trúc và dữ liệu bảng tblAccount thuộc database 'db_php_mysql' như sau
CREATE TABLE tblACCOUNT(
UserName varchar(50) primary key, Password varchar(50)
);
Cho biết kết quả của đoạn lệnh sau (giả sử: server chạy cục bộ ở localhost, user của MySQL
là root và không đặt password):
Ěoạn lệnh xuất kết quả là abc
Ěoạn lệnh xuất kết quả là 12
Ěoạn lệnh xuất kết quả là def
Ěoạn lệnh xuất kết quả là 34
UserName Password