Mô đun 17: Quản trị cơ sở dữ liệu với SQL Server là mô đun đào tạo nghề được biên soạn theo hình thức tích hợp lý thuyết và thực hành. Trong quá trình thực hiện, nhóm biên soạn đã tham khảo nhiều tài liệu Quản trị cơ sở dữ liệu với SQL Server trong và ngoài nước, kết hợp với kinh nghiệm trong thực tế. Thời lượng thiết kế 90 tiết. Trong đó 30 tiết lý thuyết, 60 tiết thực hành và kiểm tra. Nội dung giáo trình gồm một bài mở đầu và 9 bài: Bài 1: Tổng quan về SQL Server Bài 2: Bộ công cụ Management Studio Bài 3: Định nghĩa dữ liệu với TSQL Bài 4: Thao tác dữ liệu với TSQL Bài 5: Bảo mật cơ sở dữ liệu SQL Server. Bài 6: Thủ tục lưu trữ. Bài 7: Hàm do người dùng định nghĩa. Bài 8: Trigger. Bài 9: Quản lí giao dịch và khóa Mặc dầu có rất nhiều cố gắng, nhưng không tránh khỏi những khiếm khuyết, rất mong nhận được sự đóng góp ý kiến của độc giả để giáo trình được hoàn thiện hơn.
ỦY BAN NHÂN DÂN TỈNH QUẢNG BÌNH TRƯỜNG CAO ĐẲNG KỸ THUẬT CƠNG-NƠNG NGHIỆP GIÁO TRÌNH MƠ ĐUN: QUẢN TRỊ CƠ SỞ DỮ LIỆU VỚI SQL SERVER NGÀNH/NGHỀ: CÔNG NGHỆ THƠNG TIN TRÌNH ĐỘ: CAO ĐẲNG (Ban hành kèm theo Quyết định số: 92/QĐ-CĐCNN, ngày tháng năm 2019 Hiệu trưởng trường CĐ Kỹ thuật Công-Nông nghiệp Quảng Bình) Quảng Bình, năm 2019 -1- TUYÊN BỐ BẢN QUYỀN Tài liệu thuộc loại sách giáo trình nên nguồn thơng tin phép dùng ngun trích dùng cho mục đích đào tạo tham khảo Mọi mục đích khác mang tính lệch lạc sử dụng với mục đích kinh doanh thiếu lành mạnh bị nghiêm cấm MÃ TÀI LIỆU: MĐ 18 -2- CHƯƠNG TRÌNH MƠ ĐUN Tên mơ đun: Quản trị sở liệu với SQL Server Mã mô đun: MĐ 18 Thời gian thực mô đun: 90 (Lý thuyết: 30 giờ, Thực hành, thí nghiệm, thảo luận, tập: 57 giờ, Kiểm tra: giờ) Vị trí, tính chất mơ đun Vị trí: Là mơ đun chuyên ngành chương trình đào tạo cao đẳng CNTT Tính chất: Mơ đun bố trí giảng dạy sau học xong mô đun/môn học sở Mục tiêu mơ đun Kiến thức + Trình bày vai trò hệ quản trị sở liệu việc khai thác quản trị sở liệu; + Trình bày khái niệm mơ hình liệu quan hệ: bảng/quan hệ, ghi/dòng liệu, thuộc tính (attributes), miền giá trị (domain), khóa (primary key, foreign key); + Trình bày mơ hình truy nhập liệu SQL Server; + Trình bày kiến trúc bên SQL Server: thành phần dịch vụ; + Trình bày ngơn ngữ lập trình tích hợp SQL Server; + Trình bày bước xây dựng hàm, thủ tục, trigger; + Trình bày đượcvai trị khố giao dịch; - Kỹ + Cài đặt cấu hình SQL Server; + Thực thành thạo thao tác quản trị tài khoản người dùng tài khoản nhóm hệ thống SQL Server; + Bảo vệ tài nguyên liệu hệ thống SQL Server; + Xây dựng xác điều kiện truy vấn; + Thiết kế số truy vấn sở liệu công cụ; + Xây dựng số hàm, thủ tục trigger giúp cho việc truy cập, khai thác sở liệu hiệu hơn; + Quản lý giao dịch hệ thống; + Sử dụng số dịch vụ SQL server; - Năng lực tự chủ trách nhiệm + Chủ động, sáng tạo việc tìm hiểu tài liệu phục vụ cho mô đun -3- + III Nội dung mô đun Nội dung tổng quát phân bổ thời gian Thời gian Số TT Tên mơ đun Tổng số Lý thuyết Thực hành, thí nghiệm, thảo luận, tập Bài 1: Tổng quan SQL Server Bài 2: Bộ công cụ Management Studio Bài 3: Định nghĩa liệu với T-SQL 11 Kiểm tra Bài 4: Thao tác liệu với T-SQL 20 15 Bài 5: Bảo mật sở liệu SQL Server Bài 6: Thủ tục lưu trữ Kiểm tra Bài 7: Hàm người dùng định nghĩa 10 Kiểm tra 11 Bài 8: Trigger 12 Bài 9: Quản lí giao dịch khóa 90 30 57 Cộng -4- Kiểm tra 1 LỜI GIỚI THIỆU Giáo trình “Quản trị sở liệu với SQL Server” biên soạn theo chương trình đào tạo Cao đẳng Công nghệ thông tin Trường Cao đẳng Kỹ thuật Cơng Nơng nghiệp Quảng Bình ban hành - Chương trình Cao đẳng Cơng nghệ thơng tin xây dựng sở phân tích nghề, phần kỹ thuật nghề kết cấu theo môđun Để tạo điều kiện thuận lợi cho sở dạy nghề trình thực hiện, việc biên soạn giáo trình kỹ thuật nghề theo theo mơđun đào tạo nghề cấp thiết - Mô đun 17: Quản trị sở liệu với SQL Server mô đun đào tạo nghề biên soạn theo hình thức tích hợp lý thuyết thực hành Trong q trình thực hiện, nhóm biên soạn tham khảo nhiều tài liệu Quản trị sở liệu với SQL Server nước, kết hợp với kinh nghiệm thực tế - Thời lượng thiết kế 90 tiết Trong 30 tiết lý thuyết, 60 tiết thực hành kiểm tra Nội dung giáo trình gồm mở đầu bài: Bài 1: Tổng quan SQL Server Bài 2: Bộ công cụ Management Studio Bài 3: Định nghĩa liệu với T-SQL Bài 4: Thao tác liệu với T-SQL Bài 5: Bảo mật sở liệu SQL Server Bài 6: Thủ tục lưu trữ Bài 7: Hàm người dùng định nghĩa Bài 8: Trigger Bài 9: Quản lí giao dịch khóa Mặc dầu có nhiều cố gắng, khơng tránh khỏi khiếm khuyết, mong nhận đóng góp ý kiến độc giả để giáo trình hoàn thiện Xin chân thành cảm ơn! Quảng Bình, ngày tháng năm 2019 Biên soạn ThS Lương Thanh Phương ThS Nguyễn Thành Minh -5- MỤC LỤC BÀI 1: TỔNG QUAN VỀ SQL SERVER 1.1 Giới thiệu 1.2 Kiến trúc truy cập sở liệu 10 1.2.1 trúc chung - General Kiến 10 1.2.2 Kiến trúc nhớ - Memory 12 1.2.3 Kiến trúc file liệu - Data file 13 1.2.4 Kiến trúc file nhật ký - Log file 14 1.3 Giới thiệu số dịch vụ SQL server 15 1.4 Ngôn ngữ lập trình SQL Server 16 1.4.1 Lệnh IF 16 1.4.2 Lệnh IF ELSE 16 1.4.3 Hàm Case When 17 1.4.4 Vòng lặp While 19 BÀI 2: BỘ CÔNG CỤ MANAGEMENT STUDIO 20 2.1 Cài đặt Microsoft SQL Server 20 2.1.1 Cài đặt.Net FrameWork 3.5 20 2.1.2 Cài đặt nâng cấp Windows 20 2.1.3 Cài đặt SQL Server 20 2.1.4 Khởi động SQL Server 28 2.2 Một số thao tác với SQL Server 29 2.2.1 Đăng nhập SQL Server 29 2.2.2 Tạo thực thi câu truy vấn với trình soạn thảo liệu mẫu, kịch 31 2.3 Quản lý sở liệu 33 2.3.1 Tạo Database 33 2.3.2 Sao lưu Database (Backup) 36 2.3.3 Xoá Database (Delete) 38 2.3.4 Phục hồi Database (Restore) 38 2.3.5 Gỡ bỏ Database (Detach) 40 2.3.6 Đính kèm Database (Attach) 40 BÀI TẬP BÀI 42 BÀI 3: ĐỊNH NGHĨA DỮ LIỆU VỚI T-SQL 43 3.1 Ngôn ngữ định nghĩa liệu 43 3.2 Tạo sửa đổi cấu trúc sở liệu 44 3.2.1 Tạo tập tin sở liệu 44 3.2.2 Tạo bảng 48 3.3 Khung nhìn (View) 65 3.3.1 Tạo khung nhìn 67 3.3.2 Cập nhật, bổ sung xố liệu thơng qua khung nhìn 68 3.3.3 Sửa đổi khung nhìn 71 -6- BÀI TẬP CÓ HƯỚNG DẪN BÀI 72 BÀI TẬP BÀI 78 BÀI 4: THAO TÁC DỮ LIỆU VỚI T-SQL 81 4.1.Truy xuất liệu với câu lệnh SELECT 81 4.1.1.Mệnh đề FROM 82 4.1.2 Danh sách chọn câu lệnh SELECT 82 4.1.3.Chỉ định điều kiện truy vấn liệu 86 4.1.4.Tạo bảng liệu từ kết câu lệnh SELECT 90 4.1.5 Sắp xếp kết truy vấn 90 4.1.6 Phép hợp 91 4.1.7 Phép nối 93 4.1.8.Thống kê liệu với GROUP BY 99 4.1.9 Truy vấn (Subquery) 101 4.2 Bổ sung, cập nhật xoá liệu 104 4.2.1.Bổ sung liệu 104 4.2.2.Cập nhật liệu 106 4.2.3.Xoá liệu 108 BÀI TẬP CÓ HƯỚNG DẪN BÀI 109 BÀI TẬP BÀI 121 BÀI 5: BẢO MẬT CƠ SỞ DỮ LIỆU SQL SERVER 124 5.1 Các khái niệm 124 5.1.1 Các chế độ bảo mật 124 5.1.2 Quản lý người dùng 125 5.2 Cấp phát quyền 127 5.2.1.Cấp phát quyền cho người dùng đối tượng sở liệu 127 5.2.2.Cấp phát quyền thực thi câu lệnh 129 5.3.Thu hồi quyền 130 5.3.1.Thu hồi quyền đối tượng sở liệu: 130 5.3.2.Thu hồi quyền thực thi câu lệnh: 132 BÀI TẬP CÓ HƯỚNG DẪN BÀI 132 BÀI TẬP BÀI 135 BÀI 6: THỦ TỤC LƯU TRỮ 139 6.1 Các khái niệm 139 6.2 Tạo thủ tục lưu trữ 141 6.3 Lời gọi thủ tục lưu trữ 143 6.4 Định nghĩa sử dụng biến 143 6.5 Giá trị trả thủ tục lưu trữ 144 6.6 Sửa xoá thủ tục lưu trữ 146 6.6.1 Sửa thủ tục 146 6.6.2 Xoá thủ tục 146 -7- BÀI TẬP CÓ HƯỚNG DẪN BÀI 147 BÀI TẬP BÀI 149 BÀI 7: HÀM DO NGƯỜI DÙNG ĐỊNH NGHĨA 150 7.1 Hàm vô hướng 151 7.2 Hàm nội tuyến 152 7.3 Hàm bao gồm nhiều câu lệnh bên 152 7.4 Sửa xoá hàm 153 7.4.1.Sửa đổi hàm 153 7.4.2 Xoá hàm 154 7.5 Thực thi hàm người dùng định nghĩa 154 BÀI TẬP CÓ HƯỚNG DẪN BÀI 155 BÀI TẬP BÀI 158 BÀI 8: TRIGGER 159 8.1 Giới thiệu trigger 159 8.2 Tạo, thay thế, loại bỏ triggers 160 8.3 Kích hoạt trigger thay đổi liệu cột (if update) 162 8.4 Sử dụng trigger giao tác (transaction) 163 8.5 Vơ hiệu hóa hay kích hoạt trigger 169 BÀI TẬP BÀI 169 BÀI 9: QUẢN LÝ GIAO DỊCH VÀ KHÓA 171 9.1 Giao dịch(hay gọi Giao tác, tiếng Anh: transaction) 171 9.2 Khóa 176 BÀI TẬP BÀI 180 MỘT SỐ HÀM THƯỜNG SỬ DỤNG 183 1.Các hàm liệu kiểu chuỗi 183 2.Các hàm liệu kiểu ngày 185 3.Hàm chuyển đổi kiểu 186 CƠ SỞ DỮ LIỆU MẪU SỬ DỤNG TRONG GIÁO TRÌNH 187 TÀI LIỆU THAM KHẢO 193 -8- BÀI 1: TỔNG QUAN VỀ SQL SERVER Mục tiêu bài: - Khái quát hóa lịch sử phát triển hệ quản trị sở liệu SQL Server; - Trình bày vai trị SQL Server ứng dụng quản trị liệu; - Vận dụng kiến trúc bên hệ quản trị sở liệu SQL Server để nghiên cứu lập trình tốn thực tiễn chương sau; - Có thái độ làm việc cẩn thận, khoa học, xác 1.1 Giới thiệu SQL Server hệ quản trị sở liệu quan hệ (Relational Database Management System (RDBMS) ) sử dụng câu lệnh SQL (Transact-SQL) để trao đổi liệu máy Client máy cài SQL Server Một RDBMS bao gồm databases, database engine ứng dụng dùng để quản lý liệu phận khác RDBMS SQL Server tối ưu để chạy mơi trường sở liệu lớn (Very Large Database Environment) lên đến Tera-Byte phục vụ lúc cho hàng ngàn user SQL Server kết hợp “ăn ý” với server khác Microsoft Internet Information Server (IIS), E-Commerce Server, Proxy Server… Một vài ấn SQL Server: Enterprise : chứa tất cá đặc điểm bật SQL Server, bao gồm nhân máy sở liệu dịch vụ kèm với công cụ cho tạo quản lý phân cụm SQL Server Nó quản lý CSDL lớn tới 524 terabytes đánh địa 12 terabytes nhớ hỗ trợ tới 640 vi xử lý(các core cpu) Standard : Rất thích hợp cho cơng ty vừa nhỏ giá thành rẻ nhiều so với Enterprise Edition, lại bị giới hạn số chức cao cấp (advanced features) khác, edition chạy tốt hệ thống lên đến CPU GB RAM Developer : Có đầy đủ tính Enterprise Edition chế tạo đặc biệt giới hạn số lượng người kết nối vào Server lúc… Ðây phiên sử dụng cho phát triển kiểm tra ứng dụng Phiên phù hợp cho cá nhân, tổ chức xây dựng kiểm tra ứng dụng Workgroup: ấn SQL Server Workgroup bao gồm chức lõi sở liệu khơng có dịch vụ kèm Chú ý phiên không tồn SQL Server 2012 Express : SQL Server Express dễ sử dụng quản trị sở liệu đơn giản Được tích hợp với Microsoft Visual Studio, nên dễ dàng để phát triển ứng dụng liệu, an tồn lưu trữ, nhanh chóng triển khai SQL Server Express phiên miễn phí, không giới hạn số sở liệu người sử dụng, dùng cho vi xử lý với GB nhớ 10 GB file sở liệu SQL Server Express lựa chọn tốt cho người dùng cần phiên SQL Server 2005 nhỏ gọn, dùng máy chủ có cấu hình thấp, nhà phát triển ứng dụng khơng chun hay người u thích xây dựng ứng dụng nhỏ Lịch sử đời SQL Server phiên -9- Phiên Microsoft SQL Server đời vào năm 1989 cho hệ điều hành chạy 16 bít với SQL Server phiên 1.0 tiếp tục phát triển ngày SQL Server Microsoft thị trường chấp nhận rộng rãi kể từ version 6.5 Sau Microsoft cải tiến viết lại engine cho SQL Server 7.0 Cho nên nói từ version 6.5 lên version 7.0 bước nhảy vọt Có số đặc tính SQL Server 7.0 khơng tương thích với version 6.5 Trong từ Version 7.0 lên version 8.0 (SQL Server 2000) cải tiến chủ yếu mở rộng tính web làm cho SQL Server 2000 đáng tin cậy Một điểm đặc biệt đáng lưu ý phiên 2000 Multiple-Instance Tức bạn cài đặt phiên 2000 chung với phiên trước mà không cần phải gỡ chúng Nghĩa bạn chạy song song version 6.5 7.0 với phiên 2000 máy (điều xảy với phiên trước đây) Khi phiên cũ máy bạn Default Instance phiên 2000 vừa cài Named Instance Từ tháng 10 năm 2016, phiên sau Microsoft hỗ trợ: SQL Server 2008 R2, SQL Server 2012, SQL Server 2014, SQL Server 2016 SQL Server 2017, SQL Server 2019 1.2 Kiến trúc truy cập sở liệu Kiến trúc truy cập sở liệu SQL Server phân thành phần sau đây: ➢ ➢ ➢ ➢ Kiến trúc chung - General Kiến trúc nhớ - Memory Kiến trúc file liệu - Data file Kiến trúc file nhật ký - Log file 1.2.1 trúc chung - General Kiến - Client: Nơi khởi tạo yêu cầu - Query: Truy vấn SQL ngôn ngữ bậc cao - Logical Units: Keyword, biểu thức, toán tử, - N/W Packets: Code liên quan đến mạng - Protocols: Trong SQL Server ta có giao thức: + Shared memory: Dành cho kết nối cục mục đích khắc phục cố + Named pipes: Dành cho kết nối mạng LAN + TCP/IP: Dành cho kết nối với mạng WAN + VIA-Virtual Interface Adapter: Yêu cầu phần cứng đặc biệt thiết lập nhà cung cấp không hỗ trợ từ SQL 2012 -10- c Giải vấn đề Deadlock (Resolving Deadlock) Để giải tình trạng deadlock, sử dụng lệnh • SET DEADLOCK_PRIORITY Điều khiển phương thức phiên làm việc tác động trở lại tình trạng deadlock Các tình trạng Deadlock phát sinh hai q trình xử lý khố liệu, q trình xử lý khơng thể nhảgiải phóng khố q trình khác nhảgiải phóng khố Cú pháp: SET DEADLOCK_PRIORITY { LOW | NORMAL | @deadlock_var } Trong • LOW: Chỉ phiên làm việc ưu tiên trình deadlock Giao dịchtác bị deadlock tự động quay lại (rolled back) Microsoft SQL Server, lỗi deadlock 1205 trả cho ứng dụng máy trạm • NORMAL: Chỉ phiên làm việc trả phương thức deadlock mặc định @deadlock_var biến ký tự xác định phương thức điều khiển deadlock (deadlock-handling) Giá trị @deadlock_var LOW xác định, NORMAL xác định Lệnh SET DEADLOCK_PRIORITY thực thời điểm thực thi hành thời điểm chạy không thực thời điểm phân tích SET DEADLOCK_PRIORITY quyền hạn mặc định cho tất người dùng • SET LOCK_TIMEOUT Chỉ số phần nghìn giây mà câu lệnh đợi khố giải phóng Cú pháp: SET LOCK_TIMEOUT timeout_period Trong timeout_period: Chỉ số phần nghìn giây trơi qua trước Microsoft SQL Server trả lỗi khoá Một giá trị –1 khơng có khoảng thời gian nghỉ (timeout) (đó là, đợi mãi) Khi khố đợi q giá trị time-out, lỗi trả Giá trị có nghĩa khơng đợi tất thời điểm trả thông báo bắt gặp khoá -179- Khi bắt đầu kết nối, thiết lập có giá trị –1 Sau bị thay đổi, thiết lập tác động tới phần dưcịn lại phépq trình kết nối Sự thiết lập lệnh SET LOCK_TIMEOUT thiết lập thời điểm thực thi hành thời gian chạy khơng thiết lập thời điểm phân tích Cơ chế khoá READPAST cung cấp chế khác để thiết lập tuỳ chọn SET LOCK_TIMEOUT cho phép mặc định với tất người sử dụng Ví dụ thiết lập khoảng thời gian trễ (time-out) khoảóa 1,800 millisecondsmili giây SET LOCK_TIMEOUT 1800 GO BÀI TẬP BÀI Sự thực thi hành chương trình để sửa chữathay đổi liệu CSDL gọi a Transaction b UPDATE c INSERT d None of the above Sự sửa chữathay đổi CSDL phải tuân theo quy luật “tất khơng có gì” Mỗi giao tácdịch gọinói a Consistent b Durable c Atomic d Isolated Khi giao tácdịch xác nhận quay luilại( rolled back), liệu CSDL phải bên trái mộtđể lại trạng thái trạng thái a b c d Isolated Atomic Consistent Durable Một giao tácdịch tường minh định nghĩa tường minh dấu hiệu bắt đầu kết thúc giao tácdịch) -180- a True b False Giao tác nhật kýNhật ký giao dịch CSDL giúp khôi phục liệu chủ máy chủ CSDL bị phá hỏng a True b False Câu lệnh sử dụng để bỏ tất thay đổi kể từ giao tácdịch gần nhất? a COMMIT TRANSACTION b ROLLBACK TRANSACTION c BEGIN TRANSACTION d SAVE TRANSACTION Câu lệnh sử dụng SQL Server, thực bắt đầu sẵn sàng để lưu trữ giao tácdịch gần a COMMIT TRANSACTION b ROLLBACK TRANSACTION c BEGIN TRANSACTION d SAVE TRANSACTION Một khoá đưa sửa chữathay đổi hoàn thành liệu thực sựu sẵn sàng ghi vào bảng Kiểu khoá gọi a Optimistic Lock b Pessimistic Lock c Physical Lock d Shared Lock Khố mà đảm bảo nhiều cập nhật khơng thể thực nguồn tài nguyên cách đồng thời a Optimistic Lock b Pessimistic Lock c Exclusive Lock d Shared Lock 10 Concurrent transactions giao tácdịch xảy thời điểm Trong trạng tháitình nơikhi giao tácdịch khơng thể nhìn thấybiết đến giao tácdịch khác, trạng tháitình gọi a Isolation b Concurrency -181- c Atomicity d Explicit Transaction -182- MỘT SỐ HÀM THƯỜNG SỬ DỤNG - Mặc dù SQL chuẩn không cung cấp cụ thể hệ quản trị sở liệu cung cấp cho người sử dụng hàm cài sẵn (hay gọi hàm hệ thống) Trong phần này, cung cấp số hàm thường sử dụng SQL Server để tiện cho việc tra cứu sử dụng thực hành Các hàm liệu kiểu chuỗi Hàm ASCII ASCII(string) - Hàm trả mã ASCII ký tự bên trái chuỗi đối số Hàm CHAR CHAR(ascii_code) - Hàm trả ký tự có mã ASCII tương ứng với đối số Hàm CHARINDEX CHARINDEX(string1,string2[,start]) Hàm trả vị trí tính từ vị trí start chuỗi string1 xuất chuỗi string2 Hàm LEFT LEFT(string,number) Hàm trích number ký tự từ chuỗi string tính từ phía bên trái Hàm LEN LEN(string) - Hàm trả độ dài chuỗi string Hàm LOWER LOWER(string) - Hàm có chức chuyển chuỗi string thành chữ thường, kết trả cho hàm Hàm LTRIM LTRIM(string) - Cắt bỏ khoảng trắng thừa bên trái chuỗi string -183- Hàm NCHAR NCHAR(code_number) - Hàm trả ký tự UNICODE có mã định Hàm REPLACE REPLACE(string1,string2,string3) - Hàm trả chuỗi có cách thay chuỗi string2 chuỗi string1 chuỗi string3 Hàm REVERSE REVERSE(string) - Hàm trả chuỗi đảo ngược chuỗi string Hàm RIGHT RIGHT(string, number) Hàm trích number ký tự từ chuỗi string tính từ phía bên phải Hàm RTRIM RTRIM(string) - Cắt bỏ khoảng trắng thừa bên phải chuỗi string Hàm SPACE SPACE(number) - Hàm trả chuỗi với number khoảng trắng Hàm STR STR(number [,length [,decimal]]) - Chuyển giá trị kiểu số number thành chuỗi Hàm SUBSTRING SUBSTRING(string, m, n) - Trích từ n ký tự từ chuỗi string ký tự thứ m Hàm UNICODE UNICODE(UnicodeString) - Hàm trả mã UNICODE ký tự bên trái chuỗi UnicodeString Hàm UPPER UPPER(string) -184- Chuyển chuỗi string thành chữ hoa Các hàm liệu kiểu ngày Hàm DATEADD DATEADD(datepart, number, date) - Hàm trả giá trị kiểu DateTime cách cộng thêm khoảng giá trị number vào ngày date định Trong đó, datepart tham số định thành phần cộng giá trị date bao gồm: Datepart Viết tắt year yy, yyyy quarter qq, q month mm, m dayofyear dy, y day dd, d week wk, ww hour hh minute mi, n second ss, s millisecond ms Hàm DATEDIFF DATEDIFF(datepart, startdate, enddate) - Hàm trả khoảng thời gian hai giá trị kiểu định tuỳ thuộc vào tham số datepart Hàm DATEPART DATEPART(datepart, date) - Hàm trả số nguyên trích từ thành phần (được định tham số partdate) giá trị kiểu ngày định Hàm GETDATE GETDATE() - Hàm trả ngày Hàm DAY, MONTH, YEAR DAY(date), MONTH(date), YEAR(date) - Hàm trả giá trị ngày (tháng năm) giá trị kiểu ngày định -185- Hàm chuyển đổi kiểu Hàm CAST CAST (biểu_thức AS kiểu_dữ_liệu) - Chuyển đổi giá trị biểu thức sang kiểu định Hàm CONVERT CONVERT(kiểu_dữ_liệu, biểu_thức [,kiểu_chuyển_đổi]) - Hàm có chức chuyển đổi giá trị biểu thức sang kiểu liệu định Tham số kiểu_chuyển_đổi giá trị số thường sử dụng chuyển đổi giá trị kiểu ngày sang kiểu chuỗi nhằm qui định khuôn dạng liệu hiển thị qui định sau: Năm chữ số Năm chữ số Khuôn dạng liệu 100 mon dd yyyy hh:mi AM (PM) 101 mm/dd/yy 102 yy.mm.dd 103 dd/mm/yy 104 dd.mm.yy 105 dd-mm-yy 106 dd mon yy 107 Mon dd, yy 108 hh:mm:ss 109 mon dd yyyy hh:mi:ss:mmmAM (PM) 10 110 mm-dd-yy 11 111 yy/mm/dd 12 112 yymmdd 13 113 dd mon yyyy hh:mm:ss:mmm(24h) 14 114 hh:mi:ss:mmm(24h) 20 120 yyyy-mm-dd hh:mi:ss(24h) 21 121 yyyy-mm-dd hh:mi:ss.mmm(24h) 126 yyyy-mm-dd Thh:mm:ss:mmm(no spaces) 130 dd mon yyyy hh:mi:ss:mmmAM -186- 131 dd/mm/yy hh:mi:ss:mmmAM CƠ SỞ DỮ LIỆU MẪU SỬ DỤNG TRONG GIÁO TRÌNH Use Master Go If Exists(Select Name From Sysdatabases Where Name='Quanlydiemsv') Drop Database Quanlydiemsv Go Create Database Quanlydiemsv Go Use Quanlydiemsv Go Create Table Khoa (Makhoa Nvarchar(5) Constraint Pk_Khoa Primary Tenkhoa Nvarchar(50) Dienthoai Nvarchar(15) Not Null Key, Not Null, Null) Create Table Lop ( Malop Nvarchar(10) Not Null Constraint Pk_Lop Primary Key, Tenlop Nvarchar(30) Null , Khoahoc Smallint Null , Namnhaphoc Int Null , Siso Int Null , Makhoa Nvarchar(5) Null) Create Table Sinhvien (Masv Nvarchar(10) Not Null Constraint Pk_Sinhvien Primary Key, Hodem Nvarchar(25) Not Null, Ten Nvarchar(10) Not Null , Ngaysinh Smalldatetime Null , Gioitinh Bit Null , Noisinh Nvarchar(100) Null , -187- Malop Nvarchar(10) Null) Create Table Monhoc ( Mamonhoc Nvarchar(10) Not Null Constraint Pk_Monhoc Primary Key, Tenmonhoc Nvarchar(50) Not Null , Sodvht Smallint Not Null ) Create Table Diem (Mamonhoc Nvarchar(10) Not Null , Masv Nvarchar(10) Not Null , Diemlan1 Numeric(5, 2) Null , Diemlan2 Numeric(5, 2) Null, Diemtbckt Numeric(5, 2) Null, Constraint Pk_Diem Primary Key(Mamonhoc,Masv)) Alter Table Lop Add Constraint Fk_Lop_Khoa Foreign Key(Makhoa) References Khoa(Makhoa) On Delete Cascade On Update Cascade Alter Table Sinhvien Add Constraint Fk_Sinhvien_Lop Foreign Key (Malop) References Lop(Malop) On Delete Cascade On Update Cascade Alter Table Diem Add Constraint Fk_Diem_Monhoc Foreign Key (Mamonhoc) References Monhoc(Mamonhoc) On Delete Cascade On Update Cascade, -188- Constraint Fk_Diem_Sinhvien Foreign Key (Masv) References Sinhvien(Masv) On Delete Cascade On Update Cascade Alter Table Monhoc Add Constraint Chk_Monhoc_Sodht Check(Sodvht>0 And Sodvht=0 And Diemlan1=0 And Diemlan2