Giới thiệu về Hệ quản trị cơ sở dữ liệu quan hệ - Đỗ Thanh Nghi

pdf 54 trang hapham 3560
Bạn đang xem 20 trang mẫu của tài liệu "Giới thiệu về Hệ quản trị cơ sở dữ liệu quan hệ - Đỗ Thanh Nghi", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfgioi_thieu_ve_he_quan_tri_co_so_du_lieu_quan_he_do_thanh_ngh.pdf

Nội dung text: Giới thiệu về Hệ quản trị cơ sở dữ liệu quan hệ - Đỗ Thanh Nghi

  1. Khoa Công Nghệ Thông Tin Trường Đại Học Cần Thơ Giới thiệu về hệ quản trị cơ sở dữ liệu quan hệ Đỗ Thanh Nghị dtnghi@cit.ctu.edu.vn Cần Thơ 24-04-2005
  2. Nội dung ■ MySQL là gì? ■ Những tính năng được cung cấp ■ Quản trị CSDL ■ Các lệnh SQL cơ bản ■ Tài liệu tham khảo 2
  3. ■ MySQL là gì? ■ Những tính năng được cung cấp ■ Quản trị CSDL ■ Các lệnh SQL cơ bản ■ Tài liệu tham khảo 3
  4. ■ MySQL là gì? ■ Những tính năng được cung cấp ■ Quản trị CSDL ■ Các lệnh SQL cơ bản Giới thiệu về MySQL ■ Tài liệu tham khảo ■ MySQL là gì ? ● Hệ quản trị cơ sở dữ liệu quan hệ ● Dùng cho các ứng dụng vừa và nhỏ ● Hỗ trợ chuẩn SQL ● Phần mềm mã nguồn mở, miễn phí ● Chạy trên nhiều platforms (Unix, Linux, Windows) ● Đơn giản, tốc độ nhanh ● Phổ biến (~ 8 triệu đơn vị/cá nhân cài đặt sử dụng) ● Tồn tại hơn 10 năm qua, có nguồn gốc từ mSQL (ISAM) 4
  5. ■ MySQL là gì? ■ Những tính năng được cung cấp ■ Quản trị CSDL ■ Các lệnh SQL cơ bản ■ Tài liệu tham khảo 5
  6. ■ MySQL là gì? ■ Những tính năng được cung cấp ■ Quản trị CSDL ■ Các lệnh SQL cơ bản MySQL ■ Tài liệu tham khảo ■ MySQL hỗ trợ: ● SQL cơ bản (tạo bảng, chèn/xóa/cập nhật mẫu tin, truy vấn, etc) ● Nhiều tính năng tiên tiến của SQL ● Những câu truy vấn phức tạp ● Ràng buộc khóa, ràng buộc dữ liệu, Trigger ● View (bảng ảo) ● Cursor ● Truy cập cạnh tranh 6
  7. ■ MySQL là gì? ■ Những tính năng được cung cấp ■ Quản trị CSDL ■ Các lệnh SQL cơ bản MySQL ■ Tài liệu tham khảo ■ Công cụ cho MySQL: ● Giao diện lập trình ứng dụng ● Công cụ hỗ trợ lập trình ● Công cụ quản trị 7
  8. ■ MySQL là gì? ■ Những tính năng được cung cấp ■ Quản trị CSDL ■ Các lệnh SQL cơ bản ■ Tài liệu tham khảo 8
  9. ■ MySQL là gì? ■ Những tính năng được cung cấp ■ Quản trị CSDL ■ Các lệnh SQL cơ bản Quản trị căn bản MySQL ■ Tài liệu tham khảo ■ Chạy/tắt MySQL server: ● Từ console gõ lệnh: /etc/init.d/mysqld [start|stop] ■ Đổi password của DBAdmin (root) ● Từ console gõ lệnh: mysqladmin –u root password xxxx ■ Làm việc từ mysql client ● Từ console gõ lệnh: mysql –u root -p ● Nhập password xxxx ● Dấu nhắc: mysql> ● exit: thoát, help: trợ giúp, etc. 9
  10. ■ MySQL là gì? ■ Những tính năng được cung cấp ■ Quản trị CSDL ■ Các lệnh SQL cơ bản Quản trị căn bản MySQL ■ Tài liệu tham khảo ■ Tạo một cơ sở dữ liệu: create database db_name; ● Ví dụ: mysql> create database mydb; ■ Chọn một cơ sở dữ liệu để làm việc: use db_name; ● Ví dụ: mysql> use mydb; ■ Xem thông tin về cơ sở dữ liệu và bảng ● Ví dụ: mysql> show databases; ● Ví dụ: mysql> show tables; ● Ví dụ: mysql> describe table_name; ■ Xóa một cơ sở dữ liệu: drop database db_name; ● Ví dụ: mysql> drop database mydb; 10
  11. ■ MySQL là gì? ■ Những tính năng được cung cấp ■ Quản trị CSDL ■ Các lệnh SQL cơ bản Quản trị căn bản MySQL ■ Tài liệu tham khảo ■ Tạo và phân quyền cho user mới: ● grant priv_type privileges on db_obj to username@”servername” identified by ‘password’; ● Ví dụ: mysql> grant all privileges on mydb.* to nghi@”localhost” identified by ‘nghipasswd’; ■ Xóa phân quyền của user: ● revoke priv_type privileges on db_obj from username@”servername”; ● Ví dụ: mysql> revoke all privileges on mydb.* from nghi@”localhost”; ● mysql> drop user nghi@”localhost”; 11
  12. ■ MySQL là gì? ■ Những tính năng được cung cấp ■ Quản trị CSDL ■ Các lệnh SQL cơ bản Kiểu phân quyền ■ Tài liệu tham khảo 12
  13. ■ MySQL là gì? ■ Những tính năng được cung cấp ■ Quản trị CSDL ■ Các lệnh SQL cơ bản Quản trị căn bản MySQL ■ Tài liệu tham khảo ■ Backup cơ sở dữ liệu ● mysqldump add-drop-table -u [username] -p[password] [db_name] > [backup_file] ● Ví dụ từ console: mysqldump add-drop-table -u root –pxxxx mydb > mydb.bak ■ Phục hồi cơ sở dữ liệu ● mysql -u [username] -p[password] [db_name] < [backup_file] ● Ví dụ từ console: mysql -u root –pxxxx mydb < mydb.bak 13
  14. ■ MySQL là gì? ■ Những tính năng được cung cấp ■ Quản trị CSDL ■ Các lệnh SQL cơ bản Quản trị căn bản MySQL ■ Tài liệu tham khảo ■ Backup bảng của cơ sở dữ liệu: select into outfile from ● Ví dụ: mysql> select * into outfile ‘/tmp/test.sql’ from test; ■ Phục hồi bảng của cơ sở dữ liệu: load data infile replace into table ● Ví dụ: mysql> load data infile ‘/tmp/test.sql’ replace into table test; 14
  15. ■ MySQL là gì? ■ Những tính năng được cung cấp ■ Quản trị CSDL ■ Các lệnh SQL cơ bản ■ Tài liệu tham khảo 15
  16. ■ Tạo bảng ■ Xen dữ liệu ■ Xóa dữ liệu ■ Cập nhật dữ liệu Tạo bảng ■ Truy vấn dữ liệu ■ Cú pháp: CREATE TABLE tbl_name ( column_definition | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name, ) | [CONSTRAINT [symbol]] UNIQUE [INDEX] [index_name] [index_type] (index_col_name, ) | [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name, ) [reference_definition] | CHECK (expr) ); 16
  17. ■ Tạo bảng ■ Xen dữ liệu ■ Xóa dữ liệu ■ Cập nhật dữ liệu Định nghĩa trường (cột dữ liệu) của bảng ■ Truy vấn dữ liệu ■ Cú pháp: column_definition: col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY] [COMMENT 'string'] [reference_definition] 17
  18. ■ Tạo bảng ■ Xen dữ liệu Kiểu dữ liệu ■ Xóa dữ liệu ■ Cập nhật dữ liệu ■ Truy vấn dữ liệu ■ Các kiểu thông dụng ● Số: TINYINT, SMALLINT, MEDIUMINT, INT, INTEGER, BIGINT, REAL, DOUBLE, FLOAT, DECIMAL, NUMERIC ● Chuỗi ký tự: char, varchar, text ● Ngày giờ: date, time, timestamp ● Nhị phân: BLOB, TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB ● Tập hợp: SET 18
  19. ■ Tạo bảng ■ Xen dữ liệu ■ Xóa dữ liệu Ràng buộc khóa ■ Cập nhật dữ liệu ■ Truy vấn dữ liệu ■ reference_definition: REFERENCES tbl_name [(index_col_name, )] [MATCH FULL | MATCH PARTIAL | MATCH SIMPLE] [ON DELETE reference_option] [ON UPDATE reference_option] reference_option: RESTRICT | CASCADE | SET NULL | NO ACTION 19
  20. ■ Tạo bảng ■ Xen dữ liệu ■ Xóa dữ liệu ■ Cập nhật dữ liệu Tạo bảng ■ Truy vấn dữ liệu ■ Cú pháp đơn giản  CREATE TABLE tbl_name ( col1 type1 [option1], col2 type2 [option2], . ); 20
  21. ■ Tạo bảng ■ Xen dữ liệu ■ Xóa dữ liệu ■ Cập nhật dữ liệu Ví dụ 1 ■ Truy vấn dữ liệu ■ CREATE TABLE s ( sid varchar(3) PRIMARY KEY, sname text NOT NULL, status smallint, city text); ■ CREATE TABLE p ( pid varchar(3) UNIQUE NOT NULL, pname text NOT NULL, color text, weight smallint, city text); 21
  22. ■ Tạo bảng ■ Xen dữ liệu ■ Xóa dữ liệu ■ Cập nhật dữ liệu Ví dụ 2 ■ Truy vấn dữ liệu ■ CREATE TABLE sp ( sid varchar(3), pid varchar(3), qty integer NOT NULL CHECK (qty > 0), CONSTRAINT sp_pkey PRIMARY KEY (sid, pid)); ■ CREATE TABLE films ( code char(5) PRIMARY KEY, title text NOT NULL, date_prod date DEFAULT ‘2000/01/01’); 22
  23. ■ Tạo bảng Chỉnh sửa bảng ■ Xen dữ liệu ■ Xóa dữ liệu ■ ■ Cập nhật dữ liệu Cú pháp: ■ Truy vấn dữ liệu ALTER TABLE tbl_name alter_specification [, alter_specification] alter_specification: ADD [COLUMN] column_definition [FIRST | AFTER col_name ] | ADD [COLUMN] (column_definition, ) | ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name, ) | RENAME [TO] new_tbl_name | DROP [COLUMN] col_name 23
  24. ■ Tạo bảng ■ Xen dữ liệu ■ Xóa dữ liệu ■ Cập nhật dữ liệu Ví dụ 5 ■ Truy vấn dữ liệu ■ ALTER TABLE films ADD COLUMN nb int; ■ ALTER TABLE films DROP COLUMN nb; ■ ALTER TABLE films CHANGE title title varchar(30); 24
  25. ■ Tạo bảng ■ Xen dữ liệu ■ Xóa dữ liệu ■ Cập nhật dữ liệu ■ Truy vấn dữ liệu 25
  26. ■ Tạo bảng ■ Xen dữ liệu ■ Xóa dữ liệu ■ Cập nhật dữ liệu Xen dữ liệu vào bảng ■ Truy vấn dữ liệu ■ Cú pháp: INSERT INTO table [ ( column [, ] ) ] { VALUES ( expression [, ] ) | SELECT query } ■ Cú pháp đơn giản INSERT INTO table(col1, col2, ) VALUES (val1, val2, ); 26
  27. ■ Tạo bảng ■ Xen dữ liệu ■ Xóa dữ liệu ■ Cập nhật dữ liệu Ví dụ 6 ■ Truy vấn dữ liệu ■ Xen dữ liệu vào bảng s: INSERT INTO s VALUES (‘S01’, ‘Smith’, 20, ‘London’); INSERT INTO s VALUES (‘S02’, ‘Jones’, 10, ‘Paris’); INSERT INTO s VALUES (‘S03’, ‘Blacke’, 30, ‘Paris’); ■ Xen dữ liệu vào bảng p: INSERT INTO p VALUES (‘P01’, ‘Nut’, ‘red’, 12, ‘London’); INSERT INTO p VALUES (‘P02’, ‘Bolt’, ‘green’, 17, ‘Paris’); INSERT INTO p VALUES (‘P03’, ‘Screw’, ‘blue’, 17, ‘Roma’); INSERT INTO p VALUES (‘P04’, ‘Screw’, ‘red’, 14, ‘London’); 27
  28. ■ Tạo bảng ■ Xen dữ liệu ■ Xóa dữ liệu ■ Cập nhật dữ liệu Ví dụ 7 ■ Truy vấn dữ liệu ■ Xen dữ liệu vào bảng sp: INSERT INTO sp VALUES (‘S01’, ‘P01’, 300); INSERT INTO sp VALUES (‘S01’, ‘P02’, 200); INSERT INTO sp VALUES (‘S01’, ‘P03’, 400); INSERT INTO sp VALUES (‘S02’, ‘P01’, 300); INSERT INTO sp VALUES (‘S02’, ‘P02’, 400); INSERT INTO sp VALUES (‘S03’, ‘P02’, 200); ■ Xen dữ liệu vào bảng films: INSERT INTO films VALUES (‘00001’, ‘Anh Hung Xa Dieu’, ‘1990/12/07’); INSERT INTO films VALUES (‘00002’, ‘Than Dieu Dai Hiep’, ‘1991/07/22’); INSERT INTO films VALUES (‘00013’, ‘Vo My Nuong’,’1999/10/15’); 28
  29. ■ Tạo bảng ■ Xen dữ liệu ■ Xóa dữ liệu ■ Cập nhật dữ liệu ■ Truy vấn dữ liệu 29
  30. ■ Tạo bảng ■ Xen dữ liệu ■ Xóa dữ liệu ■ Cập nhật dữ liệu Xoá dữ liệu từ bảng ■ Truy vấn dữ liệu ■ Cú pháp: DELETE FROM table [ WHERE condition ] ■ Ví dụ: DELETE FROM films; DELETE FROM films WHERE code = ‘00013’; 30
  31. ■ Tạo bảng ■ Xen dữ liệu ■ Xóa dữ liệu ■ Cập nhật dữ liệu ■ Truy vấn dữ liệu 31
  32. ■ Tạo bảng ■ Xen dữ liệu ■ Xóa dữ liệu ■ Cập nhật dữ liệu Cập nhật dữ liệu của bảng ■ Truy vấn dữ liệu ■ Cú pháp: UPDATE table SET col = expression [, ] [ WHERE condition ] ■ Ví dụ: UPDATE films SET title = ‘Co Gai Do Long’ WHERE code = ‘00001’; 32
  33. ■ Tạo bảng ■ Xen dữ liệu ■ Xóa dữ liệu ■ Cập nhật dữ liệu ■ Truy vấn dữ liệu 33
  34. ■ Tạo bảng ■ Xen dữ liệu ■ Xóa dữ liệu ■ Cập nhật dữ liệu Truy vấn dữ liệu ■ Truy vấn dữ liệu ■ Cú pháp: SELECT [ALL | DISTINCT | DISTINCTROW ] select_expr, [INTO OUTFILE 'file_name' export_options | INTO DUMPFILE 'file_name'] [FROM table_references [WHERE where_definition] [GROUP BY {col_name | expr | position} [ASC | DESC], [WITH ROLLUP]] [HAVING where_definition] [ORDER BY {col_name | expr | position} [ASC | DESC] , ] [LIMIT {[offset,] row_count | row_count OFFSET offset}] [PROCEDURE procedure_name(argument_list)] [FOR UPDATE | LOCK IN SHARE MODE]] 34
  35. ■ Tạo bảng ■ Xen dữ liệu ■ Xóa dữ liệu ■ Cập nhật dữ liệu Truy vấn dữ liệu ■ Truy vấn dữ liệu ■ Cú pháp đơn giản SELECT select_expr, FROM table_references WHERE condition_expr 35
  36. ■ Tạo bảng ■ Xen dữ liệu ■ Xóa dữ liệu ■ Cập nhật dữ liệu Ví dụ 8 ■ Truy vấn dữ liệu 36
  37. ■ Tạo bảng ■ Xen dữ liệu ■ Xóa dữ liệu ■ Cập nhật dữ liệu Ví dụ 9 ■ Truy vấn dữ liệu 37
  38. ■ Tạo bảng ■ Xen dữ liệu ■ Xóa dữ liệu ■ Cập nhật dữ liệu Ví dụ 10 ■ Truy vấn dữ liệu 38
  39. ■ Tạo bảng ■ Xen dữ liệu ■ Xóa dữ liệu ■ Cập nhật dữ liệu Ví dụ 11 ■ Truy vấn dữ liệu 39
  40. ■ Tạo bảng ■ Xen dữ liệu ■ Xóa dữ liệu ■ Cập nhật dữ liệu Ví dụ 12 ■ Truy vấn dữ liệu 40
  41. ■ Tạo bảng ■ Xen dữ liệu ■ Xóa dữ liệu ■ Cập nhật dữ liệu Ví dụ 14 ■ Truy vấn dữ liệu 41
  42. ■ Tạo bảng ■ Xen dữ liệu ■ Xóa dữ liệu ■ Cập nhật dữ liệu Ví dụ 15 ■ Truy vấn dữ liệu 42
  43. ■ Tạo bảng ■ Xen dữ liệu ■ Xóa dữ liệu ■ Cập nhật dữ liệu Ví dụ 16 ■ Truy vấn dữ liệu 43
  44. ■ Tạo bảng ■ Xen dữ liệu ■ Xóa dữ liệu ■ Cập nhật dữ liệu Ví dụ 17 ■ Truy vấn dữ liệu 44
  45. ■ Tạo bảng ■ Xen dữ liệu ■ Xóa dữ liệu ■ Cập nhật dữ liệu Ví dụ 18 ■ Truy vấn dữ liệu 45
  46. ■ Tạo bảng ■ Xen dữ liệu ■ Xóa dữ liệu ■ Cập nhật dữ liệu Ví dụ 19 ■ Truy vấn dữ liệu 46
  47. ■ Tạo bảng ■ Xen dữ liệu ■ Xóa dữ liệu ■ Cập nhật dữ liệu Tạo chỉ mục ■ Truy vấn dữ liệu ■ Cú pháp: CREATE INDEX index_name [USING index_type] ON tbl_name (col_name [ASC | DESC], ) ■ Index type: B-Tree, Hash ■ Tăng tốc cho phép truy vấn 47
  48. ■ Tạo bảng ■ Xen dữ liệu ■ Xóa dữ liệu ■ Cập nhật dữ liệu Giao dịch ■ Truy vấn dữ liệu ■ Khái niệm : ● Atomic, Consistency, Isolated, Durable ● Mọi câu SQL đều được thực thi trong một giao dịch ● Giao dịch kết thúc hoặc làm tất cả hoặc không làm gì hết ● Lệnh trong giao dịch chỉ được thực hiện khi gặp «COMMIT » ● Lệnh trong giao dịch sẽ bị hủy bỏ khi gặp «ROLLBACK » ● Khóa là công cụ giúp khóa những đối tượng bên trong một giao dịch không cho một lệnh truy cập nào khác đến đối tượng 48
  49. ■ Tạo bảng ■ Xen dữ liệu ■ Xóa dữ liệu ■ Cập nhật dữ liệu Giao dịch ■ Truy vấn dữ liệu ■ Hỗ trợ lệnh : START TRANSACTION, COMMIT, ROLLBACK, SAVEPOINT, LOCK TABLE, UNLOCK TABLE, SET TRANSACTION ■ Ví dụ : start transaction; update account set balance = balance - 1000 where number = 2; commit; lock tables account write; select balance from account where number = 2; update account set balance = 1500 where number = 2; unlock tables; 49
  50. ■ MySQL là gì? ■ Những tính năng được cung cấp ■ Quản trị CSDL ■ Các lệnh SQL cơ bản ■ Tài liệu tham khảo 50
  51. ■ MySQL là gì? ■ Những tính năng được cung cấp ■ Cài đặt, quản trị CSDL ■ Các lệnh SQL cơ bản Tài liệu tham khảo ■ Tài liệu tham khảo ■ Cung cấp: ● Thông tin về MySQL như: phiên bản mới, các đặc trưng mới được hỗ trợ, các bản tin về MySQL ● Download hệ quản trị cơ sở dữ liệu MySQL ● Download các thư viện lập trình ứng dụng ● Download được các công cụ hỗ trợ cho việc quản trị cơ sở dữ liệu, các trình tiện ích được cung cấp hướng đến người sử dụng ● Tài liệu về MySQL 51
  52. ■ MySQL là gì? ■ Những tính năng được cung cấp ■ Cài đặt, quản trị CSDL ■ Các lệnh SQL cơ bản Tài liệu tham khảo ■ Tài liệu tham khảo ■ Sách: ● [Jon Stephens & Chad Russell, 2004] Jon Stephens & Chad Russell, “Beginning MySQL Database Design and Optimization: From Novice to Professional”, Apress, 2004. ● [Vikram Vaswani, 2003] Vikram Vaswani, “MySQL (TM): The Complete Reference”, McGraw Hill, 2003. ● [Paul DuBois, 2003] Paul DuBois, “MySQL”, SAMS, 2003. 52
  53. ■ MySQL là gì? ■ Những tính năng được cung cấp ■ Cài đặt, quản trị CSDL ■ Các lệnh SQL cơ bản Tài liệu tham khảo ■ Tài liệu tham khảo ■ Tài liệu hướng dẫn: ● [MySQL AB, 2005a] MySQL AB, “MySQL Administrator”, MySQL AB, 2005. ● [MySQL AB, 2005b] MySQL AB, “MySQL Reference Manual”, MySQL AB, 2005. 53