1. Trang chủ
  2. » Công Nghệ Thông Tin

Hệ quản trị cơ sở dữ liệu SQL Server

16 531 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 16
Dung lượng 52,51 KB
File đính kèm SQL.rar (4 MB)

Nội dung

SQL Server Hệ quản trị cơ sở dữ liệu Hướng dẫn làm bài môn Hệ quản trị cơ sở dữ liệu SQL Server Kiến thức môn Hệ quản trị cơ sở dữ liệu SQL Server Các câu lệnh trong Hệ quản trị cơ sở dữ liệu SQL Server 23 hàm trong Hệ quản trị cơ sở dữ liệu SQL Server (hàm Ascii, hàm Char, hàm Charindex, hàm Left, hàm Right, hàm Len, hàm Lowder, hàm Upper, hàm LTrim, hàm RTrim, hàm PatIndex, hàm Quote, hàm Replace, hàm Replicate, hàm Reverse, hàm Space, hàm Str, hàm Stuff, hàm Substring, hàm Unicode, hàm NChar, hàm Soundex, hàm Different) Một số câu hỏi ôn tập kiến thức môn Hệ quản trị cơ sở dữ liệu SQL Server

Trang 1

/*tao database moi*/

create database Quanlysinhvien

/*xóa database*/

drop database Quanlysinhvien

/*Sửa tên của database*/

alter database quanlysinhvien

modify name = QLSV

/* sử dụng database cụ thể*/

use Quanlysinhvien

GO

/* thêm bảng*/

create table Sinhvien

(

MaSV int not null primary key identity,

TenSV nvarchar(100) not null,

Gioitinh nvarchar( ) default 'NAM',

Ngaysinh date,

Que nvarchar(500),

Lop nvarchar(10)

)

create table Monhoc

(

MaMH int not null,

TenMH nvarchar(50) not null,

DVHT int

)

create table Ketqua

(

MaSV int,

MaMH int,

Diem int check (Diem>=0 and Diem<=10) /*Biểu thức luận lý */ constraint primary_key primary key (MaSV, MaMH)

)

/* Đổi tên cột */

exec sp_rename "sinhvien.tensv", "hoten"

/*Đổi tên bảng*/

exec sp_rename sv,"sinhvien"

/* Xóa bảng*/

/*drop table Sinhvien*/

/* Sửa bảng*/

/*Chèn thêm 1 cột*/

Alter table Sinhvien ADD

Dienthoai varchar(11), abc nvarchar(40)

/*thay đổi kiểu dữ liệu của cột*/

Alter table sinhvien Alter column abc int not null /*thêm khóa*/

alter table Monhoc ADD

constraint pk_monhoc primary key(MaMH)

Trang 2

alter table sinhvien add constraint u_sinhvien_abc unique (abc) /*Xóa cột*/

Alter table Sinhvien Drop column abc, Dienthoai /*Xóa ràng buộc*/

Alter table sinhvien Drop constraint pk_monhoc /* tắt các constraint*/

ALTER TABLE Tên_bảng NOCHECK CONSTRAINT ALL| Tên_constraint [ , ]

/*Bật các Constraint */

ALTER TABLE Tên_bảng CHECK CONSTRAINT ALL| Tên_constraint [ , ]

/*Tạo khóa ngoại kết nối giữa 2 bảng */

Alter table Ketqua

ADD

constraint foreignkey_SV_KQ foreign key (MaSV) references Sinhvien(MaSV) alter table ketqua

ADD

constraint foreignkey_MH_KQ foreign key (MaMH) references Monhoc(MaMH)

/*chèn dữ liệu

Insert into Tên_Bảng [(tên trường cần chèn)] values (Giá trị của trường)

*/

insert into sinhvien

values (N'Phạm Trung Tính','Nam','03/30/1996','Quảng Ninh','AT10D') insert into sinhvien TenSV,Gioitinh,Ngaysinh, Que, Lop)

values (N'Trần Bảo Trọng','Nam','2000/12/14','Hà Giang','AT10D')

insert sinhvien

values (N'Lê Thùy Dung',N'Nữ','05/12/1997','Hà Nội','AT10D')

insert Sinhvien

values (N'Lê Trường An',N'Nam','11/20/1995',N'Ninh Bình','AT10D')

insert sinhvien

values (N'Phạm Thị Hương Giang',N'Nữ','2/21/1999',N'Hòa Bình','AT10C') insert sinhvien

values (N'Đoàn Duy Thức',N'Nam','4/12/1993',N'Hà Nội','AT10C')

insert sinhvien

values (N'Dương Tuấn Thông',N'Nam','4/12/1991',N'Nam Định','AT10D') insert sinhvien

values (N'Lê Thành Đạt',N'Nam','4/15/1993',N'Phú Thọ','AT10A')

insert Monhoc MaMH,TenMH)

values ( , N'Lý Thuyết Cơ sở dữ liệu')

Trang 3

insert Monhoc

values ( , N'Toán cao cấp', )

insert Monhoc

values ( , N'Mạng máy tính', )

insert Monhoc

values ( , N'Tin đại cương', )

insert Ketqua

values ( , , )

insert Ketqua

values ( , , )

insert Ketqua

values ( , , )

insert Ketqua

values ( , , )

insert Ketqua

values ( , , )

insert Ketqua

values ( , , )

insert Ketqua

values ( , , )

insert Ketqua

values ( , , )

insert Ketqua

values ( , , )

insert Ketqua

values ( , , )

insert Ketqua

values ( , , )

insert Ketqua

values ( , , )

insert Ketqua

values ( , , )

insert Ketqua

values ( , , )

insert Ketqua

values ( , ,10)

/* update dữ liệu

Update Ten_Bang set giá_trị_gán_cho_các_trường [where điều_kiện]

*/

Trang 4

update Sinhvien set TenSV=N'Lê Trung Tính', Lop=N'At10D' where

MaSV='SV001'

select from Sinhvien

update Sinhvien set Gioitinh = N'Nữ' where MaSV=

/* xóa bản ghi (dữ liệu)

Delete Ten_bang [where điều_kiện]

*/

delete Sinhvien where Gioitinh='Nữ'

delete Ketqua where Diem<

/*chuyển ID tự tăng về 1 giá trị */

DBCC CHECKIDENT 'Sinhvien', RESEED, ) /*chuyển id về 0 */ /*////////////////////////////////////////////////////////////////////////////

*/

/* Truy vấn dữ liệu */

/*Cấu trúc câu lệnh Select

Select [Ten_Bang.]Ten_Cot[,…]

From Ten_Bang1 <Liên kết > Ten_Bang2

Where <Điều kiện>

Group by <các cột gom nhóm>

HaVing <Điều kiện lọc nhóm>

Order by [Ten_Bang.]Ten_cot [asc/desc,…]

Compute Hàm thống kê [By Ten_cot] */

/* lấy dữ liệu từ bảng*/

select from Sinhvien

select from Monhoc

select from Ketqua

/* đặt định danh cho cột, bảng*/

select sv.MaSV, TenSV as 'Tên Sinh Viên'

from Sinhvien as sv

/* Kết nối dữ liệu từ nhiều bảng */

/* kết nối sử dụng where*/

select sv.MaSV, TenSV as 'Tên Sinh Viên', TenMH, Diem from Sinhvien as sv, Monhoc as Mh, Ketqua as kq

Where sv.MaSV = kq.MaSV and kq.MaMH = mh.MaMH /* Kết nối dùng JOIN chính là inner join*/

select sv.MaSV, TenSV as 'Tên Sinh Viên', TenMH, Diem from ((Sinhvien as sv join Ketqua as kq on sv.MaSV = kq.MaSV) join Monhoc as Mh on kq.MaMH=mh.MaMH)

/* Kết nối dùng left JOIN*/

select sv.MaSV, TenSV as 'Tên Sinh Viên', TenMH, Diem from ((Sinhvien as sv left join Ketqua as kq on sv.MaSV = kq.MaSV) left join Monhoc as Mh on kq.MaMH=mh.MaMH)

/* Kết nối dùng right JOIN*/

select sv.MaSV, TenSV as 'Tên Sinh Viên', TenMH, Diem from ((Sinhvien as sv left join Ketqua as kq on sv.MaSV = kq.MaSV) right join Monhoc as Mh on kq.MaMH=mh.MaMH)

/* Kết nối dùng full JOIN*/

select sv.MaSV, TenSV as 'Tên Sinh Viên', TenMH, Diem from ((Sinhvien as sv full join Ketqua as kq on sv.MaSV = kq.MaSV) full join Monhoc as Mh on kq.MaMH=mh.MaMH)

/* Sử dụng cấu trúc lệnh trong Select */

Trang 5

select Masv, TenSV,

case

when Gioitinh=N'NAM' then N'đây là nam'

when Gioitinh =N'Nữ' then N'Đây là nữ'

else N'Không Xác định' end as 'thông tin'

from Sinhvien

select sinhvien.Masv, TenSV, Monhoc.TenMH, Diem,

case

when Diem>=8 then N'Đạt điểm giỏi'

when Diem>=7 and Diem<8 then N'Đạt điểm khá'

when Diem>=5 and Diem<7 then N'Đạt điểm trung bình'

else N'Thi lại' end as 'thông tin'

from Sinhvien, Monhoc, Ketqua

where Sinhvien.MaSV=Ketqua.MaSV and Ketqua.MaMH=Monhoc.MaMH

/* Sử dụng các toán tử trong select

Distinct : loại bỏ các dòng dữ liệu trùng

Top n : lấy n dòng đầu tiên

Top n with ties : lấy những dòng thuộc n cấp đầu tiên

Top n PERCENT : lấy N % dòng đầu tiên */

select distinct TenSV

from Sinhvien, Ketqua

where Sinhvien.MaSV = Ketqua.MaSV

select top ( ) TenSV,TenMH, Diem

from Sinhvien, Ketqua, Monhoc

where Sinhvien.MaSV = Ketqua.MaSV and Ketqua.MaMH = Monhoc.MaMH

select top (50) percent TenSV,TenMH, Diem

from Sinhvien, Ketqua, Monhoc

where Sinhvien.MaSV = Ketqua.MaSV and Ketqua.MaMH = Monhoc.MaMH

/* Sử dụng mệnh đề where để lọc dữ liệu hoặc để gom nhóm*/

select TenMH,DVHT from Monhoc where DVHT<>''

select MaSV, TenSV from Sinhvien where Gioitinh=N'Nam' and Que=N'Hà nội'

/*Có thể sử dụng các toán tử:

like: tìm chuỗi gần đúng

%: Thay thế 1 chuỗi -: thay thế 1 ký tự Between GT1 AND GT2: giá trị nằm giữa 2 giá trị */

select from Sinhvien where TenSV like '%trung%'

select from Sinhvien where TenSV like '%tí[k-o][^M-Z]'

select TenSV,TenMH, Diem

from Sinhvien, Ketqua, Monhoc

where Sinhvien.MaSV = Ketqua.MaSV and Ketqua.MaMH = Monhoc.MaMH and (Diem between 5 and 8)

select distinct tensv

from Sinhvien, Ketqua, Monhoc

where Sinhvien.MaSV = Ketqua.MaSV and Ketqua.MaMH = Monhoc.MaMH and (Monhoc.MaMH=1 or Monhoc.MaMH= )

select distinct tensv

Trang 6

from Sinhvien, Ketqua, Monhoc

where Sinhvien.MaSV = Ketqua.MaSV and Ketqua.MaMH = Monhoc.MaMH and Monhoc.MaMH=

Intersect /*EXCEPT phép trừ, phép hợp là UNION, phép giao là

Intersect */

select distinct tensv

from Sinhvien, Ketqua, Monhoc

where Sinhvien.MaSV = Ketqua.MaSV and Ketqua.MaMH = Monhoc.MaMH and Monhoc.MaMH=

/* sắp xếp theo thứ tự tăng, giảm*/

select from Ketqua

order by Diem DESC,MaSV ASC

select TenSV, TenMH,Diem

from sinhvien, Monhoc,Ketqua

where Sinhvien.MaSV = Ketqua.MaSV and Ketqua.MaMH = Monhoc.MaMH

order by Diem DESC

/* Mệnh đề Group by : mệnh đề gom nhóm dữ liệu

Mệnh đề này phải có khi trong câu truy vấn có sử dụng hàm thống kê và trên mệnh đề Select có lấy các giá trị không sử dụng hàm thống kê

Cú pháp : Group By Danh sách cột,Biểu thức

Với Danh sách cột,Biểu thức :được lấy trên mệnh đề Select không sử dụng hàm thống kê

Các Hàm thống kê:

Sum(Ten_Cot) :tính tổng với cột có kiểu số

Count(Ten_Cot/*) :tính tổng số dòng

AVG(Ten_Cot) :tính giá trị trung bình

Max(Ten_cot) : giá trị lớn nhất

Min(Ten_Cot) :giá trị nhỏ nhất)

*/ */

/*

Mệnh đề HaVing : mệnh đề Lọc nhóm dữ liệu

Mệnh đề này chỉ tồn tại khi trong câu truy vấn có mệnh đề Group By và điều kiện lọc dữ liệu có hàm thống kê

Chú ý : trong câu truy vấn có hai mệnh đề lọc dữ liêu là Where và havinh

Where :lọc dữ liệu để tạo nhóm ( có điều kiện không sữ dụng hàm thống kê) Having :lọc nhóm( các điều kiện có thống kê)

Mệnh đề OrDer By : Mệnh đề sắp xếp dữ liệu

Cú pháp Order by [Ten_bang.]Ten_Cot [asc/Desc] [,…]

Mệnh đề Compute /Compute By : là mệnh đề tạo giá trị thống kê cuối kết quả hoặc thống kê theo cột

Cú pháp

Compute Hàm thống kê : tạo thống kê cuối kết quả

Compute Hàm thống kê By [Ten_Bang.]Ten_cot :thống kê theo cột,dữ liệu phải được sắp xếp theo cột này

Chú ý: Trong View không có mệnh đề này

*/

select COUNT(*)

from Ketqua

/* sử dụng group by*/

select tensv, avg(ketqua.Diem)

from Sinhvien, Monhoc, Ketqua

where Sinhvien.masv = Ketqua.MaSV and Monhoc.MaMH = Ketqua.MaMH

Group by tensv

Trang 7

/* truy vấn lồng nhau*/

select tensv, Diem from Ketqua, sinhvien

where sinhvien.masv = Ketqua.MaSV and MaMH = 'MH001' and

Diem = (select MAX(Diem) from Ketqua where MaMH = 'MH001')

(select tensv, Diem from Ketqua, sinhvien

where sinhvien.masv = Ketqua.MaSV)

EXCEPT /*EXCEPT phép trừ, dùng phép hợp là UNION, phép giao là

Intersect */

(select tensv, Diem from Ketqua, sinhvien

where sinhvien.masv = Ketqua.MaSV and Diem< )

select tensv, Diem from Ketqua, sinhvien

where sinhvien.masv = Ketqua.MaSV

and Diem not IN select Diem from Ketqua, sinhvien

where sinhvien.masv = Ketqua.MaSV and Diem< )

select TenSV

from Sinhvien where Masv = 'SV001'

/*Update dữ liệu*/

update Sinhvien set Gioitinh=N'Nữ', Que = 'HCM' where Masv = 'SV001'

select COUNT(distinct Masv)

from Ketqua

select top 50 percent from sinhvien

select Top 1 Masv

from ketqua

select MaSV,avg(Diem)

from Ketqua

group by Masv

/*Câu 1: Cho biết mã số, tên, điểm thi tất cả các môn của sv: abc*/

select Sinhvien.MaSV, Tensv, TenMH, Diem

from Sinhvien, Ketqua, Monhoc

where Sinhvien.Masv = Ketqua.MaSV and Ketqua.MaMH=Monhoc.MaMH and Tensv=N'Phạm Trung Tính'

select Sinhvien.MaSV, Tensv, TenMH, Diem

from ((Sinhvien join Ketqua on sinhvien.masv = Ketqua.MaSV) join Monhoc on Ketqua.MaMH=Monhoc.MaMH)

where Tensv=N'Phạm Trung Tính'

/*câu 2: Cho biết mã số, tên môn và điểm thi ở những môn mà sinh viên abc phải thi lại (điểm<5)*/

select sinhvien.masv, TenMH, Diem

from ((Sinhvien join Ketqua on sinhvien.masv = Ketqua.MaSV) join Monhoc on Ketqua.MaMH=Monhoc.MaMH)

where Tensv=N'Phạm Trung Tính' and Diem<

/*câu 3: Cho biết mã số, tên những sinh viên đã thi ít nhất là 1 trong 3 môn

Cơ sở dữ liệu,

cấu trúc dữ liệu, mạng máy tính.*/

select distinct sinhvien.Masv, tensv

from ((Sinhvien join Ketqua on sinhvien.masv = Ketqua.MaSV) join Monhoc on Ketqua.MaMH=Monhoc.MaMH)

Trang 8

where TenMH in select TenMH from Monhoc where

TenMH =N'Mạng máy tính' or TenMH=N'Toán cao cấp' or TenMH=N'Hệ quản trị cơ sở dữ liệu')

/* câu 4: Cho biết mã số, tên những môn mà sinh viên có mã số ms001 chưa có điểm */

(select Mamh, tenmh from Monhoc)

EXCEPT /*phép trừ, dùng phép hợp là UNION, phép giao là Intersect */ (select Monhoc.MaMH, TenMH

from (Ketqua join Monhoc on Ketqua.MaMH=Monhoc.MaMH)

where masv ='SV001')

select from sinhvien

select from Ketqua

select from Monhoc

/* câu 5: Cho biết mã số, tên những sinh viên có điểm thi môn MH001 không thấp nhất khoa*/

select Sinhvien.Masv, tensv, diem

from Sinhvien, Ketqua

where sinhvien.masv = Ketqua.MaSV and MaMH='MH001' and Diem>(select MIN(Diem) from Ketqua where MaMH='MH001')

/*câu 6: Cho biết mã số và tên những sinh viên có điểm thi môn MH001 lớn hơn điểm thi môn MH001 của sinh viên SV003*/

/* câu 7: Cho biết số sinh viên phải thi lại môn Cơ sở dữ liệu */

select TenMH as 'Tên Môn Học', COUNT(*) as 'Số sinh viên thi lại'

from Ketqua, Monhoc

where Ketqua.MaMH = Monhoc.MaMH and TenMH=N'Lý thuyết cơ sở dữ liệu' and

Diem<

group by TenMH

/* câu 8: Đối với mỗi môn, cho biết tên môn và số sinh viên phải thi lại môn

đó mà số sinh viên thi lại >=2*/

select TenMH as 'Tên Môn Học', COUNT(*) as 'Số sinh viên thi lại'

from Ketqua join Monhoc on Ketqua.MaMH = Monhoc.MaMH

where Diem<5

group by TenMH

having COUNT(*) >=2

Order by TenMH desc

/*Câu 9: Cho biết điểm cao nhất môn MH001 mà các sinh viên đạt được*/

select sinhvien.MaSV, Tensv

from Ketqua join sinhvien on Ketqua.MaSV = sinhvien.masv

where MaMH='MH001' and Diem=(select MAX(Diem) from Ketqua where MaMH='MH001') /*Câu 10: Cho biết mã số, tên và lớp của sinh viên đạt điểm cao nhất môn Lý thuyết cơ sở dữ liệu */

/*câu 11: Cho biết sinh viên có điểm trung bình chung >=5 */

use QLSV

select Tensv as 'tên sinh viên', AVG(CAST(Diem as float)) as 'Điểm trung bình' from sinhvien, Ketqua

where sinhvien.masv = Ketqua.MaSV and ketqua.MaSV='SV001'

group by Tensv

having AVG(DIEM)>=5

/*test*/

Trang 9

select from Ketqua where MaSV='SV001'

/*Câu 12: Với mỗi sinh viên cho biết mã số, tên và điểm trung bình chung học tập của sinh viên đó*/

/* câu 13: Đối với mỗi lớp, lập bảng điểm gồm mã số, tên sinh viên và điểm trung bình chung học tập

Sắp xếp danh sách theo chiều giảm dần của điểm trung bình chung học tập và chiều tăng dần của họ tên*/

select Lop, Tensv, AVG(Diem)

from sinhvien, Ketqua

where sinhvien.masv = Ketqua.MaSV

Group by Lop, Tensv

order by Lop desc, tensv asc

/* Câu 14: Cho biết mã số và số điểm lớn hơn 7 của những sinh viên có hơn một nửa số điểm là >=7 *//////////

select from Ketqua order by MaSV

select ketqua.masv, count(mamh)

from ketqua

where Diem>=5

group by Ketqua.MaSV

having COUNT(MaMH) >=(select count(distinct mamh)/2 from ketqua)

select distinct mamh from Ketqua

/* Câu 15: Cho biết mã số và tên nhưng sinh viên có hơn một nửa số điểm >=5*/

/* Câu 16: Đối với mỗi lớp, cho biết mã số và tên nhưng sinh viên phải thi lại

từ 2 môn trở lên*/

select ketqua.MaSV,tensv, COUNT(*)

from sinhvien, ketqua

where sinhvien.masv = ketqua.MaSV and Diem<

group by Ketqua.MaSV, tensv

having COUNT(*)>=2

/* câu 17: Cho biết mã số và tên những môn học mà tất cả các sinh viên đều đạt điểm >=5*/

((select MaMH, TenMH

from Monhoc)

EXCEPT

(select Distinct Ketqua.MaMH, Tenmh from Monhoc, Ketqua where

Monhoc.MaMH=Ketqua.MaMH and Diem< ))

EXCEPT

((select MaMH, TenMH

from Monhoc)

EXCEPT

(select Distinct Ketqua.MaMH, Tenmh from Monhoc, Ketqua where

Monhoc.MaMH=Ketqua.MaMH))

/*C2*/

select MaMH, TenMH

from Monhoc

Where MaMH not in select Distinct Ketqua.MaMH from Ketqua where Diem< ) and MaMH in select MaMH from Ketqua)

/* Câu 18: cho biết mã số và tên của sinh viên có điểm trung bình chung học tập >=8 */

Trang 10

select sinhvien.masv, tensv

from sinhvien, Ketqua

where sinhvien.masv = Ketqua.MaSV

group by sinhvien.masv, tensv

having AVG(Diem)>=5

/*test*/

select ketqua.MaSV,AVG(Diem) from sinhvien, Ketqua where sinhvien.masv = ketqua.MaSV group by Ketqua.MaSV

/*câu 19: Cho biết mã số và tên những sinh viên có điểm trung bình chung học tập cao nhất*/

select sinhvien.masv, tensv

from sinhvien, Ketqua

where sinhvien.masv = Ketqua.MaSV

group by sinhvien.masv, tensv

having AVG(Diem)>=ALL(select AVG(DIEM) from Ketqua group by MaSV)

/*Câu 20: Cho biết mã số và tên những sinh viên phai thi lại ở ít nhất là những môn mà sin h viên có mã số SV003 phải thi lại*/

select DIStinct Ketqua.MaSV, tensv

from sinhvien, Ketqua

where sinhvien.masv = Ketqua.MaSV and MaMH in(select MaMH from Ketqua where Diem<5 and MaSV='SV003') and Diem<

select from Ketqua

create view view_sinhvien

as

select from Sinhvien

select from view_sinhvien

drop view view_sinhvien

delete from view_sinhvien where Masv= 'SV002'

create view view_ketqua

select from Ketqua ()

select from view_ketqua

delete from view_ketqua where MaSV='SV001' and MaMH='MH001'

update view_ketqua set Diem=6 where MaSV='SV001' and MaMH='MH002'

insert into view_ketqua values ('SV001','MH001', )

create view view_sinhvien_ketqua

as

select Sinhvien.MaSV as 'Masinhvien', TenSV, Ketqua.MaSV, MaMH, Diem

from Sinhvien join Ketqua on Sinhvien.MaSV=Ketqua.MaSV

insert into view_sinhvien_ketqua Masinhvien,TenSV) values ('SV007','lê bùi mão')

select from view_sinhvien_ketqua

Ngày đăng: 23/05/2016, 14:11

TỪ KHÓA LIÊN QUAN

w