1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài giảng lập trình web đoàn phan thái

95 1 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

Tiêu đề Hệ Quản Trị CSDL MySQL
Tác giả Đoàn Phan Thái
Trường học Btu
Chuyên ngành Lập trình web
Thể loại Bài giảng
Năm xuất bản 2019
Thành phố Bình Thuận
Định dạng
Số trang 95
Dung lượng 4,36 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tạo và xóa bảng dữ liệu: a Tạo bảng dữ liệu: - phpMyAdmin cho phép người dùng tạo các bảng Table trong CSDL như sau: Hình 1.12: Thao tác tạo bảng dữ liệu.. - Các câu lệnh SQL chia làm 2

Trang 1

LẬP TRÌNH WEB

Bài giảng

Trang 3

LẬP TRÌNH WEB

Đoàn Phan Thái

dpthai@btu.edu.vn

Trang 4

CHƯƠNG 1: HỆ QUẢN TRỊ CSDL MYSQL

1.1 Giới thiệu:

- MySQL là hệ quản trị cơ sở dữ liệu (Database Management System - DBMS), được xây dựng bởi David Axmark và Michael Monty Widenius năm 1995 MySQL còn được biết đến như là một hệ quản trị cơ sở dữ liệu quan hệ (Relational Database Management System -RDBMS) mã nguồn mở nổi tiếng thế giới

- Hiện nay, MySQL được phát triển, phân phối và hỗ trợ bởi công ty Oracle

- Một số đặc điểm nổi bật của MySQL:

+ Quản trị dữ liệu theo mô hình Client/Server

+ Mã nguồn mở và không cần trả phí sử dụng

+ Hoạt động trên nhiều hệ điều hành và với nhiều ngôn ngữ (PHP, C/C++, Java…) + Hỗ trợ ngôn ngữ truy vấn có cấu trúc (Structured Query Language - SQL)

+ Dễ sử dụng, tốc độ nhanh và có thể làm việc với bộ dữ liệu lớn

+ Đảm bảo an toàn bảo mật với cơ chế phân quyền người dùng

số kiểu dữ liệu là thường xuyên sử dụng và các kiểu còn lại ít thông dụng hơn

Bảng 1: Các kiểu dữ liệu thông dụng

Dữ liệu kiểu số (Numeric Data Types)

TINYINT [(M)]

Kiểu số nguyên có giá trị từ -128  127 hay từ

0  255

Giá trị M chỉ số bit kích thước, mặc định M=1

BOOL Tương tự như kiểu TINYINT(1), số 0 là false

Trang 5

INT [(M)] Kiểu số nguyên có giá trị từ -2,147,483,648 

2,147,483,647 hay từ 0  4,294,967,295

FLOAT [(M,D)]

Kiểu số thập phân có độ chính xác đơn (khoảng

7 chữ số thập phân) M là tổng số chữ số và D

là số chữ số sau dấu thập phân

DOUBLE [(M,D)] Kiểu số thập phân có độ chính xác kép (khoảng

tự trắng một cách tự động

VARCHAR(M)

Kiểu chuỗi có độ dài thay đổi, tối đa 65,535 ký

tự Nếu giá trị thật kiểu Varchar không bằng với

độ dài khai báo M thì lưu trữ đúng theo độ dài chuỗi thực tế Khai báo M là bắt buộc khi sử dụng kiểu Varchar

TEXT [(M)]

Kiểu chuỗi ký tự (Character Strings), chứa tối

đa 65,535 ký tự, thường dùng khi chứa lượng lớn dữ liệu ký tự

BLOB [(M)]

(Binary Large Objects)

Kiểu chuỗi nhị phân (Binary Strings), chứa tối

đa 65,535 bytes, thường dùng khi chứa lượng lớn dữ liệu nhị phân (hình ảnh, tập tin thực thi, phim ảnh, )

ENUM('value1','value2', ) Kiểu dữ liệu chứa danh sách gồm các giá trị

kiểu chuỗi, danh sách chứa tối đa 65,535 giá trị

Dữ liệu kiểu ngày giờ (Date and Time Types)

DATE

Kiểu ngày theo định dạng YYYY-MM-DD, có giá trị từ 1000-01-01  9999-12-31 Cho phép gán giá trị kiểu số và kiểu chuỗi sang kiểu ngày

YEAR[(M)]

Giá trị thời gian là năm theo dạng 2/4 chữ số Ở định dạng 2 chữ số: 70  69, (nghĩa là 1970 

2069), ở định dạng 4 chữ số: 1901  2155

Trang 6

1.3 Quản lý cơ sở dữ liệu với phpMyAdmin:

a) Kích hoạt máy chủ ảo:

- Khởi động ứng dụng XAMPP, chọn START để kích hoạt dịch vụ Apache và MySQL

Hình 1.1: Thao tác kích hoạt dịch vụ Apache và MySQL

b) Mở trang quản trị phpMyAdmin:

- Nhập vào trình duyệt địa chỉ: http://localhost/phpmyadmin

Hình 1.2: Giao diện phpMyAdmin

Chọn ngôn ngữ

Chọn kích thước phông chữ

1

2

Trang 7

1.3.1 Thao tác với cơ sở dữ liệu:

1.3.1.1 Tạo và xóa cơ sở dữ liệu:

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

- phpMyAdmin là công cụ quản trị MySQL với giao diện đồ họa thân thiện và dễ dùng Các thao tác tạo CSDL như sau:

Hình 1.3: Thao tác tạo cơ sở dữ liệu

- Nếu CSDL được tạo thành công sẽ xuất hiện thông báo cùng với mã SQL

Hình 1.4: Thông báo tạo cơ sở dữ liệu thành công

- CSDL vừa tạo sẽ có các thông số quan trọng để phục vụ kết nối sau này:

Trang 8

b) Xóa cơ sở dữ liệu:

- Nếu không cần sử dụng CSDL nữa, người dùng có thể xóa chúng để giảm không gian lưu trữ trên máy chủ

Hình 1.5: Thao tác xóa CSDL

- Người dùng cần xác nhận trước khi xóa CSDL:

Hình 1.6: Thông báo xác nhận xóa CSDL

- Người dùng sẽ nhận được thông báo xóa CSDL thành công

Hình 1.7: Thông báo xóa CSDL thành công

1.3.1.2 Sao lưu và phục hồi cơ sở dữ liệu:

a) Sao lưu cơ sở dữ liệu:

- Trong quá trình làm việc, để bảo vệ CSDL tránh các sự cố không mong muốn, người dùng cần thường xuyên sao lưu CSDL qua chức năng Export

1

2

3

4

Trang 9

Hình 1.8: Thao tác sao lưu CSDL theo định dạng SQL

Trang 10

b) Phục hồi cơ sở dữ liệu:

- Khi xảy ra sự cố làm hư hỏng dữ liệu, phpMyAdmin cho phép người dùng phục hồi dữ liệu đã sao lưu qua chức năng Import

Trang 11

- Nếu phục hồi CSDL thành công thì sẽ xuất hiện thông báo đến người dùng:

Hình 1.11: Thông báo phục hồi CSDL thành công

1.3.2 Thao tác với bảng dữ liệu:

1.3.2.1 Tạo và xóa bảng dữ liệu:

a) Tạo bảng dữ liệu:

- phpMyAdmin cho phép người dùng tạo các bảng (Table) trong CSDL như sau:

Hình 1.12: Thao tác tạo bảng dữ liệu

- Bảng dữ liệu mới tạo chưa có trường dữ liệu Các thao tác tạo trường dữ liệu như sau:

Trang 12

Hình 1.13: Thao tác tạo các trường dữ liệu của bảng

- Bảng dữ liệu mới được tạo thành công như sau:

Hình 1.14: Thông tin của bảng dữ liệu được tạo thành công

1

2

3

Tạo khóa chính Tạo khóa ngoại

Trường làm khóa chính

Trường làm khóa ngoại

Trang 13

b) Xóa bảng dữ liệu:

- Khi không còn sử dụng các bảng dữ liệu thì người dùng có thể xóa đi

Hình 1.15: Thao tác xóa bảng dữ liệu

- Hộp thoại xác nhận trước khi xóa bảng:

Hình 1.16: Thông báo xác nhận xóa bảng

1.3.2.2 Quan hệ giữa các bảng dữ liệu:

- phpMyAdmin cung cấp chức năng Designer cho phép người dùng tạo quan hệ giữa các bảng dữ liệu Các thao tác tạo quan hệ ràng buộc khóa chính, khóa ngoại giữa các bảng:

Trang 14

Hình 1.17: Thao tác tạo quan hệ giữa các bảng

- Ý nghĩa các lựa chọn khi tạo khóa ngoại:

+ CASCADE: Khi Delete/Update dữ liệu ở bảng cha (Parent Table) thì sẽ tự động

Delete/Update dữ liệu ở bảng con (Child Table)

+ SET NULL: Khi Delete/Update dữ liệu ở bảng cha thì sẽ tự động thiết lập NULL cho

bảng con Nếu khai báo trường dữ liệu của bảng con là NOT NULL thì không thể lựa chọn

SET NULL

+ RESTRICT: Không cho phép Delete/Update dữ liệu ở bảng cha nếu bảng con có dữ

liệu tương ứng

+ NO ACTION: Tương tự như RESTRICT

1.3.2.3 Thêm, xóa và sửa dữ liệu:

a) Thêm dữ liệu vào bảng:

- Người dùng cần thêm dữ liệu vào bảng chứa khóa chính rồi mới đến bảng chứa khóa

Trang 15

b) Sửa dữ liệu trong bảng:

- Khi cần sửa dữ liệu, người dùng cần kiểm tra khóa ràng buộc dữ liệu

Hình 1.19: Thao tác sửa dữ liệu trong bảng

c) Xóa dữ liệu trong bảng:

- Khi cần xóa dữ liệu, người dùng cần kiểm tra khóa ràng buộc dữ liệu

Trang 16

Hình 1.20: Thao tác xóa dữ liệu trong bảng

- Người dùng cần xác nhận trước khi xóa dữ liệu:

Hình 1.21: Thông báo xác nhận xóa dữ liệu

1.3.2.4 Thay đổi cấu trúc bảng dữ liệu:

- Sau khi tạo bảng và các trường dữ liệu, người dùng có thể chỉnh sửa, thêm bớt các trường dữ liệu đã tạo

1

2

3

Trang 17

Hình 1.22: Thao tác chỉnh sửa trường dữ liệu

1.3.2.5 Sao chép, di chuyển và đổi tên bảng dữ liệu:

- Thẻ Operations cho phép thực hiện các thao tác sao chép, di chuyển và đổi tên bảng dữ

Trang 18

Hình 1.23: Các chức năng trong thẻ Operations

1.4 Câu lệnh SQL trong MySQL:

- SQL (Structured Query Language) là ngôn ngữ truy vấn có cấu trúc, tuân theo chuẩn của ANSI (American National Standards Institute - Viện tiêu chuẩn quốc gia Hoa kỳ) để phục

vụ các hệ quản trị cơ sở dữ liệu quan hệ

- Các câu lệnh SQL chia làm 2 nhóm chính:

+ Ngôn ngữ định nghĩa dữ liệu (Data Definition Language - DDL): Tập hợp các lệnh SQL (Create, Drop, Alter…) để tạo cấu trúc cho cơ sở dữ liệu như Table, Query, View… + Ngôn ngữ thao tác dữ liệu (Data Manipulation Language - DML): Tập hợp các lệnh SQL (Select, Insert, Delete, Update,…) để thao tác dữ liệu

- MySQL là một trong số các sản phẩm cơ sở dữ liệu quan hệ hỗ trợ tốt ngôn ngữ SQL để tương tác với cơ sở dữ liệu

1.4.1 Nhóm lệnh định nghĩa dữ liệu:

1.4.1.1 Lệnh Create:

a) Tạo CSDL:

- Sử dụng lệnh CREATE DATABASE để tạo CSDL Cú pháp như sau:

CREATE DATABASE db_name

Trang 19

- Trong giao diện phpMyAdmin, sử dụng thẻ SQL để viết lệnh như sau:

Hình 1.24: Thao tác tạo CSDL

- Trường hợp máy chủ đang tồn tại CSDL qlsv thì xuất hiện lỗi #1007:

Hình 1.25: Lỗi tạo CSDL

- Muốn tránh lỗi trên thì tạo CSDL với cú pháp như sau:

CREATE DATABASE IF NOT EXISTS db_name

Ví dụ: Tạo CSDL Quản lý sinh viên

CREATE DATABASE IF NOT EXISTS qlsv

- CSDL mới được tạo sẽ có thông số Charset2 và Collate3 mặc định (Charset=latin1, Collate=latin1_swedish_ci) Để quy định cụ thể Charset và Collate khi tạo CSDL thì sử dụng cú pháp sau:

CREATE DATABASE db_name

CHARACTER SET charset_name

Trang 20

Ví dụ: Tạo CSDL Quản lý sinh viên với Charset=ascii và Collate=ascii_general_ci

CREATE DATABASE qlsv

CHARACTER SET ascii

COLLATE ascii_general_ci

- Trong giao diện phpMyAdmin, kiểm tra Charset và Collate như sau:

Hình 1.26: Câu lệnh kiểm tra Charset và Collate

- Kết quả kiểm tra Charset và Collate của CSDL:

Hình 1.27: Kết quả kiểm tra Charset và Collate

b) Tạo bảng dữ liệu:

- Sử dụng lệnh CREATE TABLE để tạo bảng dữ liệu Cú pháp như sau:

CREATE TABLE [IF NOT EXISTS] table_name (

/* Khai báo các trường dữ liệu */

col_name data_type [col_attribute] ,

[constraint pk_name] primary key (col_name, ),

[constraint fk_name] foreign key (col_name, ) references table_name

(col_name, )

) ENGINE=engine_name

- Tham số:

+ table_name: Tên bảng dữ liệu

+ col_name: Tên cột (trường) dữ liệu

+ data_type: Các kiểu dữ liệu thường sử dụng như: bool, int, float, double, char, varchar, text, date, enum…

+ col_attribute: Các thuộc tính của một cột (trường) dữ liệu:

Trang 21

 NOT NULL: Không cho phép giá trị NULL

 DEFAULT: Thiết lập giá trị mặc định (tự động hiển thị trong trường dữ liệu)

 AUTO_INCREMENT: Tự động tăng giá trị lên 1 đơn vị khi thêm dữ liệu

 PRIMARY KEY: Thiết lập khóa chính (cho một hay nhiều trường dữ liệu)

+ pk_name, fk_name: Tên ràng buộc khóa chính/khóa ngoại

+ engine_name: Các kiểu lưu trữ dữ liệu thông dụng: InnoDB, MyISAM, MEMORY…

Ví dụ: Tạo CSDL Quản lý sinh viên như sau:

sinhvien(masv, tensv, ngaysinh, gioitinh, makh)

khoa(makh, tenkh)

hocbong(masv, hocbonghk, xeploai)

monhoc(mamh, tenmh, tinchi)

/* Tao bang sinh vien voi masv la khoa chinh */

CREATE TABLE sinhvien (

masv varchar(10) primary key,

tensv varchar(40) not null,

- Mã SQL trong giao diện phpMyAdmin như sau:

Hình 1.28: Thao tác tạo bảng dữ liệu

2

1

3

4

Trang 22

/* Tao bang khoa voi makh la khoa chinh */

CREATE TABLE khoa (

makh varchar(10) primary key,

tenkh varchar(30) not null

) ENGINE=InnoDB

/* Tao bang hocbong voi khoa chinh gom 2 truong la masv va hocbonghk */

CREATE TABLE hocbong (

masv varchar(10),

hocbonghk varchar(3),

xeploai varchar(10),

constraint pk_hocbong primary key (masv, hocbonghk),

constraint fk_hocbong foreign key (masv) references sinhvien(masv)

) ENGINE=InnoDB

/* Tao bang mon hoc voi mamh la khoa chinh */

CREATE TABLE monhoc (

Trang 23

1.4.1.2 Lệnh Drop:

a) Xóa CSDL:

- Sử dụng lệnh DROP DATABASE để xóa CSDL Cú pháp như sau:

DROP DATABASE db_name

Ví dụ: Xóa CSDL Quản lý sinh viên

DROP DATABASE qlsv

- Trường hợp máy chủ không có CSDL qlsv thì xuất hiện lỗi #1008:

Hình 1.30: Lỗi xóa CSDL

- Muốn tránh lỗi trên thì xóa CSDL với cú pháp như sau:

DROP DATABASE IF EXISTS db_name

Ví dụ: Xóa CSDL Quản lý sinh viên

DROP DATABASE IF EXISTS qlsv

b) Xóa bảng dữ liệu:

- Sử dụng lệnh DROP TABLE để xóa bảng dữ liệu Cú pháp như sau:

DROP TABLE [IF EXISTS] table_name

Ví dụ: Xóa bảng monhoc trong CSDL Quản lý sinh viên

DROP TABLE IF EXISTS monhoc

- Hộp thoại thông báo xuất hiện để xác nhận xóa bảng monhoc:

Hình 1.31: Thông báo xác nhận xóa bảng

Trang 24

1.4.1.3 Lệnh Alter:

a) Sửa đổi cấu trúc CSDL:

- Sử dụng lệnh ALTER DATABASE để sửa đổi cấu trúc CSDL Cú pháp như sau:

ALTER DATABASE db_name

[ CHARACTER SET charset_name ]

b) Sửa đổi cấu trúc bảng dữ liệu:

- Sử dụng lệnh ALTER TABLE để đổi tên bảng dữ liệu4 Cú pháp như sau:

ALTER TABLE old_table_name

RENAME new_table_name

Ví dụ: Đổi tên bảng monhoc thành tbl_monhoc

ALTER TABLE monhoc

RENAME tbl_monhoc

- Sử dụng lệnh ALTER TABLE để thêm cột dữ liệu của bảng Cú pháp như sau:

ALTER TABLE table_name

ADD COLUMN col_name datatype [col_attribute] [first | after col_name]

Ví dụ: Trong bảng sinh viên, thêm cột stt ở đầu tiên và cột diachi ở cuối cùng

ALTER TABLE sinhvien

ADD COLUMN stt int not null first,

ADD COLUMN diachi varchar(50)

Ví dụ: Thêm cột sdt vào sau cột makh (trước cột diachi) của bảng sinh viên

ALTER TABLE sinhvien

ADD COLUMN sdt varchar(10) after makh

4

Lệnh tương đương: RENAME TABLE old_table TO new_table

Trang 25

- Sử dụng lệnh ALTER TABLE để xóa cột dữ liệu của bảng Cú pháp như sau:

ALTER TABLE table_name

DROP COLUMN col_name

Ví dụ: Xóa cột stt của bảng sinhvien

ALTER TABLE sinhvien

DROP COLUMN stt

- Sử dụng lệnh ALTER TABLE để thiết lập khóa chính cho bảng Cú pháp như sau:

ALTER TABLE table_name

ADD [CONSTRAINT pk_name] PRIMARY KEY (col_name,…)

Ví dụ: Thiết lập cột mamh làm khóa chính của bảng monhoc

ALTER TABLE monhoc

ADD PRIMARY KEY (mamh)

- Sử dụng lệnh ALTER TABLE để hủy khóa chính của bảng Cú pháp như sau:

ALTER TABLE table_name

DROP PRIMARY KEY

Ví dụ: Hủy khóa chính của bảng monhoc

ALTER TABLE monhoc

DROP PRIMARY KEY

- Sử dụng lệnh ALTER TABLE để thiết lập khóa ngoại của bảng Cú pháp như sau:

ALTER TABLE fk_table_name

ADD [CONSTRAINT fk_name] FOREIGN KEY (col_name,…)

Ví dụ: Thiết lập cột makh làm khóa ngoại cho bảng sinhvien

ALTER TABLE sinhvien

ADD CONSTRAINT fk_sinhvien FOREIGN KEY (makh)

Trang 26

- Kết quả hiển thị trong thẻ Designer:

Hình 1.32: Quan hệ ràng buộc giữa các bảng dữ liệu

- Sử dụng lệnh ALTER TABLE để hủy khóa ngoại của bảng Cú pháp như sau:

ALTER TABLE table_name

DROP FOREIGN KEY fk_name

Ví dụ: Hủy khóa ngoại của bảng sinhvien

ALTER TABLE sinhvien

DROP FOREIGN KEY fk_sinhvien

- MySQL cho phép người dùng xem tên khóa chính/khóa ngoại của bảng dữ liệu với câu lệnh sau:

SHOW KEYS FROM table_name [FROM db_name]

Hoặc:

SHOW KEYS FROM db_name.table_name

- Sử dụng lệnh ALTER TABLE để đổi tên cột dữ liệu của bảng Cú pháp như sau:

ALTER TABLE table_name

CHANGE [COLUMN] old_col_name new_col_name data_type

Ví dụ: Trong bảng sinhvien, đổi tên cột sdt thành sodienthoai, có kiểu varchar(15)

ALTER TABLE sinhvien

CHANGE COLUMN sdt sodienthoai varchar(15)

- Sử dụng lệnh ALTER TABLE để đổi kiểu dữ liệu, thuộc tính, vị trí các cột dữ liệu của bảng Cú pháp như sau:

ALTER TABLE table_name

MODIFY [COLUMN] col_name data_type [col_attribute] [first | after col_name]

Trang 27

Ví dụ: Trong bảng sinhvien, đổi cột diachi có kiểu varchar(50) thành kiểu varchar(100) và mặc định giá trị là Bình Thuận

ALTER TABLE sinhvien

MODIFY COLUMN diachi varchar(100) default 'Bình Thuận'

Ví dụ: Trong bảng sinhvien, đổi cột sodienthoai lên trước cột diachi

ALTER TABLE sinhvien

MODIFY COLUMN sodienthoai varchar(15) after makh

- Sử dụng lệnh ALTER TABLE để đổi kiểu lưu trữ dữ liệu Cú pháp như sau:

ALTER TABLE table_name ENGINE = engine_name

Ví dụ: Đổi kiểu lưu trữ của bảng monhoc từ MyISAM sang InnoDB

ALTER TABLE monhoc ENGINE = InnoDB

- MySQL cho phép người dùng xem thông tin bảng dữ liệu với câu lệnh sau:

SHOW TABLE STATUS

[ FROM db_name]

[ LIKE 'table_name' | WHERE expr ]

Ví dụ: Xem thông tin ENGINE của bảng monhoc

SHOW TABLE STATUS

SELECT [ALL | DISTINCT] col_name [, col_name ]

[FROM table_name [AS] alias_name] [, table_name ] ]

[WHERE where_condition]

[GROUP BY {col_name | expression} [ASC | DESC] ]

[HAVING where_condition] ]

[ORDER BY {col_name | expression} [ASC | DESC] ]

[LIMIT [offset,] row_count]

Trang 28

- Tham số:

+ col_name: Tên cột (trường) dữ liệu

+ table_name: Tên bảng dữ liệu

+ alias_name: Tên bí danh của bảng dữ liệu

+ where_condition: Điều kiện lọc dữ liệu

+ expression: Biểu thức có thể là hàm, toán tử hoặc kết hợp cả hai

+ offset: Vị trí dòng dữ liệu (dòng đầu tiên có vị trí là 0)

+ row_count: Số lượng dòng dữ liệu tối đa

- Các ví dụ tiếp theo sẽ minh họa với CSDL Northwind như sau:

Hình 1.33: Quan hệ giữa các bảng trong CSDL Northwind

Ví dụ: Cho biết tất cả thông tin của các công ty Vận chuyển

SELECT *

FROM Shippers

Ví dụ: Cho biết danh sách các thành phố là quê hương của nhân viên

SELECT DISTINCT City

FROM Employees

Ví dụ: Cho biết thông tin về họ, tên và ngày sinh của nhân viên ở London

SELECT Firstname, Lastname, BirthDate

FROM Employees

WHERE City = 'London'

5

Trang 29

Ví dụ: Cho biết mỗi khách hàng đã đặt hàng bao nhiêu lần

SELECT CustomerID, count(CustomerID) as SOLAN

FROM Orders

GROUP BY CustomerID

Ví dụ: Cho biết khách hàng FRANK đã đặt hàng bao nhiêu lần

SELECT CustomerID, count(CustomerID) as SOLAN

FROM Orders

GROUP BY CustomerID

HAVING CustomerID = 'FRANK'

Ví dụ: Cho biết tất cả thông tin khách hàng với phần tên sắp xếp tăng dần và phần họ sắp xếp giảm dần

SELECT *

FROM Employees

ORDER BY Firstname asc, Lastname desc

Ví dụ: Cho biết 10 khách hàng đầu tiên có số lần đặt hàng nhiều nhất

SELECT CustomerID, count(CustomerID) as SOLAN

- Lệnh INSERT dùng để thêm dữ liệu vào các bảng của CSDL Cú pháp như sau:

INSERT [INTO] table_name [ (col_name, ) ]

VALUES ({expression | DEFAULT}, ) [, ( )]

Hoặc:

INSERT [INTO] table_name [ (col_name, ) ]

SET col_name = {expression | DEFAULT}

Hoặc:

INSERT [INTO] table_name [ (col_name, ) ]

SELECT …

Trang 30

- Tham số:

+ table_name: Tên bảng dữ liệu

+ col_name: Tên cột (trường) dữ liệu

+ expression: Biểu thức có thể là hàm, toán tử hoặc kết hợp cả hai

Ví dụ: Thêm vào CSDL một công ty Vận chuyển

INSERT INTO Shippers(CompanyName, Phone)

VALUES('FPT Corporation','(04)73007300')

Hoặc:

INSERT INTO Shippers

SET CompanyName='FPT Corporation', Phone='(04)73007300'

Ví dụ: Thêm vào CSDL cùng lúc 3 công ty Vận chuyển

INSERT INTO Shippers(CompanyName, Phone)

VALUES('FPT Corporation','(04)73007300'), ('TRAN ANH DIGITAL WORLD JSC','(84-4) 3766.7708'), ('Công ty Phong Vũ','(08) 6290 8777')

Ví dụ: Thêm vào CSDL tên các công ty Vận chuyển từ tên các công ty Cung cấp Biết rằng chỉ chọn các công ty Cung cấp có mã số bé hơn 4

INSERT INTO Shippers(CompanyName)

SELECT Suppliers.CompanyName

FROM Suppliers

WHERE SupplierID < 4

1.4.2.3 Lệnh Delete:

- Lệnh DELETE dùng để xóa dữ liệu trong các bảng của CSDL Cú pháp như sau:

DELETE FROM table_name

[WHERE where_condition]

[ORDER BY col_name [ASC | DESC] ]

[LIMIT row_count]

- Tham số:

+ table_name: Tên bảng dữ liệu

+ where_condition: Điều kiện lọc dữ liệu

+ col_name: Tên cột (trường) dữ liệu

+ row_count: Số lượng dòng dữ liệu tối đa

Trang 31

Ví dụ: Xóa công ty Vận chuyển DHL Express Biết rằng công ty có mã là 10

DELETE FROM Shippers

WHERE ShipperID = 10

Ví dụ: Xóa công ty Vận chuyển DHL Express Biết rằng chỉ xóa 3 công ty theo thứ tự giảm dần mã số công ty

DELETE FROM Shippers

WHERE CompanyName = 'DHL Express'

ORDER BY ShipperID DESC

+ table_name: Tên bảng dữ liệu

+ col_name: Tên cột (trường) dữ liệu

+ expression: Biểu thức có thể là hàm, toán tử hoặc kết hợp cả hai

+ where_condition: Điều kiện lọc dữ liệu

+ row_count: Số lượng dòng dữ liệu tối đa

Ví dụ: Thay đổi tên công ty Vận chuyển từ 'FPT Corporation' thành 'FPT Express' Biết rằng công ty 'FPT Corporation' có mã là 4

SET CompanyName = 'DHL Express'

WHERE CompanyName = 'DHL Corp'

ORDER BY ShipperID DESC

Trang 32

1.5 Một số hàm MySQL thông dụng:

1.5.1 Hàm COUNT():

- Hàm COUNT() được dùng để đếm số lượng mẫu tin có trong bảng

Ví dụ: Cho biết số lượng nhân viên

WHERE Country = 'USA'

Ví dụ: Cho biết số lượng nhân viên đến từ các quốc gia USA, UK, Japan Đặt tên cột cho bảng kết quả là SoLuong

SELECT COUNT(*) As SoLuong

FROM Employees

WHERE Country IN ('USA', 'UK', 'Japan')

1.5.2 Hàm MAX():

- Hàm MAX() trả về giá trị lớn nhất của trường dữ liệu

Ví dụ: Cho biết đơn đặt hàng có mức giảm giá cao nhất

SELECT MAX(Discount)

FROM Order_Details

1.5.3 Hàm MIN():

- Hàm MIN() trả về giá trị nhỏ nhất của trường dữ liệu

Ví dụ: Cho biết đơn đặt hàng có mức giảm giá nhỏ nhất

SELECT MIN(Discount)

FROM Order_Details

1.5.4 Hàm SUM():

- Hàm SUM() được dùng để tính tổng các giá trị của trường dữ liệu

Ví dụ: Cho biết tổng số lượng hàng đã đặt

SELECT SUM(Quantity)

FROM Order_Details

Trang 34

1.5.11 Hàm CONCAT():

- Hàm CONCAT() được dùng để nối các chuỗi lại với nhau

Ví dụ:

SELECT CONCAT('CSDL ', 'MySQL ', '5.1')  'CSDL MySQL 5.1'

SELECT CONCAT('btu', '.edu', '.vn') AS Domain 'btu.edu.vn'

Trang 35

BÀI TẬP

1/ Cho CSDL Quản lý nhân sự:

nhanvien(manv, tennv, ngaysinh, gioitinh, diachi, sdt, mapb)

phongban(mapb, tenpb, ngaytl)

chucvu(macv, tencv)

Viết mã MySQL thực hiện các yêu cầu sau:

a) Tạo CSDL qlNhanSu với Charset là utf8 và Collate là utf8_unicode_ci

b) Tạo bảng nhanvien với khóa chính là manv, bảng phongban với khóa chính là mapb, bảng chucvu với khóa chính là macv Các bảng có ENGINE là InnoDB

c) Thiết lập khóa ngoại cho bảng nhanvien là cột mapb

d) Ở bảng nhanvien, thêm cột email vào sau cột sdt

e) Ở bảng phongban, đổi cột ngaytl thành ngaythanhlap

f) Ở bảng chucvu, thêm cột hesopc (có kiểu int)

g) Thay đổi thuộc tính Default để cột tencv có giá trị mặc định 'Nhân viên'

h) Chuyển cột email lên trước cột sdt

i) Đổi kiểu dữ liệu cột hesopc từ int sang float

j) Xóa cột ngaythanhlap, Xóa bảng chucvu

2/ Cho CSDL Quản lý học sinh:

hocsinh(mahs, tenhs, ngaysinh, sdt, malop)

lop(malop, tenlop)

hocbong(mahs, hocbonghk, xeploai)

Viết mã MySQL thực hiện các yêu cầu sau:

a) Tạo CSDL qlHocSinh với thông số mặc định

b) Thay đổi thông số của CSDL qlHocSinh với Charset là utf8 và Collate là utf8_unicode_ci

c) Tạo bảng hocsinh với khóa chính là mahs, bảng lop với khóa chính là malop, bảng hocbong Các bảng có ENGINE là InnoDB

d) Thiết lập khóa chính cho bảng hocbong với tên pk_hocbong gồm 2 cột là mahs và hocbonghk

e) Thiết lập khóa ngoại là cột malop cho bảng hocsinh

f) Ở bảng hocsinh, thêm cột gioitinh có kiểu enum với 2 giá trị là Nam (mặc định) và Nữ g) Chuyển cột gioitinh đứng trước cột sdt

h) Xóa khóa ngoại của bảng hocsinh

i) Xóa cột sdt

j) Xóa khóa chính của bảng hocbong và xóa CSDL

Trang 36

CHƯƠNG 2: NGÔN NGỮ PHP CƠ BẢN

2.1 Giới thiệu:

- PHP (Hypertext Preprocessor hay Personal Home Page) là ngôn ngữ kịch bản chạy trên máy chủ (Server Side), cho phép người dùng dễ dàng xây dựng các ứng dụng Web và tương tác tốt với các cơ sở dữ liệu: Access, MySQL, SQL Server, Oracle

- Ngôn ngữ PHP được bắt đầu bởi thẻ <?php và kết thúc bởi thẻ ?>

- Cấu trúc lệnh của PHP có thể được tách thành nhiều phần và có thể nhúng vào mọi vị trí trong trang HTML (Hypertext Markup Language), nhúng dạng Scriptlet là <?php … ?> và nhúng dạng Script là <?= … ?>

- PHP là ngôn ngữ có phân biệt chữ hoa chữ thường, mỗi lệnh được ngăn cách bới dấu chấm phẩy (;)

- Nối 2 chuỗi với nhau là dấu chấm (.)

- Viết mã chương trình đầu tiên Hello World:

Bước 1: Mở chương trình Notepad (hoặc phpDesigner)

Bước 2: Viết đoạn mã: <?php echo 'Hello World!'; ?>

Bước 3: Lưu lại thành tập tin hello.php theo đường dẫn D:\xampp\htdocs\hello.php Bước 4: Trong trình duyệt, gõ đường dẫn http://localhost/hello.php Kết quả như sau:

Hình 2.1: Chương trình Hello World

- Nếu thay đổi đoạn mã: echo '<p align=center>Hello World!</p>' thì kết quả:

Hình 2.2: Chương trình Hello World 2

Trang 37

2.2 Kiểu dữ liệu:

- PHP có 4 kiểu dữ liệu cơ bản: Boolean, Integer, Float và String

Bảng 2.1: Các kiểu dữ liệu thông dụng

Boolean Chỉ chứa giá trị true hoặc false

Integer

Kiểu số nguyên, giá trị lớn nhất khoảng 2 tỷ (kích thước phụ thuộc nền tảng sử dụng 32bits/64bits) Hằng PHP_INT_SIZE cho biết kích thước của số nguyên và hằng PHP_INT_MAX cho biết giá trị

• \": Dấu nháy đôi

• \': Dấu nháy đơn

- Giá trị NULL có nghĩa là không có gì cả (không phải khoảng trắng, không phải chuỗi rỗng và không phải Zero) Nếu biến chưa được gán thì có giá trị NULL (hoặc biến bị hủy

bỏ giá trị khi sử dụng hàm unset)

Ví dụ:

<pre>

<?php

echo "NNLT PHP \nCO BAN\n";

echo 'So nguyen lon nhat: ' PHP_INT_MAX;

?>

</pre>

Trang 38

2.3 Biến và hằng:

2.3.1 Biến và khai báo biến:

- Trong PHP, tên biến bắt đầu bằng ký hiệu $ và tiếp theo là các chữ, số, dấu gạch dưới

Ký tự đầu tiên của tên biến phải là chữ hoặc là dấu gạch dưới, không được là số

$ho = "Nguyen Van";

$ten = "$ho Hung"; //Tương tự $ten="Nguyen Van Hung"

$ho = 'Nguyen Van';

$ten = '$ho Hung';

echo "Ho va ten: $ht Nam sinh: $ns <br>";

echo '$a1 co gia tri: ', gettype($a1)," <br>";

echo "Hom nay la $ngay <br>";

?>

Trang 39

Hình 2.3: Kết quả sử dụng biến

- Một số hàm kiểm tra kiểu dữ liệu của biến: is_bool, is_int, is_float, is_string, is_array, is_null, is_numeric, gettype, settype, isset, unset, empty…

- Phạm vi hoạt động của biến:

+ Biến cục bộ (Local Variable): Biến được khai báo trong một hàm thì được xem là biến cục bộ của hàm đó Khi kết thúc hàm thì biến này cũng bị xóa

+ Biến toàn cục (Global Variable): Biến được khai báo bên ngoài hàm và được sử dụng

ở bất kì nơi đâu trong chương trình Nếu muốn sử dụng biến toàn cục bên trong hàm thì khai báo với từ khóa global

+ Biến tĩnh (StaticVariable): Biến không mất giá trị khi ra khỏi hàm, khai báo biến với

từ khóa static ở bên trong hàm

Trang 40

- PHP định nghĩa sẵn một số biến toàn cục (Superglobals): $GLOBALS, $_FILES,

$_SERVER, $_ENV, $_GET, $_REQUEST, $_POST, $_SESSION, $_COOKIE

?>

- Tương tự như biến, PHP cũng xây dựng sẵn các hằng dành riêng để sử dụng

Ví dụ:

<?php

?>

Ngày đăng: 15/11/2023, 12:46

HÌNH ẢNH LIÊN QUAN

Hình 1.2: Giao diện phpMyAdmin. - Bài giảng lập trình web   đoàn phan thái
Hình 1.2 Giao diện phpMyAdmin (Trang 6)
Hình 1.3: Thao tác tạo cơ sở dữ liệu. - Bài giảng lập trình web   đoàn phan thái
Hình 1.3 Thao tác tạo cơ sở dữ liệu (Trang 7)
Hình 1.8: Thao tác sao lưu CSDL theo định dạng SQL. - Bài giảng lập trình web   đoàn phan thái
Hình 1.8 Thao tác sao lưu CSDL theo định dạng SQL (Trang 9)
Hình 1.17: Thao tác tạo quan hệ giữa các bảng. - Bài giảng lập trình web   đoàn phan thái
Hình 1.17 Thao tác tạo quan hệ giữa các bảng (Trang 14)
Bảng con. Nếu khai báo trường dữ liệu của bảng con là NOT NULL thì không thể lựa chọn - Bài giảng lập trình web   đoàn phan thái
Bảng con. Nếu khai báo trường dữ liệu của bảng con là NOT NULL thì không thể lựa chọn (Trang 14)
Hình 1.19: Thao tác sửa dữ liệu trong bảng. - Bài giảng lập trình web   đoàn phan thái
Hình 1.19 Thao tác sửa dữ liệu trong bảng (Trang 15)
Hình 1.21: Thông báo xác nhận xóa dữ liệu. - Bài giảng lập trình web   đoàn phan thái
Hình 1.21 Thông báo xác nhận xóa dữ liệu (Trang 16)
Bảng dữ liệu - Bài giảng lập trình web   đoàn phan thái
Bảng d ữ liệu (Trang 17)
Hình 1.22: Thao tác chỉnh sửa trường dữ liệu. - Bài giảng lập trình web   đoàn phan thái
Hình 1.22 Thao tác chỉnh sửa trường dữ liệu (Trang 17)
Hình 1.23: Các chức năng trong thẻ Operations. - Bài giảng lập trình web   đoàn phan thái
Hình 1.23 Các chức năng trong thẻ Operations (Trang 18)
Hình 1.28: Thao tác tạo bảng dữ liệu. - Bài giảng lập trình web   đoàn phan thái
Hình 1.28 Thao tác tạo bảng dữ liệu (Trang 21)
Hình 1.29: Quan hệ ràng buộc giữa các bảng dữ liệu. - Bài giảng lập trình web   đoàn phan thái
Hình 1.29 Quan hệ ràng buộc giữa các bảng dữ liệu (Trang 22)
Hình 1.33: Quan hệ giữa các bảng trong CSDL Northwind. - Bài giảng lập trình web   đoàn phan thái
Hình 1.33 Quan hệ giữa các bảng trong CSDL Northwind (Trang 28)
Hình 3.3: Giao diện trang viewshippers.php. - Bài giảng lập trình web   đoàn phan thái
Hình 3.3 Giao diện trang viewshippers.php (Trang 78)
Hình 3.10: Giao diện trang updateshipper.php - Bài giảng lập trình web   đoàn phan thái
Hình 3.10 Giao diện trang updateshipper.php (Trang 85)

TỪ KHÓA LIÊN QUAN