Tải bản đầy đủ (.pdf) (161 trang)

SQL server 2008 nguyễn hữu khôi

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (6.82 MB, 161 trang )

Chương 1: Giới thiệu SQL Server 2008
Cài đặt SQL Server 2008 Express Edition with
Advanced Services.
Trước khi tiến hành cài đặt SQL Server 2008 Express Edition with advanced
services, chúng ta phải kiểm tra xem trong máy đã cài đặt các thành phần sau đây
hay chưa:
Microsoft .NET Framework 3.5 SP1
Microsoft MSXML 6
Windows Installer 4.5
PowerShell
Với những máy sử dụng Windows 7 thì mặc định các thành phần trên đã được cài
đặt sẵn. Với những máy sử dụng Windows XP hay Windows Vista, chúng ta có thể
download các thành phần trên trên Website của Microsoft và cài đặt vào máy trước
khi cài SQL Server 2008

Tiến hành cài đặt:
Double Click vào file cài đặt MS SQLServer 2008 Express Edition. Cửa sổ SQL Server
Installation Center hiện ra như sau:

1


Chọn Installation → New SQL Server stand-alone installation or add features to an
existing installation

2


Cửa sổ SQL Server 2008 Setup như sau:

Click OK



Click Install.
3


Click Next. Nếu trong máy đã cài đặt các phiên bản khác của SQL Server 2008 thì cửa
sổ sau sẽ hiện ra và ta chọn Perform a New Installation of SQL Server 2008.

4


Click Next 2 lần.

5


Tích chọn vào ô I accept the license items và click Next

Click Select All và click Next.

6


Chọn Named instance, đánh vào dong chữ SQLExpress2008 và click Next 2 lần

Click Use the same account for all SQL Services.
Lúc này ta cần một Account/ Password của windows để nhập vào đây (Vào Control
Panel → User Accounts để tạo tài khoản quản trị của Windows).
Sau khi nhập xong Account/ Password click OK → click Next.


7


SQL Server 2008 có hai kiểu kiểm tra người dùng.
Windows authentication mode: Vi ệc kiểm tra người dùng của SQL Server 2005 sẽ
phụ thuộc vào việc kiểm tra người dùng của Windows. Khi người dùng có quyền
đăng nhập vào Windows, người dùng đó sẽ có quyền đăng nhập vào SQL Server. Kiểu
kiểm tra người dùng này thường được sử dụng khi ứng dụng khai thác dữ liệu và
SQL Server được cài trên cùng một máy tính.
SQL Server authentication mode: Việc kiểm tra người dùng của SQL Server 2005 sẽ
không phụ thuộc vào việc kiểm tra người dùng của Windows. Khi người dùng có
quyền đăng nhập vào Windows, người dùng đó chưa chắc sẽ có quyền đăng nhập vào
SQL Server. Để đăng nhập vào SQL Server, người dùng này phải có một bộ username
và password do SQL Server quản lý. Kiểu kiểm tra người dùng này thường được sử
dụng khi ứng dụng khai thác dữ liệu và SQL Server không được cài trên cùng một
máy tính.
8


Khi chọn Mixed mode, SQL Server có thể dùng bất kỳ kiểu kiểm tra người dùng nào
khi cần thiết. Đây là một thiết lập thực sự rất hữu ích khi xây dựng các ứng dụng
CSDL. Ngoài ra, ta cũng phải đánh password vào hai ô bên dưới để có thể đăng nhập
vào SQL Server khi ta xây dựng một ứng dụng truy xuất vào CSDL ở máy này khi ta
đang ở máy khác.
Chọn Mixed mode (SQL Server Authentication and SQL Server Authentication) →
Nhập password và confirm password → click Add Current User → click Next 3 lần →
click Install.

Click Next → Finish.


9


Các thao tác cơ bản trên SQL Server 2008.
Khởi động SQL Server 2008:
Start →All Programs → SQL Server 2008 → SQL Server Management Studio. Cửa sổ
SQL Management Studio xuất hiện đồng thời với cửa số kết nối vào máy chủ SQL
Server như sau:

Trong Server type chọn Database Engine.
Trong Server name nhập tên máy chủ SQL Server.
Nếu chúng ta sử dụng SQL Server 2008 Express Edition thi Server Name có dạng:
tên_máy\tên_thể_hiện. tên_thể_hiện do chúng ta chọn khi cài đặt SQL Server. Nếu
chúng ta sử dụng tên thể hiện mặc định trong quá trình cài đặt thì tên_thể_hiện là
SQLExpress, do đó Server Name sẽ là tên_máy\SQLExpress. Chúng ta cũng có thể sử
dụng cách viết sau để đăng nhập: .\SQLExpress.
Nếu chúng ta sử dụng SQL Server Enterprise, nhập (local) vào Server Name.
Trong hầu hết mọi trường hợp SQL Server tự động điền giá trị vào Server Name. Nếu
SQL Server không tự điền chúng ta click vào dấu mũi tên → Browse for more.

10


Nếu máy chủ SQL Server khác với máy hiện tại. Server Nam có dạng địa_chỉ_IP\
tên_thể_hiện. Chúng ta cũng có thể dùng chức năng Browse for more để tìm Server
Name trong mạng.
Click Connect để kết nối.

Tạo cơ sở dữ liệu:
Trong khung Object Explorer bên trái chọn Databases → Click chuột phải → New

Database…

11


Cửa sổ New Database xuất hiện như sau:

Trong Database name, nhập tên Database → Click OK.

Tạo bảng trong cơ sở dữ liệu:
Double click vào Databases → Double click vào cơ sở dữ liệu vừa tạo ( trong ví dụ
này CSDL tên là VIDU) → Click chọn Tables → Click chuột phải chọn New Table…

12


Giao diện tạo bảng như sau:

Trong giao diện tạo bảng có ba cột: Column Name, Data Type và Allow Nulls.
Trong đó:
Column Name: nhập tên các cột của bảng.
Data Type: kiểu dữ liệu của cột. Kiểu dữ liệu của một cột xác định một miền giá trị
mà cột đó có thể lưu trữ. Ví dụ: Kiểu dữ liệu Tiny Int có miền giá trị từ 0 → 255. Nếu
13


một cột có Data Type là Tiny Int thì giá trị mà cột đó có thể lưu trữ nằm trong khoang
từ 0 → 255. Khi khai báo kiểu dữ liệu của cột chúng ta cũng thường phải kèm theo độ
dài tối đa của dữ liệu có thể lưu trữ trong cột đó.
Allow Nulls: Tùy chọn cho phép chúng ta có thể nhập hay không nhập giá trị cho cột

này khi thêm dòng dữ liệu vào bảng.
Ví dụ: Giả sử chúng ta tạo bảng lưu trữ thông tin nhân viên như sau:
COLUMN NAME

DATA TYPE

ALLOW NULLS

MaNhanVien

VARCHAR(10)

HoNhanVien

NVARCHAR(30)

TenNhanVien

NVARCHAR(10)

GioiTinh

BIT

CMND

VARCHAR(12)

DiaChi


NVARCHAR(100)

DienThoai.

NVARCHAR(60)

X

Trong ví dụ này:
Kiểu dữ liệu VARCHAR là kiểu dữ liệu chuỗi không hỗ trợ UNICODE. Kiểu dữ
liệu NVARCHAR là kiểu dữ liệu chuỗi có hỗ trợ UNICODE. Các số nằm trong cặp
dấu ngoặc đơn sau kiểu dữ liệu là độ đài tối đa của chuỗi dữ liệu có thể lưu trữ
trong cột (10, 30, 12,…).
Một nhân viên có thể có hoặc không có điện thoại. Nếu một nhân viên không có
điện thoại hoặc có mà hiện tại chúng ta không biết thì trường này sẽ bỏ trống.
Để làm được điều này chúng ta đánh dấu tích vào Allow Nulls.

14


Thiết lập khóa chính của bảng:
Click chọn ô hình chữ nhật trước MaNhanVien → click chuột phải → chọn Set
Primary Key

15


Trong trường hợp thiết lập khóa chính gồm nhiều trường, chúng ta giữ phím Ctrl →
click chọn các trường tham gia vào khóa chính → click chuột phải → Set Primary Key.


Lưu bảng:
Chọn menu File → Save Table_1 → nhập tên bảng (NhanVien) → click OK.

Nhập dữ liệu cho bảng:
Double click vào Tables (của CSDL VIDU) → click chọn CSDL dbo.NhanVien → click
chuột phải →chọn Edit Top 200 Rows. Giao diện nhập dữ liệu cho bảng như sau:

Nhập vào các dòng dữ liệu như sau:
MaNhanVien

HoNhanVien

TenNhanVien GioiTinh CMND

DiaChi

DienThoai

NV001

NGUYỄN THỊ

NHÂN

0

1122334

12 HÀN THUYÊN


0909090909

NV002

TRẦN VĂN

AN

1

1122334

23 NGUYỄN TRÃI

16


Lưu ý: Khi con trỏ di chuyển đến dòng khác, nếu dữ liệu ở dòng trước đó hợp lệ
thì sẽ được lưu lai một cách tự động.

Thay đổi cấu trúc bảng:
Click chọn dbo.NhanVien → click chuột phải → chọn Design.

Xóa bảng:
Click chọn dbo.NhanVien → click chuột phải → chọn Delete → click OK.

17


Chương 2: Ngôn ngữ định nghĩa dữ liệu

(Data Definition Language - DDL)
Structured Query Language - SQL
SQL, viết tắt của Structured Query Language (ngôn ngữ hỏi có cấu trúc), là
công cụ sử dụng để tổ chức, quản lý và truy xuất dữ liệu đuợc lưu trữ trong các cơ sở
dữ liệu. SQL là một hệ thống ngôn ngữ bao gồm tập các câu lệnh sử dụng để tương
tác với cơ sở dữ liệu quan hệ.

Transact SQL (T-SQL)
Transact-SQL là ngôn ngữ SQL mở rộng dựa trên SQL chuẩn của ISO (International
Organization for Standardization) và ANSI (American National Standards Institute)
được sử dụng trong SQL Server khác với P-SQL (Procedural-SQL) dùng trong Oracle.
Trong các hệ quản trị cơ sở dữ liệu khác nhau, mặc dù các câu lệnh đều có cùng dạng
và cùng mục đích sử dụng song mỗi một hệ quản trị cơ sở dữ liệu có thể có một số
thay đổi nào đó. Điều này đôi khi dẫn đến cú pháp chi tiết của các câu lệnh có thể sẽ
khác nhau trong các hệ quản trị cơ cơ sở dữ liệu khác nhau.
T-SQL được chia làm 3 nhóm:
Ngôn ngữ định nghĩa dữ liệu ( Data Definition Language – DDL)
Ngôn ngữ thao tác dữ liệu (Data Manipulation Language – DML)
Ngôn ngữ điều khiển dữ liệu (Data Control Language – DCL)
Các kiểu dữ liệu trong SQL Server 2008
KIỂU DỮ LIỆU

Ý NGHĨA

Char(n)

Kiểu chuỗi với độ dài cố định

Nchar(n)


Kiếu chuỗi với độ dài cố định hỗ trợ UNICODE

Varchar(n)

Kiểu chuỗi với độ dài chính xác

Nvarchar(n)

Kiểu chuỗi với độ dài chính xác hỗ trợ UNICODE

Int

Số nguyên có giá trị từ -231 đến 231 - 1

Tinyint

Số nguyên có giá trị từ 0 đến 255.

Smallint

Số nguyên có giá trị từ -215 đến 215 – 1
18


Bigint

Số nguyên có giá trị từ -263 đến 263-1

Numeric


Kiểu số với độ chính xác cố định.

Decimal

Tương tự kiểu Numeric

Float

Số thực có giá trị từ -1.79E+308 đến 1.79E+308

Real

Số thực có giá trị từ -3.40E + 38 đến 3.40E + 38

Money

Kiểu tiền tệ

Bit

Kiểu bit (có giá trị 0 hoặc 1)

Datetime

Kiểu ngày giờ

Smalldatetime Kiểu ngày giờ
Datetime2

Tương tự như Datetime nhưng có giới hạn dữ liệu lớn hơn


Date

Kiểu ngày

Time

Kiểu thời gian

Datetimeoffset Tương tự Datetime2 nhưng có hỗ trợ múi giờ.
Binary

Dữ liệu nhị phân với độ dài cố định (tối đa 8000 bytes)

Varbinary

Dữ liệu nhị phân với độ dài chính xác (tối đa 8000 bytes)

Image

Dữ liệu nhị phân với độ dài chính xác (tối đa 2,147,483,647 bytes)

Text

Dữ liệu kiếu chuỗi với độ dài lớn (tối đa 2,147,483,647 ký tự)

Ntext

Dữ liệu kiếu chuỗi với độ dài lớn và hỗ trợ UNICODE (tối đa
1,073,741,823 ký tự)


19


Giá trị NULL
Một cơ sở dữ liệu là sự phản ánh của một hệ thống trong thế giới thực, do đó các giá
trị dữ liệu tồn tại trong cơ sở dữ liệu có thể không xác định được. Một giá trị không
xác định được xuất hiện trong cơ sở dữ liệu có thể do một số nguyên nhân sau:
Giá trị đó có tồn tại nhưng không biết.
Không xác định được giá trị đó có tồn tại hay không.
Tại một thời điểm nào đó giá trị chưa có nhưng rồi có thể sẽ có.
Giá trị bị lỗi do tính toán (tràn số, chia cho không,...)
Những giá trị không xác định được biểu diễn trong cơ sở dữ liệu quan hệ bởi các giá
trị NULL. Đây là giá trị đặc biệt và không nên nhầm lẫn với chuỗi rỗng (đối với dữ
liệu kiểu chuỗi) hay giá trị không (đối với giá trị kiểu số). Giá trị NULL đóng một vai
trò quan trọng trong các cơ sở dữ liệu và hầu hết các hệ quản trị cơ sở dữ liệu quan
hệ hiện nay đều hỗ trợ việc sử dụng giá trị này.

20


Ngôn ngữ định nghĩa dữ liệu – DDL
Trong phần này sẽ đề cập đến nhóm các câu lệnh được sử dụng để định nghĩa và
quản lý các đối tượng CSDL như bảng, khung nhìn, chỉ mục,... và được gọi là ngôn ngữ
định nghĩa dữ liệu (DDL).
Về cơ bản, ngôn ngữ định nghĩa dữ liệu bao gồm các lệnh:
CREATE: định nghĩa và tạo mới đối tượng CSDL.
ALTER: thay đổi định nghĩa của đối tượng CSDL.
DROP: Xoá đối tượng CSDL đã có.


Tạo bảng:
Câu lệnh CREATE TABLE được sử dụng để định nghĩa một bảng dữ liệu mới trong
CSDL. Câu lệnh CREATE TABLE có cú pháp như sau:
CREATE TABLE tên_bảng
(
tên_cột _1 kiểu_dữ_liệu

[thuộc_tính_cột_1]

các_ràng_buộc

[,...
,tên_cột_n kiểu_dữ_liệu

[thuộc_tính_cột_n]

các_ràng_buộc]

[,các_ràng_buộc_trên_bảng]
)
Trong đó:
thuộc_tính_cột: cột có được thiết lập thuộc tính identity, cột có chấp nhận giá trị
NULL hay không.
các_ràng_buộc gồm:
Ràng buộc CHECK: kiểm tra dữ liệu thêm vào cột có thỏa điều kiện nào đó.
Ràng buộc PRIMARY KEY: thiết lập khóa chính cho bảng.
Ràng buộc FOREIGN KEY: thiết lập khóa ngoại cho bảng.
Ràng buộc UNIQUE: đảm bảo một giá trị trong một cột là duy nhất.
Ràng buộc DEFAULT: cung cấp giá trị mặc định cho cột.
Ví dụ: câu lệnh dưới đây minh họa việc tạo bảng bằng lệnh CREATE TABLE

CREATE TABLE NHANVIEN
(
21


MANV VARCHAR(10) PRIMARY KEY,
HONV NVARCHAR(30) NOT NULL,
TENNV NVARCHAR(20) NOT NULL,
GIOITINH BIT DEFAULT(1),
NGAYSINH DATE NOT NULL,
DIACHI NVARCHAR(100) NOT NULL,
DIENTHOAI NVARCHAR(15) NULL
)
Trong ví dụ này:
Trường MANV có kiểu dữ liệu là VARCHAR(10). Trường này cũng được chỉ
định làm khóa chính của bảng thông qua từ khóa PRIMARY KEY.
Trường GIOITINH có giá trị mặc định là 1 được thiết lập thông qua từ khóa
DEFAULT.
Thuộc tính NULL|NOT NULL chỉ ra rằng cột đó có chấp nhận|không chấp nhận
giá trị NULL.

Các loại ràng buộc
Ràng buộc CHECK
Ràng buộc CHECK được sử dụng nhằm chỉ định điều kiện hợp lệ đối với dữ liệu. Mỗi
khi có sự thay đổi dữ liệu trên bảng (do tác động của câu lệnh INSERT, UPDATE),
những ràng buộc này sẽ được sử dụng nhằm kiểm tra xem dữ liệu mới có hợp lệ hay
không.
Ràng buộc CHECK có cú pháp như sau:
[CONSTRAINT tên_ràng_buộc] CHECK (điều_kiện)
Ví dụ: câu lệnh dưới đây minh họa việc xây dựng ràng buộc CHECK khi định

nghĩa bảng. Trong ví dụ này, giá trị trường SOLUONG luôn phải lớn hơn hoặc
bằng 0.
CREATE TABLE HANGHOA
(
MAHH VARCHAR(10) PRIMARY KEY,
TENHH NVARCHAR(100) NOT NULL,
DONVITINH NVARCHAR(8) NOT NULL,
22


SOLUONG DECIMAL(10,2) NOT NULL,
DONGIA MONEY NOT NULL,
CONSTRAINT CHK_SOLUONG CHECK (SOLUONG >= 0)
)
Trong trường hợp không cần sử dụng tên của ràng buộc, chúng ta có thể định nghĩa
ràng buộc CHECK ngắn gọn như sau:
CREATE TABLE HANGHOA
(
MAHH VARCHAR(10) PRIMARY KEY,
TENHH NVARCHAR(100) NOT NULL,
DONVITINH NVARCHAR(8) NOT NULL,
SOLUONG DECIMAL(10,2) NOT NULL CHECK (SOLUONG >= 0),
DONGIA MONEY NOT NULL,
)
Chúng ta cũng có thể gộp nhiều điều kiện kiểm tra các cột khác nhau vào trong một
ràng buộc CHECK duy nhất. Tuy nhiên với cách này, khi muốn loại bỏ một ràng buộc
CHECK liên quan đến một cột nào đó, chúng ta cũng loại bỏ luôn ràng buộc liên quan
các cột khác.

Ràng buộc PRIMARY KEY

Ràng buộc PRIMARY KEY được sử dụng để định nghĩa khoá chính của bảng. Khoá
chính của một bảng là một hoặc một tập nhiều cột mà giá trị của chúng là duy nhất
trong bảng. Giá trị của khoá chính sẽ giúp cho ta xác định được duy nhất một
dòng (bản ghi) trong bảng dữ liệu. Mỗi một bảng chỉ có thể có duy nhất một khoá
chính và khoá chính không chấp nhận giá trị NULL. Ràng buộc PRIMARY KEY là
cơ sở cho việc đảm bảo tính toàn vẹn thực thể cũng như toàn vẹn tham chiếu.
Để khai báo một ràng buộc PRIMARY KEY, ta sử dụng cú pháp như sau:
[CONSTRAINT tên_ràng_buộc] PRIMARY KEY [(danh_sách_cột)]
Ví dụ: câu lệnh dưới đây minh họa việc xây dựng ràng buộc PRIMARY KEY khi
định nghĩa bảng. Trong ví dụ này, khóa chính chỉ gồm 1 trường.
CREATE TABLE HANGHOA
(
23


MAHH VARCHAR(10) NOT NULL,
TENHH NVARCHAR(100) NOT NULL,
DONVITINH NVARCHAR(8) NOT NULL,
SOLUONG DECIMAL(10,2) NOT NULL,
DONGIA MONEY NOT NULL,
CONSTRAINT PK_HANGHOA PRIMARY KEY (MAHH)
)
Lưu ý: Với cách định nghĩa khóa chính như trên thì trường làm khóa chính phải
có thuộc tính NOT NULL
Trong trường hợp không cần sử dụng đến tên ràng buộc chúng ta có thể định nghĩa
khóa chính như sau:
CREATE TABLE HANGHOA
(
MAHH VARCHAR(10) NOT NULL PRIMARY KEY,
TENHH NVARCHAR(100) NOT NULL,

DONVITINH NVARCHAR(8) NOT NULL,
SOLUONG DECIMAL(10,2) NOT NULL,
DONGIA MONEY NOT NULL
)
Ví dụ: câu lệnh dưới đây minh họa việc xây dựng ràng buộc PRIMARY KEY gồm
có hai hoặc nhiều trường.
CREATE TABLE CHITIETDATHANG
(
MAHOADON VARCHAR(10) NOT NULL,
MAHH VARCHAR(10) NOT NULL,
SOLUONG DECIMAL(10,2) NOT NULL,
CONSTRAINT PK_CHITIETDATHANG PRIMARY KEY (MAHOADON, MAHH)
)

Ràng buộc FOREIGN KEY
FOREIGN KEY là một cột hay một sự kết hợp của nhiều cột được sử dụng để áp đặt
mối liên kết dữ liệu giữa hai bảng. FOREIGN KEY của một bảng sẽ giữ giá trị của
24


PRIMARY KEY của một bảng khác và chúng ta có thể tạo ra nhiều FOREIGN KEY
trong một table.
FOREIGN KEY có thể tham chiếu vào PRIMARY KEY hay cột có ràng buộc duy nhất.
FOREIGN KEY có thể chứa giá trị NULL. Mặc dù mục đích chính của ràng buộc
FOREIGN KEY là để kiểm soát dữ liệu chứa trong bảng có FOREIGN KEY (tức table
con) nhưng thực chất nó cũng kiểm soát luôn cả dữ liệu trong bảng chứa PRIMARY
KEY (tức table cha). Ví dụ nếu ta xóa dữ liệu trong bảng cha thì dữ liệu trong bảng
con trở nên "mồ côi" (orphan) vì không thể tham chiếu ngược về bảng cha. Do đó
ràng buộc FOREIGN KEY sẽ đảm bảo điều đó không xảy ra. Nếu bạn muốn xóa dữ liệu
trong bảng cha thì trước hết bạn phải xóa hay vô hiệu hóa ràng buộc FOREIGN KEY

trong bảng con trước.
Ràng buộc FOREIGN KEY được định nghĩa theo cú pháp dưới đây:
[CONSTRAINT tên_ràng_buộc] FOREIGN KEY [(danh_sách_cột)]
REFERENCES tên_bảng_tham_chiếu (danh_sách_cột_tham_chiếu)
[ON DELETE CASCADE | NO ACTION | SET NULL | SET DEFAULT]
[ON UPDATE CASCADE | NO ACTION | SET NULL | SET DEFAULT]
Trong trường hợp các dòng được tham chiếu trong bảng cha bị xoá (ON DELETE)
hay cập nhật (ON UPDATE), SQL Server đưa ra 4 cách xử lý:
CASCADE: Tự động xoá |cập nhật nếu bản ghi trong bảng con nếu bản ghi được tham
chiếu trong bảng cha được tham chiếu bị xoá |cập nhật.
NO ACTION: (Mặc định trong SQL Server) Một dòng trong bảng cha đang được
tham chiếu sẽ không thể bị xóa hay cập nhật.
SET NULL: Cập nhật lại giá trị khoá ngoại của dòng trong bảng con thành NULL
nếu dòng được tham chiếu trong bảng cha bị xóa (nếu cột cho phép nhận giá trị
NULL).
SET DEFAULT: Cập nhật lại giá trị khoá ngoại của dòng trong bảng con thành giá trị
mặc định của cột nếu dòng được tham chiếu trong bảng cha bị xóa (nếu cột có giá trị
mặc định).
Ví dụ: câu lệnh dưới đây minh họa việc xây dựng ràng buộc PRIMARY KEY gồm
có hai hoặc nhiều trường.
CREATE TABLE DONDATHANG
25


×