1 / 217

Cơ sở dữ liệu mã nguồn mở - MySQL

Cơ sở dữ liệu mã nguồn mở - MySQL. Nội dung trình bày. I. Làm quen với MySQL II. MySQL căn bản III. Tối ưu hóa MySQL IV. Quản trị CSDL MySQL IV. Một số tính năng mở rộng của MySQL. I. Làm quen với MySQL. I.1. MySQL là gì? I.2. Cài đặt MySQL I.3. CSDL đầu tiên với MySQL.

sasson
Télécharger la présentation

Cơ sở dữ liệu mã nguồn mở - MySQL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Cơ sở dữ liệu mã nguồn mở - MySQL

  2. Nội dung trình bày I. Làm quen với MySQL II. MySQL căn bản III. Tối ưu hóa MySQL IV. Quản trị CSDL MySQL IV. Một số tính năng mở rộng của MySQL

  3. I. Làm quen với MySQL I.1. MySQL là gì? I.2. Cài đặt MySQL I.3. CSDL đầu tiên với MySQL

  4. I.1. MySQL là gì? • MySQL (My Ess Que Ell) là hệ quản trị cơ sở dữ liệu • MySQL là hệ quản trị cơ sở dữ liệu quan hệ • MySQL là PMNM • Bạn có thể download phần mềm và mã nguồn của MySQL qua internet, có thể sửa đổi MySQL theo nhu cầu của mình. MySQL tuân theo giấy phép GNU GPL(http://www.fsf.org/licenses/) • Ngoài phiên bản sử dụng GPL, bạn có thể mua bản thương mại của MySQL (https://order.mysql.com/)

  5. I.1. MySQL là gì? • Vì sao sử dụng CSDL MySQL? • MySQL là cơ sở dữ liệu tốc độ cao, ổn định và dễ sử dụng • Friendster, more than 85 million dynamic page views per day, able to support more than 1.5 billion MySQL queries per day • Wikipedia, more than 200 million queries and 1.2 million updates per day with peak loads of 11,000 queries per second • MySQL có tính khả chuyển, hoạt động trên nhiều hệ điều hành (Unix, FreeBSD, NetBSD, Linux, Novell NetWare, SGI Irix, Solaris, SunOS, Windows) • Qua nhiều năm phát triển, hiện tại MySQL cung cấp một hệ thống lớn các hàm tiện ích rất mạnh • Với tốc độ và tính bảo mật cao, MySQL rất thích hợp cho các ứng dụng có truy cập CSDL trên internet • Bạn có thể sử dụng các CSDL MySQL free trên interrnet • http://www.db4free.net/ • http://www.freesql.org/

  6. I.1. Cài đặt MySQL (trên Windows) I.1.1. Yêu cầu tối thiểu I.1.2. Cài đặt

  7. I.1.1. Yêu cầu tối thiểu • Windows 9x, NT, Me, 2000, XP. Các hệ dòng NT cho phép chạy MySQL dưới dạng các service. • Phiên bản cài đặt MySQL download từ địa chỉ http://www.mysql.com/downloads • Khoảng trống >= 200MB (khoảng trống còn lại phụ thuộc vào nhu cầu đối với CSDL của bạn) • Nếu muốn kết nối với MySQL qua ODBC, bạn phải cài đặt MyODBC (http://www.mysql.com/downloads/api-myodbc.html. ) • Với CSDL có các bảng (table) có kích thước lớn hơn 4GB, bạn phải cài đặt trên ổ đĩa NTFS hoặc mới hơn

  8. I.1.2. Cài đặt MySQL trên Windows • Nếu sử dụng Windows NT, 2000 hay XP, phải có quyền administrator • Nếu nâng cấp, bạn phải dừng MySQL theo các bước sau >net stop mysql >mysqld –remove >mysqladmin –u root shutdown • Bung file nén download được • Chạy setup.exe

  9. I.1.3. CSDL đầu tiên với MySQL I.1.3.1. Connect & Disconnect server I.1.3.2. Nhập Query trên console I.1.3.3. Tạo và sử dụng Cơ sở dữ liệu I.1.3.4. Tạo bảng, import dữ liệu vào bảng I.1.3.5. Xem thông tin từ bảng

  10. I.1.3.1. Connect & Disconnect server Để kết nối đến máy chủ, cần cung cấp username & password. Nếu kết nối máy chủ từ xa, phải xác định hostname. > mysql -h host -u user –p Enter password: ******** > mysql -h host -u user –p Enter password: ******** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 25338 to server version: 4.0.14-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>

  11. I.1.3.2. Nhập Query trên console mysql> SELECT VERSION(), CURRENT_DATE; +--------------+--------------+ | VERSION() | CURRENT_DATE | +--------------+--------------+ | 3.22.20a-log | 1999-03-19 | +--------------+--------------+ 1 row in set (0.01 sec) mysql> mysql> SELECT VERSION(), CURRENT_DATE; mysql> select version(), current_date; mysql> SeLeCt vErSiOn(), current_DATE; mysql> SELECT SIN(PI()/4), (4+1)*5; +-------------+---------+ | SIN(PI()/4) | (4+1)*5 | +-------------+---------+ | 0.707107 | 25 | +-------------+---------+

  12. I.1.3.2. Nhập Query trên Console (2) mysql> SELECT VERSION(); SELECT NOW(); +--------------+ | VERSION() | +--------------+ | 3.22.20a-log | +--------------+ +---------------------+ | NOW() | +---------------------+ | 1999-03-19 00:15:33 | +---------------------+ mysql> SELECT -> USER() -> , -> CURRENT_DATE; +--------------------+--------------+ | USER() | CURRENT_DATE | +--------------------+--------------+ | joesmith@localhost | 1999-03-18 | +--------------------+--------------+

  13. I.1.3.2. Nhập Query trên Console (3) Để dừng lệnh đang nhập, dùng lệnh \c mysql> SELECT -> USER() -> \c mysql> Chú ý đến ý nghĩa của dấu nhắc của MySQL

  14. I.1.3.2. Nhập query trên console (4) • Làm việc theo lô (batch) > mysql -e "source batch-file" > mysql -h host -u user -p < batch-file Enter password: ******** > mysql < batch-file | more > mysql < batch-file > mysql.out

  15. I.1.3.2. Nhập Query trên Console (4) • Làm việc theo lô (batch) • Một query bình thường hiển thị kết quả ở chế độ interactive +---------+ | species | +---------+ | bird | | cat | | dog | | hamster | | snake | +---------+ • Ở chế độ batch, kết quả hiển thị như sau species bird cat dog hamster snake • Để hiển thị dữ liệu kiểu interactive ở chế độ batch, sử dụng lệnh mysql –t • Để hiển thị các lệnh được gọi, dùng lệnh mysql -vvv

  16. I.1.3.2. Nhập Query trên Console (4) Chú ý: Câu lệnh MySQL phải kết thúc bởi dấu ; mysql> SELECT USER() -> mysql> SELECT USER() -> ; +--------------------+ | USER() | +--------------------+ | joesmith@localhost | +--------------------+

  17. I.1.3.3. Tạo và sử dụng cơ sở dữ liệu mysql> show databases; +-----------+ | Database | +-----------+ | guestbook | | mysql | | quang | | test | +-----------+ 4 rows in set (0.00 sec) mysql> CREATE DATABASE dhxd; mysql> USE dhxd Database changed > mysql -h host -u user -p dhxd Enter password: ********

  18. I.1.3.4. Tạo bảng, import dữ liệu vào bảng mysql> SHOW TABLES; Empty set (0.00 sec) mysql> create table sv(id int auto_increment primary key, hodem varchar(30), -> ten varchar(10), gioitinh char(1), ngaysinh date); Query OK, 0 rows affected (0.03 sec) mysql> show tables; +----------------+ | Tables_in_dhxd | +----------------+ | sv | +----------------+ 1 row in set (0.00 sec)

  19. I.1.3.4. Tạo bảng, import dữ liệu vào bảng (2) mysql> describe sv; +----------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+----------------+ | id | int(11) | | PRI | NULL | auto_increment | | hodem | varchar(30) | YES | | NULL | | | ten | varchar(10) | YES | | NULL | | | gioitinh | char(1) | YES | | NULL | | | ngaysinh | date | YES | | NULL | | +----------+-------------+------+-----+---------+----------------+ 5 rows in set (0.02 sec) Nội dung file "dhxd.txt" (chú ý các trường cách nhau bởi dấu tab) 1 Nguyen Phu Quang M 1979-04-04 3 Tran Van On M 1919-04-06 4 Nguyen Viet Xuan F 1029-03-02

  20. I.1.3.4. Tạo bảng, import dữ liệu vào bảng (3) mysql> load data local infile "dhxd.txt" into table sv; Query OK, 3 rows affected (0.00 sec) Records: 3 Deleted: 0 Skipped: 0 Warnings: 0 mysql> select * from sv; +----+-------------+-------+----------+------------+ | id | hodem | ten | gioitinh | ngaysinh | +----+-------------+-------+----------+------------+ | 1 | Nguyen Phu | Quang | M | 1979-04-04 | | 3 | Tran Van | On | M | 1919-04-06 | | 4 | Nguyen Viet | Xuan | F | 1029-03-02 | +----+-------------+-------+----------+------------+ 3 rows in set (0.00 sec)

  21. I.1.3.5. Xem thông tin từ bảng mysql> select * from sv; +----+-------------+-------+----------+------------+ | id | hodem | ten | gioitinh | ngaysinh | +----+-------------+-------+----------+------------+ | 1 | Nguyen Phu | Quang | M | 1979-04-04 | | 3 | Tran Van | On | M | 1919-04-06 | | 4 | Nguyen Viet | Xuan | F | 1029-03-02 | +----+-------------+-------+----------+------------+ 3 rows in set (0.00 sec) mysql> select hodem, ten from sv; +-------------+-------+ | hodem | ten | +-------------+-------+ | Nguyen Phu | Quang | | Tran Van | On | | Nguyen Viet | Xuan | +-------------+-------+ 3 rows in set (0.00 sec)

  22. I.1.3.5. Xem thông tin từ bảng (2) mysql> select concat(hodem, " ", ten) from sv; +-------------------------+ | concat(hodem, " ", ten) | +-------------------------+ | Nguyen Phu Quang | | Tran Van On | | Nguyen Viet Xuan | +-------------------------+ 3 rows in set (0.44 sec) mysql> select concat(hodem, " ", ten) from sv where ten="quang"; +-------------------------+ | concat(hodem, " ", ten) | +-------------------------+ | Nguyen Phu Quang | +-------------------------+ 1 row in set (0.35 sec)

  23. II. MySQL căn bản II.1. Cấu trúc ngôn ngữ II.2. Các kiểu trường II.3. Các hàm sử dụng với câu lệnh SELECT và mệnh đề WHERE II.4. Các câu lệnh thao tác trên dữ liệu (SELECT, INSERT, UPDATE, DELETE) II.5. Các câu lệnh thao tác trên bảng CREATE, DROP, ALTER II.6. Làm việc với giao dịch (transaction) & các lệnh khóa (Locking command) II.7. Tìm kiếm văn bản (Full-text search) II.8. Các dạng bảng của MySQL

  24. II.1. Cấu trúc ngôn ngữ II.1.1. String & số II.1.2. Tên CSDL, bảng, chỉ số, cột II.1.3. Phân biệt chữ hoa, chữ thường II.1.4. Biến người dùng II.1.5. Biến hệ thống II.1.6. Chú thích

  25. II.1.1. String & Số II.1.1.1. String II.1.1.2. Số II.1.1.3. Giá trị NULL

  26. II.1.1.1. String • String trong MySQL có thể được ký hiệu bằng cả dấu nháy đơn và dấu nháy kép • Trong String, để viết các ký tự đặc biệt, ta sử dụng dấu chéo ngược (backslash) • Do đó, khi làm việc với đường dẫn, tốt nhất là dùng ký tự /

  27. II.1.1.1. String (2) mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+

  28. II.1.1.2. Số • Số ký hiệu như những ngôn ngữ khác 1221 0 -32 294.42 -32032.6809e+10 148.00 • Từ version 4.1.0: TRUE (1), FALSE(0) • Số Hexa mysql> SELECT x'4D7953514C'; -> MySQL mysql> SELECT 0xa+0; -> 10 mysql> SELECT 0x5061756c; -> Paul

  29. II.1.1.3. Giá trị NULL • Giá trị NULL có nghĩa là không có dữ liệu (không giống với giá trị 0 của kiểu số, xâu rỗng của kiểu String) • Giá trị NULL khi import hoặc export ra file text sử dụng ký hiệu (\N)

  30. II.1.1.2. Tên CSDL, bảng, chỉ số, cột Các tên CSDL, bảng, cột... nếu trùng với từ khóa thì phải đặt trong dấu nháy ngược [`] mysql> SELECT * FROM `select` WHERE `select`.id > 100;

  31. II.1.3. Phân biệt chữ hoa, chữ thường • Với MySQL, cơ sở dữ liệu và bảng tương ứng với thư mục và file trên máy tính. Do vậy, sự phân biệt chữ hoa, chữ thường (case-sensitive) phụ thuộc vào hệ điều hành • Windows: Không phân biệt chữ hoa chữ thường • Linux, Unix: Có phân biệt chữ hoa, chữ thường • Các bí danh (alias) có phân biệt chữ hoa chữ thường

  32. II.1.4. Biến • Tên biến phân biệt chữ hoa chữ thường. Biến không cần khởi tạo (biến chưa khởi tạo có giá trị NULL) • Để gán giá trị cho biến, sử dụng cú pháp SET @variable= { integer expression | real expression | string expression } [,@variable= ...] . mysql> SET @t1=0, @t2=0, @t3=0; mysql> SELECT @t1:=(@t2:=1)+@t3:=4,@t1,@t2,@t3; +----------------------+------+------+------+ | @t1:=(@t2:=1)+@t3:=4 | @t1 | @t2 | @t3 | +----------------------+------+------+------+ | 5 | 5 | 1 | 4 | +----------------------+------+------+------+

  33. II.1.5. Biến hệ thống mysql> SELECT (@aa:=id) AS a, (@aa+3) AS b FROM table_name HAVING b=5; SET SESSION sort_buffer_size=value; SET @@session.sort_buffer_size=value; SET sort_buffer_size=value; SELECT @@global.sort_buffer_size; SHOW GLOBAL VARIABLES like 'sort_buffer_size'; SELECT @@session.sort_buffer_size; SHOW SESSION VARIABLES like 'sort_buffer_size';

  34. II.1.6. Chú thích mysql> SELECT 1+1; # This comment continues to the end of line mysql> SELECT 1+1; -- This comment continues to the end of line mysql> SELECT 1 /* this is an in-line comment */ + 1; mysql> SELECT 1+ /* this is a multiple-line comment */ 1;

  35. II.2. Kiểu trường (cột) II.2.1. Các kiểu số • NUMERIC, DECIMAL, INTEGER, SMALLINT • FLOAT, REAL, DOUBLE II.2.2. Các kiểu ngày tháng II.2.3. Các kiểu chuỗi (string) II.2.4. Kích thước của các kiểu dữ liệu

  36. II.2.1. Các kiểu số • Các kiểu số sử dụng trong MySQL • NUMERIC, DECIMAL, INTEGER, SMALLINT • FLOAT, REAL, DOUBLE • Các kiểu số riêng cho MySQL • TINYINT, MEDIUMINT, BIGINT mysql> create table pet(id decimal(5,2));

  37. II.2.2. Kiểu ngày tháng • Các kiểu ngày tháng trong MySQL gồm có • DATETIME, DATE, TIMESTAMP, TIME, YEAR • Chú ý: MySQL không kiểm tra tính hợp lệ của ngày tháng, ví dụ 1999-11-31 cũng được MySQL chấp nhận (MySQL chỉ kiểm tra điều kiện tháng từ 0-12, ngày từ 0-31 – điều này giúp MySQL có được tốc độ cao) • MySQL cho phép bạn lưu ngày thàng với ngày =0 hoặc tháng =0, điều này rất hữu ích trong trường hợp bạn không biết chính xác ngày tháng (ví dụ 1999-00-00)

  38. II.2.3. Các kiểu chuỗi II.2.3.1. Kiểu 'CHAR' và 'VARCHAR' II.2.3.2. Kiểu 'BLOB' và 'TEXT' II.2.3.3. Kiểu 'ENUM' II.2.3.4. Kiểu 'SET'

  39. II.2.3.1. Kiểu 'CHAR' và 'VARCHAR' • Kiểu CHAR và VARCHAR là tương tự nhau, nhưng khác nhau khi lưu trữ: • Các trường kiểu CHAR có kích thước cố định khi bạn tạo bảng (chiều dài của chuỗi kiểu CHAR từ 1-255) • Các trường kiểu VARCHAR có kích thước thay đổi tùy thuộc vào dữ liệu vào (chiều dài từ 1-255)

  40. II.2.3.2. Kiểu 'BLOB' và 'TEXT' • Kiểu BLOB dùng để lưu trữ các dữ liệu có kích thước lớn. BLOB gồm 4 loại • TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB • Kiểu TEXT gồm 4 kiểu • TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT • Hai kiểu BLOB và TEXT chỉ có sự khác nhau duy nhất là BLOB có phân biệt sự khác nhau giữa chữ hoa và chữ thường còn kiểu TEXT thì không phân biệt chữ hoa và chữ thường • TEXT có thể coi là VARCHAR nhưng có kích thước lớn • Nếu bạn muốn sử dụng kiểu BLOB, TEXT cho câu lệnh GROUP BY, phải chuyển chúng về cùng một chiều dài mysql> SELECT comment FROM tbl_name,SUBSTRING(comment,20) AS substr -> ORDER BY substr; • Nếu không sử dụng cú pháp trên chỉ có một đoạn có độ dài max_sort_length của văn bản là được sắp xếp (giá trị mặc định của max_sort_length là 1024 và có thể thay đổi bằng tùy chọn –O của mysql) • Kích thước của trường kiểu TEXT và BLOB là thay đổi tùy theo kích thước của dữ liệu nhập vào (giống VARCHAR)

  41. II.2.3.3. Kiểu 'ENUM' • Kiểu ENUM là kiểu string mà giá trị được lựa chọn từ 1 trong các giá trị được liệt kê lúc tạo bảng mysql>CREATE TABLE temp(gt enum("nam","nu"); mysql> insert into temp values("nam"),("nu"),(""); mysql> select * from temp; +------+ | gt | +------+ | nam | | nu | | | +------+ mysql> insert into temp values(NULL), (0), (1), (2); mysql> select * from temp; +------+ | gt | +------+ | nam | | nu | | | | NULL | | | | nam | | nu | +------+

  42. II.2.3.3. Kiểu 'ENUM' (2) mysql> select concat("'", gt, "'") from temp; +----------------------+ | concat("'", gt, "'") | +----------------------+ | 'nam' | | 'nu' | | '' | | NULL | | '' | | 'nam' | | 'nu' | +----------------------+ mysql> select concat("'", gt, "'") from temp where gt=0; +----------------------+ | concat("'", gt, "'") | +----------------------+ | '' | | '' | +----------------------+ mysql> select concat("'", gt, "'") from temp where gt=1; +----------------------+ | concat("'", gt, "'") | +----------------------+ | 'nam' | | 'nam' | +----------------------+

  43. II.2.3.4. Kiểu 'SET' mysql> create table temp (s set("one", "two", "three")); mysql> insert into temp values("one"),("two"),("two,three"); mysql> select * from temp; +-----------+ | s | +-----------+ | one | | two | | two,three | +-----------+ mysql> select s+0 from temp; +------+ | s+0 | +------+ | 1 | | 2 | | 6 | +------+

  44. II.2.3.4. Kiểu 'SET' (2) mysql> delete from temp; mysql> insert into temp values("one"),("two"),("three"),("one,two"),("one,three" ),("two,three"),("one,two,three"); mysql> select * from temp; +---------------+ | s | +---------------+ | one | | two | | three | | one,two | | one,three | | two,three | | one,two,three | +---------------+ mysql> select s+0 from temp; +------+ | s+0 | +------+ | 1 | | 2 | | 4 | | 3 | | 5 | | 6 | | 7 | +------+

  45. II.2.3.4. Kiểu 'SET' (3) mysql> select * from temp where s like "%one%"; +---------------+ | s | +---------------+ | one | | one,two | | one,three | | one,two,three | +---------------+ mysql> select * from temp where find_in_set("one", s); +---------------+ | s | +---------------+ | one | | one,two | | one,three | | one,two,three | +---------------+

  46. II.2.4. Kích thước của các kiểu dữ liệu

  47. II.2.4. Kích thước của các kiểu dữ liệu (2)

  48. II.2.4. Kích thước của các kiểu dữ liệu (3)

  49. II.3. Các hàm sử dụng với câu lệnh SELECT và mệnh đề WHERE II.3.1. Các toán tử và hàm điều kiện II.3.2. Các hàm trên String II.3.3. Các hàm trên kiểu số II.3.4. Các hàm trên ngày tháng II.3.5. Hàm đổi kiểu II.3.7. Các hàm dùng với mệnh đề GROUP BY

  50. II.3.1. Các toán tử và hàm điều kiện II.3.1.1. Các toán tử so sánh II.3.1.2. Các toán tử logic II.3.1.3. Các hàm điều kiện

More Related