Ệ
Ả
Ị Ơ Ở Ữ Ệ
H QU N TR C S D LI U SQL SERVER 2012
ị ơ ở ữ ệ
ả
ớ
ệ
i thi u h qu n tr c s d li u
ệ Gi SQL Server 2012
• HQTCSDL là ph n m m v i ti n ích giúp cho vi c
ề ệ
ớ ệ ệ ị ữ ệ ả ả ầ ộ qu n tr d li u m t cách hi u qu .
• Có r t nhi u HQTCSDL nh Microsoft là SQL
ư ề ấ
ặ ở
cài đ t
sách chính
Server, Oracle, IBM, MySQL, …
• Công c chính SQL Server 2012 (
ụ )
– Giao di n làm vi c (SQL Server Management
ệ ệ
Studio)
– L u tr d li u (Database Engine)
ử ữ ệ ư
– T ng h p và phân tích d li u (Analysis
ổ ữ ệ
ợ Services)
ủ Tính năng chính c a SQL Server 2012
ả ị ữ ệ • Qu n tr d li u
ẽ ữ ệ ạ • Chia s d li u qua m ng và các HQTCSDL khác
ổ ợ ữ ệ • Báo cáo, t ng h p và phân tích d li u
ị ữ ệ
ả
ủ Tính năng chính c a qu n tr d li u
ạ ậ ữ ệ • T o l p d li u
• Khai thác d li u (thông qua ngôn ng truy v n)
ữ ệ ữ ấ
ỗ ợ ậ ữ ệ ố ệ ử • H tr l p trình x lý s li u và d li u
• Qu n lý giao tác
ả
ả ẹ ữ ệ • Qu n lý các toàn v n d li u
ề ử ụ ỗ ợ ữ ệ • H tr phân quy n s d ng d li u
ữ ượ ử ụ
ữ ệ
ể ữ ở ộ
Ngôn ng đ Language) [ đây là ngôn ng m r ng trên SQL
c s d ng đ khai thác d li u là TSQL (TransactStructured Query ]
ỗ ợ ệ ư • H tr vi c sao l u
ộ ố
M t s quy
ướ c
ừ T khoá : TUKHOA
ệ ề
M nh đ :
Tên riêng : ten_rieng
Ho cặ : |
ặ ạ L p l i nhi u l n ề ầ : [,..n]
ả ậ ợ Mô t t p h p
{a|b|c}: tồn tại ít nhất 1 trong 3 thành phần a,b,c.
[a|b|c]: tồn tại ít nhất 0 trong 3 thành phần a,b,c.
ể ữ ệ Ki u d li u
• Chu i: ỗ
char; nchar; varchar; nvarchar
• S :ố
text; ntext
bit; tinyint; smallint; int; bigint
float; real; decimal/numeric;
• Ngày: date; datetime; time
•
money; smallmoney
•
rowversion; uniqueidentifier
binary; image; XML
ữ ạ ậ ữ ệ
Ngôn ng t o l p d li u
ữ ệ ạ ậ Cú pháp t o l p d li u :
CREATE DATABASE ten_database
USE ten_database
ả ạ ậ Cú pháp t o l p b ng :
CREATE TABLE ten_bang
( {
[,.. n] )
dinh_nghia_cot ::=
{ten_cot
giatri_hang]
[IDENTITY [(hat_giong , muc_tang)]]
[
ữ ạ ậ ữ ệ
Ngôn ng t o l p d li u
[
[CONSTRAINT ten_rang_buoc]
{
{NULL | NOT NULL} |
{=|
CHECK (ten_cot >|<|!=|≥|≤} gia_tri) |
{PRIMARY KEY | UNIQUE} |
REFERENCES ten_bang_quan_he
(ten_cot_quan_he [,..n])
[ON {DELETE|UPDATE} CASCADE ]
}
ữ ạ ậ ữ ệ
Ngôn ng t o l p d li u
[
[CONSTRAINT ten_rang_buoc]
{ CHECK (bieu_thuc_tren_cot
{=|>|<|!=|≥|≤} gia_tri) |
{PRIMARY KEY | UNIQUE} (ten_cot | [,..n])
FOREIGN KEY (ten_cot [,..n])
RREFERENCES ten_bang_quan_he
(ten_cot_quan_he [,..n])
[ON {DELETE|UPDATE} CASCADE ]
}
ữ ạ ậ ữ ệ
Ngôn ng t o l p d li u
ổ ấ ả Cú pháp thay đ i c u trúc b ng :
ALTER TABLE ten_bang {
ALTER COLUMN ten_cot {
DROP DEFAULT |
SET DEFAULT gia_tri_hang |
IDENTITY (hat_giong , muc_tang)
} |
ADD {
DROP {CONSTRAINT ten_rb | COLUMN
ten_cot}
ả
Cú pháp xoá b ng :
}
DROP TABLE ten_bang
ữ ạ ậ ữ ệ
Ngôn ng t o l p d li u (ví d )ụ
Create table lophoc (
malop nvarchar(5) primary key, tenlop nvarchar(100), tongso int,
constraint tschk check (tongso < 50))
Create table monhoc (
mamon nvarchar(5) primary key, tenmon nvarchar(100))
Create table sinhvien (
masinhvien nvarchar(10) primary key, tensinhvien nvarchar(100),
malop nvarchar(5) references lophoc(malop))
Create table diem (
masinhvien nvarchar(10) references sinhvien(masinhvien),
mamon nvarchar(5) references monhoc(mamon),
diem decimal,
constraint kchinh primary key (masinhvien, mamon) )
ữ ạ ậ ữ ệ
Ngôn ng t o l p d li u
ữ ệ ậ Lu t trên d li u :
CREATE RULE ten_luat
AS
@VALUE
{IN | LIKE | = | > | < | != | ≥ | ≤ }
{gia_tri [,..n] | tap_hop}
ụ ậ Áp d ng lu t :
EXEC sp_bindrule ‘ten_luat’,‘ten_bang.ten_cot’
[furtureonly]
EXEC sp_unbindrule ‘ten_bang.ten_cot’
ữ
ấ
Ngôn ng truy v n Select
SELECT [[ALL|DISTINCT]|[TOP [PERCENT]
n]]
FROM
WHERE
ORDER BY
{ten_cot [,..n] |
thu_tu_cot[,..n]}
--------------------------------------- ---
{ [ten_bang. | bi_danh.]ten_cot |
bieu_thuc_tinh_toan_tren_cot
} [[AS] ten_cot_moi]
[,..n]
ữ
ấ
Ngôn ng truy v n Select
{
(
{INNER | RIGHT | LEFT} JOIN
ON dieu_kien ) [AS bi_danh]
|
( {
bi_danh]}
{INNER | RIGHT | LEFT} JOIN
{
bi_danh]}
ON dieu_kien ) [AS bi_danh]
ấ
ữ ệ
ề
Ngôn ng truy v n – Select (đi u ki n)
{
[NOT]
{gia_tri | ten_cot | bieu_thuc}
{ = | > | < | != | ≥ | ≤ }
{gia_tri | ten_cot | bieu_thuc}
|
[NOT] IN ({gia_tri [,..n]|SELECT 1_cot}) |
[NOT] BETWEEN
{gia_tri | ten_cot | bieu_thuc} AND
{gia_tri | ten_cot | bieu_thuc}
|
[NOT] LIKE chuoi_co_ky_tu_dai_dien
}
ấ
ữ ệ
ề
Ngôn ng truy v n – Select (đi u ki n)
ự ạ
ệ
ổ Chu i ký t
đ i di n :
ấ ứ
ự
ủ ơ
ự
% : B t c ký t
gì c a h n 0 ký t
ự
ủ
ự
ấ ứ : B t c ký t
gì c a 1 ký t
_
ị ơ
ậ
ộ
ị
ị
[]
ạ : M t giá tr đ n trong đo n giá tr hay t p giá tr .
ụ
Ví d : [ab] hay [abef]
ị ơ
ạ
ậ
ộ
ộ
ị
ị
[^] : M t giá tr đ n không thu c vào trong đo n giá tr hay t p giá tr .
ụ
Ví d : [^ab] hay [^abef]
SOME | ANY | ALL
ả ề
ế
ế
ả
EXISTS (SELECT …)
: Tr v true/false n u select có k t qu
EXCEPT – INTERSECT
ữ
ấ
Ngôn ng truy v n Select
SELECT [ALL | DISTINCT]
FROM
WHERE
GROUP BY
HAVING
------------------------------------------------------
{[ten_bang.|bi_danh.]
{ten_cot_gom_nhom | bieu_thuc_tren_cot}
}[,..n]
[tinh_toan_tong_hop_tren_cot [,..n]]
Ví dụ
ệ
ể
ề
Li
t kê danh sách sinh viên không h có đi m
Select sv.* from sinhvien sv
Where sv.masinhvien not in
(Select masinhvien from diem)
ệ
ể
ấ
Li
t kê danh sách sinh viên có ít nh t 1 môn đi m 10
Select distinct sv.masinhvien, sv.tensinhvien
From sinhvien sv inner join diem d
on d.masinhvien = sv.masinhvien
Where d.diem = 10
Ví dụ
ệ
ề
ể
ọ
ọ
Li
t kê danh sách sinh viên mà m i môn h c đ u có đi m >= 5
Select sv.* from sinhvien sv
Where sv.masinhvien not in
(Select masinhvien from diem where diem < 5)
Select sv.masinhvien, sv.tensinhvien
from sinhvien sv inner join diem d
on d.masv = sv.masv
Group by sv.masinhvien, sv.tensinhvien
Having min(d.diem) >= 5
Ví dụ
ệ
ề
ọ
Li
ấ t kê danh sách sinh viên đã h c nhi u môn nh t
Select sv.masinhvien, sv.tensinhvien,
count(distinct d.mamon) as tong into #b1
From sinhvien sv inner join diem d
on d.masv = sv.masv
Group by sv.masinhvien, sv.tensinhvien
Select masv, tensv from #b1
where tong = (select max(tong) from #b1)
Ví dụ (EXCEPT – INTERSECT)
create table congviec
(macv char(5) primary key,tencv char(20))
create table phancong (manv char(5), macv char(5), constraint pk_phancong primary key (manv,macv))
create table nhanvien
(manv char(5) primary key, tennv char(20))
ụ ữ ệ
Ví d d li u
manv
macv
manv
macv
nv001
cv001
nv002
cv001
nv001
cv002
nv002
cv002
nv002
cv003
Ví dụ (EXCEPT – INTERSECT)
EXCEPT
ệ
ệ
ấ
ỉ
L y ra manv mà ch có làm công vi c cv001 mà không làm công vi c cv003.
Select manv from phancong where macv = ‘cv001’
Except
Select manv from phancong where macv = ‘cv003’
è Nv001
INTERSECT :
ệ
ả
ấ
L y ra manv mà làm c 2 công vi c cv001 và cv003
Select manv from phancong where macv = ‘cv001’
Intersect
Select manv from phancong where macv = ‘cv003’
è nv002