Bài giảng Hệ quản trị cơ sở dữ liệu: Hệ quản trị cơ sở dữ liệu SQL server 2005 gồm có những nội dung chính sau: Giới thiệu tổng quát về hệ quản trị SQL server 2005, chức năng chính của hệ quản trị SQL Server 2005, ngôn ngữ SQL,... Mời các bạn cùng tham khảo.
Trang 1HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU
SQL SERVER 2005
Phan Hiền
Trang 2GIỚI THIỆU HQTCSDL
Tổng quát
Chức năng chính
Tạo lập & quản lý dữ liệu
Lập cáo loại báo cáo & tổng hợp dự liệu
Quản lý quyền hạn sử dụng
Tương tác các hệ quản lý khác
Hệ quản trị SQL Server 2005
Trang 4HỆ QUẢN TRỊ SQL SERVER 2005
Thành phần chính
Database Engine (Quản lý & tạo lập & khai thác dử liệu)
Analysis Services (Cung cấp giải pháp phân tích và khai mỏ
Report (Báo cáo)
Full-Text Search (Tìm kiếm chuổi)
Service Broker (Trung gian truyền thông điệp)
Notification services (Trung gian nhắc thông tin)
Trang 5DATABASE ENGINE
Quản lý dữ liệu
Tạo lập và quản lý dữ liệu theo mô hình Quan Hệ
Khai thác dữ liệu (Dùng ngôn ngữ truy vấn)
- SQL (Structure Query Language)
- Ngôn ngữ lập trình của SQL Server
Quản lý quyền hạn sử dụng
Một số chức năng khác như tìm kiếm,…
Trang 7dinh_nghia_cot ::=
{ten_cot kieu_dl} [DEFAULT giatri_hang] [IDENTITY [(hat_giong , muc_tang)]]
[<rang_buoc_cot>]
Trang 8[ON {DELETE|UPDATE} CASCADE ]}
Trang 9|FOREIGN KEY (ten_cot [, n])RREFERENCES ten_bang_quan_he
(ten_cot_quan_he [, n])[ON {DELETE|UPDATE} CASCADE ]}
Trang 10NGÔN NGỮ SQL
Cú pháp thay đổi cấu trúc bảng :
ALTER TABLE ten_bang
{ ALTER COLUMN ten_cot
[, n]
|
DROP {CONSTRAINT ten_rb | COLUMN ten_cot}
}
Trang 11NGÔN NGỮ SQL
Cú pháp xoá bảng :
DROP TABLE ten_bang
Luật trên dữ liệu :
CREATE RULE ten_luat
AS
@VALUE { IN | LIKE
| = | > | < | != | ≥ | ≤ } {gia_tri , tap_hop}
Trang 12} [[AS] ten_cot_moi]
} [, n]
Trang 13NGÔN NGỮ SQL - SELECT
<danh_sach_bang> ::=
{<ten_bang> [AS bi_danh] [, n] | <bang_tam>}
<bang_tam> ::=
( <ten_bang> [AS bi_danh]
{INNER | RIGHT | LEFT} JOIN
<ten_bang> [AS bi_danh]
ON dieu_kien ) [AS bi_danh]
|
( {<bang_tam> | <ten_bang> [AS bi_danh]}
{INNER | RIGHT | LEFT} JOIN
{<bang_tam> | <ten_bang> [AS bi_danh]}
ON dieu_kien ) [AS bi_danh]
<ten_bang> ::= {ten_bang , SELECT …}
Trang 15NGÔN NGỮ SQL - SELECT
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]
Trang 16NGÔN NGỮ SQL - SELECT
SOME | ANY & ALL
{gia_tri | ten_cot | bieu_thuc}
{= | > | < | != | ≥ | ≤}
{SOME | ANY | ALL} SELECT 1_cot …
Hàm thông dụng :
EXISTS (SELECT …) : Trả về true/false
nếu select có kết quả
Trang 17NGÔN NGỮ SQL - SELECT … GROUP
Trang 18NGÔN NGỮ SQL - SELECT … GROUP
Trang 19SQL 2005- BẢNG TẠM
with tscv as (
select manv , count(*) ts
from phancong group by manv
)
select manv , tennv
(select ts from tscv where manv=nv.manv)/ (select sum(ts) from tscv) AS xxx
from nhanvien nv
select manv ,
count(*)/(select sum(ts) from tscv)
from phancong group by manv
Trang 20SQL 2005- BẢNG TẠM – ĐỆ QUY
create table quanhe_nhanvien
(manv char(5) primary key,tennv char(20),manvct char(5))
Trang 21SQL 2005- BẢNG TẠM – ĐỆ QUY
with truy (manv,tennv,manvct,mucdo,cay,cayten) as (
select a.manv,a.tennv,a.manvct,1 as mucdo,
cast('' as varchar(max)) as cay, cast('' as varchar(max)) as cayten from quanhe_nhanvien a
where a.manvct is null
union all
select b.manv,b.tennv,b.manvct,mucdo + 1 as mucdo,
(truy.cay + '\' + b.manvct) as cay, cayten + '\' + cast(truy.tennv as varchar(20))
as cayten from quanhe_nhanvien b inner join truy
on truy.manv = b.manvct )
select * from truy
Trang 22SQL 2005- BẢNG TẠM – ĐỆ QUY
with truy (manv,tennv,manvct,kq) as (
select a.manv,a.tennv,a.manvct,
cast('' as varchar(max)) as kqfrom quanhe_nhanvien a
where a.manvct is null
union all
select b.manv,b.tennv,b.manvct,
(truy.kq + '\' + b.manvct) as kqfrom quanhe_nhanvien b inner join truy
on truy.manv = b.manvct)
select * from truy
Trang 24SQL 2005- BẢNG TẠM – ĐỆ QUY
with truy (manv,tennv,manvct,mucdo,cay,cayten) as (
select a.manv,a.tennv,a.manvct,1 as mucdo,
cast('' as varchar(max)) as cay, cast('' as varchar(max)) as cayten from quanhe_nhanvien a
where a.manvct = a.manv
union all
select b.manv,b.tennv,b.manvct,mucdo + 1 as mucdo,
(truy.cay + '\' + b.manvct) as cay, cayten + '\' + cast(truy.tennv as varchar(20))
as cayten from quanhe_nhanvien b inner join truy
on truy.manv = b.manvct where b.manv != b.manvct
)
select * from truy
Trang 26[1997],[1998],[1999] : là các giá trị
mahang,sl,nam : chỉ gồm đúng 3 cột gồm Header row,Header column, Value
Mệnh đề From và Pivot phải đặt lại tên mới
Trang 27
SQL 2005- 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)) -
nv002 cv003
Trang 28Lấy ra manv mà làm cả 2 công việc ‘cv001’ & ‘cv003’
Select manv from phancong where macv = ‘cv001’Intersect
Select manv from phancong where macv = ‘cv003’
nv002
Trang 29SQL 2005- CROSS – OUTER APPLY
select *
From nhanvien as nv cross apply
( select count(*) as ts from phancong as pc
where pc.manv = nv.manv
) as tongsoviec
Làm lại truy vấn count cho từng manv
(có thể thay câu count thành hàm tính toán cho ra Table)
Select *
from nhanvien as nv inner join
(select manv,count(*) ts from phancong
group by manv) as tscv
On tscv.manv = nv.manv
Trang 30SQL 2005- UPDATE – DELETE TOP
UPDATE TOP 2 FROM NHANVIEN
SET TENNV = TENNV + ‘A’
DELETE TOP 2 NHANVIEN
INSERT TOP 2 INTO bang1 SELECT …
(TOP 2 : Là lấy 2 dòng đầu tiên trong dữ liệu insert vào)