sql trong mysql
TRANSCRIPT
Lê Nguyên Sinh – HNUE
Cách thực thi các truy vấn SQL Các truy vấn làm việc với các CSDL Các truy vấn thao tác với bảng Các truy vấn thao tác với bản ghi
Cách 1: Truy vấn thông qua PHPMyAdmin
Cách 2: Truy vấn qua MySQL Console Cách 3: Truy vấn từ xa thông qua các
công cụ MySQL Client
Mở cửa sổ phpmyadmin:• http://localhost/phpmyadmin
Bật cửa sổ SQL• Biểu tượng cửa sổ SQL nằm bên cạnh biểu
tượng Home của phpmyadmin Nhập câu lệnh SQL và bấm OK.
Mở cửa sổ Command• Start->Run->cmd[Enter]
Chuyển tới thư mục chứa file mysql.exe• Cd c:\xampp\mysql\bin
Gọi file mysql với 2 tham số username và password:• Mysql –u root –p[Enter]
Nhập mật khẩu tương ứng với user Nhập các truy vấn SQL và bấm Enter để
thực thi
Cú pháp:• Show databases;
Cú pháp:• Create database tên_CSDL;
Ví dụ:• Create database vidu;
Chú ý: Để tạo CSDL hỗ trợ tiếng Việt với charset mặc định là UTF8:•CREATE DATABASE Tên_CSDL DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Cú pháp:• Drop database tên_CSDL;
Ví dụ:• Drop database vidu;
Cú pháp:• ALTER DATABASE Tên_CSDL
DEFAULT CHARACTER SET utf8
COLLATE tên_charset
Cú pháp:• Use tên_CSDL;
Chú ý: • Chỉ dùng trên MySQL Console• Không có tác dụng trên phpmyadmin
Các nội dung chính:• Xem danh sách bảng trong CSDL• Tạo bảng• Chỉnh sửa cấu trúc bảng• Tạo/xoá trường chỉ số (index)• Xoá bảng
Cú pháp:• Show tables [in database] [like ‘%tukhoa%’]
Ví dụ:• Show tables;• Show tables in vidu;• Show tables in vidu like ‘%lop%’;
Cú pháp:• CREATE TABLE tên_bảng (
Tên_trường_1 kiểu_dữ_liệu [(độ dài)] [Tham số],
Tên_trường_2 kiểu_dữ_liệu [(độ dài)] [Tham số],Tên_trường_3 kiểu_dữ_liệu [(độ dài)] [Tham số],
)Ví dụ:Create table baihat (id int
auto_increment primary key, name varchar(20))
Cú pháp:• SHOW COLUMNS FROM tên_bảng;
Cú pháp:• ALTER TABLE tên_bảng ADD COLUMN
tên_cột kiểu_dữ_liệu [Thông tin khác] Ví dụ:
• Alter table bai_hat add column tac_gia varchar (15);
Cú pháp:• ALTER TABLE tên_bảng CHANGE tên_cột_cũ
tên_cột_mới kiểu_dữ_liệu [Thông tin bổ sung]
Ví dụ:• Alter table bai_hat change tac_gia tacgia
varchar (20);
Cú pháp:• ALTER TABLE tên_bảng DROP tên_cột;
Cú pháp:• ALTER TABLE tên_bảng ADD INDEX
(tên_cột);
Cú pháp:• ALTER TABLE tên_bảng DROP INDEX tên cột
index
Cú pháp:• ALTER TABLE tên_cũ RENAME TO tên_mới
Cú pháp:• DROP TABLE tên_bảng;
Cú pháp:• INSERT INTO tên_bảng (trường1, trường2,…)
values (giá trị1, giá trị 2…) Chú ý:
• Số lượng và kiểu dữ liệu của các giá trị phải bằng số lượng và kiểu dữ liệu của các trường tương ứng
• Đối với các giá trị dạng chuỗi hoặc ngày tháng, thời gian thì cần phải bao quanh giá trị bởi cặp dấu nháy đơn, kiểu số thì không cần
• Đối với trường auto increment thì không cần khai báo tên trường cũng như giá trị tương ứng.
Cú pháp:• DELETE FROM tên_bảng WHERE điều_kiện
Cú pháp:• UPDATE tên_bảng SET cột1=giá trị1, cột 2=
giá trị 2… WHERE điều_kiện
Cú pháp cơ bản:• Select * from tên_bảng• Select * from tên_bảng where điều_kiện• Select trường1, trường2,… from tên_bảng
where điều_kiện
Là các phép so sánh trả về true/false Có thể kết hợp nhiều điều kiện qua các
phép toán and hoặc or Các điều kiện cơ bản:
• So sánh đơn giản• In, not in• Like• Between … and
Các điều kiện phức hợp: sử dụng kết hợp với các hàm hoặc các câu truy vấn lồng.
• Là các phép toán so sánh cơ bản: =, <>, >, <, <=, >=
• Ví dụ: Select * from nhanvien where luongcoban<3;
• Được sử dụng để kiểm tra giá trị có nằm trong một tập hợp cho trước hay không:
• Trả về true nếu như cột tìm kiếm có giá trị nằm trong (in) hoặc không nằm trong (not in) tập giá trị cho trước
• Ví dụ: Lấy danh sách các nhân viên có id nằm trong tập
2,3,4: Select * from nhanvien where id in (2,3,4)
Lấy danh sách nhân viên có id nằm ngoài tập 2,3,4: Select * from nhanvien where id not in (2,3,4)
• Được dùng để tìm kiếm theo từ khoá với các trường chuỗi.
• Cú pháp chung: LIKE ‘%từ_khoá%’ LIKE ‘%từ_khoá’ LIKE ‘từ_khoá%’
• Trả về các bản ghi có chứa các từ khoá ở các vị trí tương ứng.
• Ví dụ: Select * from nhanvien where hoten like
‘%Hương’;
• Trả về các bản ghi có giá trị của trường nằm giữa hai giá trị xác định
• Cú pháp: Between x and y
• Ví dụ: Select * from nhanvien where manhanvien
between 2 and 20;
Sử dụng từ khoá order by sau where:• Order by trường_1 asc|desc trường_2 asc|
desc Ví dụ
• Select * from nhanvien where hoten like ‘%Hương’ order by ngaysinh desc
Sử dụng để loại bỏ các bản ghi có các giá trị trùng nhau
Cú pháp:• Select distinct trường1, trường 2… from
tên_bảng Ví dụ:
• Select distinct hoten, ngaysinh from nhanvien
Sử dụng để gom nhóm và loại bỏ các bản ghi trùng nhau
Có thể kết hợp với các hàm khác Cú pháp:
• Select * from tên_bảng where điều_kiện group by tên_trường
Ví dụ: • Lấy danh sách các bản ghi có user_id=1 và
nhóm theo trường user_id (chỉ ra duy nhất 1 bản ghi):
• SELECT * from user_group where user_id=1 group by user_id
Cho phép thiết lập điều kiện thay vì dùng where
Có thể kết hợp với group by Cú pháp: having điều_kiện Ví dụ:
• Select * from users having id>10
Cú pháp: limit x, y• X: Bản ghi bắt đầu• Y: Số bản ghi cần lấy
Ví dụ:• Select * from users limit 4,20;
Select distinct From Where Group by Having Order by Limit
Cách 1: Truy vấn trực tiếp• Select trường1, trường2,.. From bảng1, bảng 2…
Cách 2: Sử dụng phép toán JOIN• SELECT bảng1.trường1, bảng2.trường2,
bảng1.trường2…• FROM bảng1 LEFT JOIN|INNER JOIN| RIGHT JOIN bảng 2• ON điều_kiện_nối• WHERE các điều kiện khác• …
Ví dụ:• Select user.name, group.name from user inner join
group on group.user_id=user.id where user.name like ‘%abc%’
Cho phép đặt tên trường, bảng… bằng bí danh (alias)
Giúp cho truy vấn ngắn gọn hơn Giảm thiểu sự nhập nhằng giữa các
trường trùng tên trên các bảng khác nhau Sử dụng: tên trường|bảng AS bí_danh Ví dụ:
• Select a.name as username, b.name as groupname from user as a inner join group as b on a.user_id=b.id where a.name like ‘%abc%’
Cho phép sử dụng một câu lệnh SQL trong một câu lệnh SQL khác
Câu lệnh SQL con phải trả kết quả phù hợp với ngữ cảnh sử dụng
Có thể dùng câu lệnh SQL con như là một bảng ảo
Ví dụ:• Select ten from (select * from users where
id>4) as bangmoi• Select * from users where id in (select user_id
from groups where group_id=4)
Cho phép nối nhiều câu lệnh SQL lại với nhau để cho ra một tập bản ghi trả về duy nhất
Cú pháp:• Sql1 UNION sql2 UNION sql3…
Chú ý: Số lượng và kiểu dữ liệu của các trường trong các truy vấn sql1, sql2, sql3… phải tương xứng nhau
VD:• Select ten from users UNION select name from
groups.