1. Trang chủ
  2. » Công Nghệ Thông Tin

MySQL truy vấn dữ liệu

29 300 1

Đ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 29
Dung lượng 851 KB

Nội dung

Dùng để thực hiện tổng hợp dữ liệu được lưu trữ trong một hay nhiều bảng thành một tập kết quả. Dữ liệu trong tập kết có thể được lọc theo điều kiện và sắp xếp theo nhu cầu của người sử dụng.Truy vấn select còn được dùng để thực hiện việc tính toán thống kê trên tập dữ liệu kết quả trả về của nó.

• Dùng để thực tổng hợp liệu lưu trữ hay nhiều bảng thành tập kết quả. • Dữ liệu tập kết lọc theo điều kiện xếp theo nhu cầu người sử dụng. • Truy vấn select dùng để thực việc tính toán thống kê tập liệu kết trả nó. • Cú pháp: SELECT * | Danh_sách_các_cột FROM Tên_bảng; – Danh_sách_cột: Tên cột có bảng cần lấy liệu – * : Lấy tất cột bảng – Tên_bảng: Tên bảng cần lấy liệu • Ví dụ: SELECT Makh, tenkhoa FROM Khoa • Để lấy liệu từ nhiều bảng, dùng SELECT FROM kết hợp với mệnh đề JOIN để kết nối hai bảng có quan hệ với nhau. • Cú pháp: SELECT * | Danh_sách_các_cột FROM Tên_bảng_1 INNER | LEFT [OUTER] | RIGHT [OUTER] | FULL [OUTER] JOIN Tên_bang_2 ON Điều_kiện_ghép_nối; • Trong đó: – INNER JOIN: Là phép ghép nối không phân biệt thứ tự hai bảng, điều kiện ghép nối sau từ khóa ON. Thông thường điều kiện ghép nối sau từ khóa ON điều kiện so sánh bằng. – LEFT JOIN: Ưu tiên lấy toàn dòng Ten_bang_1 nối với dòng Ten_bang_2 thỏa mãn Điều_kiện_kết_nối – RIGHT JOIN: Ngược lại LEFT JOIN – FULL JOIN: Lấy dòng có Ten_bang_1 Ten_bang_2, dòng có Ten_bang_2 Ten_bang_1 dòng thỏa mãn điều kiện kết nối – Điều kiện ghép nối : gần giống điều kiện mệnh đề Where • Sử dụng mệnh đề WHERE kết hợp với mệnh đề SELECT FROM để lọc dòng liệu thỏa mãn điều kiện đưa ra. • Cú pháp: SELECT * | Danh_sách_các_cột FROM Tên_bảng WHERE ; – Điều_kiện_lọc: biểu thức luận lý làm điều kiện định việc lọc mẩu tin. Có thể sử dụng phép toán sánh, logic, Like kí tự đại diện %, [] • Ví dụ: Lấy sinh viên thuộc khoa Tin học SELECT * FROM Sinhvien WHERE Makh=‘TH’ • Chú ý xây dựng điều kiện lọc – Giá trị kiểu chuỗi cặp dấu nháy đơn ‘’ – Khi dùng giá trị kiểu so sánh với cột kiểu datetime, giá trị đặt cặp dấu nháy đơn ‘’ nên nhập theo dạng nămtháng-ngày. Ví dụ: ‘2005-12-31’ – Để so sánh với giá trị NULL, dùng phép toán IS. Ví dụ @a is null – Sử dụng phép toán Like field chọn để lọc liệu kiểu chuỗi. Like phép toán so sánh gần sử dụng với kí tự đại diện % (thay cho chuỗi), _ (thay cho kí tự), Ví dụ: + Biểu thức lọc sinh viên có tên bắt dầu chữ T: TenSv Like ‘T%’ • Dùng để giới hạn dòng liệu trùng tập kết quả. • Cú pháp SELECT [DISTINCT] Danh_sách_các_cột FROM Tên_bảng WHERE ; • Ví dụ • Được sử dụng với SELECT FROM muốn xếp dòng tập kết theo cột biểu thức đó. • Cú pháp: SELECT Danh_sách_các_cột FROM Tên_bảng WHERE ORDER BY Tên_cột_1 [ASC | DESC], Tên_cột_2 [ASC | DESC],… – Chú ý: Tên cột để xếp thể bí danh(alias) danh số thự tự cột Danh_sách_các_cột. • Ví dụ: Đưa danh sách sinh viên xếp tên từ A>Z, học bổng theo chiều giảm dần SELECT Masv, Hosv, Tensv, Ngaysinh, Hocbong FROM sinhvien ORDER BY Tensv, Hocbong DESC • Ví dụ – Liệt kê sinh viên thi nhiều môn, gồm mã sinh viên, tên sinh viên, số môn thi SELECT Sinhvien.Masv, hosv+ ' ' + Tensv as Hoten, count(*) as SoMonthi FROM SinhVien Inner Join Ketqua On ketqua.masv=SinhVien.masv GROUP BY Sinhvien.Masv, hosv+ ' ' + Tensv HAVING count(*)>=4 – Cho biết trung bình điểm thi môn, lấy môn có trung bình điểm thi lớn 6. Thông tin gồm: mã môn, tên môn, điểm trung bình SELECT monhoc.Mamh, Tenmh, avg(diem) FROM monhoc INNER JOIN Ketqua ON Monhoc.mamh=Ketqua.mamh GROUP BY monhoc.Mamh, Tenmh HAVING avg(diem)>6 – Liệt kê sinh viên thi rớt môn (có điểm=2 – Cho biết khoa có sinh viên Nam trở lên. Thông tin gồm có mã khoa, tên khoa, tổng số sinh viên nam SELECT Khoa.Makh, Tenkh, Count(*) as TongSVNam FROM khoa INNER JOIN sinhvien ON Khoa.makh=SinhVien.makh WHERE Phai=0 GROUP BY Khoa.Makh, Tenkh HAVING Count(*)>5 • Mệnh đề UNION cho phép ghép kết câu truy vấn thứ hai vào kết câu truy vấn thứ nhất: • Cú pháp: SELECT Danh_sách_các_cột FROM Tên_bảng_1 [WHERE….] UNION [ DISTINCT | ALL] SELECT Danh_sách_các_cột FROM Tên_bảng_2 [WHERE….] } } Câu truy vấn thứ Mệnh đề nối hai truy vấn Câu truy vấn thứ hai Mặc định, ghép nối kết hai truy vấn, dòng trùng lấy một. Nếu muốn lấy tất dòng trùng thêm từ khóa ALL sau UNION • Ví dụ : SELECT * FROM sinhvien WHERE makh='TH' UNION ALL SELECT * FROM sinhvien WHERE makh='TR' – Cho biết số dòng trả hai truy vấn sau Câu truy vấn SELECT * FROM sinhvien UNION SELECT * FROM sinhvien Câu truy vấn SELECT * FROM sinhvien UNION ALL SELECT * FROM sinhvien • Cú pháp CREATE TABLE Tên_bảng_mới SELECT Danh_sách_các_cột FROM Tên_bảng_có_trong_CSDL [ WHERE ] • Lệnh thường ứng dụng muốn tạo bảng lưu liệu để kiểm thử (test). • Ví dụ: • Dùng để lấy ghi dựa vị trí chúng tập dòng chọn SELECT. LIMIT dùng với tham số hai tham số. LIMIT số_dòng_cần_lấy LIMIT vị_trí, số_dòng_cần_lấy • Ví dụ SELECT * FROM sinhvien ORDER BY hocbong LIMIT SELECT * FROM sinhvien ORDER BY hocbong LIMIT 20, 10 lấy sinh viên có học bổng cao lấy 10 dòng dòng có vị trí 20 • Ví dụ 1: Lấy sinh viên có học bổng cao SELECT Masv, Hosv, Tensv, Ngaysinh, Hocbong FROM sinhvien ORDER BY Hocbong DESC LIMIT • Ví dụ 2: Lấy ngẫu nhiên sinh viên bảng sinhvien SELECT Masv, Hosv, Tensv, Ngaysinh, Hocbong FROM sinhvien ORDER BY LIMIT RAND() • Là câu truy vấn SELECT lồng vào câu truy vấn khác nhằm thực truy vấn tính toán phức tạp. • Một số ý sử dụng truy vấn con: – Truy vấn bắt buộc phải đặt cặp ngoặc ( ) – Chỉ phép tham chiếu đến tên cột biểu thức trả giá trị truy vấn – Kết trả truy vấn trả giá trị đơn lẻ, danh sách giá trị Truy vấn viết phần Danh_sách_các_cột câu truy vấn phải câu truy vấn trả giá trị. Còn truy vấn sử dụng mệnh đề HAVING, WHERE sau từ khóa IN, NOT IN, ANY, ALL, hàm Exists trả danh sách giá trị • Một số phép toán thường sử dụng sử dụng truy vấn – – – – – Hàm Exists IN NOT IN ANY ALL Phép toán IN tương đương với =ANY Phép toán NOT IN tương đương với ANY • Ví dụ 1: Đưa khoa chưa có sinh viên SELECT * FROM khoa WHERE khoa NOT IN (SELECT Makh FROM sinhvien) • Truy vấn cập nhật phép thực hện thao cập nhật liệu như: thêm mới, xóa, sửa liệu • Lệnh INSERT cho phép thêm dòng nhiều dòng dự liệu vào bảng. • Cú pháp thêm dòng liệu vào bảng INSERT INTO VALUES (Danh_sách_cột) (Danh_sách_giá_trị) • Cú pháp thêm nhiều dòng liệu vào bảng INSERT INTO SELECT FROM (Danh_sách_cột) Danh_sách_cột Bảng_dữ_liệu_nguồn WHERE Điều_kiện_lọc • Một số lưu ý thêm – Khóa không trùng không bỏ trống. Nếu khóa cột AUTO_INCREMENT (tự động tăng) không gán giá trị thêm mới. – Với cột khóa ngoại: Giá trị cho cột khóa ngoại phải tồn cột khóa bảng liên quan. – Danh sách giá trị phải tương ứng với danh sách cột • Cú pháp UPDATE [LOW_PRIORITY] [IGNORE]Tên_bảng SET Tên_cột_1=giá_trị_1 , Tên_cột_2=giá_trị_2, … WHERE Điều_kiện_Cập_nhật – Trong • Từ khóa LOW_PRIORITY dùng để trì hoãn việc thực thi câu lệnh UPDATE ứng dụng khách đọc liệu CSDL tiến hành thực câu lệnh UPDATE. • Từ khóa IGNORE sử dụng để cần thực thi lệnh update xảy lỗi trình thực câu lệnh UPDATE. • Cú pháp xóa dòng liệu từ bảng DELETE [LOW_PRIORITY] [IGNORE] FROM Tên_bảng WHERE Điều_kiện_xoá • Cú pháp xóa dòng liệu từ nhiều bảng DELETE Tên_bảng_1, Tên_bảng_2 FROM Tên_bảng_1 INNER JOIN Tên_bảng_2 ON Điều_kiện_ghép_dữ_liệu WHERE Điều_kiện_xoá Hoặc DELETE Tên_bảng_1, Tên_bảng_2 USING Tên_bảng_1, Tên_bảng_2 WHERE Điều_kiện_xoá • Ví dụ 1: xóa sinh viên khoa anh văn DELETE FROM sinhvien WHERE sinhvien.makh='AV' • Ví dụ 2: Xóa khoa tin học đồng thời xóa sinh viên thuộc khoa tin học DELETE khoa, sinhvien FROM khoa INNER JOIN sinhvien ON khoa.makh=sinhvien.makh WHERE sinhvien.makh='TH' Hoặc DELETE FROM khoa, sinhvien USING khoa INNER JOIN sinhvien ON khoa.makh=sinhvien.makh WHERE khoa.makh=sinhvien.makh AND sinhvien.makh='TH' [...]... câu truy vấn SELECT được lồng vào các câu truy vấn khác nhằm thực hiện các truy vấn tính toán phức tạp • Một số chú ý khi sử dụng truy vấn con: – Truy vấn con bắt buộc phải đặt trong cặp ngoặc ( ) – Chỉ được phép tham chiếu đến tên một cột hoặc một biểu thức sẽ trả về giá trị trong truy vấn con – Kết quả trả về của truy vấn con có thể trả về là một giá trị đơn lẻ, hoặc một danh sách giá trị Truy vấn. .. sinhvien) • Truy vấn cập nhật phép thực hện các thao cập nhật dữ liệu như: thêm mới, xóa, sửa dữ liệu • Lệnh INSERT cho phép thêm một dòng mới hoặc nhiều dòng dự liệu vào bảng • Cú pháp thêm một dòng dữ liệu mới vào bảng INSERT INTO VALUES (Danh_sách_cột) (Danh_sách_giá_trị) • Cú pháp thêm nhiều dòng dữ liệu mới vào bảng INSERT INTO SELECT FROM (Danh_sách_cột) Danh_sách_cột Bảng _dữ_ liệu_ nguồn... • Mệnh đề UNION cho phép ghép kết quả của câu truy vấn thứ hai vào kết quả của câu truy vấn thứ nhất: • Cú pháp: SELECT Danh_sách_các_cột FROM Tên_bảng_1 [WHERE….] UNION [ DISTINCT | ALL] SELECT Danh_sách_các_cột FROM Tên_bảng_2 [WHERE….] } } Câu truy vấn thứ nhất Mệnh đề nối hai truy vấn Câu truy vấn thứ hai Mặc định, khi ghép nối kết quả của hai truy vấn, trong các dòng trùng nhau thì chỉ lấy ra... giá trị Truy vấn con được viết ở phần Danh_sách_các_cột của câu truy vấn chính phải là câu truy vấn con chỉ trả về duy nhất một giá trị Còn truy vấn con được sử dụng trong các mệnh đề HAVING, WHERE hoặc sau các từ khóa IN, NOT IN, ANY, ALL, hàm Exists thì có thể trả về danh sách các giá trị • Một số phép toán thường sử dụng khi sử dụng truy vấn con – – – – – Hàm Exists IN NOT IN ANY... makh='TR' – Cho biết số dòng trả về của hai truy vấn sau Câu truy vấn 1 SELECT * FROM sinhvien UNION SELECT * FROM sinhvien Câu truy vấn 2 SELECT * FROM sinhvien UNION ALL SELECT * FROM sinhvien • Cú pháp CREATE TABLE Tên_bảng_mới SELECT Danh_sách_các_cột FROM Tên_bảng_có_trong_CSDL [ WHERE ] • Lệnh thường được ứng dụng khi muốn tạo bảng sao lưu dữ liệu để kiểm thử (test) • Ví dụ: • Dùng... không có bất kì ứng dụng khách nào đọc dữ liệu trên CSDL nữa thì mới tiến hành thực hiện câu lệnh UPDATE • Từ khóa IGNORE được sử dụng để chỉ ra cần thực thi lệnh update ngay cả khi xảy ra lỗi trong quá trình thực hiện câu lệnh UPDATE • Cú pháp xóa dòng dữ liệu từ một bảng DELETE [LOW_PRIORITY] [IGNORE] FROM Tên_bảng WHERE Điều_kiện_xoá • Cú pháp xóa các dòng dữ liệu từ nhiều bảng DELETE Tên_bảng_1,... ta có thể nhóm dữ liệu của các dòng trong một bảng và có thể sử dụng các hàm tính toán đi kèm để thực hiện thống kê trên mỗi nhóm • Cú pháp SELECT Danh_sách_các_cột, Các_hàm_thống_kê FROM Tên_bảng WHERE GROUP BY Danh_sách_các_cột_chọn_nhóm ORDER BY Tên_cột_1 [ASC | DESC], Tên_cột_2 [ASC | DESC],… – Các_hàm_thống_kê: SUM, COUNT, AVG, MIN, MAX – Danh_sách_các_cột_nhóm _dữ_ liệu: Tên các... lọc dữ liệu sau khi đã được tính toán thống kê theo nhóm Having chỉ được dùng khi có Group By • Cú pháp SELECT Danh_sách_các_cột, Các_hàm_thống_kê FROM Tên_bảng [ WHERE ] GROUP BY Danh_sách_các_cột_chọn_nhóm HAVING [ ORDER BY Tên_cột_1 [ASC | DESC], Tên_cột_2 [ASC | DESC],…] – Các_hàm_thống_kê: SUM, COUNT, AVG, MIN, MAX – Danh_sách_các_cột_nhóm _dữ_ liệu: ... BY Danh_sách_các_cột_chọn_nhóm ORDER BY Tên_cột_1 [ASC | DESC], Tên_cột_2 [ASC | DESC],… – Các_hàm_thống_kê: SUM, COUNT, AVG, MIN, MAX – Danh_sách_các_cột_nhóm _dữ_ liệu: Tên các cột được dùng để nhóm dữ liệu • Ví dụ – Cho biết khoa nào có đông sinh viên nhất, gồm Mã khoa, Tên khoa, Tổng số sinh viên SELECT Top 1 With ties Khoa.Makh,Tenkhoa, Count(*) As TongSoSV FROM Khoa Inner Join SinhVien On Khoa.makh=SinhVien.makh... [ ORDER BY Tên_cột_1 [ASC | DESC], Tên_cột_2 [ASC | DESC],…] – Các_hàm_thống_kê: SUM, COUNT, AVG, MIN, MAX – Danh_sách_các_cột_nhóm _dữ_ liệu: Tên các cột được dùng để nhóm dữ liệu • Ví dụ – Liệt kê các sinh viên thi nhiều hơn 4 môn, gồm mã sinh viên, tên sinh viên, số môn thi SELECT Sinhvien.Masv, hosv+ ' ' + Tensv as Hoten, count(*) as SoMonthi FROM SinhVien Inner Join . tổng hợp dữ liệu được lưu trữ trong một hay nhiều bảng thành một tập kết quả. • Dữ liệu trong tập kết có thể được lọc theo điều kiện và sắp xếp theo nhu cầu của người sử dụng. • Truy vấn select. kê trên tập dữ liệu kết quả trả về của nó. • Cú pháp: – Danh_sách_cột: Tên các cột có trong bảng cần lấy dữ liệu – * : Lấy tất cả các cột của bảng – Tên_bảng: Tên của bảng cần lấy dữ liệu • Ví. quả của hai truy vấn, trong các dòng trùng nhau thì chỉ lấy ra một. Nếu muốn lấy tất cả các dòng trùng nhau chúng ta thêm từ khóa ALL sau UNION } Câu truy vấn thứ nhất } Câu truy vấn thứ hai Mệnh

Ngày đăng: 23/09/2015, 16:12

TỪ KHÓA LIÊN QUAN