Tải bản đầy đủ
Thiết kế vật lý

Thiết kế vật lý

Tải bản đầy đủ

Ngôn ngữ truy vấn dữ liệu

Giảng viên: Nguyễn Thị Tâm

---tạo bảng nhân viên phát vé
create table NHANVIEN
(
sManv varchar(10) primary key,
sTennv nvarchar(30),
sNgaysinh date,
sDiachi nvarchar(30),
sGtinh varchar(5),
sSdt varchar(30),
);
---tạo bảng loại vé tháng
create table LOAIVE
(
sMaloaive varchar(10) primary key,
sLoaive varchar(10),
);
---tạo đơn giá từng loại vé tháng
create table GIAVE
(
sMagiave varchar(10) primary key,
fDongia float,
sMaloaive varchar(10),
foreign key (sMaloaive) references LOAIVE(sMaloaive),
);
---tạo bảng vé tháng
create table VETHANG
(
sMave varchar(10) primary key,
sNgayketthuc date,
sMakh varchar(10),
sMaloaive varchar(10),
sNgaybatdau date,
foreign key (sMaloaive) references LOAIVE(sMaloaive),
foreign key (sMakh)
references KHACHHANG(sMakh),
);

8

Ngôn ngữ truy vấn dữ liệu

Giảng viên: Nguyễn Thị Tâm

---tạo bảng phiếu thu tiền
create table PHIEUTHUTIEN
(
sMaphieu varchar(10) primary key,
sNgaylap date,
sMave varchar(10),
sManv varchar(10),
sMakh varchar(10),
sTongtien float,
foreign key (sMave) references VETHANG(sMave),
foreign key (sManv) references NHANVIEN(sManv),
foreign key (sMakh) references KHACHHANG(sMakh),
);
--Tạo các index
create index id_TTkhach on KHACHHANG(sMaKH);
create index id_TTGia on GIAVE(sMaloaive);
create index id_TTLV on LOAIVE(sMaloaive);
create index id_TTPhieu on PHIEUTHUTIEN(sMave);
create index id_TTVe on VETHANG(sNgaybatdau);
create index id_TTNvien on NHANVIEN(sManv);
--Tạo rang buoc
alter table KHACHHANG
add constraint CK_GT CHECK (sGtinh in('Nam','Nu'));
alter table NHANVIEN
add constraint GT_NV CHECK (sGtinh in('Nam','Nu'));
alter table NHANVIEN drop GT_NV
--Xóa trường thứ 2 ở mỗi bảng
alter table KHACHHANG drop column sTenkh;
alter table NHANVIEN drop column sTennv;
alter table LOAIVE drop column sLoaive;
alter table GIAVE drop column fDongia;
alter table VETHANG drop column sNgayketthuc;
alter table PHIEUTHUTIEN drop column sNgaylap;

--Thêm trường vừa xóa vào mỗi bảng
Alter table KHACHHANG add sTenkh nvarchar(30);
9

Ngôn ngữ truy vấn dữ liệu

Giảng viên: Nguyễn Thị Tâm

Alter table NHANVIEN add sTennv nvarchar(30);
Alter table LOAIVE add sLoaive varchar(10);
Alter table GIAVE add fDongia float;
Alter table VETHANG add sNgayketthuc date;
Alter table PHIEUTHUTIEN add sNgaylap date;
---Nhập dữ liệu cho các bảng
--Bảng khách hàng
Insert into KHACHHANG values
('KH01','09/06/1986',N'Hà Nội','Nu','0123456789',N'Nguyễn Thị Hà');
Insert into KHACHHANG values
('KH02','09/06/1996',N'Hà Nam','Nu','0125498696',N'Đinh Thu
Trâm');
Insert into KHACHHANG values
('KH03','09/06/1995',N'Hải Dương','Nam','0786786782',N'Trần Văn
Long');
Insert into KHACHHANG values
('KH04','09/06/1994',N'Nam Định','Nam','0846521869',N'Phạm Hồng
Tiến');
Insert into KHACHHANG values
('KH05','09/06/1996',N'Hà Nội','Nu','0648566215',N'vũ Thu Trang');
Insert into KHACHHANG values
('KH06','09/06/1992',N'Hà Nội','Nam','0157956346',N'Mai Tiến Sơn');
select * from KHACHHANG

--Bảng Nhân viên
Insert into NHANVIEN values
('NV01','09/06/1988',N'Hà Nội','Nu','0987654321',N'Nguyễn Thị
Thanh Hà');
Insert into NHANVIEN values
('NV02','09/06/1988',N'lạng Sơn','Nu','0946658861',N'Trần Thu Hà');
Insert into NHANVIEN values
('NV03','09/06/1998',N'Gia Lai','Nam','0984656564',N'Nguyễn Văn
Quyết');
Insert into NHANVIEN values
10

Ngôn ngữ truy vấn dữ liệu

Giảng viên: Nguyễn Thị Tâm

('NV04','09/06/1988',N'Hà Nam','Nu','0179455753',N'Trần Thị Bưởi');
Insert into NHANVIEN values
('NV05','09/06/1988',N'Bến Tre','Nam','0618486966',N'Nguyễn Thị
Thanh Tâm');
Insert into NHANVIEN values
('NV06','09/06/1993',N'Hồ Chí Minh','Nu','0123584866',N'Nguyễn
Trà My');
select * from NHANVIEN

--Bảng Loại vé
Insert into LOAIVE values('M01','L1');
Insert into LOAIVE values('M02','L2');
Insert into LOAIVE values('M03','L3');
Insert into LOAIVE values('M04','L4');
Insert into LOAIVE values('M05','L5');
Insert into LOAIVE values('M06','L6');
select * from LOAIVE

--Bảng giá từng loại vé
Insert into GIAVE values('MM01','M01','30000');
Insert into GIAVE values('MM02','M02','40000');
Insert into GIAVE values('MM03','M03','50000');
Insert into GIAVE values('MM04','M04','60000');
Insert into GIAVE values('MM05','M05','70000');
select * from GIAVE

11

Ngôn ngữ truy vấn dữ liệu

Giảng viên: Nguyễn Thị Tâm

--Bảng vé tháng
Insert into VETHANG
values('MV01','KH01','M02','01/01/2017','01/02/2017');
Insert into VETHANG
values('MV02','KH02','M03','01/03/2017','01/04/2017');
Insert into VETHANG
values('MV03','KH03','M05','01/05/2017','01/06/2017');
Insert into VETHANG
values('MV04','KH04','M06','01/07/2017','01/08/2017');
Insert into VETHANG
values('MV05','KH05','M01','01/08/2017','01/09/2017');
Insert into VETHANG
values('MV06','KH06','M04','01/09/2017','01/10/2017');
select * from VETHANG

--Bảng phiếu thu tiền
Insert into PHIEUTHUTIEN
values('MP01','MV01','NV01','KH01','50000','01/02/2017');
Insert into PHIEUTHUTIEN
values('MP02','MV02','NV02','KH02','60000','02/03/2017');
Insert into PHIEUTHUTIEN
values('MP03','MV03','NV03','KH03','60000','03/04/2017');
Insert into PHIEUTHUTIEN
values('MP04','MV04','NV04','KH04','70000','04/05/2017');
Insert into PHIEUTHUTIEN
values('MP05','MV05','NV05','KH05','80000','05/06/2017');
12

Ngôn ngữ truy vấn dữ liệu

Giảng viên: Nguyễn Thị Tâm

Insert into PHIEUTHUTIEN
values('MP06','MV06','NV06','KH06','90000','06/07/2017');
select * from PHIEUTHUTIEN

--Cập nhật lại giá cho vé
update GIAVE
set fDongia ='90000'
where sMaloaive = 'M06'
select *from GIAVE

--Cập nhật lại sđt của khách hàng
update KHACHHANG
set sSdt='0155626648'
where sMakh='KH01'
select *from KHACHHANG

--Cập nhật lại giới tính cho nhân viên
update NHANVIEN
set sGtinh='Nu'
13

Ngôn ngữ truy vấn dữ liệu

Giảng viên: Nguyễn Thị Tâm

where sManv='NV05'
select *from NHANVIEN

--Xoá nhân viên có mã
delete from NHANVIEN
where sManv='NV07'
select * from NHANVIEN

--viết thủ tục thêm khách hàng với các tham số truyền vào phù hợp
create procedure KHACHHANG_Themkh
@Makh varchar(10),
@Ngaysinh date,
@Điachi nvarchar(30),
@Gtinh nvarchar(5),
@Sdt varchar(20),
@Tenkh nvarchar(30)
as
begin
insert into KHACHHANG values
(@Makh,@Ngaysinh,@Điachi,@Gtinh,@Sdt,@Tenkh)
end
exec KHACHHANG_Themkh
@Makh='KH15',@Tenkh=N'Đặng Ngọc Long',
@Ngaysinh='01/04/1996', @Điachi=N'Hà Nội' ,
@Gtinh=N'Nam', @Sdt='0649496666'
select *from KHACHHANG
14

Ngôn ngữ truy vấn dữ liệu

Giảng viên: Nguyễn Thị Tâm

---TRUY VẤN dữ liệu từ một bảng
--Tìm khách hàng có năm sinh
select *from KHACHHANG
where year(sNgaysinh) = 1996

--Thông tin nhân viên có chữ cái đầu tiên là N
select *from NHANVIEN where sTennv like 'N%'

--Tìm phiếu thu tiền có ngày lập là 06/07/2017
select *from PHIEUTHUTIEN
where sNgaylap='06/07/2017'

--Số khách hàng có gtính là nam
select count(sMakh) as SoKH
from KHACHHANG
where sGtinh='nam'

15

Ngôn ngữ truy vấn dữ liệu

Giảng viên: Nguyễn Thị Tâm

---TRUY VẤN dữ liệu từ nhiều bảng
--Danh sách nhân viên và ngày lập phiếu
select NHANVIEN.sManv,PHIEUTHUTIEN.sNgaylap
from NHANVIEN inner join PHIEUTHUTIEN
on NHANVIEN.sManv=PHIEUTHUTIEN.sManv

--Danh sách Mã loại vé tương ứng mã khách hàng
select LOAIVE.sMaloaive,VETHANG.sMakh
from LOAIVE inner join VETHANG
on LOAIVE.sMaloaive=VETHANG.sMaloaive

--Danh sách Mã loại vé tương ứng đơn giá
select LOAIVe.sMaloaive,GIAVE.fDongia
from LOAIVE inner join GIAVE
on LOAIVE.sMaloaive=GIAVE.sMaloaive

---Tạo view tương ứng với select đã có
--Select từ 1 bảng
--Tạo view gồm ( tên khách hàng và năm sinh )
create view view_ngsinh
16

Ngôn ngữ truy vấn dữ liệu

Giảng viên: Nguyễn Thị Tâm

as
select sTenkh,sNgaysinh
from KHACHHANG
where year(sNgaysinh) = 1996
select *from view_ngsinh

--Tạo view gồm ( mã nhân viên và tên nhân viên )
create view view_ttin
as
select sManv,sTennv
from NHANVIEN
where sTennv like 'N%'
select *from view_ttin

--Tạo view gồm ( phiếu thu tiền được lập ngày 06/07/2017)
create view view_ngay
as
select sMaphieu,sNgaylap
from PHIEUTHUTIEN
where sNgaylap='06/07/2017'
select *from view_ngay

--Tạo view gồm ( số nhân viên là nam )
create view view_soKh
as
select count(sMakh) as SoKH
from KHACHHANG
where sGtinh='nam'
select *from view_soKh

17

Ngôn ngữ truy vấn dữ liệu

Giảng viên: Nguyễn Thị Tâm

--Select từ nhiều bảng
--Tạo view gồm mã nhân viên và ngày lập phiếu thu tiền
create view view_tt1
as
select NHANVIEN.sManv,PHIEUTHUTIEN.sNgaylap
from NHANVIEN inner join PHIEUTHUTIEN
on NHANVIEN.sManv=PHIEUTHUTIEN.sManv
select *from view_tt1

--Tạo view gồm mã loại vé và mã khách hàng
create view view_tt2
as
select LOAIVE.sMaloaive,VETHANG.sMakh
from LOAIVE inner join VETHANG
on LOAIVE.sMaloaive=VETHANG.sMaloaive
select *from view_tt2

--Tạo view gồm mã loại vé và đơn giá
create view view_tt3
as
select LOAIVe.sMaloaive,GIAVE.fDongia
from LOAIVE inner join GIAVE
on LOAIVE.sMaloaive=GIAVE.sMaloaive
select *from view_tt3

18