1. Trang chủ
  2. » Cao đẳng - Đại học

Sử dụng mysql moin cơ sở dữ liệu

17 2 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

Định dạng
Số trang 17
Dung lượng 236,65 KB

Nội dung

My SQL Documentation (sưu tầm) MYSQL DOCUMENTATION (sưu tầm) Trong này, giả sử bạn có MySQL cài đặt sẳn máy biết cách connect disconnect vào server Xin nhắc lại, để connect vào server mysql, bạn click vào file mysql.exe thư mục bin Hoặc đánh lệnh dos sau: shell> mysql -h -u -p; Enter password: ******** (password bạn) Vào queries (yêu cầu): Phải chắn bạn connect vào server Lệnh để vào queries là: select Ví dụ, để xem version number hay ngày bạn type sau: mysql> select version(), current_date; + + + | version() | Current_date | + | + | 3.22.20a-log | 2002-03-29 | + + + row in set (0.00 sec) mysql> Giải thích: Các lệnh sql kết thúc dấu chấm phẩy (;) (trử số lệnh quit trường hợp đặc biệt) Khi thực lệnh, mysql chuyển đến server yêu cầu thực lệnh Do đó, "mysql>" cuối báo hiệu yêu cầu thực mysql đưa kết dạng bảng (table) gồm cột (column) hàng (row) Hàng cho biết Nhãn (label) trường (field) Các hàng kết mysql đưa hàng trả (row in set) vòng giây (sec) Ngoài ra, mysql thể phép tính đơn giản Ví dụ: mysql> select sin(pi()/4), (4+1)*5, mod(27,5); Hãy thử bạn nhận kết Hơn nữa, bạn vào nhiều lệnh hàng: mysql> select version(); select now(); Chú ý, kết đưa bảng Lệnh lúc thực hàng Ví dụ: mysql> -> -> -> select user() , current_date; + -+ + | user() | Current_date | + -+ + | admin@localhost | 2002-03-29 | + -+ + Chú ý dấu nhắc đổi từ "mysql>" sang thành "->" bạn đánh "enter" mà không kết thúc dấu chấm phẩy ";" Trang: CuuDuongThanCong.com https://fb.com/tailieudientucntt My SQL Documentation (sưu tầm) Nếu bạn muốn kết thúc dịng lệnh mà khơng đưa kết (cancel) bạn type "\c" ví dụ: mysql> select -> user() -> \c mysql> Mysql có loại dấu nhắc Sau ý nghĩa dấu nhắc: Prompt mysql> -> '> "> Ý Nghĩa Sẳn sàng cho Chờ cho hàng Chờ cho hành Chờ cho hành lệnh lệnh có nhiều hàng thực chuỗi dấu nháy đơn thực chuỗi dấu nháy đơi ví dụ: mysql> select user() -> ; hay mysql> select * from my_table where name = "Thuy Lan age < 30; "> Trong trường hợp trên, muốn bỏ câ lệnh, phải làm sau: ">" \c khơng đóng dấu ", mysql nghỉ câu lệnh \c tiếp tục chuổi trước Tạo sử dụng sở liệu (database) Dùng lệnh show để xem có database server mysql> show databases; + + | Database | + + | mysql | | test | + + Trong ví dụ trên, có database server với tên mysql test Để làm việc với database, bạn cần phải vào (access) câu lệnh use mysql> use test Database changed (bạn thấy đấy, lệnh use giống lệnh quit, khơng cẩn dấu ; cuối dịng lệnh) a Tạo database: Dùng câu lệnh create Create database ; mysql> create database menagerie; Bây bạn show databases, databases "menagerie" bạn tạo có server Để sử dụng database tạo, dùng lệnh use mysql> use menageries; Database changed Trang: CuuDuongThanCong.com https://fb.com/tailieudientucntt My SQL Documentation (sưu tầm) (chú ý: có dấu ; hay khơng có khơng thành vấn đề!) Bạn có database rồi, bạn tạo bảng b Tạo bảng (table) Trước hết, bạn muốn xem thử xem có bảng tồn Bạn dùng lệnh show tables mysql> show tables; Empty set (0.00 sec) Khơng có bảng tồn Giã sử bạn muốn tạo bảng có tên "pet" gồm mục sau: Tên (name) owner (người ni) species (lồi) sex (giới tính) birth (ngảy sinh) death (ngày chết) Câu lệnh sau: mysql> create table pet (name varchar(20), owner varchar(20), -> species varchar(20), -> sex char(1), birth date, death date); varchar dùng cho name, owner species chuỗi thay đổi Đối vơi sex ta cẩn kí tự đủ ('m' for male 'f' for female) Dùng date cho birth death điều hiển nhiên Bây giờ, bạn thử show tables xem sao? Bạn xem thơng tin bảng: mysql> describe pet; + -+ -+ + -+ -+ -+ | Field | Type | Null | Key | Default | Extra | + -+ -+ + -+ -+ -+ | name | varchar(20) | YES | | NULL | | | owner | varchar(20) | YES | | NULL | | | species | varchar(20) | YES | | NULL | | | sex | char(1) | YES | | NULL | | | birth | date | YES | | NULL | | | death | date | YES | | NULL | | + -+ -+ + -+ -+ -+ Bảng bảng trống, nghĩa chưa có record lưu Bạn cần phải đưa record vào Đưa giá trị vào bảng: mysql> insert into pet -> values ('Puffball','Diane','hamster','f','1999-03-30',NULL); Chú ý, giá trị cuối NULL, có nghĩa rỗng Để xem giá trị vừa rồi, bạn dùng câu lệnh sau: mysql> select * from pet; Bây giở bạn đưa vào bảng sau: + + + -+ + + + Trang: CuuDuongThanCong.com https://fb.com/tailieudientucntt My SQL Documentation (sưu tầm) | name | owner | species | sex | birth | death | + + + -+ + + + | Fluffy | Harold | cat | f | 1993-02-04 | NULL | | Claws | Gwen | cat | m | 1994-03-17 | NULL | | Buffy | Harold | dog | f | 1989-05-13 | NULL | | Fang | Benny | dog | m | 1990-08-27 | NULL | | Bowser | Diane | dog | m | 1998-08-31 | 1995-07-29 | | Chirpy | Gwen | bird | f | 1998-09-11 | NULL | | Whistler | Gwen | bird | NULL | 1997-12-09 | NULL | | Slim | Benny | snake | m | 1996-04-29 | NULL | | Puffball | Diane | hamster | f | 1999-03-30 | NULL | + + + -+ + + + Ngồi ra, bạn dùng tập tin text để đưa record vào bảng Cách đơn giản dễ cách dùng câu lệnh Bạn dùng chương trình biên soạn văn (ví dụ notepad) Nhập record vào (lưu ý không nhập hàng đầu, nhập record thôi) Các giá trị record phải cách dấu "tab" Và thứ tự giá trị theo thứ tự bạn làm phần tạo bảng Đối với giá trị "NULL", bạn đánh chữ "\N" Lưu tập tin thành "pet.txt" vào thư mục "E:\mysql\data\menagerie\" (thư mục khác với bạn, tùy theo cách cài đặt mysql người) Sau đó, bạn đưa file text vào bảng sau: mysql> LOAD DATA INFILE "pet.txt" INTO TABLE pet; (nếu dùng lệnh mà báo lổi, bạn thử dùng câu lệnh sau, tùy theo phiên bạn sử dụng, câu lệnh có khác chút) mysql> LOAD DATA LOCAL INFILE "pet.txt" INTO TABLE pet; Để xóa record, bạn dùng lệnh delete sau: mysql> DELETE FROM pet WHERE name = 'Chirpy'; Chú ý: nên hạn chế dùng lệnh delete lệnh khơng có hỏi lại bạn có thật xóa khơng thực Vì thế, dùng lệnh sau: mysql> DELETE FROM pet; #KHÔNG NÊN THỬ!!! Là bạn hết tất liệu Chú ý: vật Bowser: ngày sinh lại sau ngày chết????! Để thay đổi giá trị record mà bạn lỡ đánh nhầm vào trường hợp trên, bạn dùng câu lệnh sau: mysql> update pet set birth = '1989-08-31' where name = 'Bowser'; Tuy nhiên, cách sửa lại bạn dùng tập tin ".txt" Bạn mở tập tin pet.txt ra, sửa lại record bạn muốn sửa Rồi đánh lệnh sau: mysql> set autocommit=1; #dùng để tạo nhanh lại bảng mysql> delete from pet; mysql> load data infile "pet.txt" into table pet; Chọn bảng xác định: Ví dụ: a mysql> SELECT * FROM pet WHERE name = "Bowser"; + + -+ -+ + + + Trang: CuuDuongThanCong.com https://fb.com/tailieudientucntt My SQL Documentation (sưu tầm) | name | owner | species | sex | birth | death | + + -+ -+ + + + | Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 | + + -+ -+ + + + b mysql> SELECT * FROM pet WHERE birth >= "1998-1-1"; + + -+ -+ + + -+ | name | owner | species | sex | birth | death | + + -+ -+ + + -+ | Chirpy | Gwen | bird | f | 1998-09-11 | NULL | | Puffball | Diane | hamster | f | 1999-03-30 | NULL | + + -+ -+ + + -+ Ở đây, bạn dùng điều kiện (condition) để thực việc chọn Bạn kết hợp điểu kiện sau: mysql> SELECT * FROM pet WHERE species = "dog" AND sex = "f"; + -+ + -+ + + -+ | name | owner | species | sex | birth | death | + -+ + -+ + + -+ | Buffy | Harold | dog | f | 1989-05-13 | NULL | + -+ + -+ + + -+ hay: mysql> SELECT * FROM pet WHERE species = "snake" OR species = -> "bird"; + + -+ -+ + + -+ | name | owner | species | sex | birth | death | + + -+ -+ + + -+ | Chirpy | Gwen | bird | f | 1998-09-11 | NULL | | Whistler | Gwen | bird | NULL | 1997-12-09 | NULL | | Slim | Benny | snake | m | 1996-04-29 | NULL | + + -+ -+ + + -+ Các điều kiện and or "trộn" (intermix) vào nhau: mysql> SELECT * FROM pet WHERE (species = "cat" AND sex = "m") -> OR (species = "dog" AND sex = "f"); + -+ + -+ + + -+ | name | owner | species | sex | birth | death | + -+ + -+ + + -+ | Claws | Gwen | cat | m | 1994-03-17 | NULL | | Buffy | Harold | dog | f | 1989-05-13 | NULL | + -+ + -+ + + -+ Chọn hàng xác định (particular columns): mysql> SELECT name, birth FROM pet; + + + | name | birth | + + + | Fluffy | 1993-02-04 | | Claws | 1994-03-17 | | Buffy | 1989-05-13 | Trang: CuuDuongThanCong.com https://fb.com/tailieudientucntt My SQL Documentation (sưu tầm) | Fang | 1990-08-27 | | Bowser | 1989-08-31 | | Chirpy | 1998-09-11 | | Whistler | 1997-12-09 | | Slim | 1996-04-29 | | Puffball | 1999-03-30 | + + + Ở ví dụ trên, bạn chọn hàng có tên name birth để "display" Để tìm xem chủ con, bạn lảm sau: mysql> SELECT owner FROM pet; + + | owner | + + | Harold | | Gwen | | Harold | | Benny | | Diane | | Gwen | | Gwen | | Benny | | Diane | + + Tuy nhiên, Có nhiều tên lập lại Hẳn bạn không muốn điều đó, bạn cần biết tên chủ thơi Do đó, bạn làm sau: mysql>SELECT DISTINCT owner FROM pet; + + | owner | + + | Benny | | Diane | | Gwen | | Harold | + + Bạn dùng WHERE để kết hợp hàng lại với Ví dụ, bạn muốn ngày sinh chó mèo thơi: mysql> SELECT name, species, birth FROM pet -> WHERE species = "dog" OR species = "cat"; + + -+ + | name | species | birth | + + -+ + | Fluffy | cat | 1993-02-04 | | Claws | cat | 1994-03-17 | | Buffy | dog | 1989-05-13 | | Fang | dog | 1990-08-27 | | Bowser | dog | 1989-08-31 | + + -+ + Sắp xếp: (sorting the rows) Với mục đính cụ thể đó, bạn muốn xếp đưa ra, bạn dùng câu lệnh: "sort by [desc] hay [asc]" Ví dụ: Trang: CuuDuongThanCong.com https://fb.com/tailieudientucntt My SQL Documentation (sưu tầm) mysql> SELECT name, birth FROM pet ORDER BY birth; + + + | name | birth | + + + | Buffy | 1989-05-13 | | Bowser | 1989-08-31 | | Fang | 1990-08-27 | | Fluffy | 1993-02-04 | | Claws | 1994-03-17 | | Slim | 1996-04-29 | | Whistler | 1997-12-09 | | Chirpy | 1998-09-11 | | Puffball | 1999-03-30 | + + + hoặc, bạn muốn xếp theo trật tự từ xuống: mysql> SELECT name, birth FROM pet ORDER BY birth DESC; + + + | name | birth | + + + | Puffball | 1999-03-30 | | Chirpy | 1998-09-11 | | Whistler | 1997-12-09 | | Slim | 1996-04-29 | | Claws | 1994-03-17 | | Fluffy | 1993-02-04 | | Fang | 1990-08-27 | | Bowser | 1989-08-31 | | Buffy | 1989-05-13 | + + + DESC DESCENDING, ASC ASCENDING Bạn xếp nhiều hàng lúc cách kết hợp ORDER BY với Ví dụ bạn muốn xếp kiểu vật trước, sau đến ngày sinh con, bạn sort sau: mysql> SELECT name, species, birth FROM pet ORDER BY species, birth -> DESC; + + -+ + | name | species | birth | + + -+ + | Chirpy | bird | 1998-09-11 | | Whistler | bird | 1997-12-09 | | Claws | cat | 1994-03-17 | | Fluffy | cat | 1993-02-04 | | Fang | dog | 1990-08-27 | | Bowser | dog | 1989-08-31 | | Buffy | dog | 1989-05-13 | | Puffball | hamster | 1999-03-30 | | Slim | snake | 1996-04-29 | + + -+ + Chú ý: DESC áp dụng cho hàng birth (có nghĩa trước nó) Cịn species xếp theo Asceding order Tính tốn ngày: (Date Calculations) Trang: CuuDuongThanCong.com https://fb.com/tailieudientucntt My SQL Documentation (sưu tầm) MySQL cung cấp số hàm tính ngày hữu hiệu Thí dụ, bạn cần tính số tuổi vật? Để tính tuổi vật, bạn lấy nãm trừ nãm sinh, sau đó, trừ ngày trước ngày sinh Ví dụ: mysql> -> -> -> -> SELECT name, birth, current_date as now, (year(current_date)-year(birth)) -(right(current_date,5) -> -> -> -> SELECT name, birth, CURRENT_DATE, (YEAR(CURRENT_DATE)-YEAR(birth)) - (RIGHT(CURRENT_DATE,5) -> -> -> SELECT name, birth, death, (YEAR(death)-YEAR(birth)) - (RIGHT(death,5) select month(now()); mysql> select dayofmonth(now()); Như vậy, bạn muốn lấy tháng ngày sinh vật, bạn làm sau: mysql> SELECT name, birth, MONTH(birth) FROM pet; + + + + | name | birth | MONTH(birth) | + + + + | Fluffy | 1993-02-04 | | | Claws | 1994-03-17 | | | Buffy | 1989-05-13 | | | Fang | 1990-08-27 | | | Bowser | 1989-08-31 | | | Chirpy | 1998-09-11 | | | Whistler | 1997-12-09 | 12 | | Slim | 1996-04-29 | | | Puffball | 1999-03-30 | | + + + + Do đó, để tìm xem tháng tới có phải sinh nhật không? giả sử tháng 4, bạn muốn tìm sinh nhật tháng 5: mysql> SELECT name, birth FROM pet WHERE MONTH(birth) = 5; + -+ + | name | birth | + -+ + | Buffy | 1989-05-13 | + -+ + (trùng hợp thật, 13/5 SN tôi) Thế Nếu bạn tháng 12 thỉ sao? bạn lại tìm MONTH(birth) = 13 (???) Một điểu khơng thể phải khơng bạn? Do đó, mysql cung cấp cho ta hàm DATE_ADD() Hàm cho phép bạn thêm vào ngày khoảng thời gian xác định Hãy thử sau: mysql> -> -> -> -> -> -> SELECT now(), Date_add(now(), interval day) as them ngay, Date_add(now(), interval month) as them thang, Date_add(now(), interval year) as them nam, Date_add(now(), interval hour) as them gio, Date_add(now(), interval minute) as them phut, Date_add(now(), interval second) as them giay; Trở lại ví dụ chúng ta, để tìm xem tháng tới có SN hay không, bạn cần so sánh giá trị tháng database với tháng sau xong: mysql> SELECT name, birth FROM pet -> WHERE MONTH(birth) = MONTH(DATE_ADD(NOW(), INTERVAL -> MONTH)); Trang: CuuDuongThanCong.com https://fb.com/tailieudientucntt My SQL Documentation (sưu tầm) Tuy nhiên, có cách khác hay hơn, bạn dùng hàm MOD() Chắc hẳn bạn đụng với hảm mod trãm lẩn bải tập lập trình rổi nhỉ! Vì thế, ví dụ sau thật dễ hiểu mysql> SELECT name, birth FROM pet -> WHERE MONTH(birth) = MOD(MONTH(NOW()), 12) + 1; Làm việc với giá trị NULL: Như nói phẩn trước, quay lại với giá trị NULL NULL có nghĩa "khơng biết" (unknown) Vả đặc biệt vậy, nên sử dụng cách đặc biệt Để làm việc với NULL, khơng sử dụng tốn tử so sánh thông thường , , = Để hiểu rõ, xin thử sau: mysql> select = null, null, < null, > null; + + -+ + + | = NULL | NULL | < NULL | > NULL | + + -+ + + | NULL | NULL | NULL | NULL | + + -+ + + Như thấy, kết nhận thật vô nghĩa Hãy sử dụng sau: mysql> select is null, is not null; + -+ -+ | IS NULL | IS NOT NULL | + -+ -+ | | | + -+ -+ Trong mysql, Null FALSE, tất giá trị khác TRUE Do đó, kết điều dễ hiểu Pattern Matching (xin lỗi khơng tìm từ để dịch cả) Hãy nghỉ Pattern Matching dùng để tìm record đặc biệt SQL pattern matching cho phép bạn dùng '_' để gán với kí tự riêng lẻ hay dùng '%' để gán lúc nhiều kí tự (hãy nghĩ giống '?' '*' vậy) Trong MySQL, pattern "case insensity" Ngoài ra, SQL, bạn khơng dùng tóan tử =, cho pattern matching mà dùng LIKE NOT LIKE Ví dụ: mysql> SELECT * FROM pet where name = "b%"; Empty set(0.00) mysql> SELECT * FROM pet where like 'b%'; + + + -+ + + + | name | owner | species | sex | birth | death | + + + -+ + + + | Buffy | Harold | dog | f | 1989-05-13 | NULL | | Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 | + + + -+ + + + Bạn thấy khác like va '=' chưa? Chú ý đến trường hợp INSENSITY Để tìm tên vật kết thúc 'fy': mysql> SELECT * FROM pet WHERE name LIKE '%fy'; Trang: 10 CuuDuongThanCong.com https://fb.com/tailieudientucntt My SQL Documentation (sưu tầm) + + + -+ + + -+ | name | owner | species | sex | birth | death | + + + -+ + + -+ | Fluffy | Harold | cat | f | 1993-02-04 | NULL | | Buffy | Harold | dog | f | 1989-05-13 | NULL | + + + -+ + + -+ Tương tự vậy, bạn thử tìm tên vật có chữ 'w' nó? Để tìm vật mà tên có chữ: mysql> SELECT * FROM pet WHERE name LIKE ' _'; + -+ + -+ + + -+ | name | owner | species | sex | birth | death | + -+ + -+ + + -+ | Claws | Gwen | cat | m | 1994-03-17 | NULL | | Buffy | Harold | dog | f | 1989-05-13 | NULL | + -+ + -+ + + -+ Ngồi ra, mysql cịn sử dụng "extended regular expresions" cho pattern matching Khi sử dụng kiểu này, bạn thay LIKE NOT LIKE thành REGEXP (REGular EXPression) NOT REGEXP (hoặc bạn dùng RLIKE NOT RLIKE được, tất 1) + Vài kiều mẫu Extended regular expression": o '.': gán cho tất kí tự đơn o lớp kí tự '[ ]': gán với tất kí tự ngoặc Ví dụ, '[abc]' gán với 'a','b' 'c' Để đặt tên cho dãy kí tự, dùng dấu '' Ví dụ: '[a-z]': gán với tất kí tự '[0-9]' cho tất số o '*': gán với số khơng '0' số kí tự tạo nên Ví dụ, 'x*' gán với tất số kí tự x o Để gắn pattern cho gán vào đầu cuối giá trị cần tỉm, ta dùng '^' cho phần tử đầu '$' cho phần tử cuối Ví dụ: tìm tên 'b': mysql> SELECT * FROM pet WHERE name REGEXP '^b'; + + + -+ + + + | name | owner | species | sex | birth | death | + + + -+ + + + | Buffy | Harold | dog | f | 1989-05-13 | NULL | | Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 | + + + -+ + + + Chú ý, bạn dùng version trước đây, pattern dùng "case sensity" nên để làm giống đây, bạn phải dùng đến lớp kí tự sửa lại sau: mysql> SELECT * FROM pet WHERE name REGEXP '^[bB]'; Mặt khác, dùng version 3.23.4 bạn định cho mysql sử dụng "case sensity" cách dùng từ "BINARY" VÍ dụ: mysql> SELECT * FROM pet WHERE name REGEXP BINARY '^b'; Kết cho là: Empty set(0.02) Nếu bạn muốn tìm pattern kết thúc "fy", dùng $ Ví dụ: Trang: 11 CuuDuongThanCong.com https://fb.com/tailieudientucntt My SQL Documentation (sưu tầm) mysql> SELECT * FROM pet WHERE name REGEXP BINARY 'fy$'; + + + -+ + + -+ | name | owner | species | sex | birth | death | + + + -+ + + -+ | Fluffy | Harold | cat | f | 1993-02-04 | NULL | | Buffy | Harold | dog | f | 1989-05-13 | NULL | + + + -+ + + -+ Để tìm pattern có kí tự 'w' 'W' bạn dùng sau: mysql> SELECT * FROM pet WHERE name REGEXP 'w'; + + -+ -+ + + + | name | owner | species | sex | birth | death | + + -+ -+ + + + | Claws | Gwen | cat | m | 1994-03-17 | NULL | | Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 | | Whistler | Gwen | bird | NULL | 1997-12-09 | NULL | + + -+ -+ + + + Như vậy, để tìm tên có xác kí tự ví dụ bạn làm sau: mysql> SELECT * FROM pet WHERE name REGEXP '^ $'; + -+ + -+ + + -+ | name | owner | species | sex | birth | death | + -+ + -+ + + -+ | Claws | Gwen | cat | m | 1994-03-17 | NULL | | Buffy | Harold | dog | f | 1989-05-13 | NULL | + -+ + -+ + + -+ Tuy nhiên, ví dụ cịn có cách viết đơn giản cách dùng "repeat-n-times operator" Kiểu sau: '{n}' Ví dụ: mysql> SELECT * FROM pet WHERE name REGEXP '^.{5}$'; Kết đưa giống Ở đây, xin ý '.' lập lại lẩn Đếm số hàng (Counting Rows) Bạn muốn tìm có vật bạn có? hay có vật chủ? Xin giới thiệu hàm count() Ví dụ: mysql> select count(*) from pet; + + | COUNT(*) | + + | | + + Bạn muốn tìm chủ có vật? mysql> SELECT owner, count(*) FROM pet GROUP By owner; + + + | owner | COUNT(*) | + + + | Benny | | Trang: 12 CuuDuongThanCong.com https://fb.com/tailieudientucntt My SQL Documentation (sưu tầm) | Diane | | | Gwen | | | Harold | | + + + Số vật loại giới tính: mysql> SELECT sex, count(*) FROM pet GROUP BY sex; Số vật lồi giới tính: mysql> SELECT species, sex, count(*) FROM pet GROUP BY species, ->sex; + -+ + + | species | sex | COUNT(*) | + -+ + + | bird | NULL | | | bird | f | | | cat | f | | | cat | m | | | dog | f | | | dog | m | | | hamster | f | | | snake | m | | + -+ + + Bạn muốn đếm chó mèo thơi? Hãy thử xem sao: mysql> -> -> -> SELECT species, sex, count(*) FROM pet WHERE species = 'dog' OR species = 'cat' GROUP BY species, sex; + -+ + + | species | sex | COUNT(*) | + -+ + + | cat | f | | | cat | m | | | dog | f | | | dog | m | | + -+ + + Sau cùng, thử đoạn lệnh sau: mysql> -> -> -> SELECT species, sex, count(*) FROM pet WHERE sex IS NOT NULL GROUP BY species, sex; Đó tất MySQL Nhưng bạn làm qua nhiều tập Cơ sở liệu rồi, thấy lúc dùng bảng Như vậy, nghiên cứu MYSQL nhiều bảng 10 Làm việc với nhiều bảng: Bạn muốn lưu trữ thêm thông tin vật bạn? Trường hợp này, bạn cần phải có bảng Giả sử bạn muốn lưu thông tin kiện vật bạn thường đến vị bác sĩ thú y Khi chúng sinh Như vậy, bảng bạn phải đáp ứng yêu cầu sau: Tên vật để biết kiện nào Ngày để báo cho biết kiện xảy Trang: 13 CuuDuongThanCong.com https://fb.com/tailieudientucntt My SQL Documentation (sưu tầm) trường để miêu tả kiện phân loại kiện bạn muốn phân loại kiện Bây giờ, ta tạo bảng tên la event với mục kể mysql> CREATE TABLE event (name VARCHAR(20), date DATE, type -> VARCHAR(15), -> remark VARCHAR(255)); Sau đó, dùng lệnh insert để đưa kiện sau vào: (hoặc để đơn giản hơn, bạn dùng notepad type vào sau lưu vào tập tin event.txt Sau đó, dùng lệnh sau để đưa vào database server: mysql> load data infile "event.txt" into table event; name date type remark Fluffy Buffy Buffy Chirpy Slim Bowser Fang Fang Claws Whistler 1995-05-15 1993-06-23 1994-06-19 1999-03-21 1997-08-03 1991-10-12 1991-10-12 1998-08-28 1998-03-17 1998-12-09 litter kittens, female, male litter puppies, female, male litter puppies, female vet needed beak straightened vet broken rib kennel kennel birthday Gave him a new chew toy birthday Gave him a new flea collar birthday First birthday Kiểm lại: mysql> show tables; mysql> select * from event; Nếu thứ tốt đẹp, xin tiếp tục Bây giở, giã sử bạn muốn lấy số tuổi vật có Khi đó, bạn cẩn ngày sinh (mà bảng pet) ngày xảy kiện (ở bảng event) Như vậy, bạn cần phải kết hợp bảng lại với mysql> -> -> -> SELECT event.name, (TO_DAYS(date) - TO_DAYS(birth))/356 AS age, remark FROM pet, event WHERE pet.name = event.name AND type = 'litter'; + + + -+ | name | age | remark | + + + -+ | Fluffy | 2.27 | kittens, female, male | | Buffy | 4.12 | puppies, female, male | | Buffy | 5.10 | puppies, female | + + + -+ Có vài điều cẩn ý sau: o Sau FROM phải có table cần bảng để thực o Khi kết hợp từ nhiều bảng, bạn cẩn phải xác định bảng Trong ví dụ trên, bạn bỏ câu lệnh chuyện khác nhiều o Vì cột name xuất bảng, dùng đến định vị trí (pet.name event.name thí o Ở đây, xin giới thiệu hàm TO_DAYS() Đây hàm trả Bạn thử đánh dòng sau xem sao: lệnh gán với bảng "pet.name=event.name" nó, bạn cẩn phải xác dụ trên) giá trị ngày mysql> select (to_days(current_date)); Trang: 14 CuuDuongThanCong.com https://fb.com/tailieudientucntt My SQL Documentation (sưu tầm) Đôi khi, bạn không cần phải co bảng để kết hợp lại với Điều có nghĩa bạn kết hợp bảng với Trường hợp la dùng "aliases" Thí dụ bạn muốn tìm cặp vật bạn kết hợp bảng pet với để tìm cặp vật theo giống nòi mysql> -> -> -> SELECT p1.name, p1.sex, p2.name, p2.sex, p1.species FROM pet As p1, pet AS p2 WHERE p1.species = p2.species AND p1.sex = 'f' AND p2.sex = 'm'; + + + + + -+ | name | sex | name | sex | species | + + + + + -+ | Fluffy | f | Claws | m | cat | | Buffy | f | Fang | m | dog | | Buffy | f | Bowser | m | dog | + + + + + -+ + Câu lệnh FROM trên, bạn co thể có AS mà khơng có 11 Lấy thông tin sở liệu bảng: Một bạn quên tên sở liệu tên bảng, bạn muốn tìm cấu trúc bảng MySQL cho phép bạn làm điều qua số câu lệnh Bạn đă làm việc với SHOW DATABASES; bạn tìm xem DATABASE sử dụng: mysql> SELECT DATABASE(); + + | DATABASE() | + + | menagerie | + + Nếu bạn chưa sử dụng database hết, kết trống 12 Ví dụ vài queries thơng dụng: Bây giở tạo sử dụng bảng "shop" bao gồm: o trường chứa số thứ tự items, đặt tên article o trường chứa tên người bán hàng, tên dealer o trường chứa giá bán items Như vậy, ta sử dụng article dealer lảm primary key Bây giở, sử dụng database test có sẳn mysql để làm thí dụ này: mysql> use test; Database changed Bạn tạo bảng sau: mysql> -> -> -> -> CREATE TABLE shop ( article INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL, dealer CHAR(20) DEFAULT '' NOT NULL, price DOUBLE(16,2) DEFAULT '0.00' NOT NULL, PRIMARY KEY(article,dealer)); Đưa giá trị vào bảng: mysql> INSERT INTO shop VALUES Trang: 15 CuuDuongThanCong.com https://fb.com/tailieudientucntt My SQL Documentation (sưu tầm) -> (1,'A',3.45),(1,'B',3.99), (2,'A',10.99),(3,'B',1.45),(3,'C',1.69), -> (3,'D',1.25),(4,'D',19.95); Thử xem sao: mysql> SELECT * FROM shop; + -+ + -+ | article | dealer | price | + -+ + -+ | 0001 | A | 3.45 | | 0001 | B | 3.99 | | 0002 | A | 10.99 | | 0003 | B | 1.45 | | 0003 | C | 1.69 | | 0003 | D | 1.25 | | 0004 | D | 19.95 | + -+ + -+ + Giá trị lớn cột: mysql> SELECT MAX(article) AS article FROM shop; + -+ | article | + -+ | | + -+ + Tìm số hàng, dealer, price item mắc nhất: Như bạn biết, da dùng queries sau: mysql> select article, dealer, price -> from shop -> where price = (select max(price) from shop); Vì mysql chưa trợ giúp sub-selects nên ta phải tìm giá trị lớn trước sau dùng giá trị để làm tiếp Có cách khác đỡ rắc rối hơn, bạn xếp chúng theo thứ tự từ xuống, sau lấy record đầu tiên, sử dụng LIMIT: mysql> -> -> -> select article, dealer, price from shop order by price desc limit 1; + Tìm giá cao article SELECT article, max(price) as price FROM shop GROUP BY article; + -+ -+ | article | price | + -+ -+ | 0001 | 3.99 | | 0002 | 10.99 | | 0003 | 1.69 | | 0004 | 19.95 | + -+ -+ Trang: 16 CuuDuongThanCong.com https://fb.com/tailieudientucntt My SQL Documentation (sưu tầm) + cho article, tìm dealer với giá mắc Với ANSI SQL, bạn làm sau: SELECT article, dealer, price FROM shop s1 WHERE price=(SELECT MAX(s2.price) FROM shop s2 WHERE s1.article = s2.article); Nhưng với mysql, bạn làm theo bước sau: a Lấy list giá trị (article, maxprice), dùng bảng tạm thời b So sánh giá trị bảng shop với giá trị bảng tạm thời rút kết CREATE TEMPORARY TABLE tmp ( article INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL, price DOUBLE(16,2) DEFAULT '0.00' NOT NULL); LOCK TABLES shop read; INSERT INTO tmp SELECT article, MAX(price) FROM shop GROUP BY article; SELECT shop.article, dealer, shop.price FROM shop, tmp WHERE shop.article=tmp.article AND shop.price=tmp.price; UNLOCK TABLES; DROP TABLE tmp; + -+ + -+ | article | dealer | price | + -+ + -+ | 0001 | B | 3.99 | | 0002 | A | 10.99 | | 0003 | C | 1.69 | | 0004 | D | 19.95 | + -+ + -+ + Dùng user varialbe: Bạn sử dụng biến riêng bạn Điều làm cho bạn dễ dàng cho ví dụ trước kia: select @min_price:=min(price), @max_price:=max(price) from shop; select * from shop where price = @min_price or price = @max_price; + -+ + -+ | article | dealer | price | + -+ + -+ | 0003 | D | 1.25 | | 0004 | D | 19.95 | + -+ + -+ Đó tất mysql Nếu bạn thích thú với mySQL, tơi xin giới thiệu chương trình phpMyAdmin phpMyAdmin chương trình mySQL Client mạnh viết PHP Bạn dùng phpMyAdmin để truy cập vào database quản lý mySQL từ browser end Trang: 17 CuuDuongThanCong.com https://fb.com/tailieudientucntt ... tin sở liệu bảng: Một bạn quên tên sở liệu tên bảng, bạn muốn tìm cấu trúc bảng MySQL cho phép bạn làm điều qua số câu lệnh Bạn đă làm việc với SHOW DATABASES; bạn tìm xem DATABASE sử dụng: mysql> ... items Như vậy, ta sử dụng article dealer lảm primary key Bây giở, sử dụng database test có sẳn mysql để làm thí dụ này: mysql> use test; Database changed Bạn tạo bảng sau: mysql> -> -> -> ->... câu lệnh c tiếp tục chuổi trước Tạo sử dụng sở liệu (database) Dùng lệnh show để xem có database server mysql> show databases; + + | Database | + + | mysql | | test | + + Trong ví dụ

Ngày đăng: 08/12/2021, 15:35

HÌNH ẢNH LIÊN QUAN

3. mysql đưa ra kết quả dưới dạng 1 bảng (table) gồm các cột (column) và hàng (row). Hàng đầu tiên cho biết Nhãn (label) của từng trườ ng (field) - Sử dụng mysql  moin cơ sở dữ liệu
3. mysql đưa ra kết quả dưới dạng 1 bảng (table) gồm các cột (column) và hàng (row). Hàng đầu tiên cho biết Nhãn (label) của từng trườ ng (field) (Trang 1)
b. Tạo bảng (table) - Sử dụng mysql  moin cơ sở dữ liệu
b. Tạo bảng (table) (Trang 3)
Ngoài ra, bạn cũng có thể dùng tập tin text để đưa record vào bảng. Cách này - Sử dụng mysql  moin cơ sở dữ liệu
go ài ra, bạn cũng có thể dùng tập tin text để đưa record vào bảng. Cách này (Trang 4)
10. Làm việc với nhiều bảng: - Sử dụng mysql  moin cơ sở dữ liệu
10. Làm việc với nhiều bảng: (Trang 13)
vậy, chúng ta hãy cùng nhau nghiên cứu MYSQL trên nhiều bảng. - Sử dụng mysql  moin cơ sở dữ liệu
v ậy, chúng ta hãy cùng nhau nghiên cứu MYSQL trên nhiều bảng (Trang 13)
o Khi kết hợp từ nhiều bảng, bạn cẩn phải xác định bảng này gán với bảng kia như thế nào - Sử dụng mysql  moin cơ sở dữ liệu
o Khi kết hợp từ nhiều bảng, bạn cẩn phải xác định bảng này gán với bảng kia như thế nào (Trang 14)
Đôi khi, bạn không cần phải co 2 bảng để có thể kết hợp lại với nhau. Điều này có nghĩa là bạn cũng có thể kết hợp 1 bảng với chính nó - Sử dụng mysql  moin cơ sở dữ liệu
i khi, bạn không cần phải co 2 bảng để có thể kết hợp lại với nhau. Điều này có nghĩa là bạn cũng có thể kết hợp 1 bảng với chính nó (Trang 15)
b. So sánh giá trị của bảng shop với giá trị của bảng tạm thời và rút ra kết quả.  - Sử dụng mysql  moin cơ sở dữ liệu
b. So sánh giá trị của bảng shop với giá trị của bảng tạm thời và rút ra kết quả. (Trang 17)
a. Lấy 1 list các giá trị (article, maxprice), dùng bảng tạm thời. - Sử dụng mysql  moin cơ sở dữ liệu
a. Lấy 1 list các giá trị (article, maxprice), dùng bảng tạm thời (Trang 17)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w