DQL-Data Query Language/Ngôn Ngữ Truy Vấn: Bao gồm các lệnh cho phép
truy vấn dữ liệu mà không làm thay đổi dữ liệu hoặc các đối tượng trong CSDL
NỘI DUNG
A. CHUẨN BỊ DỮ LIỆU
1. Tạo bảng (phong_ban, nhan_vien, du_an, quanly_duan)
2. Chèn dữ liệu mẫu
B. THỰC HIỆN TRUY VẤN
I. SELECT, CONCAT, AS
1. Truy vấn hiển thị toàn bộ nội dung trong bảng nhan_vien
2. Truy vấn hiển thị các cột: ho_nv, ten_nv, nam_sinh trong bảng nhan_vien
3. Truy vấn hiển thị các cột: ho_nv, ten_nv, nam_sinh trong bảng nhan_vien,
gộp 2 côt ho_nv và ten_nv thành 1 cột
4. Truy vấn hiển thị các cột: ho_nv, ten_nv, nam_sinh trong bảng nhan_vien,
gộp 2 côt ho_nv và ten_nv thành 1 cột và đặt bí danh cho cột là "Họ và Tên"
5. Truy vấn hiển thị cột: ten_nv trong bảng nhan_vien, và loại bỏ các dòng
trùng nhau
II. ORDER BY
1. Hiển thị danh sách các nhân gồm: ho_nv, ten_nv, luong và lương sắp xếp
giảm dần theo cột luong
2. Hiển thị danh sách các nhân gồm: ho_nv, ten_nv, luong và lương sắp xếp
giảm dần theo cột luong, nếu lương bằng nhau thì sắp xếp tăng dần (A->Z)
của cột ten_nv
III. WHERE
Hiển thị thông tin nhân viên có tên: "dan"
IV. OR
1. Hiển thị thông tin nhân viên có phongban_id là: PB001 hoặc PB002
2. Hiển thị thông tin nhân viên có luong là: 800, 1000, 1500
V. [NOT] IN
Hiển thị thông tin nhân viên có luong là: 800, 1000, 1500
VI. AND
Hiển thị thông tin nhân viên có phongban_id là: PB001 hoặc PB002 và luong
> 1000
VII. [NOT] BETWEEN … AND
Hiển thị nhân viên có mức lương trong khoảng 1000 đến 2000
VIII. [NOT] LIKE
1. Hiển thị nhân viên có họ là: Tran
2. Hiển thị nhân viên có họ có chữ: Giap
3. Hiển thị nhân viên có tên có chiều dài là 3 ký tự và bắt đầu là chữ D
IX. IS [NOT] NULL
Hiện thị nhân viên chưa phân bổ bộ phận (căn cứ vào cột phongban_id)
X. AGGREGATE
1. Thống kê tổng số nhân viên
2. Thống kê tổng số nhân viên, và đổi tên cột đếm thành "Tổng số nhân viên"
3. Thống kê tổng số nhân viên nam/nữ
4. Tìm nhân viên có mức lương cao nhất
5. Tìm nhân viên có mức lương nhấp nhất
6. Tính mức lương trung bình của nhân toàn công ty
7. Tính tổng lương của nhân viên phòng ban có mã PB001
8. Hiển thị MIN, MAX, SUM, AVG của toàn thể nhân viên trên 1 dòng
XI. OPERATOR
1. Tính tuổi của nhân viên
2. Chỉ hiện thị các nhân viên có tuổi >30
3. Tăng thêm 200$ cho các nhân viên có mức lương thấp hơn 900$
XII. GROUP BY
Đếm số lượng nhân viên trong mỗi phòng
XIII. HAVING
1. Hiển thị tổng mức lương của mỗi phòng ban và chỉ hiển thị các nhóm/phòng
có tổng lương lớn hơn 15000$
2. Tính tổng lương công ty phải trả cho mỗi phòng ban, chỉ nhóm hàng nào có
cột lương >800$, chỉ hiển thị nhóm nào có tổng >10000$
XIV. LIMIT
1. Lấy ra 10 nhân viên có mức lương thấp nhất
2. Lấy ra 2 nhân viên có mức lương thấp nhất của phongban_id PB001, và lấy
từ vị trí thứ 6
TỔNG HỢP
1. Hiển thị mã phòng ban (phongban_id) và lương trung bình tương ứng từng phòng, chỉ lấy các hàng có mức lương trên 800$, chỉ hiển thị các phòng có lương trung bình > 1200$ và sắp xếp theo thứ tự giảm dần theo cột phongban_id và chỉ lấy 3 dòng
2. Hiển thị họ tên, giới tính của nhân viên, nếu giới tính = 1 thì hiển thị là nam, ngược lại là nữ
THỨ TỰ THỰC HIỆN CÁC CÂU LỆNH TRONG SQL
THỰC HIỆN
A. CHUẨN BỊ DỮ LIỆU
1. Tạo bảng (phong_ban, nhan_vien, du_an, quanly_duan)
CREATE TABLE phong_ban(
id char(5) NOT NULL,
ten_pb varchar(255) NOT NULL,
ma_tp int DEFAULT NULL,
PRIMARY KEY (id)
);
CREATE TABLE nhan_vien(
id int NOT NULL AUTO_INCREMENT,
ho_nv varchar(255) NOT NULL,
ten_nv varchar(10) NOT NULL,
nam_sinh date DEFAULT NULL,
dia_chi varchar(255) DEFAULT NULL,
gioi_tinh BOOLEAN DEFAULT NULL,
luong int DEFAULT NULL,
phongban_id varchar(5) DEFAULT NULL,
PRIMARY KEY (id),
FOREIGN KEY (phongban_id) REFERENCES phong_ban (id)
);
CREATE TABLE du_an(
id char(5) NOT NULL,
ten_duan varchar(255) DEFAULT NULL,
ngay_batdau date DEFAULT NULL,
ngay_ketthuc date DEFAULT NULL,
PRIMARY KEY (id)
);
CREATE TABLE quanly_duan(
duan_id char(5) NOT NULL,
nhanvien_id int NOT NULL,
ngay_thamgia date DEFAULT NULL,
ngay_ketthuc date DEFAULT NULL,
sogio int DEFAULT NULL,
vai_tro varchar(255) DEFAULT NULL,
PRIMARY KEY (duan_id, nhanvien_id),
FOREIGN KEY (duan_id) REFERENCES du_an (id),
FOREIGN KEY (nhanvien_id) REFERENCES nhan_vien (id))
;
2. Chèn dữ liệu mẫu
INSERT INTO phong_ban VALUES('PB001', 'Nhan Su', '1');
INSERT INTO phong_ban VALUES('PB002', 'Ke Toan', '2');
INSERT INTO phong_ban VALUES('PB003', 'Kinh Doanh', '3');
INSERT INTO phong_ban VALUES('PB004', 'San Xuat', '4');
INSERT INTO phong_ban VALUES('PB005', 'Phat Trien Mau', '5');
INSERT INTO phong_ban VALUES('PB006', 'QA', '6');
INSERT INTO phong_ban VALUES('PB007', 'Thu Mua', '7');
INSERT INTO phong_ban VALUES('PB008', 'Ky Thuat', '8');
INSERT INTO phong_ban VALUES('PB009', 'LAB', '9');
INSERT INTO phong_ban VALUES('PB010', 'ME', '10');
INSERT INTO phong_ban VALUES('PB011', 'San Xuat 1', '11');
INSERT INTO phong_ban VALUES('PB012', 'San Xuat 2', '12');
INSERT INTO phong_ban VALUES('PB013', 'San Xuat 3', '13');
INSERT INTO phong_ban VALUES('PB014', 'San Xuat 4', '14');
INSERT INTO phong_ban VALUES('PB015', 'San Xuat 5', '15');
INSERT INTO nhan_vien VALUES('1', 'To At', 'Mui', '1981-1-27', '129, Thu Khoa Huan, Ha Noi', '0', '1700', 'PB003');
INSERT INTO nhan_vien VALUES('2', 'Nguyen At', 'Ty', '1984-12-24', '12, Bui Thi Xan, Long An', '1', '1700', 'PB008');
INSERT INTO nhan_vien VALUES('3', 'To Mau', 'Hoi', '1981-9-24', '197, Pham Van Dong, Ha Noi', '1', '700', 'PB004');
INSERT INTO nhan_vien VALUES('4', 'Le Mau', 'Ngo', '1985-5-15', '182, Thu Khoa Huan, Ha Noi', '0', '800', 'PB005');
INSERT INTO nhan_vien VALUES('5', 'Ho At', 'Tuat', '1983-2-27', '62, Le Duan, Dong Nai', '0', '1000', 'PB003');
INSERT INTO nhan_vien VALUES('6', 'Ly Canh', 'Thin', '1973-2-17', '30, Nguyen Thi Minh Khai, Long An', '1', '1000', 'PB001');
INSERT INTO nhan_vien VALUES('7', 'Nguyen Tan', 'Than', '1981-4-21', '23, Nguyen Hue, Cao Bang', '1', '850', 'PB007');
INSERT INTO nhan_vien VALUES('8', 'Thai Ky', 'Suu', '1984-9-18', '155, Nguyen Thi Minh Khai, TP. Ho Chi Minh', '0', '2500', 'PB001');
INSERT INTO nhan_vien VALUES('9', 'Nguyen Qui', 'Hoi', '1971-8-19', '84, Bui Thi Xan, TP. Ho Chi Minh', '0', '800', 'PB007');
INSERT INTO nhan_vien VALUES('10', 'Le Qui', 'Mui', '1985-11-9', '73, Le Van Tam, Dong Nai', '1', '900', 'PB001');
INSERT INTO nhan_vien VALUES('11', 'Le At', 'Suu', '1972-9-28', '70, Le Duan, Binh Duong', '1', '2000', 'PB008');
INSERT INTO nhan_vien VALUES('12', 'Ho Giap', 'Ti', '1995-9-23', '182, Nguyen Thi Minh Khai, Hau Giang', '1', '1000', 'PB006');
INSERT INTO nhan_vien VALUES('13', 'Nguyen Dinh', 'Meo', '1971-3-7', '165, Nguyen Thi Minh Khai, Binh Duong', '0', '2000', 'PB008');
INSERT INTO nhan_vien VALUES('14', 'Thai Canh', 'Dan', '1981-3-9', '142, Le Hong Phong, Cao Bang', '0', '2000', 'PB003');
INSERT INTO nhan_vien VALUES('15', 'Van Canh', 'Thin', '1984-9-6', '98, Le Van Tam, Ha Tay', '1', '800', 'PB001');
INSERT INTO nhan_vien VALUES('16', 'Hoang Ky', 'Ngo', '1971-7-6', '157, Le Hong Phong, Dong Nai', '0', '1700', 'PB005');
INSERT INTO nhan_vien VALUES('17', 'Nguyen Tan', 'Thin', '1997-3-18', '175, Le Hong Phong, Long An', '0', '900', 'PB003');
INSERT INTO nhan_vien VALUES('18', 'Ly Tan', 'Than', '1993-4-23', '64, Thu Khoa Huan, Hau Giang', '1', '2000', 'PB004');
INSERT INTO nhan_vien VALUES('19', 'Thai At', 'Ngo', '1973-2-6', '21, Pham Van Dong, Dong Nai', '0', '1000', 'PB005');
INSERT INTO nhan_vien VALUES('20', 'Nguyen Giap', 'Dau', '1984-3-8', '91, Nguyen Thi Minh Khai, Long An', '0', '900', 'PB004');
INSERT INTO nhan_vien VALUES('21', 'Thai Giap', 'Mui', '1974-9-18', '106, Le Duan, Da Nang', '0', '750', 'PB002');
INSERT INTO nhan_vien VALUES('22', 'Ho Dinh', 'Thin', '1997-8-5', '105, Nguyen Hue, Hau Giang', '1', '1000', 'PB001');
INSERT INTO nhan_vien VALUES('23', 'Thai Canh', 'Thin', '1971-3-3', '33, Le Van Tam, Ha Tay', '0', '750', 'PB006');
INSERT INTO nhan_vien VALUES('24', 'Ho At', 'Tuat', '1981-12-10', '187, Le Van Tam, TP. Ho Chi Minh', '0', '2500', 'PB003');
INSERT INTO nhan_vien VALUES('25', 'Ho Ky', 'Ti', '1971-12-13', '83, Le Van Tam, TP. Ho Chi Minh', '0', '2000', 'PB004');
INSERT INTO nhan_vien VALUES('26', 'Le Ky', 'Suu', '1985-10-17', '139, Pham Van Dong, Da Nang', '0', '800', 'PB006');
INSERT INTO nhan_vien VALUES('27', 'Ly Canh', 'Mui', '1973-12-8', '97, Bui Thi Xan, Ha Tay', '0', '1000', 'PB006');
INSERT INTO nhan_vien VALUES('28', 'To Tan', 'Meo', '1974-5-7', '102, Le Duan, Binh Duong', '0', '2500', 'PB002');
INSERT INTO nhan_vien VALUES('29', 'To Tan', 'Thin', '1981-8-21', '194, Ho Xuan Huong, Hau Giang', '0', '1700', 'PB007');
INSERT INTO nhan_vien VALUES('30', 'Van Ky', 'Tuat', '1984-8-18', '132, Bui Thi Xan, Binh Duong', '1', '2500', 'PB007');
INSERT INTO nhan_vien VALUES('31', 'Thai Giap', 'Suu', '1970-10-21', '117, Le Duan, Cao Bang', '1', '1500', 'PB001');
INSERT INTO nhan_vien VALUES('32', 'Van Dinh', 'Mui', '1994-7-11', '113, Ho Xuan Huong, Hau Giang', '0', '1000', 'PB001');
INSERT INTO nhan_vien VALUES('33', 'Tran Dinh', 'Suu', '1994-4-8', '192, Nguyen Thi Minh Khai, Da Nang', '0', '2000', 'PB006');
INSERT INTO nhan_vien VALUES('34', 'Thai Giap', 'Ti', '1996-8-24', '194, Le Hong Phong, Cao Bang', '0', '2500', 'PB005');
INSERT INTO nhan_vien VALUES('35', 'Van Tan', 'Than', '1971-7-16', '77, Thu Khoa Huan, Da Nang', '0', '800', 'PB006');
INSERT INTO nhan_vien VALUES('36', 'Nguyen Binh', 'Ty', '1993-3-5', '194, Le Hong Phong, Dong Nai', '1', '1700', 'PB007');
INSERT INTO nhan_vien VALUES('37', 'Ly Mau', 'Ty', '1973-9-19', '57, Nguyen Thi Minh Khai, Ha Tay', '1', '2000', 'PB003');
INSERT INTO nhan_vien VALUES('38', 'Tran Qui', 'Thin', '1996-3-21', '161, Bui Thi Xan, Cao Bang', '0', '900', 'PB008');
INSERT INTO nhan_vien VALUES('39', 'Ho At', 'Ngo', '1974-8-17', '144, Pham Van Dong, Hau Giang', '1', '2500', 'PB007');
INSERT INTO nhan_vien VALUES('40', 'Ly Ky', 'Tuat', '1993-11-10', '48, Bui Thi Xan, Cao Bang', '1', '1500', 'PB004');
INSERT INTO nhan_vien VALUES('41', 'Ho Dinh', 'Ngo', '1983-8-6', '138, Bui Thi Xan, Long An', '0', '1000', 'PB005');
INSERT INTO nhan_vien VALUES('42', 'Ho Nham', 'Suu', '1997-8-3', '18, Mac Van Khoa, Long An', '0', '2500', 'PB008');
INSERT INTO nhan_vien VALUES('43', 'Tran Canh', 'Ngo', '1993-4-16', '181, Thu Khoa Huan, Hau Giang', '1', '850', 'PB002');
INSERT INTO nhan_vien VALUES('44', 'Ly Binh', 'Than', '1982-4-14', '160, Le Hong Phong, Binh Duong', '1', '900', 'PB002');
INSERT INTO nhan_vien VALUES('45', 'Thai Ky', 'Suu', '1973-9-20', '64, Bui Thi Xan, Ha Noi', '0', '2500', 'PB002');
INSERT INTO nhan_vien VALUES('46', 'Truong Ky', 'Than', '1993-3-11', '61, Ho Xuan Huong, Long An', '1', '1500', 'PB002');
INSERT INTO nhan_vien VALUES('47', 'Ho Qui', 'Tuat', '1970-4-7', '169, Pham Van Dong, Dong Nai', '1', '900', 'PB006');
INSERT INTO nhan_vien VALUES('48', 'Ly Binh', 'Dau', '1972-12-15', '30, Nguyen Hue, Cao Bang', '1', '750', 'PB005');
INSERT INTO nhan_vien VALUES('49', 'Tran Ky', 'Ti', '1982-1-9', '30, Ho Xuan Huong, Binh Duong', '1', '1500', 'PB003');
INSERT INTO nhan_vien VALUES('50', 'Nguyen Nham', 'Ty', '1970-7-28', '133, Thu Khoa Huan, Long An', '1', '750', 'PB007');
INSERT INTO nhan_vien VALUES('51', 'Tran Dinh', 'Suu', '1994-3-13', '5, Nguyen Hue, TP. Ho Chi Minh', '0', '1700', 'PB008');
INSERT INTO nhan_vien VALUES('52', 'Nguyen At', 'Mui', '1985-7-20', '88, Le Duan, Cao Bang', '1', '700', 'PB007');
INSERT INTO nhan_vien VALUES('53', 'Van Ky', 'Dan', '1996-6-2', '51, Ho Xuan Huong, Cao Bang', '1', '2000', 'PB008');
INSERT INTO nhan_vien VALUES('54', 'Hoang Canh', 'Mui', '1982-11-21', '48, Ho Xuan Huong, Binh Duong', '0', '1700', 'PB007');
INSERT INTO nhan_vien VALUES('55', 'To Giap', 'Mui', '1996-9-1', '194, Pham Van Dong, Ha Noi', '1', '1500', 'PB003');
INSERT INTO nhan_vien VALUES('56', 'Truong At', 'Ty', '1971-9-22', '66, Ho Xuan Huong, Hau Giang', '0', '800', 'PB005');
INSERT INTO nhan_vien VALUES('57', 'Thai Canh', 'Hoi', '1972-2-2', '152, Bui Thi Xan, TP. Ho Chi Minh', '0', '800', 'PB004');
INSERT INTO nhan_vien VALUES('58', 'Thai Binh', 'Ngo', '1970-9-27', '76, Le Duan, Binh Duong', '0', '2500', 'PB006');
INSERT INTO nhan_vien VALUES('59', 'Van Giap', 'Than', '1997-10-12', '9, Ho Xuan Huong, Da Nang', '0', '1500', 'PB007');
INSERT INTO nhan_vien VALUES('60', 'Ly Mau', 'Tuat', '1995-8-27', '68, Nguyen Hue, Hau Giang', '0', '750', 'PB007');
INSERT INTO nhan_vien VALUES('61', 'Ho Nham', 'Thin', '1984-6-26', '5, Bui Thi Xan, TP. Ho Chi Minh', '1', '750', 'PB002');
INSERT INTO nhan_vien VALUES('62', 'Van Qui', 'Than', '1971-6-5', '140, Le Van Tam, Cao Bang', '1', '700', 'PB008');
INSERT INTO nhan_vien VALUES('63', 'Tran Dinh', 'Mui', '1985-2-25', '76, Le Van Tam, Hue', '0', '800', 'PB004');
INSERT INTO nhan_vien VALUES('64', 'Ho Nham', 'Meo', '1984-2-11', '95, Mac Van Khoa, Binh Duong', '1', '850', 'PB005');
INSERT INTO nhan_vien VALUES('65', 'Tran Ky', 'Suu', '1971-8-12', '96, Le Hong Phong, Binh Duong', '1', '1500', 'PB001');
INSERT INTO nhan_vien VALUES('66', 'Van Binh', 'Ngo', '1993-9-12', '105, Mac Van Khoa, Ha Noi', '0', '800', 'PB006');
INSERT INTO nhan_vien VALUES('67', 'Ho Ky', 'Mui', '1994-12-8', '110, Nguyen Hue, Long An', '1', '1700', 'PB004');
INSERT INTO nhan_vien VALUES('68', 'Truong Binh', 'Dan', '1982-9-28', '118, Nguyen Thi Minh Khai, Long An', '1', '1700', 'PB001');
INSERT INTO nhan_vien VALUES('69', 'Le Giap', 'Ngo', '1983-1-1', '93, Pham Van Dong, Binh Duong', '1', '850', 'PB006');
INSERT INTO nhan_vien VALUES('70', 'To At', 'Hoi', '1995-6-9', '154, Le Duan, Da Nang', '0', '1000', 'PB005');
INSERT INTO nhan_vien VALUES('71', 'Truong At', 'Thin', '1984-2-4', '141, Le Van Tam, Binh Duong', '0', '1500', 'PB004');
INSERT INTO nhan_vien VALUES('72', 'Ho Binh', 'Dau', '1983-6-19', '179, Thu Khoa Huan, Cao Bang', '0', '800', 'PB001');
INSERT INTO nhan_vien VALUES('73', 'Le Binh', 'Tuat', '1974-6-4', '57, Pham Van Dong, Binh Duong', '0', '1700', 'PB008');
INSERT INTO nhan_vien VALUES('74', 'Nguyen Canh', 'Ti', '1984-12-5', '123, Bui Thi Xan, Binh Duong', '1', '2000', 'PB005');
INSERT INTO nhan_vien VALUES('75', 'To Mau', 'Than', '1981-9-20', '179, Ho Xuan Huong, Binh Duong', '0', '1700', 'PB003');
INSERT INTO nhan_vien VALUES('76', 'Truong Tan', 'Suu', '1982-7-3', '14, Nguyen Hue, Ha Tay', '0', '750', 'PB005');
INSERT INTO nhan_vien VALUES('77', 'Le Canh', 'Mui', '1995-3-2', '69, Nguyen Hue, Da Nang', '1', '2000', 'PB001');
INSERT INTO nhan_vien VALUES('78', 'Tran Qui', 'Thin', '1994-9-20', '175, Nguyen Hue, Cao Bang', '0', '900', 'PB001');
INSERT INTO nhan_vien VALUES('79', 'Tran Mau', 'Dau', '1984-2-28', '79, Nguyen Hue, Long An', '0', '2500', 'PB006');
INSERT INTO nhan_vien VALUES('80', 'To Ky', 'Meo', '1982-12-4', '32, Le Hong Phong, Hue', '1', '2000', 'PB005');
INSERT INTO nhan_vien VALUES('81', 'Nguyen At', 'Suu', '1993-4-4', '117, Nguyen Hue, Ha Tay', '1', '1500', 'PB002');
INSERT INTO nhan_vien VALUES('82', 'Truong Dinh', 'Thin', '1971-1-19', '101, Pham Van Dong, Cao Bang', '0', '1000', 'PB005');
INSERT INTO nhan_vien VALUES('83', 'Van Nham', 'Mui', '1972-1-27', '74, Thu Khoa Huan, Long An', '0', '1000', 'PB008');
INSERT INTO nhan_vien VALUES('84', 'Nguyen Dinh', 'Suu', '1984-12-27', '52, Le Duan, Long An', '1', '850', 'PB002');
INSERT INTO nhan_vien VALUES('85', 'Ho Qui', 'Thin', '1994-6-28', '76, Nguyen Hue, Cao Bang', '0', '850', 'PB004');
INSERT INTO nhan_vien VALUES('86', 'To Dinh', 'Thin', '1993-7-21', '181, Le Hong Phong, Ha Tay', '0', '750', 'PB006');
INSERT INTO nhan_vien VALUES('87', 'Ho At', 'Dan', '1984-7-20', '174, Pham Van Dong, Da Nang', '0', '750', 'PB006');
INSERT INTO nhan_vien VALUES('88', 'Van Ky', 'Ngo', '1983-6-3', '2, Nguyen Thi Minh Khai, Dong Nai', '0', '700', 'PB008');
INSERT INTO nhan_vien VALUES('89', 'Tran Canh', 'Suu', '1995-8-25', '169, Le Duan, Binh Duong', '0', '1000', 'PB006');
INSERT INTO nhan_vien VALUES('90', 'Hoang Dinh', 'Ti', '1993-6-23', '103, Thu Khoa Huan, Ha Tay', '0', '1700', 'PB002');
INSERT INTO nhan_vien VALUES('91', 'Ly Tan', 'Tuat', '1993-1-19', '97, Pham Van Dong, Ha Tay', '0', '700', 'PB003');
INSERT INTO nhan_vien VALUES('92', 'Ho Tan', 'Mui', '1997-12-23', '15, Mac Van Khoa, Cao Bang', '1', '2500', 'PB006');
INSERT INTO nhan_vien VALUES('93', 'Le Tan', 'Dan', '1982-9-15', '184, Le Duan, Binh Duong', '0', '800', 'PB007');
INSERT INTO nhan_vien VALUES('94', 'Ly Dinh', 'Mui', '1985-1-6', '8, Bui Thi Xan, Hau Giang', '1', '1500', 'PB002');
INSERT INTO nhan_vien VALUES('95', 'Tran Qui', 'Thin', '1981-11-13', '65, Nguyen Hue, Cao Bang', '1', '700', 'PB002');
INSERT INTO nhan_vien VALUES('96', 'Truong Ky', 'Tuat', '1973-11-25', '153, Le Duan, Cao Bang', '0', '700', 'PB002');
INSERT INTO nhan_vien VALUES('97', 'Le Nham', 'Mui', '1981-12-27', '139, Le Duan, Hue', '0', '900', 'PB005');
INSERT INTO nhan_vien VALUES('98', 'Nguyen Qui', 'Dau', '1996-7-10', '166, Ho Xuan Huong, Ha Tay', '1', '850', 'PB007');
INSERT INTO nhan_vien VALUES('99', 'Van Dinh', 'Thin', '1997-8-12', '192, Le Van Tam, Ha Noi', '1', '2500', 'PB004');
INSERT INTO nhan_vien VALUES('100', '', 'Ty', '1973-2-21', '133, Pham Van Dong, Hue', '1', '2000', 'PB007');
INSERT INTO du_an VALUES('DA001', 'Resort Long Hai', '2001-02-24', '2012-05-11');
INSERT INTO du_an VALUES('DA002', 'Ho Tram', '2001-08-15', '2013-01-23');
INSERT INTO du_an VALUES('DA003', 'Khach San Sai Gon', '2010-04-14', '2017-07-01');
INSERT INTO du_an VALUES('DA004', 'Ba Ria - Vung Tau', '2001-02-20', '2016-01-19');
INSERT INTO du_an VALUES('DA005', 'Coco Bay Da Nang', '2006-10-22', '2012-03-26');
INSERT INTO du_an VALUES('DA006', 'The Sun City', '2005-03-01', '2016-02-12');
INSERT INTO du_an VALUES('DA007', 'Vi Thanh Hau Giang', '2003-01-01', '2021-10-24');
INSERT INTO du_an VALUES('DA008', 'Dong Ha', '2006-11-21', '2018-02-04');
INSERT INTO du_an VALUES('DA009', 'Hoi An Quang Nam', '2004-10-23', '2017-02-09');
INSERT INTO du_an VALUES('DA010', 'Resort Binh Chau 1', '2006-09-02', '2019-03-27');
INSERT INTO du_an VALUES('DA011', 'Resort Binh Chau 4', '2000-05-19', '2013-03-02');
INSERT INTO du_an VALUES('DA012', 'Ho Tram 1', '2002-08-19', '2013-04-15');
INSERT INTO du_an VALUES('DA013', 'Ho Tram 2', '2008-05-04', '2013-12-04');
INSERT INTO du_an VALUES('DA014', 'Ho Tram 3', '2002-08-05', '2013-09-14');
INSERT INTO du_an VALUES('DA015', 'Ho Tram 4', '2008-09-22', '2012-10-02');
INSERT INTO du_an VALUES('DA016', 'Khach San Sai Gon 1', '2000-12-17', '2012-03-25');
INSERT INTO du_an VALUES('DA017', 'Khach San Sai Gon 2', '2005-12-02', '2017-12-04');
INSERT INTO du_an VALUES('DA018', 'Khach San Sai Gon 3', '2006-02-20', '2015-11-18');
INSERT INTO du_an VALUES('DA019', '', '2005-12-19', '2012-12-26');
INSERT INTO du_an VALUES('DA020', '', '2002-10-04', '2021-03-15');
INSERT INTO quanly_duan VALUES('DA001', '19', '2001-2-24', '2012-5-11', '4094', 'Quan Ly');
INSERT INTO quanly_duan VALUES('DA002', '17', '2001-8-15', '2013-1-23', '4179', 'Worker');
INSERT INTO quanly_duan VALUES('DA003', '12', '2010-4-14', '2017-7-1', '2635', 'Tester');
INSERT INTO quanly_duan VALUES('DA004', '14', '2001-2-20', '2016-1-19', '5446', 'Nhan Vien Thiet Ket');
INSERT INTO quanly_duan VALUES('DA005', '11', '2006-10-22', '2012-3-26', '1982', 'Quan Ly');
INSERT INTO quanly_duan VALUES('DA006', '10', '2005-3-1', '2016-2-12', '4000', 'Tester');
INSERT INTO quanly_duan VALUES('DA007', '15', '2003-1-1', '2021-10-24', '6871', 'Tester');
INSERT INTO quanly_duan VALUES('DA008', '12', '2006-11-21', '2018-2-4', '4093', 'Quan Ly');
INSERT INTO quanly_duan VALUES('DA009', '11', '2004-10-23', '2017-2-9', '4492', 'Ky Su Trien Khai');
INSERT INTO quanly_duan VALUES('DA010', '14', '2006-9-2', '2019-3-27', '4589', 'Tester');
INSERT INTO quanly_duan VALUES('DA011', '16', '2000-5-19', '2013-3-2', '4670', 'Nhan Vien Thiet Ket');
INSERT INTO quanly_duan VALUES('DA012', '13', '2002-8-19', '2013-4-15', '3892', 'Ky Su Trien Khai');
INSERT INTO quanly_duan VALUES('DA013', '11', '2008-5-4', '2013-12-4', '2040', 'Tester');
INSERT INTO quanly_duan VALUES('DA014', '11', '2002-8-5', '2013-9-14', '4058', 'Quan Ly');
INSERT INTO quanly_duan VALUES('DA015', '12', '2008-9-22', '2012-10-2', '1471', 'Tester');
INSERT INTO quanly_duan VALUES('DA016', '20', '2000-12-17', '2012-3-25', '4116', 'Ky Su Trien Khai');
INSERT INTO quanly_duan VALUES('DA017', '16', '2005-12-2', '2017-12-4', '4385', 'Ky Su Trien Khai');
INSERT INTO quanly_duan VALUES('DA018', '15', '2006-2-20', '2015-11-18', '3558', 'Quan Ly');
INSERT INTO quanly_duan VALUES('DA019', '16', '2005-12-19', '2012-12-26', '2564', 'Worker');
INSERT INTO quanly_duan VALUES('DA020', '14', '2002-10-4', '2021-3-15', '6737', 'Nhan Vien Thiet Ket');
Tìm hiểu cách chèn dữ liệu ở bài 7
B. THỰC HIỆN TRUY VẤN
I. SELECT, CONCAT, AS, DISTINCT
1. Truy vấn hiển thị toàn bộ nội dung trong bảng nhan_vien
SELECT *
FROM nhan_vien;
2. Truy vấn hiển thị các cột: ho_nv, ten_nv, nam_sinh trong bảng
nhan_vien
SELECT ho_nv, ten_nv, nam_sinh
FROM nhan_vien;
3. Truy vấn hiển thị các cột: ho_nv, ten_nv, nam_sinh trong bảng
nhan_vien, gộp 2
côt ho_nv và ten_nv thành 1 cột
SELECT CONCAT(ho_nv, " ",ten_nv), nam_sinh
FROM nhan_vien;
CONCAT: Hàm thêm/nối hai hoặc nhiều chuỗi lại với nhau.
4. Truy vấn hiển thị các cột: ho_nv, ten_nv, nam_sinh trong bảng
nhan_vien, gộp 2 côt ho_nv và ten_nv thành 1 cột và
đặt bí danh cho cột là "Họ và Tên"
SELECT CONCAT(ho_nv, " ",ten_nv) AS "Họ và Tên", nam_sinh
FROM nhan_vien;
AS: Được sử dụng để đổi tên cột hoặc bảng bằng bí danh.
Bí danh chỉ tồn tại trong thời gian truy vấn.
5. Truy vấn hiển thị cột: ten_nv trong bảng nhan_vien, và
loại bỏ các dòng trùng nhau
SELECT DISTINCT ten_nv
FROM nhan_vien;
SELECT DISTINCT: Chúng ta có thể hiểu là dùng để loại bỏ những kết quả trùng nhau hay được sử dụng để trả về các giá trị riêng biệt (khác nhau)
II. ORDER BY
ORDER BY Từ khóa được sử dụng để sắp xếp tập hợp kết quả theo thứ tự tăng
dần ASC hoặc giảm dần DESC.
Noted: Nếu
chúng ta ORDER BY <tên cột> và sau đó không ghi ASC hay DESC
thì
mặc định cột đó sẽ sắp xếp theo kiểu tăng dần
(A-Z)
1. Hiển thị danh sách các nhân gồm: ho_nv, ten_nv, luong và lương sắp xếp
giảm dần theo cột luong
SELECT ho_nv, ten_nv, luong
FROM nhan_vien
ORDER BY luong DESC;
2. Hiển thị danh sách các nhân gồm: ho_nv, ten_nv, luong và lương sắp xếp
giảm dần theo cột luong, nếu lương bằng nhau thì sắp xếp tăng dần
(A->Z) của cột ten_nv
SELECT ho_nv, ten_nv, luong
FROM nhan_vien
ORDER BY luong DESC, ten_nv ASC;
III. WHERE
Hiển thị thông tin nhân viên có tên: "dan"
SELECT *
FROM nhan_vien
WHERE ten_nv ="dan";
IV. OR
1. Hiển thị thông tin nhân viên có phongban_id là: PB001 hoặc PB002
SELECT *
FROM nhan_vien
WHERE
phongban_id ="PB001"
OR phongban_id ="PB002";
2. Hiển thị thông tin nhân viên có luong là: 800, 1000, 1500
SELECT *
FROM nhan_vien
WHERE luong = 800
OR luong = 1000
OR luong = 1500;
V. [NOT] IN
Hiển thị thông tin nhân viên có luong là: 800, 1000, 1500
SELECT *
FROM nhan_vien
WHERE luong IN (800, 1000,1500);
VI. AND
Hiển thị thông tin nhân viên có phongban_id là: PB001 hoặc PB002 và luong
> 1000
SELECT *
FROM nhan_vien
WHERE (phongban_id ="PB001" OR phongban_id ="PB002")
AND luong >1000;
VII. [NOT] BETWEEN … AND
Hiển thị nhân viên có mức lương trong khoảng 1000 đến 2000
SELECT *
FROM nhan_vien
WHERE luong BETWEEN 1000 AND 2000;
VIII. [NOT] LIKE
1. Hiển thị nhân viên có họ là: Tran
SELECT *
FROM nhan_vien
WHERE ho_nv LIKE "Tran%"; -- % đại diện cho MỘT CHUỖI ký tự bất kỳ
2. Hiển thị nhân viên có họ có chữ: Giap
SELECT *
FROM nhan_vien
WHERE ho_nv LIKE "%Giap%";
3. Hiển thị nhân viên có tên có chiều dài là 3 ký tự và bắt đầu là chữ
D
SELECT *
FROM nhan_vien
WHERE ten_nv LIKE "D__"; -- _ đại diện cho MỘT KÝ TỰ bất kỳ
IX. IS [NOT] NULL
Hiện thị nhân viên chưa phân bổ bộ phận (căn cứ vào cột phongban_id)
SELECT *
FROM nhan_vien
WHERE phongban_id IS NULL;
X. AGGREGATE
1. Thống kê tổng số nhân viên
SELECT COUNT(id)
FROM nhan_vien;
2. Thống kê tổng số nhân viên, và đổi tên cột đếm thành "Tổng số nhân
viên"
SELECT COUNT(id) AS "Tổng số nhân viên"
FROM nhan_vien;
3. Thống kê tổng số nhân viên nam/nữ
SELECT COUNT(id)
FROM nhan_vien
WHERE gioi_tinh = 1; -- tùy theo chúng ta quy định 0, 1 là nam hay nữ mà chúng ta chọn điều kiện cho thích hợp
4. Tìm nhân viên có mức lương cao nhất
SELECT MAX(luong)
FROM nhan_vien;
5. Tìm nhân viên có mức lương nhấp nhất
SELECT MIN(luong)
FROM nhan_vien;
6. Tính mức lương trung bình của nhân toàn công ty
SELECT AVG(luong)
FROM nhan_vien;
7. Tính tổng lương của nhân viên phòng ban có mã PB001
SELECT phongban_id, SUM(luong)
FROM nhan_vien
WHERE phongban_id = "PB001";
8. Hiển thị MIN, MAX, SUM, AVG của toàn thể nhân viên trên 1 dòng
SELECT MIN(luong), MAX(luong), SUM(luong), AVG(luong)
FROM nhan_vien;
XI. OPERATOR
1. Tính tuổi của nhân viên
SELECT ho_nv, ten_nv, YEAR(CURRENT_DATE()) - YEAR(nam_sinh) -- lấy năm hiện tại trừ đi năm sinh
FROM nhan_vien;
2. Chỉ hiện thị các nhân viên có tuổi >30
SELECT ho_nv, ten_nv, YEAR(CURRENT_DATE()) - YEAR(nam_sinh)
FROM nhan_vien
WHERE YEAR(CURRENT_DATE()) - YEAR(nam_sinh) >30;
3. Tăng thêm 200$ cho các nhân viên có mức lương thấp hơn 900$
SELECT * , (luong + 200)
FROM nhan_vien
WHERE luong <=900;
XII. GROUP BY
Đếm số lượng nhân viên trong mỗi phòng
SELECT *, COUNT(id)
FROM nhan_vien
GROUP BY phongban_id;
XIII. HAVING
HAVING: Mệnh đề thường được sử dụng với mệnh đề GROUP BY lọc các nhóm dựa trên một danh sách các điều kiện được chỉ định.
1. Hiển thị tổng mức lương của mỗi phòng ban và chỉ hiển thị các
nhóm/phòng có tổng lương lớn hơn 15000$
SELECT *, SUM(luong) AS tong_luong
FROM nhan_vien
GROUP BY phongban_id
HAVING tong_luong > 15000;
2. Tính tổng lương công ty phải trả cho mỗi phòng ban, chỉ nhóm hàng
nào có cột lương >800$, chỉ hiển thị nhóm nào có tổng >10000$
SELECT *, SUM(luong) AS tong_luong
FROM nhan_vien
WHERE luong > 800
GROUP BY phongban_id
HAVING tong_luong > 10000;
XIV. LIMIT
LIMIT offset, count
- offset: số dòng bỏ qua
- count: số dòng cần lấy
1. Lấy ra 10 nhân viên có mức lương thấp nhất
SELECT *
FROM nhan_vien
ORDER BY luong ASC
LIMIT 10;
Nếu chúng ta đưa vào 1 đối số, đối số này sẽ được gán cho count (số
dòng cần lấy), trong trường hợp này offset = 0.
2. Lấy ra 2 nhân viên có mức lương thấp nhất của phongban_id PB001, và
lấy từ vị trí thứ 6
SELECT *
FROM nhan_vien
WHERE phongban_id = "PB001"
ORDER BY luong ASC
LIMIT 5, 2;
TỔNG HỢP
1. Hiển thị mã phòng ban (phongban_id) và lương trung bình tương ứng
từng phòng, chỉ lấy các hàng có mức lương trên 800$, chỉ hiển thị các
phòng có lương trung bình > 1200$ và sắp xếp theo thứ tự giảm dần
theo cột phongban_id và chỉ lấy 3 dòng
SELECT phongban_id, AVG(luong) AS tb_luong
FROM nhan_vien
WHERE luong > 800
GROUP BY phongban_id
HAVING tb_luong > 1200
ORDER BY phongban_id DESC
LIMIT 3;
1. 2. Hiển thị họ tên, giới tính của nhân viên, nếu giới tính = 1 thì hiển thị là nam, ngược lại là nữ
SELECT
CONCAT(ho_nv, ' ', ten_nv) AS 'Họ và Tên',
IF(gioi_tinh = 1, 'Nam', 'Nữ') AS 'Giới Tính'
FROM
nhan_vien
THỨ TỰ THỰC HIỆN CÁC CÂU LỆNH TRONG SQL
1. Getting Data (From, Join)
5. Return Expressions (Select)
6. Order & Paging (Order by & Limit / Offset)