You are on page 1of 3

Bài tập SQL cơ bản:

Bài 1: Để quản lý Thực tập nghề nghiệp của sinh viên, người ta xây dựng một
cơ sở dữ liệu có tên là ThucTap gồm các sơ đồ quan hệ sau:

Khoa(makhoa char(10), tenkhoa char(30), dienthoai char(10))

GiangVien(magv int, hotengv char(30), luong decimal(5,2), makhoa char(10))

SinhVien(masv int, hotensv char(30), makhoa char(10), namsinh int, quequan


char(30))

DeTai(madt char(10), tendt char(30), kinhphi int, NoiThucTap char(30))

HuongDan(masv int, madt char(10), magv int, ketqua decimal(5,2))

A. Tạo lập và nhập dữ liệu cho CSDL cho bảng SinhVien với mô tả

dữ liệu như bên dưới

Và trả lời các câu hỏi sau:


1. Cho biết số sinh viên của khoa Địa lý
2. Cho biết số sinh viên sinh năm 1990
3. Đưa ra danh sách tên sinh viên không trùng nhau
4. Đưa ra tên sinh viên và năm sinh của sinh viên có số số tuổi cao nhất
5. Cho biết thông tin của sinh viên vừa thuộc khoa công nghệ sinh học vừa có quê ở Nghệ
An
6. Cho biết thông tin của sinh viên thuộc khoa địa lý hoặc có quê ở Thanh Hóa

LỜI GIẢI:

CREATE DATABASE ThucTap;


Use ThucTap;
Create table Khoa(
makhoa char(10),
tenkhoa char(30),
dienthoai char(10),
);
Create table GiangVien(
magv int,
hotengv char(30),
luong decimal(5,2),
makhoa char(10),
);
Create table SinhVien(
masv int,
hotensv char(30),
makhoa char(10),
namsinh int,
quequan char(30),
);
Create table DeTai(
madt char(10),
tendt char(30),
kinhphi int,
NoiThucTap char(30),
);
Create table HuongDan(
masv int,
madt char(10),
magv int,
ketqua decimal(5,2),
);
insert into SinhVien(masv,hotensv,makhoa,namsinh,quequan)
values
(1,'Le Van Son','Bio',1992,'Nghe NA'),
(2,'Nguyen Thi Mai','Geo',1990,'Nghe NA'),
(3,'Bui Xuan Duc','Math',1992,'Ha Noi'),
(4,'Nguyen Van Tung','Bio',NULL,'Ha Tinh'),
(5,'Le Khanh Linh','Bio',1989,'Ha Nam'),
(6,'Tran Khac Trong','Geo',1991,'Thanh Hoa'),
(7,'Le Thi Van','Math',NULL,NULL),
(8,'Hoa Van Duc','Bio',1992,'Nghe An');

/*1. Cho biết số sinh viên của khoa Địa lý*/


select count (masv) as SoSinhVienKhoaDiaLy From SinhVien where makhoa='Geo';

/*2. Cho biết số sinh viên sinh năm 1990*/


select count (masv) as SoSinhVienSinhNam1990 From SinhVien where namsinh='1990';

/*3. Đưa ra danh sách tên sinh viên không trùng nhau*/
SELECT DISTINCT hotensv from SinhVien;

/*4. Đưa ra tên sinh viên và năm sinh của sinh viên có số tuổi cao nhất*/
SELECT *
FROM SinhVien

WHERE namsinh = (SELECT MIN(namsinh) FROM SinhVien);


/*5. Cho biết thông tin của sinh viên vừa thuộc khoa công nghệ sinh học vừa có quê ở Nghệ
An*/
SELECT *
FROM SinhVien
WHERE makhoa='Bio' AND quequan='Nghe NA';

/*6. Cho biết thông tin của sinh viên thuộc khoa địa lý hoặc có quê ở Thanh Hóa*/
SELECT *
FROM SinhVien
WHERE makhoa='Geo' AND quequan='Thanh Hoa';

You might also like