Tạo một stored procedure tên là displayFilmInfo nhận category_id và language_id như là các tham số: • Nếu category_id và language_id được chỉ rõ, trả lại thông tin các film có category_i
Trang 1Cấu hình và quản lý truy cập
Nội dung:
1 Cấu hình Mysql server làm việc tại cổng 3307
2 Đăng nhập vào Mysql server với tài khoản root và thay đổi lại mật khẩu root
3 Sửa lại file cấu hình để khi đăng nhập không cần gõ lại số cổng tại dòng lệnh (Gợi ý: khai báo cấu hình cổng trong phần [client]
4 Kiểm tra xem tài khoản root có quyền truy cập tới Mysql server từ máy tính khác không (Gợi ý: truy vấn bảng mysql.user) Nếu có, sửa lại để tài khoản root chỉ có thể truy cập từ máy cục bộ Sau khi sửa có thể kiểm tra lại kết nối từ máy tính thực hành khác
5 Tạo tài khoản người dùng demo, mật khẩu 123@abc Người dùng demo chỉ có thể truy cập tới Mysql server tại chính máy tính cài Mysql server
6 Phân quyền người dùng demo đã tạo ở bước 4 có toàn quyền trên CSDL sakila
7 Tạo tài khoản người dùng guest có thể truy cập tới Mysql server từ bất kỳ máy tính nào
8 Phân quyền người dùng guest chỉ quyền đọc trên bảng film của CSDL sakila
9 Kiểm tra các quyền trên khi đăng nhập với tài khoản demo và guest
10 Kết thúc tắt Mysql server sử dụng lệnh shutdown của chương trình mysqladmin
Môi trường thực hành: Sinh viên vào địa chỉ http://10.10.1.45/mysql‐5.5.9‐win32.zip để tải
Mysql Server về máy và thực hành
Trang 2Bài thực hành số 2
Khung nhìn (VIEW)
1 Sử dụng CSDL ClassicModels để thực hành lại các ví dụ trên lớp
2 Sử dụng CSDL Sakila thực hiện các công việc sau:
a Viết lệnh hiển thị các view có trong CSDL sakila Gợi ý: truy vấn bảng tables của CSDL information_schema
b Hiển thị lệnh tạo view customer_list trong CSDL sakila (Sử dụng lệnh show create view)
c Thực hiện truy vấn trên view customer_list
d Thử thực hiện một số cập nhật trên view customer_list: sửa địa chỉ, số điện thoại, thành phố Kiểm tra lại thông tin để chắc chắn rằng việc sửa đổi có thực hiện được hay không
e Tạo view có tên film_details đưa ra các thông tin: tên phim, tóm tắt phim, năm sản xuất, ngôn ngữ sử dụng trong phim và rating của phim
Trang 3Chương trình hàm, thủ tục
Nội dung:
1 Tạo một stored procedure tên là displayFilmInfo nhận category_id và language_id như là các tham số:
• Nếu category_id và language_id được chỉ rõ, trả lại thông tin các film có category_id và language bằng các giá trị truyền vào
• Nếu 0 được truyền như một tham số cho language_id thì trả lại thông tin các film có category_id là tham số truyền vào
• Nếu 0 được truyền như một tham số cho category_id thì trả lại các film có language_id là tham số truyền vào
2 Viết hàm tính tổng số film được thuê của của hàng trong tháng, năm Với tham số đầu vào là mã của hàng, tháng, năm
Sau đó sử dụng hàm trong lệnh SELECT đưa ra các cửa hàng và tổng số film được thuê tại cửa hàng trong tháng 2/2006
3 Viết stored procedure thực hiện công việc sau:
Giảm p% giá thuê cho n film có số lượng thuê ít nhất trong tháng, năm lấy ra từ date (Trong đó p, n, date là tham số đầu vào)
Gợi ý: Thay vì cách sử dụng lệnh cập nhật theo lô Làm các bước sau: Thực hiện lệnh
SELECT lấy ra n film cần tìm, sau đó sử dụng con trỏ duyệt các film_id từ lệnh SELECT
trên và thực hiện cập nhật film đó
Môi trường thực hành: Sinh viên vào địa chỉ http://10.10.1.45/mysql‐5.5.9‐win32.zip để tải
Mysql Server về máy và thực hành
Trang 4
Bài thực hành số 4
TRIGGER
1 Sử dụng CSDL ClassicModels thực hiện bài tập:
Tạo bảng Khuyen_mai(Mahoadon, Sotien) lưu thông tin về các đơn hàng được
khuyến mại Nguyên tắc là với những đơn hàng trị giá >65.000 thì được chiết khấu 5% Viết
trigger thực hiện công việc: Với những đơn hàng trị giá >65.000 thì cập nhật thông tin về
đơn hàng này vào bảng khuyến mãi
2 Sử dụng CSDL Sakila thực hiện bài tập:
Thêm vào bảng inventory cột is_available có kiểu Boolean hoặc tinyint(1) Tạo trigger trên bảng rental thực hiện công việc :
- Khi đĩa film đó được thuê, giá trị is_available được cập nhật thành false
- Khi đĩa film đó được trả lại, giá trị is_available được cập nhật thành true
Trang 51 Lấy ra thông tin về các chỉ mục tồn tại trên bảng film_text
2 Thực hiện truy vấn: lấy ra thông tin về các bộ phim mà phần mô tả của chúng bắt đầu bằng cụm từ ‘A emotional’
a Kiểm tra loại index đã được sử dụng và số lượng bản ghi được duyệt để trả lại kết quả
b Tối ưu truy vấn bằng cách thêm một prefix_index vào cột description, sau đó thực hiện lại truy vấn và cho biết số lượng bản ghi được duyệt để trả lại kết quả
3 Thực hiện truy vấn: Lấy ra thông tin về các diễn viên và mã số của các bộ phim mà diễn viên đó tham gia phim
a Sử dụng phép nối theo thứ tự bắt buộc (straight_join)
b Cho biết sự chênh lệch về số lượng bản ghi cần duyệt trong trường hợp thay đổi thứ tự các bảng tham gia phép nối
4 Thực hiện truy vấn: Lấy ra thông tin về tên các bộ phim và tên các diễn viên tham gia phim đó Sử dụng straight_join để chứng minh thứ tự tối ưu của các bảng tham gia phép nối
Trang 6MySQL – Bài thực hành số 5
Sao lưu, phục hồi
Nội dung:
1 Xuất dữ liệu từ bảng rental ra file text sử dụng câu lênh SELECT, các trường ngăn
cách nhau bởi dấu phẩy, các trường có giá trị NULL được thay bởi ký tự trống
2 Tạo một bảng mới tên rental_import sử dụng câu lệnh select và nhập dữ liệu file
text được tạo trong câu 1 vào bảng
3 Sao lưu CSDL sakila ra 2 file: 1 file chứa lược đồ CSDL và 1 file chứa dữ liệu sử
dụng tiện ích MySQLDump Gợi ý: sử dụng tùy chọn no-data và no-create-info Sử dụng tùy chọn –flush-logs khi thực hiện sao lưu
4 Thực hiện các lệnh liên quan đến log file
a Bật chế độ log-bin, hiện thị thông tin về các file log sử dụng lệnh SHOW BINARY LOGS
b Thực hiện một số lệnh thay đổi CSDL sakila
c Kiểm tra nội dung file log bằng cách chuyển nội dung ra file text (sử dụng tiện ích MySQLBinLog)
5 Phục hồi CSDL sakila sử dụng CSDL dump được tạo ở câu 3 và file log được tạo
ra trong câu 4.
Môi trường thực hành: Sinh viên vào địa chỉ http://10.10.1.45/mysql‐5.5.9‐win32.zip để tải
Mysql Server về máy và thực hành
Trang 7
1 Thực hành lại bài tập trên lớp
2 Cài đặt quá trình tạo bản sao CSDL sakila bên master sang slave Kiểm tra việc cài đặt thành công hay không bằng cách cập nhật dữ liệu bên master để thấy việc cập nhật đó đã được thực hiện bên slave chưa
Gợi ý: để thiết lập 2 máy, sao chép MySQL Server vào 2 thư mục khác nhau, và
cấu hình lại số cổng làm việc khác nhau, thay đổi thư mục làm việc và thư mục dữ liệu trỏ đến thư mục tương ứng Cần thiết lập tùy chọn server_id=n cho các máy tham gia quá trình replication, với mỗi máy n có giá trị khác nhau
3 Thiết lập cấu hình bên slave để chỉ cập nhật các thay đổi với CSDL sakila
Gợi ý: sử dụng thiết lập replicate-do-db=sakila trong mục [mysqld] của file cấu
hình bên slave