By GokiSoft.com|
09:23 04/03/2022|
SQL Server/MySQL
[Video] Thiết kế hệ quản trị CSDL - Quản lý sinh viên (create, alter, update, insert, select) - Lập trình SQL Server - C2108G3
-- Tao CSDL BT1793
create database BT1793
go
-- Kich hoat CSDL
use BT1793
go
-- Tao tables
create table Class (
ClassId int not null,
ClassCode nvarchar(50)
)
go
create table Student (
StudentId int not null,
StudentName nvarchar(50),
BirthDate datetime,
ClassId int
)
go
create table Subject (
SubjectId int not null,
SubjectName nvarchar(100),
SessionCount int
)
go
create table Result (
StudentId int not null,
SubjectId int not null,
Mark int
)
go
-- Thay doi truong du lieu
alter table Result
alter column Mark float
go
-- Constraint
alter table Class
add constraint PK_Class primary key (ClassId)
go
alter table Student
add constraint PK_Student primary key (StudentId)
go
alter table Subject
add constraint PK_Subject primary key (SubjectId)
go
alter table Result
add constraint PK_Result primary key (StudentId, SubjectId)
go
alter table Student
add constraint FK_Student_Class foreign key (ClassId) references Class (ClassId)
go
alter table Result
add constraint FK_Result_Student foreign key (StudentId) references Student (StudentId)
go
alter table Result
add constraint FK_Result_Subject foreign key (SubjectId) references Subject (SubjectId)
go
alter table Subject
add constraint CK_Subject_SessionCount check (SessionCount > 0)
go
-- Insert Data
insert into Class (ClassId, ClassCode)
values
(1, 'A'),
(2, 'B'),
(3, 'C'),
(4, 'D'),
(5, 'E')
go
insert into Student(StudentId, StudentName, BirthDate, ClassId)
values
(1, 'SV A', '1993-08-05', 1),
(2, 'SV B', '1992-06-10', 1),
(3, 'SV C', '1992-09-07', 2),
(4, 'SV E', '1993-10-10', 2),
(5, 'SV F', '1992-06-06', 3)
go
insert into Subject (SubjectId, SubjectName, SessionCount)
values
(1, 'C Programming', 22),
(2, 'Web Design', 18),
(3, 'Database Management', 23)
go
insert into Result (StudentId, SubjectId, Mark)
values
(1, 1, 8),
(1, 2, 7),
(2, 3, 5),
(3, 2, 6),
(4, 3, 9),
(5, 2, 8)
go
-- Query
select StudentId 'Ma Sinh Vien', StudentName as 'Ten Sinh Vien', BirthDate 'Ngay Sinh'
from Student
where BirthDate between '1992-10-10' and '1993-10-10'
go
select Class.ClassId, Class.ClassCode, count(Student.StudentId) 'Si So Lop'
from Class, Student
where Class.ClassId = Student.ClassId
group by Class.ClassId, Class.ClassCode
go
select Class.ClassId, Class.ClassCode, count(*) 'Si So Lop'
from Class, Student
where Class.ClassId = Student.ClassId
group by Class.ClassId, Class.ClassCode
go
-- Co the trien khai theo cach khac nhu sau -> dua ra ket qua giao cua 2 bang
-- Class: left table, Student: right table
select Class.ClassId, Class.ClassCode, count(Student.StudentId) 'Si So Lop'
from Class join Student on Class.ClassId = Student.ClassId
group by Class.ClassId, Class.ClassCode
go
select Class.ClassId, Class.ClassCode, count(Student.StudentId) 'Si So Lop'
from Class inner join Student on Class.ClassId = Student.ClassId
group by Class.ClassId, Class.ClassCode
go
-- TH: Hien thi tat ca thong tin cua Class
select Class.ClassId, Class.ClassCode, count(Student.StudentId) 'Si So Lop'
from Class left join Student on Class.ClassId = Student.ClassId
group by Class.ClassId, Class.ClassCode
go
select Class.ClassId, Class.ClassCode, count(Student.StudentId) 'Si So Lop'
from Student right join Class on Class.ClassId = Student.ClassId
group by Class.ClassId, Class.ClassCode
go
-- Tong Diem
select Student.StudentId, Student.StudentName, sum(Result.Mark) 'Tong Diem'
from Student left join Result on Student.StudentId = Result.StudentId
group by Student.StudentId, Student.StudentName
having sum(Result.Mark) > 10
order by 'Tong Diem' desc
go
-- Nang cao: Ten lop, ten sinh vien, ten mon hoc, diem thi
select Class.ClassCode, Student.StudentName, Subject.SubjectName, Result.Mark
from Class, Student, Subject, Result
where Class.ClassId = Student.ClassId
and Student.StudentId = Result.StudentId
and Subject.SubjectId = Result.SubjectId
go
-- Nang cao: Ten lop, ten sinh vien, ten mon hoc, diem thi -> Sinh vien ten: SV A
select Class.ClassCode, Student.StudentName, Subject.SubjectName, Result.Mark
from Class, Student, Subject, Result
where Class.ClassId = Student.ClassId
and Student.StudentId = Result.StudentId
and Subject.SubjectId = Result.SubjectId
and Student.StudentName = 'SV A'
go
-- Nang cao: Ten lop, ten sinh vien, ten mon hoc, diem thi -> Mon hoc bat dau bang chu Web
select Class.ClassCode, Student.StudentName, Subject.SubjectName, Result.Mark
from Class, Student, Subject, Result
where Class.ClassId = Student.ClassId
and Student.StudentId = Result.StudentId
and Subject.SubjectId = Result.SubjectId
and Subject.SubjectName like 'Web%'
go
-- Nang cao: Ten lop, ten sinh vien, ten mon hoc, diem thi -> Mon hoc ket thuc bang chu Design
select Class.ClassCode, Student.StudentName, Subject.SubjectName, Result.Mark
from Class, Student, Subject, Result
where Class.ClassId = Student.ClassId
and Student.StudentId = Result.StudentId
and Subject.SubjectId = Result.SubjectId
and Subject.SubjectName like '%Design'
go
-- Nang cao: Ten lop, ten sinh vien, ten mon hoc, diem thi -> Mon hoc chua ky tu m
select Class.ClassCode, Student.StudentName, Subject.SubjectName, Result.Mark
from Class, Student, Subject, Result
where Class.ClassId = Student.ClassId
and Student.StudentId = Result.StudentId
and Subject.SubjectId = Result.SubjectId
and Subject.SubjectName like '%m%'
go
Tags:
Phản hồi từ học viên
5
(Dựa trên đánh giá ngày hôm nay)
![GokiSoft.com [Teacher]](https://www.gravatar.com/avatar/fc6ba9324e017d540af3613b3a77dd21.jpg?s=80&d=mm&r=g)
GokiSoft.com
2022-03-04 02:51:00
select * from Class
select * from Student
delete from Student
alter table Student
drop constraint FK_Student_Class
-- Test
insert into Student (StudentId, StudentName, ClassId)
values
(1, 'SV A', 1)
go
insert into Student (StudentId, StudentName, ClassId)
values
(2, 'SV A', 10) -- Khong tim thay ClassId = 10 trong bang Class -> Sinh vien nay ko thuoc lop nao ca -> du lieu sai
go
-- Lam sao de ko cho phep add du lieu sai vao bang Student
-- De giai quyet dc: ClassId khi them vao Student -> da ton tai trong Class (ClassId)
-- CSDL: foreign key -> giai quyet dc cac van neu tren
-- Student: ClassId -> foreign key -> Lien ket Class (ClassId)
alter table Student
add constraint FK_Student foreign key (ClassId) references Class (ClassId)
go
insert into Student(StudentId, StudentName, BirthDate, ClassId)
values
(1, 'SV A', '1993-08-05', 1),
(2, 'SV B', '1992-06-10', 1),
(3, 'SV C', '1992-09-07', 2),
(4, 'SV E', '1993-10-10', 2),
(5, 'SV F', '1992-06-06', 3)
go
select * from Class
select * from Student
select Class.ClassCode, Student.StudentName
from Class, Student
where Class.ClassId = Student.ClassId
and Student.StudentId <= 2
union
select Class.ClassCode, Student.StudentName
from Class, Student
where Class.ClassId = Student.ClassId
and Student.StudentId > 4
-- where in: Hien thi danh sach sinh vien co id: 1, 3, 6
select Student.StudentId, Student.StudentName, Class.ClassCode
from Class, Student
where Class.ClassId = Student.ClassId
and Student.StudentId in (1, 3, 6)
select s.StudentId, s.StudentName, c.ClassCode
from Class c, Student s
where c.ClassId = s.ClassId
and s.StudentId in (1, 3, 6)
select a.StudentName, a.ClassCode
from (
select Student.StudentId, Student.StudentName, Class.ClassCode
from Class, Student
where Class.ClassId = Student.ClassId
and Student.StudentId in (1, 3, 6)
) a
where a.ClassCode = 'A'
go