Ị Ơ Ở Ữ Ệ

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à T­SQL (Transact­Structured 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 } [DEFAULT

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 {| } [,..n] |

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

::=

{ [AS bi_danh] [,..n] |

}

::=

( [AS bi_danh]

{INNER | RIGHT | LEFT} JOIN

[AS bi_danh]

ON dieu_kien ) [AS bi_danh]

|

( { | [AS

bi_danh]}

{INNER | RIGHT | LEFT} JOIN

{ | [AS

bi_danh]}

ON dieu_kien ) [AS bi_danh]

::= {ten_bang | (SELECT …)}

ữ ệ

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  : [a­b] 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  : [^a­b] 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