Chương 3

SQL Structured Query Language Phần 2

Nội dung

 DDL (Data Definition Language)

 Định nghĩa Database  Định nghĩa cấu trúc Bảng  Định nghĩa ràng buộc toàn vẹn  Định nghĩa khung nhìn

 Tham khảo các lệnh trên trong môi trường SQL

Server

Tạo Database

 Trong SQL Server CREATE DATABASE Sales ON PRIMARY ( NAME = ‘Sale_data’, FILENAME = ‘d:\database\Sales\Saledata.mdf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 2 ) LOG ON ( NAME = 'Sales_log', FILENAME = ‘d:\database\Sales\Salelog.ldf', SIZE = 2, MAXSIZE = 5, FILEGROWTH = 1)

Kiểu dữ liệu

Char, Varchar, nchar, nvarchar, text, ntext Ký tự

Bit Bit

Số chính xác Tinyint, smallint, Int, bigint,

Decimal(i,j) , numeric(i,j)

Số thực có định dạng

Số thực Float, Real

Ngày giờ Smalldatetime, Datetime

Loại khác Money, Binary, Image, …

Tạo cấu trúc bảng

 Sử dụng lệnh Create, Alter, Drop để tạo , sửa, xóa cấu trúc bảng  Lệnh tạo bảng Create:

 Định nghĩa các cột : tên cột, kiểu dữ liệu  Khai báo các ràng buộc

 Cú pháp : CREATE TABLE tênbảng ( Têncột_1 Kiểudữliệu [not null] [unique] [RBTV trên cột], …. Têncột_n Kiểudữliệu [not null] [unique] [RBTV trên cột], [RBTV bảng] )

Tạo cấu trúc bảng

CREATE TABLE KHACHHANG (

MAKH nvarchar(10) NOT NULL Primary Key, TENKH nvarchar(30) NULL, DIACHI nvarchar(40) NULL, THANHPHO nvarchar(50) NOT NULL, DIENTHOAI nvarchar(50) NULL

)

Tạo cấu trúc bảng

CREATE TABLE NHANVIEN ( MANV int NOT NULL, HONV nvarchar(20) NULL, TENNV nvarchar(10) NOT NULL, PHAI bit NOT NULL, NGAYSINH datetime NULL, NOISINH nvarchar(15) NULL, DIACHI nvarchar(40) NOT NULL, DIENTHOAI nvarchar(13) NULL,

CONSTRAINT PK_NHANVIEN PRIMARY KEY (MANV) )

Tạo cấu trúc bảng

CREATE TABLE SANPHAM ( MASP tinyint NOT NULL, TENSP nvarchar(20) NULL, DVT nvarchar(10) NULL, DONGIA real NULL, Tonkho bit

) Go ALTER TABLE SANPHAM ADD CONSTRAINT PK_SANPHAM

PRIMARY KEY(MASP)

Go

Tạo cấu trúc bảng

CREATE TABLE HOADON (

MAHD nvarchar(5) NOT NULL PRIMARY KEY , LOAIHD nvarchar(1) NULL, MAKH nvarchar(10) NULL, MANV int NULL REFERENCES NHANVIEN (MANV), NGAYLAPHD datetime NULL, NGAYGIAONHAN datetime NULL, CONSTRAINT [FK_HD_KH] FOREIGN KEY(MAKH) REFERENCES KHACHHANG (MAKH)

)

Tạo cấu trúc bảng

CREATE TABLE CHITIETHOADON ( MAHD nvarchar(5) NOT NULL , MASP tinyint NOT NULL, SOLUONG smallint NULL DEFAULT 0 , DONGIA float NULL,

CONSTRAINT PK_CTHD PRIMARY KEY (MAHD,MASP) ) Go ALTER TABLE CHITIETHOADON ADD CONSTRAINT [FK_CTHD_HD]

FOREIGN KEY(MAHD) REFERENCES HOADON (MAHD)

Go ALTER TABLE CHITIETHOADON ADD CONSTRAINT [FK_CTHD_SP]

FOREIGN KEY(MASP) REFERENCES SANPHAM(MASP)

Chỉnh sửa cấu trúc bảng  Sử dụng lệnh Alter để chỉnh sửa cấu trúc bảng : thêm/xóa cột, đổi

kiểu dữ liệu, thêm/xóa ràng buộc

ALTER TABLE SANPHAM ADD NHOMHANG VARCHAR(3) Go ALTER TABLE SANPHAM ALTER COLUMN NHOMHANG VARCHAR(5) Go ALTER TABLE SANPHAM DROP COLUMN NHOMHANG Go ALTER TABLE CHITIETHOADON DROP CONSTRAINT

[FK_CTHD_HD]

 Xóa bảng DROP TABLE SANPHAM

Tạo các Ràng buộc khác

 Ràng buộc miền giá trị ALTER TABLE SANPHAM ADD CONSTRAINT [CK_DG] CHECK (DONGIA>0) Go ALTER TABLE HOADON ADD CONSTRAINT CK_Ngay CHECK

(NgaylapHD<=NgayGiaohang)

Go ALTER TABLE SANPHAM ADD CONSTRAINT

df_DG DEFAULT ‘kg’ FOR DONGIA

Khung nhìn – View Khái niệm

 Là bảng “ảo” :

 Không lưu trữ dữ liệu  Khi xem dữ liệu trong View, thực chất là xem tập kết quả

của một câu lệnh Select

 Giống như bảng: có thể truy vấn, thêm, xóa, sửa dữ liệu

thông qua view

 Mục đích:

 Che dấu tính phức tạp của dữ liệu  Cung cấp cơ chế đảm bảo an toàn dữ liệu  Tăng hiệu quả thực thi

Khung nhìn – View Tạo View

 Cú pháp : CREATE VIEW tênview [dscột] AS SELECT … FROM … WHERE Vd1: Tạo view chứa các nhân viên có chức vụ

‘kinhdoanh’

CREATE VIEW nvKDoanh AS Select * From Nhanvien Where chucvu like ‘kinh doanh’

Khung nhìn – View Công dụng

 Sử dụng view Select * From nvKDoanh Go Insert into nvKDoanh Values(…) Go Update nvKDoanh Set luong = luong*1.1 Go Delete From nvKDoanh

Không cập nhật trên View mà sử dụng hàm Aggregate hay Distinct khi tạo

Khung nhìn – View Hạn chế  Vd2: CREATE VIEW vwHD AS Select Manv, Count(*) From Hoadon Group by Manv Go Select count(*) From vwHD Go Update vwHD Set manv = '100‘ Where manv =1 Go Delete From vwHD

Không xóa trên View mà sử dụng hàm Aggregate hay Distinct , hoặc xây dựng từ nhiều bảng