ON TAP SQL

Màu nền
Font chữ
Font size
Chiều cao dòng

ÔN TẬP SQL

BIÊN SOẠN: JAOSU

HTTP://HUEIT.INFO

HTTP://TINHOC360.NET

1. Thao tác dử liệu:

SELECT : Lấy, lọc dử liệu

INSERT: Thêm dử liệu

UPDATE: Sửa dử liệu

DELETE: Xóa dử liệu

2. Lập trình:

DECLARE: Khai báo biến

3. Các kiểu dử liệu:

a. Kiểu sô:

INT: nguyên

FLOAT: thập phân

DECIMAL(m,n)

b. Kiểu chuổi:

char(n)

varchar(n): không lưu trử ký tự có dấu

nvarchar(n): lưu trử ký tự có dấu

text(n):

ntexr(n): có dấu

c. Kiểu logic:

bit: có giá trị là 0 và 1

d. Kiểu ngày tháng:

datetime

4. Các hàm thường dùng:

Getdate(): lấy ngày hiện tại

Year(): Lấy năm

Month(): Lấy tháng

Day(): lấy ngày

Isnull(): kiểm tra giá trị có null (rổng) hay không

Datediff(dd | mm | yy,ngày 1 tháng 1 năm 1,ngày 2 tháng 2 năm 2): Tính xem có bao nhiêu ngày, tháng, năm từ ngày 1 tháng 1 năm 1 đến ngày 2 tháng 2 năm 2

Not in : không nằm trong

Sum(): tính tổng

Count(): đếm

Avg(): tính trung bình

Max(): lấy số lớn nhất

Min(): lấy số bé nhất

(*) Lưu ý:

SQL không phân biệt chử hoa, chử thường

Để hiển thị một chuổi là tiến việt thì ta cần viết chử " N" ở đầu chuổi

%: đại diện một chuổi

Like: tìm kiếm tương tự (vd:where diachi like ' % huế %')

Default: gán giá trị mặc định (vd: gioitinh bit default 1)

[tên bảng].<tên trường> : gọi tên trường trong một bảng

Nếu tên trường là duy nhất thì không cần gọi bảng

5. Tạo CSDL: Create database <tên CSDL>

6. Xóa CSDL: drop database <tên CSDL>

7. Tạo bảng:

Create table <tên bảng>

<tên cột 1> <kiểu dử liệu> [<các ràng buộc>,]

<tên cột 2> <kiểu dử liệu> [<các ràng buộc>,]

.......

<tên cột n> <kiểu dử liệu> [<các ràng buộc>,]

8. Tạo ràng buộc khóa chính:

Constraint <ten rang buoc> primary key (danh sach cac cot)

9. Tạo ràng buột khóa ngoại:

Constraint <ten rang buoc> foreign key (ds cac cot) references <ten bang>(<ten cot>)

10. Ràng buộc điều kiện

Constraint <ten rang buoc> check <cac dieu kien>

11. Sửa bảng:

a. Thêm cột:

Alter table <tên bảng>

Add <định nghĩa cột>

b. Sửa cột:

Alter table <tên bảng>

Alter column <tên cột> <kiểu dử liệu>

c. Xóa cột :

Alter table <tên bảng>

Drop column <tên cột>

d. Xóa bảng:

Alter table <tên bảng>

Drop table <tên bảng>

e. Thêm ràng buộc:

Alter table <tên bảng>

Add constraint <định nghĩa ràng buộc>

f. Xóa ràng buộc:

Alter table <tên bảng>

Drop constraint <tên ràng buộc>

g. Thêm ràng buột mặc định:

Alter table <tên bảng>

Add constraint <tên ràng buộc> default <giá trị mặc định> for <tên côt>

NGÔN NGỬ THAO TÁC DỬ LIỆU

1. Câu lênh SELECT:

Select [all (lấy hết dl)|distinct|top n][ds các cột tham gia truy vấn|* (lấy hết các trường)][into <tên bảng>]

From <ds bảng tham gia truy vấn>

[where <điều kiện lọc dử liệu>]

[group by <ds các cột cần gom nhóm>]

[having <điều kiện lọc dử liệu>]

[order by <các cột cần sắp xếp thứ tự>] [ASC(tăng dần)|DESC(giãm dần)]

(*) Dạng CASE.....WHEN

Case

When <bt điều kiện 1> then <bt1>

When <bt điều kiện 2> then <bt2>

.............

When <bt điều kiện n> then <btn>

Else <bt n+1>

End

Vd:

Select manv,hoten,case when gioitinh=1 then 'nam' when gioitinh=0 then N'nu' end

From nv

BÀI TẬP:

Bài 1:

1. Dùng lệnh create để tạo CSDL có tên quanlyduan và các bảng sau:

PHONG(maphong - pk,tenphong)

DUAN(maduan - pk,tenduan,diadiemda,maphong -fk)

NHANVIEN(manv - pk,hoten,gioitinh,ngaysinh,maphong -fk,luong)

DIADIEMDA(maphong -fk,diadiem)

CHAMCONG(manv -fk,maduan -fk,sogio)

2a. Tạo các khóa chính và khóa ngoại như trên bảng ( trong đó: pk: khóa chính; fk: khóa ngoại)

2b. Bổ sung ràng buộc cho bảng NHANVIEN để đảm bảo rằng 1 nv chỉ có thể làm việc trong Cty khi tuổi từ 18 - 60 tuổi

2c. Bổ sung ràng buộc thiết lập giá trị mặc định là 1 cho cột gioitinh và là 0 cho cột lương nhân viên

Bài giải:

--1a: Tao database co ten quanlyduan

create database quanlyduan

--1b: Tao bang

create table phong

maphong int not null,

tenphong nvarchar(30)

create table duan

maduan int not null,

tenduan nvarchar(30),

diadiemda nvarchar(50),

maphong int

create table diadiemdv

maphong int,

diadiem nvarchar(50)

create table nhanvien

manv int not null,

hoten nvarchar(30),

gioitinh bit,

ngaysinh datetime,

maphong int,

luong int,

create table chamcong

manv int,

maduan int,

sogio int,

--2a1: Tao khoa chinh

alter table phong

add constraint pk_maphong primary key(maphong)

alter table duan

add constraint pk_maduan primary key(maduan)

alter table nhanvien

add constraint pk_manv primary key(manv)

--2a2: Tao khoa ngoai

alter table duan

add constraint fk_maphong foreign key (maphong) references phong(maphong)

alter table nhanvien

add constraint fk_nv_maphong foreign key (maphong) references phong(maphong)

alter table chamcong

add constraint fk_cc_manv foreign key (manv) references nhanvien(manv)

alter table chamcong

add constraint fk_cc_maduan foreign key (maduan) references duan(maduan)

alter table diadiemdv

add constraint fk_dd_maphong foreign key (maphong) references phong(maphong)

--2b:

alter table nhanvien

add constraint chk_ns check ((year(getdate())-year(ngaysinh)>=18) and (year(getdate())-year(ngaysinh)<=60))

--2c:

alter table nhanvien

add constraint default_gioitinh

default 1 for gioitinh

alter table nhanvien

add constraint default_luong default 0 for luong

Bài 2:

1. Tạo CSDL có tên là quanlydiem (bằng lệnh create) gồm các bảng:

MONHOC(mamh - pk,tenmh)

SV(masv - pk,tensv,tuoi)

DIEM(masv - fk,mamh - fk,tensv,ngaythi,diem)

2. Tạo các ràng buộc sau:

a. Tạo các khóa chính

b. Tạo các khóa ngoại

c. Tạo ràng buộc điểm từ 0 - 10; sv có tuổi từ 18 trở lên

3. Thực hiện các truy vấn sau:

a. Lấy ra những sinh viên có họ là Nguyễn

b. Lấy ra các môn học mà có sinh viên thi

c. Lấy ra ds sinh viên và môn học tương ứng mà họ đã thi

d. Lấy ra nhưng sv thi SQL trên 5 điểm

e. Tìm sv có tuổi cao nhất

f. Tính xem mỗi sv đã thi được bao nhiêu ngày rồi

g. Hiển thị ds các sv chưa thi môn nào

h. Lấy ra những sv đạt điểm cao nhất

Bài giải:

-- tao database

create database quanlydiem

-- tao bang

create table monhoc

mamh int not null,

tenmh nvarchar(30)

create table sv

masv int not null,

tensv nvarchar(30),

tuoi int,

create table diem

masv int,

mamh int,

ngaythi datetime,

diem int,

--2a.

alter table monhoc

add constraint pk_monhoc primary key (mamh)

alter table sv

add constraint pk_sv primary key (masv)

--2b.

alter table diem

add constraint fk_diem_mamh foreign key (mamh) references monhoc(mamh)

alter table diem

add constraint fk_diem_masv foreign key (masv) references sv(masv)

--2c.

alter table diem

add constraint chk_diem check (diem>=0 and diem<=10)

alter table sv

add constraint chk_tuoi check (tuoi>=18)

--3a.

select *

from sv

where tensv like N'Nguyễn %'

--3b.

select diem.mamh,tenmh

from monhoc,diem

where monhoc.mamh=diem.mamh

--3c.

select diem.masv,tensv,diem.mamh,tenmh

from monhoc,sv,diem

where monhoc.mamh=diem.mamh and sv.masv=diem.masv

--3d.

select tensv,diem,tenmh

from sv,diem,monhoc

where sv.masv=diem.masv and monhoc.mamh=diem.mamh and diem>5 and tenmh='sql'

--3e.

select masv,tensv,tuoi

from sv

where tuoi=(select MAX(tuoi) from sv)

--3f.

select sv.masv,tensv,tenmh,DATEDIFF(dd,ngaythi,getdate())

from sv,diem,monhoc

where sv.masv=diem.masv and monhoc.mamh=diem.mamh

--3g.

select masv,tensv

from sv

where masv not in (select masv from diem)

--3h.

select tensv,diem

from sv,diem

where sv.masv=diem.masv and diem=(select MAX(diem) from diem)

Bài 3:

1. Dùng lệnh Create tạo CSDL có tên quanlybanhang gồm các bảng

KHACHHANG(makh,tenkh - not null, tuoi)

SANPHAM (masp,tensp,dongia)

HOADON(mahd,makh,ngaylaphd,tongtien)

CHITIETHD(mahd,masp,soluong)

2. Tạo các truy vấn sau

a. Lấy ra những khách hàng trên 50 tuổi

b. Lấy ra những sp được bán trong ngày 10/10/2010

c. Lấy ra những khách hàng đã mua những mặt hàng nào trong ngày 10/10/2010

d. Tính tổng tiền của mỗi hóa đơn

e. Lấy ra những sp chưa bán lần nào

f. Hiển thị ds khách hàng đã mua hàng và ds sp được mua bởi khách hàng đó

g. Hiển thị tên và giá của những sp có giá cao nhất

Bài giải:

--tao database

create database quanlybanhang

--tao bang

create table kh

makh int constraint pk_makh primary key (makh),

tenkh nvarchar(30) not null,

tuoi int,

create table sp

masp int constraint pk_masp primary key (masp),

tensp nvarchar(100),

dongia int,

create table hd

mahd int constraint pk_mahd primary key (mahd),

makh int constraint fk_makh foreign key (makh) references kh(makh),

ngaylaphd datetime,

tongtien int,

create table cthd

mahd int constraint fk_mahd foreign key (mahd) references hd(mahd),

masp int constraint fk_masp foreign key (masp) references sp(masp),

soluong int,

--2a.

select makh,tenkh,tuoi

from kh

where tuoi>50

--2b.

select sp.masp,tensp

from sp,cthd,hd

where ngaylaphd='10/10/2010' and hd.mahd=cthd.mahd and sp.masp=cthd.masp

--2c.

select tenkh,tensp

from kh,hd,sp,cthd

where kh.makh=hd.makh and sp.masp=cthd.masp and hd.mahd=cthd.mahd and ngaylaphd='10/10/2010'

--2d.

select hd.mahd,ngaylaphd,sum(soluong*dongia) as tongtien

from sp,hd,cthd

where sp.masp=cthd.masp and hd.mahd=cthd.mahd

group by hd.mahd,ngaylaphd

--2e.

select masp,tensp

from sp

where masp not in (select masp from cthd)

--2f.

select tenkh,tensp

from kh,sp,hd,cthd

where kh.makh=hd.makh and sp.masp=cthd.masp and hd.mahd=cthd.mahd

--2g.

select tensp,dongia

from sp

where dongia=(select max(dongia) from sp)

Bài 4:

1. Dùng lệnh create để tạo CSDL quanlynhanvien với các bảng sau:

CV(macv - char(5) - pk, tencv - nvarchar(30))

TP(matp - char(5) - pk, tentp - nvarchar(50))

NV(manv - int - pk, tennv - nvarchar(30), macv - char(5) - fk)

PHICT(macv - char(5) - pk, matp - char(5) - pk, phi1ngay - int)

DOTCT(madot - int - pk, matp - char(5) - fk, songay - int, ngaydi - datetime)

THAMGIACT(madot - int - pk, manv - int - pk)

2. Dùng lệnh Alter thực hiện:

2a. Tạo khóa chính

2b. Tạo khóa ngoại

2c. Tạo giá trị mặc định số ngày ở bảng DOTCT = 0

3. Thực hiện các truy vấn sau:

a. Liệt kê các nhân viên có chức vụ là giám đốc

b. Liệt kê chức vụ, thành phố mà có phí công tác trên 50.000

c. Liệt kê danh sách các mã đợt, ngày đi mà đến thành phố có tên là HCM với số ngày đi nhiều hơn 7 ngày

d. Liệt kê danh sách manv, tennv chưa tham gia vào các đợt công tác đi trong tháng 10/2010 đến thành phố có tên Hà Nội

e. Liệt kê danh sách manv, tennv chưa tham gia chuyến công tác nào

f. Liệt kê tổng số đợt đi công tác của mỗi nhân viên

g. Liệt kê danh sách các nhân viên có tổng số ngày đi công tác lớn hơn 100 ngày

Bài giải:

--tao CSDL

create database quanlynhanvien

--tao bang

create table cv

macv char(5) not null,

tencv nvarchar(30),

create table tp

matp char(5) not null,

tentp nvarchar(50),

create table phict

macv char(5) not null,

matp char(5) not null,

phi1ngay int,

create table nv

manv int not null,

tennv nvarchar(30),

macv char(5),

create table dotct

madot int not null,

matp char(5),

songay int,

ngaydi datetime,

create table thamgiact

madot int not null,

manv int not null,

--2. Dung lenh Alter de tao khoa

--a. Tao khoa chinh

alter table cv

add constraint pk_cv_macv primary key (macv)

alter table tp

add constraint pk_tp_matp primary key (matp)

alter table phict

add constraint pk_pct_macv_matp primary key (macv,matp)

alter table nv

add constraint pk_nv_manv primary key (manv)

alter table dotct

add constraint pk_dct_madot primary key (madot)

alter table thamgiact

add constraint pk_tgct_madot_manv primary key (madot,manv)

--b. Tao khoa ngoai

alter table nv

add constraint fk_nv_macv foreign key (macv) references cv(macv)

alter table dotct

add constraint fk_dotct_matp foreign key (matp) references tp(matp)

alter table thamgiact

add constraint fk_tgct_madot foreign key (madot) references dotct(madot)

alter table thamgiact

add constraint fk_tgct_manv foreign key (manv) references nv(manv)

alter table phict

add constraint fk_pct_macv foreign key (macv) references cv(macv)

alter table phict

add constraint fk_pct_matp foreign key (matp) references tp(matp)

--c. Tao gia tri mac dinh so ngay o bang dotct = 0

Bạn đang đọc truyện trên: Truyen2U.Pro