cƠ sỞdỮliỆu - fit.mta.edu.vnfit.mta.edu.vn/files/danhsach/chuong5_hequantrisqlserver.pdf ·...

90
Lý thuyết CSDL 1 GIÁO VIÊN: Đ Đ Th Th Mai Mai ng ng BMÔN : C C á á c c H H th th ng ng thông thông tin tin KHOA : Công Công ngh ngh thông thông tin tin Email : Email : [email protected] [email protected] SDLIU

Upload: others

Post on 31-Oct-2019

13 views

Category:

Documents


0 download

TRANSCRIPT

Lý thuyết CSDL 1

GIÁO VIÊN: ĐĐỗỗ ThThịị Mai Mai HưHườờngngBỘ MÔN : CCáácc HHệệ ththốốngng thôngthông tin tin KHOA : CôngCông nghnghệệ thôngthông tintinEmail :Email : [email protected]@gmail.com

CƠ SỞ DỮ LIỆU

Lý thuyết CSDL 2/111

CHƯƠNG 5

HỆ QUẢN TRỊ SQL SERVER

Lý thuyết CSDL 3/111

Nội dung bài học

• Giới thiệu SQL Server • Các thành phần Client-Server • Các loại Database• Công cụ và tiện ích SQL Server• Tạo và sử dụng Database• Triển khai Database• Bảo mật SQL Server

Lý thuyết CSDL 4/111

Giới thiệu SQL Server (1)

Online Transaction processing (OLTP) database vàOnline Analytical processing (OLAP) database

Lý thuyết CSDL 5/111

Giới thiệu SQL Server (2)

• Thực hiện các transaction processing, lưu trữ, phân tích vàxây dựng các ứng dụng

• Là một hệ quản trị cơ sở dữ liệu quan hệ– Quản lý kho dữ liệu đối với các transaction và analysis– Trả lời các request của client application– Dùng Transact-SQL, XML, Multidimendional expression

(MDX) hoặc SQL distribute management Object (SQL – DMO) để gởi các request giữa client với SQL Server

Lý thuyết CSDL 6/111

• Relational Database Management System – RDBMS của SQL Server có nhiệm vụ:

• Duy trì các quan hệ giữa các dữ liệu trong database.• Bảo đảm dữ liệu được lưu trữ đúng và hợp lệ theo các qui tắc đã

đưa ra.• Phục hồi tất cả các dữ liệu khi cần

Giới thiệu SQL Server (3)

Lý thuyết CSDL 7/111

• OLTP database: – Dữ liệu được lưu trong các table có quan hệ -> giảm dư thừa

dữ liệu và tăng tốc độ cập nhật. – Cho phép một số lượng lớn user thực hiện các transaction

một cách đồng thời• OLAP Databases:

– Hỗ trợ phân tích viên đưa ra các giải pháp, các mô hình dữliệu

Giới thiệu SQL Server (4)

Lý thuyết CSDL 8/111

Client-Server components (1)

Lý thuyết CSDL 9/111

• Client-Server Architecture– Client đóng vai trò business logic và presenting data cho

user. Có thể chạy trên một hoặc nhiều máy hoặc chạy trên cùng máy với server

– SQL Server quản lý database và cấp phát tài nguyên

Client-Server components (2)

Lý thuyết CSDL 10/111

Client-Server Communication

Lý thuyết CSDL 11/111

SQL Server Services (1)SQL Server Services (1)

Lý thuyết CSDL 12/111

SQL Server Services (2)

• MSSQL Server Services – Cấp phát tài nguyên máy tính cho nhiều user đồng thời.– Ngăn chặn các logic problems ví dụ như timing requests– Bảo đảm tính ổn định và ràng buộc dữ liệu.

Lý thuyết CSDL 13/111

SQL Server Services (3)

• SQLServerAgent Services – Cảnh báo về trạng thái của một process ví dụ như một công

việc này đó được hoàn thành hoặc xảy ra lỗi.– Tạo ra một công việc mới và lập thời khoá để tự động hoá

các nhiệm vụ.– Gởi email hoặc khởi động một ứng dụng khác khi một thông

báo xãy ra.

Lý thuyết CSDL 14/111

SQL Server Services (4)

• Microsoft Distributed Transaction Coordinator (MS DTC)– Cho phép các clients gom nhiều nguồn dữ liệu khác nhau

trong một transaction.• Microsoft Search

– là một full-text engine hoạt động như một dịch vụ trong Windows 2000.

Lý thuyết CSDL 15/111

SQL Server tSQL Server tíích hch hợợp vp vớới ci cáác OSc OS

Lý thuyết CSDL 16/111

SQL Server tSQL Server tíích hch hợợp vp vớớii……

Lý thuyết CSDL 17/111

SQL Server Database

• Các loại Databases• Các đối tượng Database • Tham chiếu đến đối tượng SQL Server • Các table hệ thống (System Tables)• Metadata Retrieval

Lý thuyết CSDL 18/111

CCáác loc loạại Database (1)i Database (1)

Lý thuyết CSDL 19/111

Các loại Databases (2)• master: điều khiển các user databases và các hoạt động

của SQL Server cũng như toàn bộ các thông tin như user accounts, biến môi trường và các system error messages

• model: cung cấp một template/prototype database cho việc tạo mới một user databases

• tempdb: cung cấp vùng lưu trữ cho table tạm thời hoặc các vùng làm việc tạm thời

• msdb: cung cấp vùng lưu trữ cho việc xắp thời khoábiểu các công việc

• distribution: Lưu trữ history và transaction data được dùng để tạo bản sao

• pubs: một database ví dụ để học• Northwind một database ví dụ để học• User1: một database do user tạo ra

Lý thuyết CSDL 20/111

Database Objects (1)Database Objects (1)

Lý thuyết CSDL 21/111

Database Objects (2)Database Objects (2)

Object Mô tảTable Bảng quan hệ chứa dữ liệuData type Kiểu dữ liệuConstraint Các qui tắc để kiểm tra ràng buộc dữ liệuDefault Các giá trị mặc định nếu giá trị của một field không được nhập

vàoRule Các thông tin mà định nghĩa các giá trị hợp lệ trong một field

Index Là một cấu trúc lưu trữ nhằm truy xuất nhanh dữ liệu

Lý thuyết CSDL 22/111

Database Objects (3)Database Objects (3)

Object Mô tảView Là table ảo, đây là một cách để lấy dữ liệu từ các table hoặc các

view khác

User-defined function

Là các function do programmer định nghĩa

Stored procedure

Là các thủ tục do programmer định nghĩa

Trigger Là một dạng đắc biệt của procedure nhưng được thực hiện tự động khi user thay đổi dữ liệu trong table/view

Lý thuyết CSDL 23/111

Tham chiếu đến một đối tượng

• Tên đầy đủ:[server.[database.[schema.]]]object

• Tên ngắn gọnĐược hiểu là server default, instance hiện hành, database hiện hành và schema là lược đồ

VD: select * from dbo.nhanvien

Lý thuyết CSDL 24/111

System Tables (1)

• System tables lưu trữ các thông tin về các System và Database Objects

• Database Catalog lưu trữ Metadata về một Database• System Catalog lưu trữ Metadata về toàn bộ hệ thống

và tất cả các Databases

Lý thuyết CSDL 25/111

System tables (2)

Lý thuyết CSDL 26/111

Lấy dữ liệu MetaData(1)

Lý thuyết CSDL 27/111

Lấy dữ liệu MetaData(2)

System Stored Procedure

Lý thuyết CSDL 28/111

Công cụ và một số tiện ích

• Service Manager• SQL Server Management Studio

– Import and Export Data– Create and Manipulate Database– Query Analysis– Backup Database

Lý thuyết CSDL 29/111

Service Manager

• Quản lý cung cấp các dịch vụ của SQL Server– SQL Server muốn truy cập được CSDL thì dịch vụ Service

Manager phải chạy

Lý thuyết CSDL 30/111

Import and Export Data

• Cho phép tạo và truy xuất dữ liệu từ các nguồn khác nhau. Dữliệu từ các hệ khác vào SQL Server và ngược lại.– SQL Server– Microsoft Access– Oracle– Excel– Text (có cấu trúc)– ….

Lý thuyết CSDL 31/111

Query Analysis

• Là tiện ích giúp thực hiện các câu lệnh truy vấn SQL.– Rất đơn giản, giao diện trực quan.– Môi trường rất tốt cho việc kiểm tra các câu lệnh SQL– Cho phép tạo, quản lý CSDL dưới dạng các câu lệnh– Muốn đăng nhập phải có User và Password

Lý thuyết CSDL 32/111

Các công cụ và tiện ích

• Backup Database: Là tiện ích giúp sao lưu CSDL vàphục hồi khi có bất thường xảy ra

• Create and Manipulate Database: Hỗ trợ giao diện đồhọa cho phép quản lý CSDL.

Lý thuyết CSDL 33/111

Xây dựng CSDL trong SQL Server

Một (CSDL) của SQL Server là tập hợp cácđối tượng

bảng (Table):Chứa dữ liệu

bảng ảo (View):chứa dữ liệu lấy từ Bảng

thủ tục nội tại (Stored Procedure): Chứa cáclệnh thao tác với Dữ liệu

Một (CSDL) của SQL Server là tập hợp cácđối tượng

bảng (Table):Chứa dữ liệu

bảng ảo (View):chứa dữ liệu lấy từ Bảng

thủ tục nội tại (Stored Procedure): Chứa cáclệnh thao tác với Dữ liệu

Lý thuyết CSDL 34/111

Xaây döïng CSDL trong SQL Server

Triger :Chứa các lệnh thao tác với Dữ liệu, kiểm tra ràng buộc tự động

Constraint :Chứa các ràng buộc dữ liệu

Một CSDL do một hoặc nhiều người tạo nhưngcó thể được nhiều người truy cập

Trong SQL Server có thể tạo đươc 32767 CSDL khác nhau

Triger :Chứa các lệnh thao tác với Dữ liệu, kiểm tra ràng buộc tự động

Constraint :Chứa các ràng buộc dữ liệu

Một CSDL do một hoặc nhiều người tạo nhưngcó thể được nhiều người truy cập

Trong SQL Server có thể tạo đươc 32767 CSDL khác nhau

Lý thuyết CSDL 35/111

Xaây döïng CSDL trong SQL Server

Cấu trúc lưu trữ của một CSDL : Một CSDL trong SQL Server tối thiểu

sẽ dùng hai tập tin vật lý để lưu trữ dữliệu: Một dùng lưu trữ dữ liệu (Data

file) Một dùng để lưu trữ các vết giao

tác (Transaction log file)

CCấấuu trtrúúcc lưulưu trtrữữ ccủủaa mmộộtt CSDL : CSDL : MMộộtt CSDL CSDL trongtrong SQL Server SQL Server ttốốii thithiểểuu

ssẽẽ ddùùngng haihai ttậậpp tin tin vvậậtt lýlý đđểể lưulưu trtrữữ ddữữliliệệuu:: MMộộtt ddùùngng lưulưu trtrữữ ddữữ liliệệuu (Data (Data

file) file) MMộộtt ddùùngng đđểể lưulưu trtrữữ ccáácc vvếếtt giaogiao

ttáácc (Transaction log file)(Transaction log file)

Lý thuyết CSDL 36/111

Xaây döïng moät CSDL trong SQL Server

Thường được tổ chức lưu trữ trong 3 tập tin :

Thường được tổ chức lưu trữ trong 3 tập tin :

CSDL

Primary DataFile(*.MDF)

Secondary Data Fie(*.NDF)

Log file(*.LDF)

Data Files Log Files

Lý thuyết CSDL 37/111

Xaây döïng moät CSDL trong SQL Server

Tạo mới một CSDL trongSQL Server

Cách 1: Sử dụngtiện íchEnterPriseManager:Click chuộc phảivào đối tượngDatabases chọn New Database

Tạo mới một CSDL trongSQL Server

Cách 1: Sử dụngtiện íchEnterPriseManager:Click chuộc phảivào đối tượngDatabases chọn New Database

Lý thuyết CSDL 38/111

Xaây döïng CSDL trong SQL Server

• Xuất hiện hộp thoại :

Nhập tênCSDL

Lý thuyết CSDL 39/111

Xaây döïng CSDL trong SQL Server

• Chọn Tab Data Files:– Filename :Tên tập tin Data

Files – Location: Vị trí lưu trữ– Initial size(Mb) :Kích thước

ban đầu– Automatically grow file: Tự

độngtăng kích thước

• In megabytes : tăng baonhiêu mB

• By percent :Tăng theophần trăm

– Maximun file size : kích

Lý thuyết CSDL 40/111

Xaây döïng CSDL trong SQL Server

• Tạo CSDL bằng cách viết lệnh trong Query Enalyzer

CREATE DATABASE QLBANHANGON PRIMARY( NAME= QLBANHANG_DATA,FILENAME=’C:\MSSQL\DATA\ QLBANHANG_DATA.MDF’,SIZE=50MB,MAXSIZE=200MB,FILEGROWTH=10%)LOG ON(NAME= QLBANHANG_LOG,FILENAME=’C:\MSSQL\DATA\ QLBANHANG_LOG.LDF’,SIZE=10MB,MAXSIZE=UNLIMITED,FILEGROWTH=5MB)

Lý thuyết CSDL 41/111

Xaây döïng CSDL trong SQL Server

• Các kiểu dữ liệu trong SQL Server

từ -3.40E+38 đến +3.40E+384 bytesRealtừ -1.79E+308 đến +1.79E+3088 bytesFloat

> Các kiểu dữ liệu dạng số thực

từ -10^38 đến +10^3817bytesDecimal, Numeric

> Các kiểu dữ liệu dạng số thập phân0, 1 hoặc Null1 byteBittừ 0 đến 2551 byteTinyInttừ -32768 đến +327672 bytesSmallInttừ-2,147,483,648đến +2,147,483,647

4 bytesInt> Các kiểu dữ liệu dạng số nguyên

Miền giá trị dữ liệu lưu trữKíchthước

Kiểu dữ liệu

Lý thuyết CSDL 42/111

Xaây döïng CSDL trong SQL Server

• Các kiểu dữ liệu trong SQL Server

từ 1 đến 1,073,741,823 ký tự, mỗi kýtự là 2 bytes

2*N bytes

NText

từ 1 đến 4000 ký tự, mỗi ký tự là 2 bytes

2*N bytes

NVarChar

từ 1 đến 4000 ký tự, mỗi ký tự là 2 bytes

2*N bytes

NChar> Các kiểu dữ liệu dạng chuỗi dùng font chữ Unicode

từ 1 đến 2,147,483,647 ký tự, mỗiký tự là 1 byte

N bytesText

từ 1 đến 8000 ký tự, mỗi ký tự là 1 byte

N bytesVarChar> Các kiểu dữ liệu dạng chuỗi có độ dài biến đổi

từ 1 đến 8000 ký tự, mỗi ký tự làmột byte

N bytesChar

> Các kiểu dữ liệu dạng chuỗi có độ dài cố định

Lý thuyết CSDL 43/111

Xaây döïng CSDL trong SQL Server

• Các kiểu dữ liệu trong SQL Server

từ 1 đến 2,147,483,647 bytes

N bytesImagetừ 1 đến 8000 bytesN bytesVarBinarytừ 1 đến 8000 bytesN bytesBinary

> Các kiểu dữ liệu dạng chuỗi nhị phân (Binary String)

từ01/01/1900đến06/06/20794 bytesSmallDateTimetừ01/01/1753đến31/12/99998 bytesDateTime

> Các kiểu dữ liệu dạng ngày và giờ

từ -214,748.3648 đến + 214,748.36474 bytesSmallMoney

từ -922,337,203,685,477.5808 đến+922,337,203,685,477.5807

8 bytesMoney

> Các kiểu dữ liệu dạng tiền tệ

Lý thuyết CSDL 44/111

Xaây döïng CSDL trong SQL Server

• Các thuộc tính cơ bản của Một Bảng– Tên bảng (Table Name) Độ dài<= 128 ký tự. Tên

bảng phải duy nhất bên trong phạm vi của người đãtạo ra nó trong một CSDL

– Tên cột (Column Name): là tên của các cột bêntrong bảng, tên của các cột bên trong bảng phải duynhất.

– Kiểu dữ liệu (Data Type):qui định kiểu dữ liệu màcột sẽ lưu trữ bên trong bảng.

Lý thuyết CSDL 45/111

Xaây döïng CSDL trong SQL Server

– Độ dài dữ liệu (Data Length): dùng để qui định độdài dữ liệu mà cột sẽ lưu trữ đối với các kiểu dữ liệudạng chuỗi, số.

– Số ký số lưu trữ (Precision): là số ký số tối đa màcác kiểu dữ liệu dạng số có thể lưu trữ được.

– Số lẻ lưu trữ (Scale): là số lẻ tối đa mà các kiểu dữliệu dạng số thập phân dùng để lưu trữ.

Lý thuyết CSDL 46/111

Xaây döïng CSDL trong SQL Server

– Cột định danh (Identity): Giá trị của cột định danhlà số nguyên không trùng lắp do hệ thớng Microsoft SQL Server tự động cấp phát.

• Các kiểu dữ liệu của cột định danh : Int, SmallInt, TinyInt, Decimal , Numeric

• Thuộc tính Identity Seed :Số đầu tiên

• Thuộc tính Identity Increment :giá trị tăng

Lý thuyết CSDL 47/111

Xaây döïng CSDL trong SQL Server

– Cho phép để trống dữ liệu (Allow Null): qui định dữ liệu có thể đượcphép để trống hay là phải nhập

– Giá trị mặc định (Default Value): là giá trị mặc nhiên sẽ được gán vàocột dữ liệu khi người sử dụng thêmmới một mẫu tin nhưng lại để trốnggiá trị tại cột dữ liệu đó.

Lý thuyết CSDL 48/111

Xaây döïng CSDL trong SQL Server

• Tạo Bảng trong Sql Server– Cách 1: Sử dụng tiện ích

Enterprise Manager

• Mở CSDL Click chuột phải trên đốitượng Tables, chọnchức năng New Table... trong thựcđơn tắt.

Lý thuyết CSDL 49/111

Xaây döïng CSDL trong SQL Server

• Màn hình sau xuất hiện :Nhập tên bảng,nhấp OK

• Màn hình thiết kế bảng xuất hiện:nhập thông tin và chọn cột làmkhoá chính

Lý thuyết CSDL 50/111Lý thuyết CSDL

Định nghĩa dữ liệu

• Là ngôn ngữ mô tả– Lược đồ cho mỗi quan hệ– Miền giá trị tương ứng của từng thuộc tính– Ràng buộc toàn vẹn– Chỉ mục trên mỗi quan hệ

• Gồm– CREATE TABLE (tạo bảng)– DROP TABLE (xóa bảng)– ALTER TABLE (sửa bảng)– CREATE DOMAIN / CREATE TYPE (tạo miền giá trị)– CREATE DATABASE– …

Lý thuyết CSDL 51/111

Kiểu dữ liệu

• Số (numeric)– INTEGER– SMALLINT– NUMERIC– DECIMAL– REAL– DOUBLE PRECISION– FLOAT

Lý thuyết CSDL 52/11152

Kiểu dữ liệu (tt)

• Chuỗi ký tự (character string)– CHARACTER, CHARACTER(n)

• Chuỗi bit (bit string)– BIT, BIT(x)

• Ngày giờ (datetime)– DATE gồm ngày, tháng và năm– TIME gồm giờ, phút và giây– TIMESTAMP gồm ngày và giờ

Lý thuyết CSDL 53/11153

Lệnh tạo bảng

• Để định nghĩa một bảng– Tên bảng– Các thuộc tính

• Tên thuộc tính• Kiểu dữ liệu• Các ràng buộc toàn vẹn trên thuộc tính (RBTV)

• Cú phápCREATE TABLE <Tên_bảng> (

<Tên_cột> <Kiểu_dữ_liệu> [<RBTV>],<Tên_cột> <Kiểu_dữ_liệu> [<RBTV>],…[<RBTV>]

)

Lý thuyết CSDL 54/111

Ví dụ CSDL

• Cho cơ sở dữ liệu CÔNGTY gồm các lược đồ:– NHANVIEN(MANV, HONV, TENNV, NS, GT, DCHI,

LUONG, MA_NQL, PHONG)– PHONGBAN(MAPHONG, TENPHONG, TRPHONG,

NG_NHANCHUC)– DEAN(MADA, TENDA, DD_DA, PHONG)– THANNHAN(MANV, TEN_TN, NS, GT, QUANHE)– NV_DEAN(MANV, MADA, SOGIO)– PHONGBAN_DD(MAPB, DD)

Lý thuyết CSDL 55/111

Ví dụ - Tạo bảng

CREATE TABLE NHANVIEN (

MANV CHAR(9),

HODEM VARCHAR(30),

TENNV VARCHAR(10),

NS DATETIME,

DCHI VARCHAR(50),

GT CHAR(3),

LUONG INT,

MA_NQL CHAR(9),

PHONG INT

)

Lý thuyết CSDL 56/111

Lệnh tạo bảng (tt)

• <RBTV> – NOT NULL– NULL– UNIQUE– DEFAULT– PRIMARY KEY– FOREIGN KEY / REFERENCES– CHECK

• Đặt tên cho RBTVCONSTRAINT <Ten_RBTV> <RBTV>

Lý thuyết CSDL 57/11157

Ví dụ - RBTV

CREATE TABLE NHANVIEN (

HODEM VARCHAR(30) NOT NULL,

TENNV VARCHAR(10) NOT NULL,

MANV CHAR(9) PRIMARY KEY,

NS DATETIME,

DCHI VARCHAR(50),

GT CHAR(3) CHECK (GT IN (‘Nam’, ‘Nu’)),

LUONG INT DEFAULT (10000),

MA_NQL CHAR(9),

PHONG INT

)

Lý thuyết CSDL 58/111

Ví dụ - RBTV

CREATE TABLE PHONGBAN (

TENPB VARCHAR(20) UNIQUE,

MAPHONG INT NOT NULL,

TRPHONG CHAR(9),

NG_NHANCHUC DATETIME DEFAULT (GETDATE())

)

CREATE TABLE PHANCONG (

MA_NVIEN CHAR(9) FOREIGN KEY (MA_NVIEN)

REFERENCES NHANVIEN(MANV),

SODA INT REFERENCES DEAN(MADA),

THOIGIAN DECIMAL(3,1)

)

Lý thuyết CSDL 59/111

Ví dụ - Đặt tên cho RBTV

CREATE TABLE NHANVIEN (

HODEM VARCHAR(30) CONSTRAINT NV_HODEM_NN NOT NULL,

TENNV VARCHAR(10) NOT NULL,

MANV CHAR(9) CONSTRAINT NV_MANV_PK PRIMARY KEY,

NS DATETIME,

DCHI VARCHAR(50),

GT CHAR(3) CONSTRAINT NV_GT_CHK

CHECK (GT IN (‘Nam’, ‘Nu’)),

LUONG INT CONSTRAINT NV_LUONG_DF DEFAULT (1000000),

MA_NQL CHAR(9),

PHONG INT

)

Lý thuyết CSDL 60/111

Ví dụ - Đặt tên cho RBTV

CREATE TABLE PHANCONG (

MA_NVIEN CHAR(9),

SODA INT,

THOIGIAN DECIMAL(3,1),

CONSTRAINT PC_MANVIEN_SODA_PK PRIMARY KEY (MA_NVIEN, SODA),

CONSTRAINT PC_MANVIEN_FK FOREIGN KEY (MA_NVIEN)

REFERENCES NHANVIEN(MANV),

CONSTRAINT PC_SODA_FK FOREIGN KEY (SODA)

REFERENCES DEAN(MADA)

)

Lý thuyết CSDL 61/111Lý thuyết CSDL 61

Lệnh sửa bảng

• Được dùng để– Thay đổi cấu trúc bảng – Thay đổi RBTV

• Thêm cột

• Xóa cột

• Mở rộng cột

ALTER TABLE <Tên_bảng> ADD COLUMN<Tên_cột> <Kiểu_dữ_liệu> [<RBTV>]

ALTER TABLE <Tên_bảng> DROP COLUMN <Tên_cột>

ALTER TABLE <Tên_bảng> ALTER COLUMN<Tên_cột> <Kiểu_dữ_liệu_mới>

Lý thuyết CSDL 62/111Lý thuyết CSDL

Lệnh sửa bảng (tt)

• Thêm RBTV

• Xóa RBTV

ALTER TABLE <Tên_bảng> ADDCONSTRAINT <Ten_RBTV> <RBTV>,

CONSTRAINT <Ten_RBTV> <RBTV>,

ALTER TABLE <Tên_bảng> DROP <Tên_RBTV>

Lý thuyết CSDL 63/111Lý thuyết CSDL

Ví dụ - Thay đổi cấu trúc bảng

ALTER TABLE NHANVIEN ADD

NGHENGHIEP CHAR(20)

ALTER TABLE NHANVIEN DROP COLUMN NGHENGHIEP

ALTER TABLE NHANVIEN ALTER COLUMN

NGHENGHIEP CHAR(50)

Lý thuyết CSDL 64/111Lý thuyết CSDL

Ví dụ - Thay đổi RBTV

CREATE TABLE PHONGBAN (

TENPB VARCHAR(20),

MAPHONG INT NOT NULL,

TRPHONG CHAR(9),

NG_NHANCHUC DATETIME

)

ALTER TABLE PHONGBAN ADD

CONSTRAINT PB_MAPHONG_PK PRIMARY KEY (MAPHONG),

CONSTRAINT PB_TRPHONG FOREIGN KEY (TRPHONG)

REFERENCES NHANVIEN(MANV),

CONSTRAINT PB_NGNHANCHUC_DF DEFAULT (GETDATE())

FOR (NG_NHANCHUC),

CONSTRAINT PB_TENPB_UNI UNIQUE (TENPB)

Lý thuyết CSDL 65/111Lý thuyết CSDL

Lệnh xóa bảng

• Được dùng để xóa cấu trúc bảng– Tất cả dữ liệu của bảng cũng bị xóa

• Cú pháp

• Ví dụDROP TABLE <Tên_bảng>

DROP TABLE NHANVIENDROP TABLE PHONGBAN

DROP TABLE PHANCONG

Lý thuyết CSDL 66/111Lý thuyết CSDL

Lệnh xóa bảng (tt)

NHANVIEN

TENNVHONV TENDEM MANV NS DCHI GT LUONG

MA_NQL PHONG

PHONGBAN

TRPHONG

TENPHG MAPHONG

NG_NHANCHUC

Lý thuyết CSDL 67/111

Lệnh tạo miền giá trị

• Tạo ra một kiểu dữ liệu mới kế thừa những kiểu dữliệu có sẳn

• Cú pháp

• Ví dụ

CREATE DOMAIN <Tên_kdl_mới> AS <Kiểu_dữ_liệu>

CREATE TYPE <Tên_kdl_mới> FROM <Kiểu_dữ_liệu>

CREATE DOMAIN Kieu_Ten AS VARCHAR(30)

CREATE TYPE Kieu_Ten FROM VARCHAR(30) not null

Lý thuyết CSDL 68/111

Detach and Reattach the Database in Transact-SQL

use master--DetachEXEC sp_detach_db 'Asset5'Go--AttachEXEC sp_attach_db @dbname = 'Asset5',

@filename1 = 'c:\Program Files\Microsoft SQL Server\MSSQL.1\mssql\data\Asset5.mdf',

@filename2 = 'c:\Program Files\Microsoft SQL Server\MSSQL.1\mssql\data\Asset5_log.ldf‘

Nếu CSDL còn có nhiều file khác thì chúng ta thêm vào các @filename3, @filename4,…

Lý thuyết CSDL 69/111

Attach and Detach in Management Studio

• Detach:– Chọn database: chọn Tasks | Detach.– Việc Detach CSDL có thể chưa sẵn sàng nếu như có ít nhất một user

khác đang kết nối đến CSDL này.

• Attach:– Copy file dữ liệu và file log vào thư mục trong máy chủ. Thông

thường đặt trong thư mục data trong sqlserver.– Trong cửa sổ Object Browser của Database chọn Attach.– Chương trình mở cửa số Attach. Chọn nút Add và mở thư mục chứa

file dữ liệu (.mdf).

Lý thuyết CSDL 70/111

Attach and Detach in Management Studio

• Xuất hiện lỗi sau khi attach hoặc restore một CSDL được lấy từ một server khác.– Cannot add diagram to SQL Server 2005 DB: Database diagram

support objects cannot be installed because this database does not have a valid owner .

• Sửa lỗi này:– EXEC sp_dbcmptlevel 'dbname', '90';

– ALTER AUTHORIZATION ON DATABASE::dbname TO valid_login

• Ví dụ– EXEC sp_dbcmptlevel 'Northwind', '90';– ALTER AUTHORIZATION ON DATABASE::Northwind TO "HUNG-CNPM\ManhHung“

• 60 = SQL Server 6.0; 65 = SQL Server 6.5 • 70 = SQL Server 7.0; 80 = SQL Server 2000 • 90 = SQL Server 2005

Lý thuyết CSDL 71/111

Vấn đề tiềm ẩn trong việc triển khai CSDL

• Khi triển khai CSDL như trên sẽ không đảm bảo được liên kết giữa server logins and database users.

• Vì:– Server logins được lưu trữ trong CSDL Master, Database

users được lưu trữ trong từng CSDL.– Các Database users sẽ được attach theo CSDL, nhưng các

Database users này lại liên kết đến server logins trên server cũ. => Lỗi.

• Giải pháp:– Sử dụng sp_change_users_login

Lý thuyết CSDL 72/111

Thủ tục sp_change_users_login Cú pháp: sp_change_users_login [ @Action = ] 'action'

[ , [ @UserNamePattern = ] 'user' ] [ , [ @LoginName = ] 'login' ] [ , [ @Password = ] 'password' ]

Action Value Description

Auto_Fix

Links a user entry in the sysusers table in the current database to a SQL Server login of the same name. If a login with the same name does not exist, one will be created.

Nếu login không tồn tại thì bạn phải chỉ định cả user and password.Nếu login đã có thì phải chỉ định user và không được chỉ định password.login phải là NULL, user phải đúng là có trong CSDL, login phải chưa được mapped

đến một user nào khác.

Report Liệt kê danh sách các user trong CSDL hiện thời không có liên kết đến server logins. Khi đó các tham số: user, login, and password must be NULL or not specified.

Update_One Liên kết user đến một server login. Khi đó: user and login must be specified. password must be NULL or not specified.

Lý thuyết CSDL 73/111

Thủ tục sp_change_users_login

• Hiển thị tất cả các user không có liên kết đến server logins của CSDL hiện thời:exec sp_change_users_login @Action = 'Report'

• Liên kết user chỉ định trong @UserNamePattern đến một server login:exec sp_change_users_login @Action = 'Update_one',

@UserNamePattern = 'test',@LoginName = 'hung‘

--login chưa có phải chỉ định cả user and password.

exec sp_change_users_login @Action = 'Auto_Fix',@UserNamePattern = 'nsunderic' ,@password = 'myl.password'

Lý thuyết CSDL 74/111

Xác thực NSD

• Các kiểu xác thực: – SQL Server and Windows Authentication: hỗ trợ 2 kiểu

đăng nhập trên SQL Server và trên Windows– Windows Authentication

• Khi cài đặt chúng ta đã chọn một kiểu xác thực cho SQL Server. Tuy nhiên chúng ta có thể thay đổi:– Mở MSt.– Trong cửa sổ Object Explorer, ấn phải chuột lên server,

chọn properties.– Chọn nút Security => chọn kiểu xác thực– Chọn OK

Lý thuyết CSDL 75/111

Lý thuyết CSDL 76/111

So sánh 2 kiểu xác thực

• Kiểu Windows Authentication– Chỉ yêu cầu NSD đăng nhập một lần– Quản lý tập trung– Tận dụng được các tính năng bảo mật của Windows

• Kiểu SQL and Windows– Hỗ trợ NSD trên các HĐH khác– Quản lý NSD riêng

Lý thuyết CSDL 77/111

Access Levels

Lý thuyết CSDL 78/111

Tạo thêm NSD mới trên SQL Server• Chú ý: Nếu sử dụng password policy thì mật khẩu phải tối thiểu

là 6 kí tự và phải chứa cả ba lọai: chữ thường a-z, chữ hoa A-Z, chữ số 0-9.

• Thêm NSD theo xác thực Windows– Mở Security mức Server– Ấn phải chuột chọn New Login– Lựa chọn: Windows Authentication– Nhập tên NSD, hoặc chọn Search– Chọn Default DB– Chọn Server Roles– Chọn User Mapping để chỉ ra các CSDL mà NSD có quyền tương tác.

• Thêm NSD theo xác thực SQL Server (làm tương tự)

Lý thuyết CSDL 79/111

Thêm NSD mới bằng T-SQLCREATE LOGIN login_name { WITH <option_list1> | FROM <sources> }<sources> ::=

WINDOWS [ WITH <windows_options> [ ,... ] ]| CERTIFICATE certname| ASYMMETRIC KEY asym_key_name

<option_list1> ::= PASSWORD = 'password' [ HASHED ] [ MUST_CHANGE ][ , <option_list2> [ ,... ] ]

<option_list2> ::= SID = sid| DEFAULT_DATABASE = database | DEFAULT_LANGUAGE = language| CHECK_EXPIRATION = { ON | OFF}| CHECK_POLICY = { ON | OFF}[ CREDENTIAL = credential_name ]

<windows_options> ::= DEFAULT_DATABASE = database| DEFAULT_LANGUAGE = language

Lý thuyết CSDL 80/111

Thêm NSD mới bằng T-SQL (2)

Create database testgouse testGo-- Them login la UserLogin1 theo xac thuc SQL ServerCREATE LOGIN UserLogin1 WITH PASSWORD = '123' --Them login la HUNG-CNPM\ManhHung lay tu user cua

WindowsCREATE LOGIN [HUNG-CNPM\ManhHung] FROM

WINDOWS;

Lý thuyết CSDL 81/111

Grant, Revoke, Deny• Grant – là lệnh dùng để cấp pháp quyền thực thi các thao

tác hoặc là quyền truy cập đến đối tượng trên SQL Server.

• Revoke – dùng để đòi lại các quyền mà user đã được cấp phát.

• Deny – cấm không cho thực thi các thao tác hoặc truy cập đến một đối tượng nào đó

Lý thuyết CSDL 82/111

Grants permissions on a schema

Cấp quyền đối với mỗi schema:GRANT permission [ ,...n ] ON SCHEMA ::

schema_nameTO database_principal [ ,...n ][ WITH GRANT OPTION ][ AS granting_principal ]

Ví dụ:

Lý thuyết CSDL 83/111

Grants permissions on objects (table, view, proc,…)

GRANT <permission> [ ,...n ] ON [ OBJECT :: ][ schema_name ]. object_name [ ( column [ ,...n ] ) ]TO <database_principal> [ ,...n ] [ WITH GRANT OPTION ]

Lý thuyết CSDL 84/111

Grants permissions on a server

GRANT permission [ ,...n ] TO <login> [ ,...n ]Ví dụ:

use master gocreate login LoginUs1 with password='123'create login LoginUs2 with password='123’ gogrant create any database to LoginUs1execute as login='LoginUs1'create database test1revertexecute as login='LoginUs2'create database test2 --failrevertdrop database test1Drop login LoginUs1

Lý thuyết CSDL 85/111

Revokes permissions on a schema

• REVOKE [ GRANT OPTION FOR ] permission [ ,...n ] ON SCHEMA :: schema_name { TO | FROM } database_principal [ ,...n ] [ CASCADE ]

- GRANT OPTION FOR: Đòi lại quyền WITH GRANT OPTION đã cấp phát

- CASCADE: Đòi lại các quyền đã phát.- Ví dụ:

- user sa -> usr1 (WITH GRANT OPTION )->usr2- User sa đòi lại quyền của usr1(cascade) thì quyền truy cập của

usr2 cũng tự động bị đòi lại

Lý thuyết CSDL 86/111

Removes server-level GRANT and DENY permissions

REVOKE [ GRANT OPTION FOR ] permission [ ,...n ] { TO | FROM } <login> [ ,...n ] [ CASCADE ]

Lý thuyết CSDL 87/111

Revokes permissions on objectsREVOKE [ GRANT OPTION FOR ] <permission> [ ,...n ] ON

[ OBJECT :: ][ schema_name ]. object_name [ ( column [ ,...n ] ) ]

{ FROM | TO } <database_principal> [ ,...n ] [ CASCADE ]

Lý thuyết CSDL 88/111

Deny• Denies permissions on a server:

– DENY permission [ ,...n ] TO <login> [ ,...n ] [ CASCADE ] • Denies permissions on a schema:

– DENY permission [ ,...n ] } ON SCHEMA :: schema_name TO database_principal [ ,...n ] [ CASCADE ]

• Denies permissions on objects:– DENY <permission> [ ,...n ] ON [ OBJECT :: ][ schema_name ].

object_name [ ( column [ ,...n ] ) ] TO <database_principal> [ ,...n ] [ CASCADE ]

Lý thuyết CSDL 89/111

THẢO LUẬN

Trả lời câu hỏi:1. Các tiện ích trong SQL Server?2. Các cách tạo cơ sở dữ liệu trong SQL Server?3. Các loại xác thực trong SQL Server?

Lý thuyết CSDL 90/111

THẢO LUẬN

Thảo luận theo nhóm:Các nhóm trình bày chi tiết cách tạo cơ sở dữ

liệu, cấu trúc các bảng, ràng buộc toàn vẹn

trên cơ sở dữ liệu đề tài của nhóm