1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng SQL server 1

79 29 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

(NB) Bài giảng SQL server 1 gồm có 3 chương với những nội dung chính sau: Tổng quan về SQL, ngôn ngữ thao tác dữ liệu, ngôn ngữ định nghĩa dữ liệu. Mời các bạn cùng tham khảo để biết thêm các nội dung chi tiết.

TRƯỜNG CAO ĐẲNG NGHỀ CƠ ĐIỆN HÀ NỘI KHOA CÔNG NGHỆ THƠNG TIN GIÁO TRÌNH SQL SERVER (Lưu hành nội bộ) Biên soạn: Thái Ngô Hùng Hà nội, 2010 Chương 1: TỔNG QUAN VỀ SQL Ngôn ngữ hỏi có cấu trúc (SQL) hệ quản trị sở liệu quan hệ tảng kỹ thuật quan trọng cơng nghiệp máy tính Cho đến nay, nói SQL xem ngôn ngữ chuẩn sở liệu Các hệ quản trị sở liệu quan hệ thương mại có Oracle, SQL Server, Informix, DB2, chọn SQL làm ngôn ngữ cho sản phẩm Vậy thực SQL gì? Tại lại quan trọng hệ quản trị sở liệu? SQL làm nào? Nó sử dụng hệ quản trị sở liệu quan hệ? Nội dung chương cung cấp cho nhìn tổng quan SQL số vấn đề liên quan 1.1 SQL ngôn ngữ sở liệu quan hệ SQL, viết tắt Structured Query Language (ngơn ngữ hỏi có cấu trúc), công cụ sử dụng để tổ chức, quản lý truy xuất liệu đuợc lưu trữ sở liệu SQL hệ thống ngôn ngữ bao gồm tập câu lệnh sử dụng để tương tác với sở liệu quan hệ Tên gọi ngơn ngữ hỏi có cấu trúc phần làm liên tưởng đến công cụ (ngôn ngữ) dùng để truy xuất liệu sở liệu Thực mà nói, khả SQL vượt xa so với công cụ truy xuất liệu, mục đích ban đầu SQL xây dựng nên truy xuất liệu chức quan trọng SQL sử dụng để điều khiển tất chức mà hệ quản trị sở liệu cung cấp cho người dùng bao gồm: Định nghĩa liệu: SQL cung cấp khả định nghĩa sở liệu, cấu trúc lưu trữ tổ chức liệu mối quan hệ thành phần liệu Truy xuất thao tác liệu: Với SQL, người dùng dễ dàng thực thao tác truy xuất, bổ sung, cập nhật loại bỏ liệu sở liệu Điều khiển truy cập: SQL sử dụng để cấp phát kiểm soát thao tác người sử dụng liệu, đảm bảo an toàn cho sở liệu Đảm bảo toàn vẹn liệu: SQL định nghĩa ràng buộc tồn vẹn sở liệu nhờ đảm bảo tính hợp lệ xác liệu trước thao tác cập nhật lỗi hệ thống Như vậy, nói SQL ngơn ngữ hồn thiện sử dụng hệ thống sở liệu thành phần thiếu hệ quản trị bảng trùng tên với mà không gây xung đột tên Nếu câu lệnh SQL ta cần đến bảng người dùng khác sở hữu (hiển nhiên phải phép) tên bảng phải viết sau tên người sở hữu phân cách với tên người sở hữu dấu chấm: tên_người_sở_hữu.tên_bảng Một số đối tượng sở liệu khác (như khung nhìn, thủ tục, hàm), việc sử dụng tên tương tự bảng Ta sử dụng tên cột cách bình thường câu lệnh SQL cảch cần định tên cột bảng Tuy nhiên, câu lệnh có liên quan đến hai cột trở lên có tên bảng khác bắt buộc phải định thêm tên bảng trước tên cột; tên bảng tên cột phân cách dấu chấm Ví dụ: Ví dụ minh hoạ cho ta thấy việc sử dụng tên bảng tên cột câu lệnh SQL SELECT masv,hodem,ten,sinhvien.malop,tenlop FROM dbo.sinhvien,dbo.lop WHERE sinhvien.malop = lop.malop 1.4.3 Kiểu liệu Chuẩn ANSI/ISO SQL cung cấp kiểu liệu khác để sử dụng sở liệu dựa SQL ngôn ngữ SQL Dựa sở kiểu liệu chuẩn ANSI/ISO SQL cung cấp, hệ quản trị sở liệu thương mại sử dụng dạng liệu khác sản phẩm Bảng liệt kê số kiểu liệu thông dụng sử dụng SQL Tên kiểu Mô tả 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 xác NVARCHAR (n) Kiểu chuỗi với độ dài xác hỗ trợ UNICODE INTEGER Số nguyên có giá trị từ -2 đến - INT Như kiểu Integer TINYTINT SMALLINT 31 Số nguyên có giá trị từ đến 255 Số nguyên có giá trị từ -2 đến – 15 15 Số nguyên có giá trị từ - đến -1 63 BIGINT 31 63 NUMERIC (p,s) Kiểu số với độ xác cố định DECIMAL (p,s) Tương tự kiểu Numeric FLOAT REAL Số thực có giá trị từ -1.79E+308 đến 1.79E+308 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ị 1) DATETIME SMALLDATETIME BINARY VARBINARY Kiểu ngày (chính xác đến phần trăm giây) Kiểu ngày (chính xác đến phút) Dữ liệu nhị phân với độ dài cố định (tối đa 8000 bytes) Dữ liệu nhị phân với độ dài xác (tối đa 8000 bytes) IMAGE Dữ liệu nhị phân với độ dài 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 hỗ trợ UNICODE (tối đa 1,073,741,823 ký tự) Ví dụ 1.2: Câu lệnh định nghĩa bảng với kiểu liệu qui định cho cột bảng CREATE TABLE NHANVIEN (MANV NVARCHAR(10)NOT NULL, HOTEN NVARCHAR(30)NOT NULL, GIOITINH BIT, NGAYSINH SMALLDATETIME, NOISINH NCHAR(50), HSLUONG DECIMAL(4,2), MADV INT) 1.4.4 Giá trị NULL Một sở liệu phản ánh hệ thống giới thực, giá trị liệu tồn sở liệu khơng xác định Một giá trị khơng xác định xuất sở liệu số ngun nhân sau: • Giá trị có tồn khơng biết • Khơng xác định giá trị có tồn hay không Các bảng sở liệu khơng tồn độc lập mà có mối quan hệ mật thiết với mặt liệu Mối quan hệ thể thông qua ràng buộc giá trị liệu xuất bảng phải có xuất trước bảng khác Mối quan hệ bảng sở liệu nhằm đàm bảo tính đắn hợp lệ liệu sở liệu Trong hình 1.1, hai bảng LOP KHOA có mối quan hệ với Mối quan hệ đòi hỏi giá trị cột MAKHOA dòng (tức lớp) bảng LOP phải xác định từ cột MAKHOA bảng KHOA Hình 1.1: Mối quan hệ hai bảng LOP KHOA sở liệu Mối quan hệ bảng sở liệu thể mối quan hệ thực thể giới thực Trong hình 1.3, mối quan hệ hai bảng LOP KHOA không cho phép lớp tồn mà lại thuộc vào khoa khơng có thật Khái niệm khố ngồi (Foreign Key) sở liệu quan hệ sử dụng để biểu diễn mối quan hệ bảng liệu Một hay tập cột bảng mà giá trị xác định từ khóa bảng khác gọi khố ngồi Trong hình 1.1, cột MAKHOA bảng LOP gọi khoá ngồi bảng này, khố ngồi tham chiếu đến khố bảng KHOA cột MAKHOA 1.4 Sơ lược SQL 1.4.1 Câu lệnh SQL SQL chuẩn bao gồm khoảng 40 câu lệnh Bảng 1.1 liệt kê danh sách câu lệnh thường sử dụng số câu lệnh SQL Trong hệ quản trị sở liệu khác nhau, câu lệnh có dạng mục đích sử Chương NGÔN NGỮ THAO TÁC DỮ LIỆU Đối với đa số người sử dụng, SQL xem công cụ hữu hiệu để thực yêu cầu truy vấn thao tác liệu Trong chương này, ta bàn luận đến nhóm câu lệnh SQL sử dụng cho mục đích Nhóm câu lệnh gọi chung ngôn ngữ thao tác liệu (DML: Data Manipulation Language)bao gồm câu lệnh sau: • SELECT: Sử dụng để truy xuất liệu từ mơt nhiều bảng • INSERT: Bổ sung liệu • UPDATE: Cập nhật liệu • DELETE: Xố liệu Trong số câu lệnh này, nói SELECT câu lệnh tương đối phức tạp sử dụng nhiều sở liệu Với câu lệnh này, ta không thực yêu cầu truy xuất liệu đơn mà cịn thực u cầu thống kê liệu phức tạp Cũng vậy, phần đầu chương tập trung tương đối nhiều đến câu lệnh SELECT Các câu lệnh INSERT, UPDATE DELETE bàn luận đến cuối chương 2.1 Truy xuất liệu với câu lệnh SELECT Câu lệnh SELECT sử dụng để truy xuất liệu từ dòng cột hay nhiều bảng, khung nhìn Câu lệnh dùng để thực phép chọn (tức truy xuất tập dòng hay nhiều bảng), phép chiếu (tức truy xuất tập cột hay nhiều bảng) phép nối (tức liên kết dòng hai hay nhiều bảng để truy xuất liệu) Ngồi ra, câu lệnh cịn cung cấp khả thực thao tác truy vấn thống kê liệu phức tạp khác Cú pháp chung câu lệnh SELECT có dạng: SELECT [ALL | DISTINCT][TOP n] danh_sách_chọn [INTO tên_bảng_mới] FROM danh_sách_bảng/khung_nhìn [WHEREđiều_kiện] [GROUP BY danh_sách_cột] [HAVING điều_kiện] 11 [ORDER BY cột_sắp_xếp] [COMPUTE danh_sách_hàm_gộp [BY danh_sách_cột]] Điều cần lưu ý câu lệnh thành phần câu lệnh SELECT sử dụng phải tuân theo thứ tự cú pháp Nếu không, câu lệnh xem không hợp lệ Câu lệnh SELECT sử dụng để tác động lên bảng liệu kết câu lệnh hiển thị dạng bảng, tức tập hợp dòng cột (ngoại trừ trường hợp sử dụng câu lệnh SELECT với mệnh đề COMPUTE) Ví dụ 2.1: Kết câu lệnh sau cho biết mã lớp, tên lớp hệ đào tạo lớp có SELECT malop,tenlop,hedaotao FROM lop 2.1.1 Mệnh đề FROM Mệnh đề FROM câu lệnh SELECT sử dung nhằm định bảng khung nhìn cần truy xuất liệu Sau FROM danh sách tên bảng khung nhìn tham gia vào truy vấn, tên bảng khung nhìn phân cách dấu phẩy Ví dụ 2.2: Câu lệnh hiển thị danh sách khoa trường SELECT * FROM khoa kết câu lệnh sau: 12 bảng trùng tên với mà không gây xung đột tên Nếu câu lệnh SQL ta cần đến bảng người dùng khác sở hữu (hiển nhiên phải phép) tên bảng phải viết sau tên người sở hữu phân cách với tên người sở hữu dấu chấm: tên_người_sở_hữu.tên_bảng Một số đối tượng sở liệu khác (như khung nhìn, thủ tục, hàm), việc sử dụng tên tương tự bảng Ta sử dụng tên cột cách bình thường câu lệnh SQL cảch cần định tên cột bảng Tuy nhiên, câu lệnh có liên quan đến hai cột trở lên có tên bảng khác bắt buộc phải định thêm tên bảng trước tên cột; tên bảng tên cột phân cách dấu chấm Ví dụ: Ví dụ minh hoạ cho ta thấy việc sử dụng tên bảng tên cột câu lệnh SQL SELECT masv,hodem,ten,sinhvien.malop,tenlop FROM dbo.sinhvien,dbo.lop WHERE sinhvien.malop = lop.malop 1.4.3 Kiểu liệu Chuẩn ANSI/ISO SQL cung cấp kiểu liệu khác để sử dụng sở liệu dựa SQL ngôn ngữ SQL Dựa sở kiểu liệu chuẩn ANSI/ISO SQL cung cấp, hệ quản trị sở liệu thương mại sử dụng dạng liệu khác sản phẩm Bảng liệt kê số kiểu liệu thông dụng sử dụng SQL Tên kiểu Mô tả 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 xác NVARCHAR (n) Kiểu chuỗi với độ dài xác hỗ trợ UNICODE INTEGER Số nguyên có giá trị từ -2 đến - INT Như kiểu Integer TINYTINT SMALLINT 31 Số nguyên có giá trị từ đến 255 Số nguyên có giá trị từ -2 đến – 15 15 Số nguyên có giá trị từ - đến -1 63 BIGINT 31 63 Ta sử dụng bí danh cho bảng hay khung nhìn câu lệnh SELECT Bí danh gán mệnh đề FROM cách định bí danh sau tên bảng Ví dụ 2.3: câu lệnh sau gán bí danh a cho bảng khoa SELECT * FROM khoa a 2.1.2 Danh sách chọn câu lệnh SELECT Danh sách chọn câu lệnh SELECT sử dụng để định trường, biểu thức cần hiển thị cột kết truy vấn Các trường, biểu thức định sau từ khoá SELECT phân cách dấu phẩy Sử dụng danh sách chọn câu lệnh SELECT bao gồm trường hợp sau: a Chọn tất cột bảng Khi cần hiển thị tất trường bảng, sử dụng ký tự * danh sách chọn thay phải liệt kê danh sách tất cột Trong trường hợp này, cột hiển thị kết truy vấn tuân theo thứ tự mà chúng tạo bảng định nghĩa Ví dụ 2.4: Câu lệnh SELECT * FROM lop cho kết bao sau: b Tên cột danh sách chọn Trong trường hợp cần định cụ thể cột cần hiển thị kết truy vấn, ta định danh sách tên cột danh sách chọn Thứ tự cột kết truy vấn tuân theo thứ tự trường danh sách chọn 13 • Tại thời điểm giá trị chưa có có • Giá trị bị lỗi tính tốn (tràn số, chia cho không, ) Những giá trị không xác định biểu diễn sở liệu quan hệ giá trị NULL Đây giá trị đặc biệt không nên nhầm lẫn với chuỗi rỗng (đối với liệu kiểu chuỗi) hay giá trị không (đối với giá trị kiểu số) Giá trị NULL đóng vai trò quan trọng sở liệu hầu hết hệ quản trị sở liệu quan hệ hỗ trợ việc sử dụng giá trị 1.5 Kết chương Như vậy, SQL (viết tắt Structured Query Language) hệ thống ngôn ngữ sử dụng cho hệ quản trị sở liệu quan hệ Thơng qua SQL thực thao tác sở liệu định nghĩa liệu, thao tác liệu, điều khiển truy cập, quản lý toàn vẹn liệu SQL thành phần quan trọng thiếu hệ quản trị sở liệu quan hệ SQL đời nhằm sử dụng cho sở liệu theo mơ hình quan hệ Trong sở liệu quan hệ, liệu tổ chức lưu trữ bảng Mỗi bảng tập hợp bao gồm dòng cột; dòng ghi cột tương ứng với trường, tập tên cột với kiểu liệu tính chất khác tạo nên cấu trúc bảng, tập dịng bảng liệu bảng Các bảng sở liệu có mối quan hệ với Các mối quan hệ biểu diễn thơng qua khố khố ngồi bảng Khố bảng tập nhiều cột có giá trị bảng giá trị xác định dịng liệu bảng Một khố ngồi tập nhiều cột có giá trị xác định từ khố bảng khác 10 Ràng buộc FOREIGN KEY định nghĩa theo cú pháp đâ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] Việc định nghĩa ràng buộc FOREIGN KEY bao gồm yếu tố sau: • Tên cột danh sách cột bảng định nghĩa tham gia vào khố ngồi • Tên bảng tham chiếu khố ngồi danh sách cột tham chiếu đến bảng tham chiếu • Cách thức xử lý ghi bảng định nghĩa trường hợp ghi tham chiếu bảng tham chiếu bị xoá (ON DELETE) hay cập nhật (ON UPDATE) SQL chuẩn đưa cách xử lý: CASCADE: Tự động xoá (cập nhật) ghi tham chiếu bị xoá (cập nhật) NO ACTION: (Mặc định) Nếu ghi bảng tham chiếu tham chiếu ghi bảng định nghĩa bàn ghi khơng phép xoá cập nhật (đối với cột tham chiếu) SET NULL: Cập nhật lại khố ngồi ghi thành giá trị NULL (nếu cột cho phép nhận giá trị NULL) SET DEFAULT: Cập nhật lại khố ngồi ghi nhận giá trị mặc định (nếu cột có qui định giá trị mặc định) Ví dụ 3.8: Câu lệnh định nghĩa bảng DIEMTHI với hai khoá cột MASV cột MAMONHOC (giả sử hai bảng SINHVIEN MONHOC định nghĩa) CREATE TABLE diemthi ( mamonhoc NVARCHAR(10) NOT NULL , masv NVARCHAR(10) NOT NULL , diemlan1 NUMERIC(4, 2), diemlan2 NUMERIC(4, 2), CONSTRAINT pk_diemthi PRIMARY KEY(mamonhoc,masv), CONSTRAINT fk_diemthi_mamonhoc 65 FOREIGN KEY(mamonhoc) REFERENCES monhoc(mamonhoc) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT fk_diemthi_masv FOREIGN KEY(masv) REFERENCES sinhvien(masv) ON DELETE CASCADE ON UPDATE CASCADE ) Lưu ý: • Cột tham chiếu bảng tham chiếu phải khố (hoặc khố phụ) • Cột tham chiếu phải có kiểu liệu độ dài với cột tương ứng khóa ngồi • Bảng tham chiếu phải định nghĩa trước Do đó, bảng có mối quan hệ vịng, ta không thểđịnh nghĩa ràng buộc FOREIGN KEY câu lệnh CREATE TABLE mà phải định nghĩa thông qua lệnh ALTER TABLE 3.2 Sửa đổi định nghĩa bảng Một bảng sau định nghĩa câu lệnh CREATE TABLE sửa đổi thơng qua câu lệnh ALTER TABLE Câu lệnh cho phép thực thao tác sau: • Bổ sung cột vào bảng • Xố cột khỏi bảng • Thay đổi định nghĩa cột bảng • Xoá bỏ bổ sung ràng buộc cho bảng Cú pháp câu lệnh ALTER TABLE sau: ALTER TABLE ADD tên_bảng định_nghĩa_cột | ALTER COLUMNtên_cột kiểu_dữ_liêu [NULL | NOT NULL] | DROP COLUMN tên_cột | ADD CONSTRAINT tên_ràng_buộc định_nghĩa_ràng_buộc | DROP CONSTRAINT tên_ràng_buộc 66 Ví dụ 3.9: Các ví dụ minh hoạ cho ta cách sử dụng câu lệnh ALTER TABLE trường hợp Giả sử ta có hai bảng DONVI NHANVIEN với định nghĩa sau: CREATE TABLE donvi ( madv INT NOT NULL PRIMARY KEY, tendv NVARCHAR(30) NOT NULL ) CREATE TABLE nhanvien ( manv NVARCHAR(10) NOT NULL, hoten NVARCHAR(30) NOT NULL, ngaysinh DATETIME, diachi CHAR(30) NOT NULL ) Bổ sung vào bảng NHANVIEN cột DIENTHOAI với ràng buộc CHECK nhằm qui định điện thoại nhân viên chuỗi chữ số: ALTER TABLE nhanvien ADD dienthoai NVARCHAR(6) CONSTRAINT chk_nhanvien_dienthoai CHECK (dienthoai LIKE '[0-9][0-9][0-9][0-9][0-9][0-9]') Bổ sung thêm cột MADV vào bảng NHANVIEN: ALTER TABLE nhanvien ADD madv INT NULL Định nghĩa lại kiểu liệu cột DIACHI bảng NHANVIEN cho phép cột chấp nhận giá trị NULL: ALTER TABLE nhanvien ALTER COLUMN diachi NVARCHAR(100) NULL Xoá cột ngày sinh khỏi bảng NHANVIEN: ALTER TABLE nhanvien 67 DROP COLUMN ngaysinh Định nghĩa khố (ràng buộc PRIMARY KEY) cho bảng NHANVIEN cột MANV: ALTER TABLE nhanvien ADD CONSTRAINT pk_nhanvien PRIMARY KEY(manv) Định nghĩa khố ngồi cho bảng NHANVIEN cột MADV tham chiếu đến cột MADV bảng DONVI: ALTER TABLE nhanvien ADD CONSTRAINT fk_nhanvien_madv FOREIGN KEY(madv) REFERENCES donvi(madv) ON DELETE CASCADE ON UPDATE CASCADE Xoá bỏ ràng buộc kiểm tra số điện thoại nhân viên ALTER TABLE nhanvien DROP CONSTRAINT CHK_NHANVIEN_DIENTHOAI Lưu ý: • Nếu bổ sung thêm cột vào bảng bảng có ghi cột cần bổ sung phải cho phép chấp nhận giá trị NULL phải có giá trị mặc định • Muốn xoá cột ràng buộc ràng buộc tham chiếu khoá ngồi, ta phải xố ràng buộc khố ngồi trước cho cột khơng cịn ràng buộc khơng cịn tham chiếu khố ngồi • Nếu bổ sung thêm ràng buộc cho bảng có liệu ràng buộc cần bổ sung không thoả mãn ghi có bảng câu lệnh ALTER TABLE khơng thực 3.3 Xố bảng Khi bảng khơng cịn cần thiết , ta xố khỏi sở liệu câu lệnh DROP TABLE Câu lệnh đồng thời xoá tất ràng buộc, mục, trigger liên quan đến bảng 68 Câu lệnh có cú pháp sau: DROP TABLE tên_bảng Trong hệ quản trị sở liệu, xoá bảng lệnh DROP TABLE, ta khôi phục lại bảng liệu Do đó, cần phải cẩn thận sử dụng câu lệnh Câu lệnh DROP TABLE thực bảng cần xoá tham chiếu ràng buộc FOREIGN KEY Trong trường hợp này, ràng buộc FOREIGN KEY tham chiếu bảng tham chiếu đến bảng cần xoá phải xoá trước Khi bảng bị xoá, tất ràng buộc, mục trigger liên quan đến bảng đồng thời bị xóa theo Do đó, ta tạo lại bảng phải tạo lại đối tượng Ví dụ 3.10: Giả sử cột MADV bảng DONVI tham chiếu khố ngồi fk_nhanvien_madv bảng NHANVIEN Để xoá bảng DONVI khỏi sở liệu, ta thực hai câu lệnh sau: Xoá bỏ ràng buộc fk_nhanvien_madv khỏi bảng NHANVIEN: ALTER TABLE nhanvien DROP CONSTRAINT fk_nhanvien_madv Xoá bảng DONVI: DROP TABLE donvi 3.4 Khung nhìn Các bảng sở liệu đóng vai trị đối tượng tổ chức lưu trữ liệu Như vậy, ta quan sát liệu sở liệu cách thực truy vấn bảng liệu Ngồi ra, SQL cịn cho phép quan sát liệu thông qua việc định nghĩa khung nhìn Một khung nhìn (view) xem bảng “ảo” sở liệu có nội dung định nghĩa thông qua truy vấn (câu lệnh SELECT) Như vậy, khung nhìn trơng giống bảng với tên khung nhìn tập bao gồm dòng cột Điểm khác biệt khung nhìn bảng khung nhìn không xem cấu trúc lưu trữ liệu tồn sở liệu Thực chất liệu quan sát khung nhìn lấy từ bảng thông qua câu lệnh truy vấn liệu Hình 3.3 minh hoạ cho ta thấy khung nhìn có tên DSSV định nghĩa thơng qua câu lệnh SELECT truy vấn liệu hai bảng SINHVIEN LOP: 69 CREATE VIEW nv1 AS SELECT manv,hoten,madv FROM nhanvien Nếu ta thực câu lệnh INSERT INTO nv1 VALUES('NV04','Le Thi D',1) Một ghi bổ sung vào bảng NHANVIEN liệu bảng là: Bản ghi Thơng qua khung nhìn này, ta thực thao tác cập nhật xoá liệu Chẳng hạn, ta thực câu lệnh: DELETE FROM nv1 WHERE manv='NV04' Thì ghi tương ứng với nhân viên có mã NV04 bị xoá khỏi bảng NHANVIEN Nếu danh sách chọn câu lệnh SELECT có xuất biểu thức tính tốn đơn giản, thao tác bổ sung liệu thơng qua khung nhìn khơng thể thực Tuy nhiên, trường hợp thao tác cập nhật xố liệu vấn có khả thực (hiển nhiên cập nhật liệu cột có từ biểu thức tính tốn) Ví dụ 3.15: Xét khung nhìn NV2 định nghĩa sau: CREATE VIEW nv2 AS SELECT manv,hoten,YEAR(ngaysinh) AS namsinh,madv FROM nhanvien Đối với khung nhìn NV2, ta thực thao tác bổ sung liệu cập nhật xố liệu bảng thơng qua khung nhìn Câu lệnh khơng thể thực khung nhìn NV2 INSERT INTO nv2(manv,hoten,madv) VALUES('NV05','Le Van E',1) Nhưng câu lệnh: UPDATE nv2 SET hoten='Le Thi X' WHERE manv='NV04' 75 CREATE VIEW viewlop AS SELECT malop,tenlop,tenkhoa FROM lop INNER JOIN khoa ON lop.makhoa=khoa.makhoa WHERE tenkhoa='Khoa Vật lý’ định nghĩa lại khung nhìn câu lệnh: ALTER VIEW view_lop AS SELECT malop,tenlop,hedaotao FROM lop INNER JOIN khoa ON lop.makhoa=khoa.makhoa WHERE tenkhoa='Khoa Cơng nghệ thơng tin' 3.4.4 Xố khung nhìn Khi khung nhìn khơng cịn sử dụng, ta xố khỏi sở liệu thơng qua câu lệnh: DROP VIEW tên_khung_nhìn Nếu khung nhìn bị xố, tồn quyền cấp phát cho người sử dụng khung nhìn đồng thời bị xố Do đó, ta tạo lại khung nhìn phải tiến hành cấp phát lại quyền cho người sử dụng Ví dụ 3.18: Câu lệnh xố khung nhìn VIEW_LOP khỏi sở liệu DROP VIEW view_lop 77 Bài tập chương Sử dụng câu lệnh CREATE TABLE để tạo bảng sở liệu sơ đồ (bạn tự lựa chọn kiểu liệu cho phù hợp) Bổ sung ràng buộc thiết lập giá trị mặc định cho cột SOLUONG cho cột MUCGIAMGIA bảng CHITIETDATHANG Bổ sung cho bảng DONDATHANG ràng buộc kiểm tra ngày giao hàng ngày chuyển hàng phải sau với ngày đặt hàng Bổ sung ràng buộc cho bảng NHANVIEN để đảm bảo nhân viên làm việc cơng ty đủ 18 tuổi không 60 tuổi Với bảng tạo được, câu lệnh: DROP TABLE nhacungcap thực khơng? Tại sao? Cho khung nhìn định nghĩa sau: CREATE VIEW view_donhang AS 78 Khi tạo khung nhìn với câu lệnh CREATE VIEW, ta cần phải lưu ý số ngun tắc sau: • Tên khung nhìn tên cột khung nhìn, giống bảng, phải tuân theo qui tắc định danh • Khơng thể qui định ràng buộc tạo mục cho khung nhìn • Câu lệnh SELECT với mệnh đề COMPUTE BY không sử dụng để định nghĩa khung nhìn Phải đặt tên cho cột khung nhìn trường hợp sau đây: Trong kết câu lệnh SELECT có cột sinh biểu thức (tức là tên cột bảng sở) cột khơng đặt tiêu đề Tồn hai cột kết câu lệnh SELECT có tiêu đề cột Ví dụ 3.13: Câu lệnh câu lệnh sai cột thứ không xác định tên cột CREATE VIEW tuoisinhvien AS SELECT masv,hodem,ten,DATEDIFF(YY,ngaysinh,GETDATE()) FROM sinhvien 3.4.2 Cập nhật, bổ sung xố liệu thơng qua khung nhìn Đối với số khung nhìn, ta tiến hành thực thao tác cập nhập, bổ sung xoá liệu Thực chất, thao tác chuyển thành thao tác tương tự bảng sở có tác động đến bảng sở Về mặt lý thuyết, để thực thao tác bổ sung, cập nhật xoá, khung nhìn trước tiên phải thoả mãn điều kiện sau đây: • Trong câu lệnh SELECT định nghĩa khung nhìn khơng sử dụng từ khố DISTINCT, TOP, GROUP BY UNION • Các thành phần xuất danh sách chọn câu lệnh SELECT phải cột bảng sở Trong danh sách chọn khơng chứa biểu thức tính tốn, hàm gộp Ngoài điều kiện trên, thao tác thay đổi đến liệu thơng qua khung nhìn cịn phải đảm bảo thoả mãn ràng buộc bảng sở, tức đảm bảo tính tồn vẹn liệu Ví dụ minh hoạ cho ta thấy việc thực thao tác bổ sung, cập nhật xố liệu thơng qua khung nhìn Ví dụ 3.14: Xét định nghĩa hai bảng DONVI NHANVIEN sau: 73 CREATE TABLE donvi ( madv INT PRIMARY KEY, endv NVARCHAR(30) NOT NULL, dienthoai NVARCHAR(10) NULL, ) CREATE TABLE nhanvien ( manv NVARCHAR(10) PRIMARY KEY, hoten NVARCHAR(30) NOT NULL, ngaysinh DATETIME diachi NVARCHAR(50) NULL, NULL, madv INT FOREIGN KEY ON DELETE CASCADE ON UPDATE CASCADE REFERENCES donvi(madv) ) Giả sử hai bảng có liệu sau: Bảng DONVI Bảng NHANVIEN Câu lệnh định nghĩa khung nhìn NV1 cung cấp thơng tin mã nhân viên, họ tên mã đơn vị nhân viên làm việc: 74 CREATE VIEW nv1 AS SELECT manv,hoten,madv FROM nhanvien Nếu ta thực câu lệnh INSERT INTO nv1 VALUES('NV04','Le Thi D',1) Một ghi bổ sung vào bảng NHANVIEN liệu bảng là: Bản ghi Thông qua khung nhìn này, ta thực thao tác cập nhật xoá liệu Chẳng hạn, ta thực câu lệnh: DELETE FROM nv1 WHERE manv='NV04' Thì ghi tương ứng với nhân viên có mã NV04 bị xoá khỏi bảng NHANVIEN Nếu danh sách chọn câu lệnh SELECT có xuất biểu thức tính tốn đơn giản, thao tác bổ sung liệu thơng qua khung nhìn khơng thể thực Tuy nhiên, trường hợp thao tác cập nhật xố liệu vấn có khả thực (hiển nhiên cập nhật liệu cột có từ biểu thức tính tốn) Ví dụ 3.15: Xét khung nhìn NV2 định nghĩa sau: CREATE VIEW nv2 AS SELECT manv,hoten,YEAR(ngaysinh) AS namsinh,madv FROM nhanvien Đối với khung nhìn NV2, ta khơng thể thực thao tác bổ sung liệu cập nhật xố liệu bảng thơng qua khung nhìn Câu lệnh thực khung nhìn NV2 INSERT INTO nv2(manv,hoten,madv) VALUES('NV05','Le Van E',1) Nhưng câu lệnh: UPDATE nv2 SET hoten='Le Thi X' WHERE manv='NV04' 75 câu lệnh DELETE FROM nv2 WHERE manv='NV04' lại thực có tác động liệu bảng NHANVIEN Trong trường hợp khung nhìn tạo từ phép nối (trong ngồi) nhiều bảng, ta thực thao tác bổ sung cập nhật liệu thao tác có tác động đến bảng sở (câu lệnh DELETE thực trường hợp này) Ví dụ 3.16: Với khung nhìn định nghĩa sau: CREATE VIEW nv3 AS SELECT manv,hoten,ngaysinh, diachi,nhanvien.madv AS noilamviec, donvi.madv, tendv, dienthoai FROM nhanvien FULL OUTER JOIN donvi ON nhanvien.madv=donvi.madv Câu lệnh: INSERT INTO nv3(manv,hoten,noilamviec) VALUES('NV05','Le Van E',1) bổ sung thêm vào bảng NHANVIEN ghi Hoặc câu lệnh: INSERT INTO nv3(madv,tendv) VALUES(3,'P Ke toan') bổ sung thêm vào bảng DONVI ghi hai câu lệnh có tác động đến bảng sở Câu lệnh khơng thể thực có tác động lúc đến hai bảng sở INSERT INTO nv3(manv,hoten,noilamviec,madv,tendv) VALUES('NV05','Le Van E',1,3,'P Ke toan') 3.4.3 Sửa đổi khung nhìn Câu lệnh ALTER VIEW sử dụng để định nghĩa lại khung nhìn có khơng làm thay đổi quyền cấp phát cho người sử dụng trước Câu lệnh sử dụng tương tự câu lệnh CREATE VIEW có cú pháp sau: ALTER VIEW tên_khung_nhìn [(danh_sách_tên_cột)] AS Câu_lệnh_SELECT Ví dụ 3.17: Ta định nghĩa khung nhìn sau: 76 CREATE VIEW viewlop AS SELECT malop,tenlop,tenkhoa FROM lop INNER JOIN khoa ON lop.makhoa=khoa.makhoa WHERE tenkhoa='Khoa Vật lý’ định nghĩa lại khung nhìn câu lệnh: ALTER VIEW view_lop AS SELECT malop,tenlop,hedaotao FROM lop INNER JOIN khoa ON lop.makhoa=khoa.makhoa WHERE tenkhoa='Khoa Cơng nghệ thơng tin' 3.4.4 Xố khung nhìn Khi khung nhìn khơng cịn sử dụng, ta xố khỏi sở liệu thơng qua câu lệnh: DROP VIEW tên_khung_nhìn Nếu khung nhìn bị xố, tồn quyền cấp phát cho người sử dụng khung nhìn đồng thời bị xố Do đó, ta tạo lại khung nhìn phải tiến hành cấp phát lại quyền cho người sử dụng Ví dụ 3.18: Câu lệnh xố khung nhìn VIEW_LOP khỏi sở liệu DROP VIEW view_lop 77 Bài tập chương Sử dụng câu lệnh CREATE TABLE để tạo bảng sở liệu sơ đồ (bạn tự lựa chọn kiểu liệu cho phù hợp) Bổ sung ràng buộc thiết lập giá trị mặc định cho cột SOLUONG cho cột MUCGIAMGIA bảng CHITIETDATHANG Bổ sung cho bảng DONDATHANG ràng buộc kiểm tra ngày giao hàng ngày chuyển hàng phải sau với ngày đặt hàng Bổ sung ràng buộc cho bảng NHANVIEN để đảm bảo nhân viên làm việc cơng ty đủ 18 tuổi không 60 tuổi Với bảng tạo được, câu lệnh: DROP TABLE nhacungcap thực khơng? Tại sao? Cho khung nhìn định nghĩa sau: CREATE VIEW view_donhang AS 78 SELECT dondathang.sohoadon, makhachhang, manhanvien, ngaydathang, ngaygiaohang, ngaychuyenhang, noigiaohang,mahang, giaban,soluong,mucgiamgia FROM dondathang INNER JOIN chitietdathang ON dondathang.sohoadon = chitietdathang.sohoadon a Có thể thơng qua khung nhìn để bổ sung liệu cho bảng DONDATHANG không? b Có thể thơng qua khung nhìn để bổ sung liệu cho bảng CHITIETDATHANG không? Với khung nhìn định nghĩa sau: CREATE VIEW view_donhang AS SELECT dondathang.sohoadon, makhachhang, manhanvien, ngaydathang, ngaygiaohang, ngaychuyenhang, noigiaohang, mahang, giaban * soluong as thanhtien, mucgiamgia FROM dondathang INNER JOIN chitietdathang ON dondathang.sohoadon = chitietdathang.sohoadon a Có thể thơng qua khung nhìn để xố hay cập nhật liệu bảng DONDATHANG khơng? b Có thể thơng qua khung nhìn để cập nhật liệu bảng CHITIETDATHANG không? 79 ... Trong hình 1. 1, cột MAKHOA bảng LOP gọi khố ngồi bảng này, khố ngồi tham chiếu đến khố bảng KHOA cột MAKHOA 1. 4 Sơ lược SQL 1. 4 .1 Câu lệnh SQL SQL chuẩn bao gồm khoảng 40 câu lệnh Bảng 1. 1 liệt kê... Chính quy C2 510 1 Tốn K25 Chính quy C2 610 1 Tốn K26 Chính quy C2 610 2 Tin K26 Chính quy C2 510 2 Tin K25 Chính quy C2 410 2 Tin K24 Chính quy C2 410 3 Lý K24 Chính quy C2 510 3 Lý K25 Chính quy C253 01 Sinh K25... bảng TABLE1 TABLE2 sau: TABLE1 A NULL TABLE B C B1 B2 B3 NULL D D1 D2 Câu lệnh: SELECT * FROM table1, table2 WHERE A *= C Có kết là: A NULL B B1 B2 B3 C NULL NULL D NULL NULL D2 2 .1. 7.4 Sử dụng

Ngày đăng: 25/05/2021, 21:11

TỪ KHÓA LIÊN QUAN

w