sql trong mysql

42
Lê Nguyên Sinh – HNUE

Upload: ban-gia

Post on 29-Apr-2015

115 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: SQL Trong Mysql

Lê Nguyên Sinh – HNUE

Page 2: SQL Trong Mysql

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

Page 3: SQL Trong Mysql

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

Page 4: SQL Trong Mysql

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.

Page 5: SQL Trong Mysql

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

Page 6: SQL Trong Mysql
Page 7: SQL Trong Mysql

Cú pháp:• Show databases;

Page 8: SQL Trong Mysql

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;

Page 9: SQL Trong Mysql

Cú pháp:• Drop database tên_CSDL;

Ví dụ:• Drop database vidu;

Page 10: SQL Trong Mysql

Cú pháp:• ALTER DATABASE Tên_CSDL 

DEFAULT CHARACTER SET utf8 

COLLATE tên_charset

Page 11: SQL Trong Mysql

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

Page 12: SQL Trong Mysql

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

Page 13: SQL Trong Mysql

Cú pháp:• Show tables [in database] [like ‘%tukhoa%’]

Ví dụ:• Show tables;• Show tables in vidu;• Show tables in vidu like ‘%lop%’;

Page 14: SQL Trong Mysql

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))

Page 15: SQL Trong Mysql

Cú pháp:• SHOW COLUMNS FROM tên_bảng;

Page 16: SQL Trong Mysql

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);

Page 17: SQL Trong Mysql

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);

Page 18: SQL Trong Mysql

Cú pháp:• ALTER TABLE tên_bảng DROP tên_cột;

Page 19: SQL Trong Mysql

Cú pháp:• ALTER TABLE tên_bảng ADD INDEX

(tên_cột);

Page 20: SQL Trong Mysql

Cú pháp:• ALTER TABLE tên_bảng DROP INDEX tên cột

index

Page 21: SQL Trong Mysql

Cú pháp:• ALTER TABLE tên_cũ RENAME TO tên_mới

Page 22: SQL Trong Mysql

Cú pháp:• DROP TABLE tên_bảng;

Page 23: SQL Trong Mysql
Page 24: SQL Trong Mysql

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.

Page 25: SQL Trong Mysql

Cú pháp:• DELETE FROM tên_bảng WHERE điều_kiện

Page 26: SQL Trong Mysql

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

Page 27: SQL Trong Mysql

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

Page 28: SQL Trong Mysql

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.

Page 29: SQL Trong Mysql

• Là các phép toán so sánh cơ bản: =, <>, >, <, <=, >=

• Ví dụ: Select * from nhanvien where luongcoban<3;

Page 30: SQL Trong Mysql

• Đượ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)

Page 31: SQL Trong Mysql

• Đượ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’;

Page 32: SQL Trong Mysql

• 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;

Page 33: SQL Trong Mysql

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

Page 34: SQL Trong Mysql

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

Page 35: SQL Trong Mysql

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

Page 36: SQL Trong Mysql

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

Page 37: SQL Trong Mysql

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;

Page 38: SQL Trong Mysql

Select distinct From Where Group by Having Order by Limit

Page 39: SQL Trong Mysql

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%’

Page 40: SQL Trong Mysql

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%’

Page 41: SQL Trong Mysql

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)

Page 42: SQL Trong Mysql

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.