GIỚI THIỆU LỊCH SỬ PHÁT TRIỂN
Lịch sử phát triển của SQL Server
Microsoft SQL Server ra mắt phiên bản đầu tiên vào năm 1989, dành cho các hệ điều hành 16 bit với SQL Server phiên bản 1.0, và đã liên tục phát triển cho đến nay.
SQL Server của Microsoft đã được thị trường chấp nhận rộng rãi từ phiên bản 6.5, và sự ra mắt của phiên bản 7.0 đánh dấu một bước nhảy vọt lớn với một engine hoàn toàn mới Tuy nhiên, một số đặc tính của SQL Server 7.0 không tương thích với phiên bản 6.5 Tiếp theo, từ phiên bản 7.0 lên 8.0 (SQL Server 2000), các cải tiến chủ yếu tập trung vào việc mở rộng tính năng web và nâng cao độ tin cậy của SQL Server 2000.
Một điểm nổi bật của phiên bản 2000 là tính năng Multiple-Instance, cho phép người dùng cài đặt phiên bản 2000 song song với các phiên bản trước mà không cần gỡ bỏ Điều này có nghĩa là bạn có thể chạy đồng thời phiên bản 6.5 hoặc 7.0 cùng với phiên bản 2000 trên cùng một máy tính, điều mà các phiên bản trước không hỗ trợ Trong cấu hình này, phiên bản cũ sẽ được xem là Default Instance, trong khi phiên bản 2000 mới cài đặt sẽ là Named Instance.
Từ tháng 10 năm 2016, các phiên bản sau được Microsoft hỗ trợ:
Phiên bản hiện tại là Microsoft SQL Server 2016, xuất bản vào ngày 1/6/2016 SQL Server 2016 chỉ hỗ trợ cho các bộ vi xử lý 64 bít
Ngôn ngữ truy vấn có cấu trúc (SQL), xuất phát từ SEQUEL, được IBM phát triển cho hệ cơ sở dữ liệu thử nghiệm System/R vào năm 1974 Năm 1986, SQL chính thức được ANSI/ISO công nhận là chuẩn ngôn ngữ cho cơ sở dữ liệu quan hệ Đến nay, SQL đã trở thành ngôn ngữ phổ biến trong các hệ quản trị cơ sở dữ liệu thương mại và đóng vai trò quan trọng trong các hệ thống này.
SQL là ngôn ngữ truy vấn cấu trúc, đóng vai trò quan trọng trong quản trị cơ sở dữ liệu Nó cho phép người dùng thực hiện các thao tác như truy xuất, chèn, cập nhật và xóa dữ liệu trong các hệ quản trị cơ sở dữ liệu quan hệ Chương này sẽ cung cấp cái nhìn tổng quan về SQL cùng với các vấn đề liên quan, giúp hiểu rõ hơn về tầm quan trọng và ứng dụng của nó trong quản lý dữ liệu.
1.1.1 SQL là ngôn ngữ cơ sở dữ liệu quan hệ
SQL là ngôn ngữ truy vấn cấu trúc, đóng vai trò quan trọng trong việc điều khiển các chức năng của hệ quản trị cơ sở dữ liệu Nó cho phép người dùng thực hiện các thao tác như truy vấn, cập nhật và quản lý dữ liệu hiệu quả Hiểu rõ về SQL giúp người dùng khai thác tối đa các tính năng mà hệ quản trị cơ sở dữ liệu cung cấp.
SQL cho phép định nghĩa cơ sở dữ liệu, cấu trúc lưu trữ và tổ chức dữ liệu, đồng thời thiết lập mối quan hệ giữa các thành phần dữ liệu.
Với SQL, người dùng có khả năng thực hiện các thao tác truy xuất, bổ sung, cập nhật và loại bỏ dữ liệu một cách dễ dàng trong các cơ sở dữ liệu.
SQL có khả năng điều khiển truy cập, cho phép cấp phát và kiểm soát các thao tác của người sử dụng trên dữ liệu, từ đó đảm bảo an toàn cho cơ sở dữ liệu.
SQL đảm bảo tính toàn vẹn dữ liệu thông qua việc định nghĩa các ràng buộc, giúp duy trì tính hợp lệ và chính xác của dữ liệu trong quá trình cập nhật và xử lý lỗi hệ thống.
SQL là ngôn ngữ hoàn thiện và thiết yếu trong các hệ thống cơ sở dữ liệu, đóng vai trò quan trọng trong quản trị cơ sở dữ liệu Mặc dù không phải là ngôn ngữ lập trình như C, C++ hay Java, các câu lệnh SQL có thể được tích hợp vào các ngôn ngữ lập trình khác để phát triển ứng dụng tương tác với cơ sở dữ liệu.
Khác với các ngôn ngữ lập trình như C, C++, Java, SQL là ngôn ngữ khai báo, cho phép người dùng mô tả yêu cầu cần thực hiện trên cơ sở dữ liệu mà không cần chỉ ra cách thức thực hiện Điều này làm cho SQL trở thành ngôn ngữ dễ tiếp cận và sử dụng.
Mục tiêu: Nắm được vai trò chính của SQL
SQL không phải là một hệ quản trị cơ sở dữ liệu độc lập, mà là một phần không thể thiếu trong các hệ quản trị cơ sở dữ liệu Nó đóng vai trò là ngôn ngữ và công cụ giao tiếp giữa người sử dụng và hệ quản trị cơ sở dữ liệu.
Trong hầu hết các hệ quản trị cơ sở dữ liệu quan hệ, SQL có những vai trò như sau:
SQL là ngôn ngữ truy vấn tương tác, cho phép người dùng gửi yêu cầu đến cơ sở dữ liệu thông qua các câu lệnh SQL dễ dàng Người sử dụng có thể nhận kết quả trả về từ cơ sở dữ liệu một cách nhanh chóng và hiệu quả.
SQL là ngôn ngữ lập trình cơ sở dữ liệu cho phép lập trình viên nhúng các câu lệnh SQL vào các ngôn ngữ lập trình khác Điều này giúp xây dựng các ứng dụng có khả năng giao tiếp hiệu quả với cơ sở dữ liệu.
Các kiểu dữ liệu trong SQL SERVER
Chuẩn ANSI/ISO SQL cung cấp nhiều kiểu dữ liệu cho các cơ sở dữ liệu dựa trên SQL và ngôn ngữ SQL Các hệ quản trị cơ sở dữ liệu thương mại hiện nay áp dụng các kiểu dữ liệu này trong sản phẩm của họ Dưới đây là bảng 1.2 liệt kê một số kiểu dữ liệu thông dụng trong SQL.
Bảng 1.2: Một số kiểu dữ liệu thông dụng trong SQL
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
INTEGER Số nguyên có giá trị từ -2 31 đến 2 31 - 1
Kiểu tiền tệ BIT Kiểu bit (có giá trị 0 hoặc 1)
DATETIME Kiểu ngày giờ (chính xác đến phần trăm của giây)
SMALLDATETIME Kiểu ngày giờ (chính xác đến phút)
Dữ liệu nhị phân trong cơ sở dữ liệu được chia thành ba loại chính: BINARY, VARBINARY và IMAGE BINARY cho phép lưu trữ dữ liệu nhị phân với độ dài cố định, tối đa 8000 bytes VARBINARY cung cấp khả năng lưu trữ dữ liệu nhị phân với độ dài chính xác, cũng tối đa 8000 bytes Cuối cùng, loại IMAGE cho phép lưu trữ dữ liệu nhị phân với độ dài chính xác, không giới hạn.
2,147,483,647 bytes) TEXT Dữ liệu kiếu chuỗ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ự)
Binary: Là kiểu dữ liệu chứa dạng số ở hệ hexa, gồm 3 kiểu dữ liệu Binary, Varbinary, Image
Text: Là kiểu ký tự, chứa chữ cái, ký hiệu, số, gồm những kiểu dữ liệu sau:
Kiểu ký tự (Char) trong cơ sở dữ liệu (CSDL) có độ dài được xác định theo giá trị đã đặt trước, không phụ thuộc vào độ dài thực tế của dữ liệu Kiểu này không hỗ trợ ký tự dạng Unicode và có độ dài tối đa là 8000 ký tự.
Ncharr: Tương tự như Char nhưng sử dụng với ký tự Unicode, độ dài tối đa 4000
Nvarchar là kiểu dữ liệu tương tự như NChar, nhưng kích thước trong cơ sở dữ liệu (CSDL) được xác định theo kích thước thực tế của dữ liệu hiện có, không dựa trên kích thước đã được đặt trước Kích thước tối đa của Nvarchar là
Varchar: Tương tự như Nvarchar nhưng không hỗ trợ Unicode
Kiểu văn bản có thể chứa ký tự xuống dòng và lưu trữ dưới dạng văn bản với kích thước lớn, có thể lên đến vài GB Cơ chế quản lý kiểu dữ liệu này sử dụng con trỏ, và phương thức chèn, cập nhật cũng khác biệt Tuy nhiên, kiểu dữ liệu này không hỗ trợ Unicode.
Ntext: Tương tự như Text nhưng có hỗ trợ Unicode
Data/Time: Kiểu dữ liệu ngày, thời gian, ngày và thời gian, gồm 2 kiểu:
DateTime: Đầy đủ cả ngày và thời gian
SmallDataTime: Chỉ ngày hoặc thời gian
Numeric: Dữ liệu kiểu số, gồm các kiểu dữ liệu sau:
– Int, smallint, tinyint, bigint: Số nguyên
– Float, real, decimal, numeric: Số thực
Monetary: Tiền tệ: Money, Smallmoney
Sql_variant là một kiểu dữ liệu đặc biệt cho phép lưu trữ nhiều kiểu dữ liệu khác nhau trong cùng một cột của bảng Cột dữ liệu kiểu này có thể chứa các kiểu dữ liệu như int, binary, và char, nhưng không hỗ trợ các kiểu dữ liệu như text, ntext, image, timestamp, hay sql_variant.
Timestamp là kiểu dữ liệu 8 byte, lưu trữ dưới dạng số nhị phân do hệ thống tự động sinh ra, với mỗi giá trị timestamp trong cơ sở dữ liệu là duy nhất.
XML: Là kiểu dùng để lưu trữ dữ liệu dưới dạng xml
Ví dụ : Câu lệnh dưới đây định nghĩa bảng với kiểu dữ liệu được qui định cho các cột trong bảng
Cơ sở dữ liệu phản ánh hệ thống thực tế, vì vậy các giá trị dữ liệu trong đó có thể không xác định Những giá trị không xác định này có thể xuất hiện do nhiều nguyên nhân khác nhau.
• 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, )
Giá trị NULL trong cơ sở dữ liệu quan hệ đại diện cho những giá trị không xác định và không nên nhầm lẫn với chuỗi rỗng hay giá trị không Đây là một giá trị đặc biệt, đóng vai trò quan trọng trong các cơ sở dữ liệu 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ị NULL.
CÁC THÀNH PHẦN CƠ BẢN CỦA SQL SERVER
Khái niệm cơ bản về mô hình quan hệ
Mục tiêu: Hiểu được thế nào là mô hình quan hệ
Trong các cơ sở dữ liệu hiện nay, RDBMS không chỉ lưu trữ dữ liệu mà còn quản lý hệ thống cơ sở dữ liệu bằng cách kiểm soát dữ liệu nhập vào và kiểu dữ liệu có thể truy xuất Để đảm bảo an toàn cho tất cả dữ liệu, việc sử dụng hệ thống lưu trữ là cần thiết.
RDBMS cho phép lưu trữ dữ liệu theo các nguyên tắc ràng buộc do người dùng hoặc hệ thống định nghĩa Trong chương này, chúng ta sẽ khám phá các thành phần của SQL Server, các kiểu dữ liệu, và những loại dữ liệu quan hệ.
1.1 Mô hình dữ liệu quan hệ
Mô hình dữ liệu quan hệ, được Codd đề xuất vào năm 1970, đã trở thành tiêu chuẩn phổ biến trong các hệ quản trị cơ sở dữ liệu thương mại Cơ sở dữ liệu quan hệ tổ chức dữ liệu dưới dạng các bảng có mối quan hệ với nhau Mỗi bảng bao gồm các dòng (bản ghi) và cột (trường), trong đó mỗi dòng đại diện cho một bản ghi và mỗi cột biểu thị một thuộc tính.
Việc sử dụng cơ sở dữ liệu trong quản lý thông tin dữ liệu của người dùng mang lại nhiều lợi ích quan trọng Đầu tiên, cơ sở dữ liệu giúp tổ chức và lưu trữ dữ liệu một cách hiệu quả, cho phép truy cập và xử lý thông tin nhanh chóng Trong khi đó, việc lưu trữ dữ liệu dưới dạng tệp có thể đơn giản nhưng thường gặp khó khăn trong việc quản lý và bảo mật Các cách tiếp cận khác nhau trong quản lý dữ liệu, bao gồm tệp và cơ sở dữ liệu, có những đặc điểm riêng, với điểm mạnh như khả năng mở rộng và tính linh hoạt của cơ sở dữ liệu, nhưng cũng có những hạn chế như chi phí và độ phức tạp trong việc triển khai Do đó, việc lựa chọn phương pháp phù hợp sẽ phụ thuộc vào nhu cầu cụ thể của tổ chức.
- Vai trò của hệ quản trị cơ sở dữ liệu trong việc khai thác và quản trị cơ sở dữ liệu
Mô hình dữ liệu quan hệ bao gồm các khái niệm cơ bản như bảng (quan hệ), bản ghi (dòng dữ liệu), thuộc tính (attributes), miền giá trị (domain), và khóa (bao gồm khóa chính và khóa ngoại) Bảng là cấu trúc chính để tổ chức dữ liệu, trong khi bản ghi đại diện cho các bản ghi dữ liệu cụ thể Các thuộc tính xác định các đặc điểm của bản ghi, và miền giá trị quy định các giá trị hợp lệ cho các thuộc tính Khóa chính đảm bảo tính duy nhất cho mỗi bản ghi, trong khi khóa ngoại tạo mối liên kết giữa các bảng khác nhau trong cơ sở dữ liệu.
Khái quát về các mô hình truy nhập dữ liệu SQL Server bao gồm mô hình tập trung, mô hình khách/chủ và mô hình hướng dịch vụ Giảng viên có thể tổ chức thảo luận về các đặc điểm, ưu và nhược điểm của từng mô hình kiến trúc này Đồng thời, giảng viên nên đưa ra gợi ý về khả năng áp dụng và lựa chọn mô hình kiến trúc phù hợp tùy thuộc vào điều kiện phát triển ứng dụng cụ thể.
Khám phá kiến trúc bên trong của SQL Server bao gồm các thành phần và dịch vụ quan trọng Các thành phần cơ bản cần thiết cho hệ quản trị cơ sở dữ liệu bao gồm quản lý lưu trữ, quản lý truy vấn và quản trị giao dịch Bên cạnh đó, SQL Server còn cung cấp các thành phần bổ sung mang lại giá trị gia tăng cho việc xử lý dữ liệu, chẳng hạn như dịch vụ tích hợp dữ liệu, dịch vụ phân tích dữ liệu và dịch vụ tạo báo cáo.
Trong SQL Server, có hai ngôn ngữ lập trình chính là Transact-SQL (T-SQL) và Common Language Runtime (CLR) T-SQL là ngôn ngữ truy vấn cơ sở dữ liệu chủ yếu, cho phép người dùng thực hiện các thao tác như truy vấn, cập nhật và quản lý dữ liệu Ngược lại, CLR cho phép phát triển các ứng dụng phức tạp hơn bằng cách sử dụng các ngôn ngữ lập trình NET, như C# hoặc VB.NET, để mở rộng khả năng của SQL Server Việc hiểu rõ sự khác biệt giữa T-SQL và CLR cùng với phạm vi ứng dụng của chúng sẽ giúp người dùng tối ưu hóa hiệu suất và hiệu quả trong việc phát triển ứng dụng trên SQL Server.
Quá trình phát triển và tiến hóa của hệ quản trị cơ sở dữ liệu SQL Server đã trải qua nhiều giai đoạn khác nhau Thế hệ 2 là bước mở rộng của thế hệ 1, tập trung vào khả năng định nghĩa kiểu dữ liệu của người dùng và cung cấp một số dịch vụ phân tích dữ liệu Trong khi đó, thế hệ 3 của SQL Server tiếp tục nâng cao tính năng và hiệu suất, đáp ứng nhu cầu ngày càng cao của người dùng trong việc quản lý và phân tích dữ liệu.
2005 và SQL Server 2008) là bước nhảy vọt nhờ tích hợp CLR bên trong lõi của hệ quản trị cơ sở dữ liệu SQL Server
- Nêu khái quát các đặc điểm nổi trội của SQL Server 2008 Các dịch vụ hỗ trợ của SQL Server cho phép bảo vệ dữ liệu mọi nơi, mọi lúc
Trong cơ sở dữ liệu quan hệ, bảng là thành phần chính để tổ chức và lưu trữ dữ liệu, với mỗi bảng được xác định duy nhất bởi tên của nó Một cơ sở dữ liệu bao gồm nhiều bảng, mỗi bảng chứa một tập hợp các dòng và cột Mỗi dòng trong bảng biểu thị cho một thực thể, chẳng hạn như mỗi dòng trong bảng SINHVIEN tương ứng với một sinh viên Các cột trong bảng đại diện cho các thuộc tính của thực thể, ví dụ, cột TENKHOA trong bảng KHOA thể hiện tên của các khoa được lưu trữ.
Như vậy, liên quan đến mỗi một bảng bao gồm các yếu tố sau:
• Tên của bảng: được sử dụng để xác định duy nhất mỗi bảng trong cơ sở dữ liệu
Cấu trúc của bảng bao gồm các cột, mỗi cột được xác định bởi tên và kiểu dữ liệu, ví dụ như cột TENKHOA trong bảng KHOA có kiểu dữ liệu là CHAR Kiểu dữ liệu này quy định các giá trị dữ liệu hợp lệ cho từng cột trong bảng.
• Dữ liệu của bảng: Tập các dòng (bản ghi) hiện có trong bảng
Trong một cơ sở dữ liệu được tối ưu hóa, mỗi bảng cần có ít nhất một cột hoặc một tập hợp các cột mà giá trị của chúng xác định duy nhất một dòng trong bảng Tập hợp các cột này được gọi là khóa của bảng.
Hình 1.1 Bảng KHOA với khóa chính là MAKHOA
Việc lựa chọn khoá cho bảng là yếu tố quan trọng trong thiết kế và cài đặt cơ sở dữ liệu quan hệ Mỗi dòng dữ liệu trong bảng cần phải có giá trị khác nhau trên khoá Trong bảng MONHOC, cột MAMONHOC được xác định là khoá chính.
Một bảng có thể chứa nhiều tập hợp cột khác nhau, mỗi tập hợp có tính chất của khóa, giúp xác định duy nhất một dòng dữ liệu trong bảng Trong trường hợp này, khóa được chọn cho bảng gọi là khóa chính (primary key), trong khi các khóa còn lại được gọi là khóa phụ hoặc khóa dự tuyển (candidate key/unique key).
1.4 Mối quan hệ và khoá ngoài
Hình 1.2 Quan hệ 2 bảng trong một cơ sở dữ liệu
Mối quan hệ giữa các bảng trong cơ sở dữ liệu phản ánh chính xác các mối quan hệ giữa các thực thể trong thế giới thực Cụ thể, mối quan hệ giữa bảng LOP và KHOA đảm bảo rằng không có lớp nào có thể tồn tại mà lại thuộc về một khoa không có thực.
Cấu trúc và vai trò của các CSDL: Master, Model, msdl, Tempdb, pubs,
Mục tiêu: Liệt kê được các đối tượng cấu thành SQL server
RDBMS cũng như SQL SERVER chứa dựng nhiều đối tượng bao gồm :
• Database : cơ sở dữ liệu của SQL SERVER
• Tập tin log : tập tin lưu trữ những chuyển tác của SQL
• Diagrams : sơ đồ quan hệ
• Views : Khung nhìn (hay bảng ảo) số liệu dựa trên bảng
• Stored Procedure : Thủ tục và hàm nội
• User defined Function : Hàm do người dùng định nghĩa
• Users : Người sử dụng cơ sở dữ liệu
• Roles : Các qui định vai trò và chức năng trong hệ thống SQL SERVER
• Defaults : Các giá trị mặc nhiên
• User defined data types : Kiểu dữ liệu do người dùng tự định nghĩa
• Full text catalogs : Tập phân loại dữ liệu Text
Cơ sở dữ liệu đóng vai trò quan trọng nhất khi làm việc với SQL Server, nhưng các đối tượng con của nó mới là thành phần chính tạo nên cấu trúc và chức năng của cơ sở dữ liệu.
SQL Server là một hệ quản trị cơ sở dữ liệu, bao gồm các đối tượng chính như cơ sở dữ liệu, bảng, chế độ xem và thủ tục lưu trữ, cùng với một số cơ sở dữ liệu hỗ trợ khác.
Cơ sở dữ liệu SQL Server là một hệ thống quản lý cơ sở dữ liệu đa người dùng, trong đó mỗi máy chủ chỉ hỗ trợ một hệ quản trị cơ sở dữ liệu duy nhất Để sử dụng nhiều hệ quản trị cơ sở dữ liệu, cần phải có nhiều máy chủ tương ứng.
Truy cập cơ sở dữ liệu SQL Server yêu cầu sử dụng tài khoản người dùng riêng biệt, mỗi tài khoản sẽ có quyền truy cập khác nhau Khi cài đặt SQL Server, việc thiết lập quyền truy cập cho từng tài khoản là rất quan trọng để đảm bảo an toàn và bảo mật dữ liệu.
6 cơ sở dữ liệu mặc định sau :
Every SQL Server system includes a master database, also known as the master file, which contains all essential system tables These tables oversee and manage all operations within the SQL Server environment.
Khi người dùng tạo cơ sở dữ liệu mới trong SQL Server hoặc thêm, xóa một Store Procedure, tất cả thông tin này sẽ được lưu trữ trong cơ sở dữ liệu master của hệ thống.
Cơ sở dữ liệu này bao gồm tất cả các mẫu Template cần thiết để tạo ra một cơ sở dữ liệu mới Khi bạn khởi tạo một cơ sở dữ liệu mới, SQL Server sẽ sử dụng các mẫu, bao gồm bảng và view, từ cơ sở dữ liệu model này.
Cơ sở dữ liệu mẫu trong SQL Server đóng vai trò quan trọng trong việc tạo mới cơ sở dữ liệu cho người dùng khi cần thiết Do đó, việc xóa cơ sở dữ liệu mẫu này là không được phép.
Khi một CSDL được tạo ra thì CSDL mới này ít nhất cũng bằng và giống như cơ sở dữ liệu model
Nếu CSDL model có dung lượng 100MB, thì CSDL mới được tạo ra bởi SQL Server cần có dung lượng dữ liệu lớn hơn hoặc bằng 100MB.
Hệ thống SQL Server bao gồm hai cơ sở dữ liệu chính là master và model; việc xóa một trong hai cơ sở dữ liệu này sẽ dẫn đến lỗi hệ thống Tuy nhiên, cơ sở dữ liệu msdl lại có vai trò khác biệt, vì đây là nơi SQL Agent lưu trữ tất cả các tác vụ diễn ra trong SQL Server.
Khi thiết lập lịch trình cho việc sao lưu dữ liệu hoặc thực hiện các thủ tục lưu trữ, tất cả các tác vụ này đều được lưu trữ trong MSDL.
Nếu xoá CSDL này, phải cài đặt lại nó khi cần dùng hoặc khi hệ thống yêu cầu
Cơ sở dữ liệu Tempdb là một trong những cơ sở dữ liệu quan trọng của SQL Server, cho phép người dùng phát triển và thử nghiệm các ứng dụng trước khi triển khai vào cơ sở dữ liệu thực tế.
Cơ sở dữ liệu tempdb không chỉ hoạt động như bộ đệm cho các cơ sở dữ liệu khác trong SQL Server, mà còn hỗ trợ thực hiện các thao tác cần thiết mỗi khi SQL Server khởi động.
Cơ sở dữ liệu pubs chứa hầu hết nội dung về hướng dẫn, trợ giúp và cả sách tham khảo về SQL Server
Có thể xoá CSDL này mà không cần xác nhận với SQL Server
Cơ sở dữ liệu mẫu này, tương tự như cơ sở dữ liệu pubs, phục vụ cho người dùng tham khảo và là công cụ hữu ích cho các lập trình viên Visual Basic hoặc Access trong việc truy cập dữ liệu từ SQL Server.
Northwind and pubs are two databases installed as part of SQL Server To utilize the structure of these databases, you can use the script files named inspubs.sql and insnwnd.sql.
Mục tiêu: Củng cố lại kiến thức lý thuyết, thực tập áp dụng kiến thức hình thành kỹ năng
Bài 1 Thực hiện cài đặt SQL server trên máy tính, cấu hình đăng nhập bằng 2 chế độ khác nhau
Bài 2 Khởi động SQL server, quan sát và ghi chép lại các thành phần của cơ sở dữ liệu hiện có trên máy, bao gồm:
• Tên database, tên ập tin log, tên các bảng dữ liệu
• Filegroups, diagrams, khung nhìn (hay bảng ảo)
• Thủ tục và hàm nội, hàm do người dùng định nghĩa, người sử dụng cơ sở dữ liệu
• Các qui định vai trò và chức năng trong hệ thống SQL SERVER, những qui tắc, các giá trị mặc nhiên
GIỚI THIỆU MỘT SỐ CÔNG CỤ TRONG SQL SERVER
Sử dụng công cụ Enterprise manager để tạo ra các CSDL
Mục tiêu: Trình bày được các công cụ cơ bản của SQL và công dụng của chúng
Enterprise Manager (EM) là công cụ quan trọng dành cho quản trị viên server và cơ sở dữ liệu Nó cho phép người dùng dừng và khởi động server, cũng như thực hiện các tác vụ như đăng ký server một cách dễ dàng.
Cấu hình các server cục bộ hoặc từ xa
Cấu hình và quản lý một cài đặt với nhiều server (multiple-server)
Cài đặt các bảo mật đăng nhập (login security), thêm các người dùng (user), các nhà quản trị hệ thống (system administrator), và các điều hành viên
Gán một password nhà quản trị hệ thống
Tạo và lập biểu cho các công việc (job)
Tạo các cảnh báo và cấu hình giao tiếp đến nhà quản trị hệ thống thông qua e-mail
Setting up and managing databases involves configuring tables, indexes, views, stored procedures, rules, triggers, defaults, backup devices, and error logs.
Quản lý các service khác
SQL Server Manager là công cụ quản lý cho phép người dùng khởi động, tạm dừng hoặc dừng các dịch vụ trong SQL Server, giúp tối ưu hóa quá trình vận hành của hệ thống Các dịch vụ này do SQL Server tự cung cấp, đảm bảo hiệu suất và tính ổn định cho cơ sở dữ liệu.
1.2.1 Các dịch vụ của SQL Server
A service is a program or process that executes a specific function to support other programs SQL Server offers various services, including SQL Server Service, SQL Server Agent Service, Microsoft Search Service, and Microsoft Distributed Transaction Coordinator, each with distinct functions and tasks that facilitate SQL Server operations When installing one or multiple instances of SQL Server, the service name for each instance is MSSQL$InstanceName, where $InstanceName is the instance name specified during installation Correspondingly, each instance has a SQL Server Agent service named SQLAGENT$InstanceName Notably, multiple SQL Server instances share a single Microsoft Distributed Transaction Coordinator and Microsoft Search Service.
Khi khởi động SQL Server, dịch vụ SQL Server trên Windows NT hoặc Windows 2000 sẽ được kích hoạt, quản lý các tập tin dữ liệu vào lúc 1 giờ sáng hàng đêm Ngoài ra, một công việc khác thực hiện sao lưu transaction log mỗi 30 phút Để theo dõi hiệu năng hệ thống, bạn cần thiết lập cảnh báo khi CPU của server hoạt động trên 90% Lưu ý rằng SQL Server Agent phải được chạy để thực hiện các tác vụ này.
Dịch vụ này có thể được cấu hình để khởi động tự động hoặc thủ công Để đảm bảo các job, alerts và notification được thực thi hiệu quả, chúng ta nên cấu hình cho dịch vụ khởi động tự động Cần lưu ý đến MICROSOFT DISTRIBUTED TRANSACTION COORDINATOR trong quá trình cấu hình.
Dùng quản lý các giao tác phân tán d MICROSOFT SEARCH
1.2.2 Khởi động, tạm ngưng, dừng các dịch vụ của SQL Server Để khởi động hay dừng các dịch vụ SQL Server bằng cách dùng SQL Server Service Manager thì thực hiện các bước sau:
1 Click chọn Start/Programs/Microsoft SQL Server, và chọn Service Manager để hiển thị công cụ SQL Service Manager
2 Tên server cục bộ xuất hiện trong mục Server và các dịch vụ của SQL Server xuất hiện trong mục Service Trong danh sách xổ xuống, chọn tên của server và dịch vụ mà bạn muốn điều khiển
Chúng ta có thể dễ dàng khởi động hoặc dừng các dịch vụ đã chọn bằng cách nhấn vào nút tương ứng Nếu dịch vụ đang ở trạng thái dừng, hãy nhấp vào nút Start/Continue để tiếp tục hoạt động.
3 Auto-start service when OS Server: cấu hình tự động chạy dịch vụ khi hệ điều hành khởi động
1.3 Các công cụ của MS SQL
1.3.1 Trình Enterprise Manager Đây là môi trường trực quan sử dụng hệ thống thực đơn Enterprise Manager Sử dụng hệ thống thực đơn (menu) để thực hiện các yêu cầu Chủ yếu các yêu cầu tạo, thêm, xoá, sửa dữ liệu Quản lý lịch trình Backup dữ liệu Quản lý người dùng đang truy cập CSDL Tạo, xóa quyền Login User Định cấu hình cho Server Tạo và quản lý tìm kiếm
Hình 3.1 : Giao diện SQL Server Enterprise Manager 1.3.2 Làm việc với công cụ Enterprise Manager
Hình 3.2: Giao diện SQL Server
- Đặt tên Database trong Textbox Database Name, click OK
Hình 3.3: Hộp thoại New Database
+ Initial Size (MB): dung lượng khởi tạo tập tin
+ Autogrowth: dung lượng tăng trưởng tập tin
- Click phải chuột lên CSDL cần xóa -> Delete
When deleting a database in SQL Server 2005, it is advisable to check the option to "Close existing connections." This action ensures that all connections to the database are terminated, allowing for a smooth deletion process without encountering any error messages.
Hình 3.4: Hộp Thoại Delete Object 1.3.2.3 Sửa tham số
Hình 3.5:Hộp thoại Database Properties 1.3.2.4 Bảng dữ liệu
2.2.1 Thiết kế bảng dữ liệu:
Bảng dữ liệu là thành phần cơ bản của cơ sở dữ liệu (CSDL), được thiết kế từ một hoặc nhiều bảng, mỗi bảng bao gồm các hàng và cột Mỗi hàng mô tả một đối tượng, vấn đề, hoặc sự kiện, trong khi các cột thể hiện thuộc tính của những đối tượng hoặc sự kiện đó Dữ liệu trong cùng một cột có cùng kiểu (data type) Ngoài ra, bảng còn bao gồm các khóa, liên kết và ràng buộc, tạo nên cấu trúc dữ liệu hoàn chỉnh.
Trước khi thiết lập bảng dữ liệu, cần xác định cấu trúc bảng dựa trên các thông tin quan trọng.
- Kiểu dữ liệu trong bảng
- Các cột, kiểu dữ liệu tương ứng (và độ dài nếu cần thiết)
Cột cho phép giá trị NULL là cột mà dữ liệu không được gán giá trị cụ thể, dẫn đến việc hai phần tử có giá trị NULL không được xem là bằng nhau.
- Giá trị ngầm định (là giá trị mà khi chưa nhập vào nó nhận giá trị này)
- Chỉ số Index, khóa chính, khóa ngoài a Các kiểu dữ liệu
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
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
Bit Kiểu bit (có giá trị 0 hoặc 1)
Datetime Kiểu ngày giờ (chính xác đến phần trăm của giây)
Smalldatetime Kiểu ngày giờ (chính xác đến phút)
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
Để đảm bảo một cơ sở dữ liệu (CSDL) có độ tin cậy và chính xác cao, việc thiết lập ràng buộc dữ liệu là rất quan trọng Ràng buộc này giúp kiểm soát dữ liệu khi nhập vào CSDL, từ đó đảm bảo độ tin cậy của thông tin và tạo điều kiện thuận lợi cho việc khai thác dữ liệu.
Có nhiều kiểu ràng buộc dữ liệu, một CSDL có thể gồm một hoặc nhiều ràng buộc, ràng buộc có thể trên một bảng, trên nhiều bảng
Toàn vẹn dữ liệu chia thành 4 loại:
Cách dùng công cụ Query Analyzer để tạo ra các CSDL
SQL Query Analyzer là giao diện người dùng đồ họa (Graphical User Interface – GUI) dành cho các nhà lập trình Query Analyzer cho phép thực hiện:
- Tìm lỗi (Debug) các vấn đề hiệu năng của của truy vấn (Show Execution Plan, Show Server Trace, Show Client Statistics, Index Tuning Wizard)
- Định vị các đối tượng trong các CSDL, xem và làm việc với các đối tượng
- Chèn, cập nhật, xóa các mẫu tin trong table một cách nhanh chóng
SQL Query Analyzer có thể được khởi động từ SQL Server Enterprice Manager hoặc từ Start Menu hoặc từ của sổ Command bằng cách thực thi tiện ích ISQLW
Khi khởi động SQL Query Analyzer, hộp thoại "Connect to SQL Server" sẽ xuất hiện, yêu cầu bạn xác định chế độ chứng thực để kết nối với SQL Server.
Bạn có thể mở nhiều cửa sổ Query Analyzer cùng lúc để làm việc với các cơ sở dữ liệu khác nhau hoặc thực thi các script khác nhau Mỗi cửa sổ sẽ tạo ra một kết nối riêng biệt đến máy chủ, giúp duy trì các cài đặt khác nhau và cho phép mỗi cửa sổ có cơ sở dữ liệu hiện hành riêng.
2.3 Thành phần chính của Query Analyzer
SQL Query Analyzer là công cụ hỗ trợ thiết kế các tác vụ cần thiết để tạo cơ sở dữ liệu (CSDL), lưu trữ và khai thác dữ liệu hiệu quả thông qua các cửa sổ, hộp thoại và hướng dẫn (wizard).
Thanh tiêu đề (Title bar): Hiển thị tên của Server, CSDL hiện hành, và tài khoản kết nối tới
Công cụ Database trên thanh công cụ, cho biết và cho phép bạn thay đổi CSDL được kết nối hiện hành
Bảng điều chỉnh (Editor pane) cho phép người dùng nhập và thực thi các câu lệnh T-SQL, trong khi bảng kết quả (Results pane) hiển thị kết quả của các truy vấn đã được thực hiện, với khả năng hiển thị một hoặc nhiều trang kết quả.
Trang Messages: Hiển thị thông báo và các lổi gửi trả từ server
Trang Results: Hiển thị những kết quả như văn bản tự do
Trang Results Grid hiển thị kết quả trong bảng kẻ lưới, với dữ liệu chỉ để xem và không thể chỉnh sửa Trong trường hợp truy vấn yêu cầu server trả về nhiều hơn một tập kết quả, sẽ có nhiều trang Results Grid được hiển thị Nếu lưới kết quả trống sau khi thực hiện một truy vấn, điều đó có nghĩa là truy vấn không trả về bảng kết quả nào.
Trang Execution Plan: Hiển thị một biểu đồ của kế hoạch thực thi của truy vấn hiện hành Bật tắt Execution Plan ta chọn từ thực đơn Query.
Thiết lập một số cấu hình về Client network utility
3.1 Giới thiệu về mô hình Client/Server và các hệ quản trị CSDL phục vụ cho mô hình Client/Server
SQL là hệ quản trị cơ sở dữ liệu (CSDL) đa người dùng theo mô hình Client/Server, đóng vai trò quan trọng trong việc lưu trữ dữ liệu cho nhiều ứng dụng lớn hiện nay Mô hình Client/Server trong SQL giúp điều khiển tất cả các chức năng mà hệ quản trị CSDL cung cấp, mang đến cho người dùng những khả năng linh hoạt và hiệu quả.
• Truy xuất và thao tác dữ liệu
• Đảm bảo toàn vẹn dữ liệu
3.2 Các đặc trưng của mô hình Client/server
Một ứng dụng kiểu Client/Server bao gồm 2 phần: Một phần chạy trên Server (máy chủ) và phần khác chạy trên các Workstations (máy trạm)
Mô hình Client/Server trên SQL Server bao gồm phần Server, nơi lưu trữ các cơ sở dữ liệu (CSDL) và cung cấp các chức năng quản lý dữ liệu Điều này cho phép nhiều người dùng truy cập dữ liệu đồng thời, đảm bảo tính nhất quán và tiết kiệm Tất cả dữ liệu đều được truy xuất qua server, giúp nâng cao độ bảo mật, khả năng chịu lỗi, và hỗ trợ sao lưu dự phòng hiệu quả.
Phần Client (Máy khách) là các phần mềm hoạt động trên máy trạm, cho phép người dùng tương tác với cơ sở dữ liệu trên Server Hệ thống máy tính Client/Server bao gồm 5 mô hình kiến trúc, dựa trên cấu hình phân tán để truy cập dữ liệu hiệu quả.
- Mô hình CSDL tập trung (Centralized database model)
- Mô hình CSDL theo kiểu file - server (File - server database model)
- Mô hình xử lý từng phần CSDL (Database extract proceSQL Servering model)
- Mô hình CSDL Client/Server (Client/Server database model)
- Mô hình CSDL phân tán (Distributed database model)
3.3 Các thành phần quan trọng trong SQL Server
Mục tiêu: Trình bày được các thành phần quan trọng của SQL server
SQL Server phiên bản 2000 bao gồm nhiều thành phần quan trọng như Relational Database Engine, Analysis Service và English Query Sự kết hợp của các thành phần này tạo ra một giải pháp toàn diện, giúp việc lưu trữ và phân tích dữ liệu trở nên dễ dàng hơn.
3.3.1 Relational Database Engine - Cái lõi của SQL Server Ðây là một engine có khả năng chứa data ở các quy mô khác nhau dưới dạng table và support tất cả các kiểu kết nối (data connection) thông dụng của Microsoft như ActiveX Data Objects (ADO), OLE DB, and Open Database Connectivity (ODBC) Ngoài ra nó còn có khả năng tự điều chỉnh (tune up) ví dụ như sử dụng thêm các tài nguyên (resource) của máy khi cần và trả lại tài nguyên cho hệ điều hành khi một user log off
3.3.2 Replication - Cơ chế tạo bản sao
Cơ chế nhân bản của SQL Server cho phép nhiều phiên bản từ xa truy cập cùng một dữ liệu, phục vụ cho người dùng di động và các trang web kết nối qua internet, dial-up hoặc intranet Việc phân chia vật lý dữ liệu không chỉ nâng cao hiệu suất tổ chức mà còn đảm bảo dữ liệu được xử lý và trình bày hiệu quả tại các vị trí khác nhau để tham khảo.
Dịch vụ chuyển dữ liệu (DTS) là giải pháp hiệu quả cho việc di chuyển và định dạng dữ liệu giữa các hệ thống khác nhau như Oracle, DB2, SQL Server và Microsoft Access trong các công ty lớn Khi cần chuyển đổi dữ liệu giữa các máy chủ, DTS giúp đơn giản hóa quá trình này, đảm bảo dữ liệu được chuyển giao và định dạng đúng cách trước khi lưu trữ vào cơ sở dữ liệu mới Hãy cùng tìm hiểu thêm về DTS trong bài 8.
Microsoft cung cấp một dịch vụ phân tích dữ liệu mạnh mẽ, giúp biến dữ liệu trong cơ sở dữ liệu thành thông tin hữu ích Công cụ này sử dụng khái niệm hình khối nhiều chiều và kỹ thuật đào mỏ dữ liệu, giúp việc phân tích trở nên dễ dàng và hiệu quả hơn.
3.3.5 English Query - Một dịch vụ truy vấn Ðây là một dịch vụ giúp cho việc query data bằng tiếng Anh (English)
Dịch vụ này giúp việc quản lý và xử lý Meta data trở nên dễ dàng hơn Vậy Meta data là gì? Meta data là thông tin mô tả cấu trúc của dữ liệu trong cơ sở dữ liệu, chẳng hạn như loại dữ liệu (String hay Integer) và việc xác định các cột có phải là Primary key hay không Mặc dù thông tin này cũng được lưu trữ trong cơ sở dữ liệu, nó được gọi là Meta data để phân biệt với dữ liệu chính Để tìm hiểu thêm, bạn có thể tham khảo SQL Server Books Online, vì trong loạt bài này không có thông tin chi tiết về dịch vụ này.
Dù bạn đã đọc nhiều sách về SQL Server, sách trực tuyến này vẫn rất hữu ích và không thể thiếu, lý do mà Microsoft đã đính kèm nó với SQL Server.
Người dùng ạn có thể tìm thông tin trong SQL Server Books Online bằng cách:
- Điều hướng thông qua bảng nội dung
- Gõ một từ khóa trong index
- Gõ một từ hoặc một cụm từ và thực hiện việc tìm kiếm.
PHÁT BIỂU CƠ BẢN T-SQL
Cú pháp các câu lệnh T-SQL như: Select, Insert, Delete, Update cú pháp
Mục tiêu: Trình bày được cú pháp câu lệnh select, áp dụng được câu lệnh để truy vấn dữ liệu từ các bảng trong cơ sở dữ liệu
Câu lệnh SELECT là công cụ quan trọng để truy xuất dữ liệu từ các bảng và khung nhìn, cho phép thực hiện các phép chọn, phép chiếu và phép nối Bằng cách này, người dùng có thể lấy một tập con các dòng và cột từ nhiều bảng khác nhau Ngoài ra, câu lệnh SELECT cũng hỗ trợ thực hiện các thao tác truy vấn và thống kê dữ liệu phức tạp, giúp tối ưu hóa việc quản lý và phân tích dữ liệu.
Cú pháp chung của câu lệnh SELECT có dạng:
SELECT [ALL | DISTINCT][TOP n] danh_sách_chọn
FROM danh_sách_bảng/khung_nhìn
[GROUP BY danh_sách_cột]
[ORDER BY cột_sắp_xếp]
Khi sử dụng câu lệnh COMPUTE danh_sách_hàm_gộp [BY danh_sách_cột], điều quan trọng cần lưu ý là các thành phần trong câu lệnh SELECT phải tuân theo đúng thứ tự theo cú pháp quy định Nếu không, câu lệnh sẽ bị coi là không hợp lệ.
Câu lệnh SELECT được sử dụng để truy xuất dữ liệu từ các bảng, và kết quả trả về sẽ được hiển thị dưới dạng bảng với các dòng và cột, trừ khi sử dụng mệnh đề COMPUTE.
Mệnh đề FROM trong câu lệnh SELECT được sử dụng để xác định các bảng và khung nhìn cần truy xuất dữ liệu Danh sách tên của các bảng và khung nhìn tham gia vào truy vấn được liệt kê sau FROM, và các tên này được phân cách bởi dấu phẩy.
1.1.2 Danh sách chọn trong câu lệnh SELECT
Danh sách chọn trong câu lệnh SELECT được sử dụng để xác định các trường và biểu thức cần hiển thị trong kết quả truy vấn Các trường và biểu thức này được liệt kê ngay sau từ khóa SELECT và phân cách bằng dấu phẩy Việc sử dụng danh sách chọn trong câu lệnh SELECT cho phép người dùng chọn tất cả các cột trong bảng một cách dễ dàng.
Khi hiển thị tất cả các trường trong bảng, bạn có thể sử dụng ký tự * trong danh sách chọn thay vì liệt kê từng cột Kết quả truy vấn sẽ hiển thị các cột theo thứ tự mà chúng đã được định nghĩa trong bảng.
Khi cần chỉ định cụ thể các cột hiển thị trong kết quả truy vấn, bạn chỉ cần liệt kê danh sách tên cột trong phần chọn Thứ tự các cột trong kết quả sẽ theo đúng thứ tự trong danh sách đã chọn.
Khi thực hiện truy vấn trên nhiều bảng hoặc khung nhìn có các trường trùng tên, các trường này cần được chỉ định rõ ràng trong danh sách chọn bằng cách sử dụng cú pháp c Hãy nhớ thay đổi tiêu đề của các cột để tránh nhầm lẫn và đảm bảo tính chính xác trong kết quả truy vấn.
Trong truy vấn, tiêu đề cột mặc định là tên trường trong bảng, nhưng có thể đổi tên để thân thiện hơn Để đặt tiêu đề cho cột, sử dụng cú pháp: tiêu_đề_cột = tên_trường, tên_trường AS tiêu_đề_cột hoặc tên_trường tiêu_đề_cột Bên cạnh đó, có thể sử dụng cấu trúc CASE trong danh sách chọn để cải thiện tính linh hoạt của kết quả.
Cấu trúc CASE được áp dụng trong danh sách chọn để điều chỉnh kết quả truy vấn theo các trường hợp khác nhau Cú pháp của cấu trúc này rất đơn giản và dễ hiểu.
WHEN biểu_thức_kiểm_tra THEN kết_quả
[ELSE kết_quả_của_else]
WHEN điều_kiện THEN kết_quả
[ELSE kết_quả_của_else]
END loại bỏ bớt các dòng này, ta chỉ định thêm từ khóa DISTINCT ngay sau từ khoá SELECT g Giới hạn số lượng dòng trong kết quả truy vấn
Khi thực hiện truy vấn, kết quả thường hiển thị tất cả các dòng dữ liệu Để hạn chế số lượng dòng xuất hiện trong kết quả, bạn có thể sử dụng mệnh đề TOP ngay trước danh sách chọn trong câu lệnh SELECT.
Ví dụ 4.12: Câu lệnh dưới đây hiển thị họ tên và ngày sinh của 5 sinh viên đầu tiên trong danh sách
SELECT TOP 5 hodem,ten,ngaysinh
Ngoài việc chỉ định số lượng dòng hiển thị trong kết quả truy vấn, bạn có thể sử dụng từ khóa PERCENT để xác định số lượng dòng theo tỷ lệ phần trăm, như được minh họa trong ví dụ dưới đây.
Ví dụ 4.13: Câu lệnh dưới đây hiển thị họ tên và ngày sinh của 10% số lượng sinh viên hiện có trong bảng SINHVIEN
SELECT TOP 10 PERCENT hodem,ten,ngaysinh
1.1.3 Chỉ định điều kiện truy vấn dữ liệu
Mệnh đề WHERE trong câu lệnh SELECT được sử dụng để xác định các điều kiện truy xuất dữ liệu Chỉ những dòng dữ liệu thỏa mãn biểu thức logic sau mệnh đề WHERE mới được hiển thị trong kết quả truy vấn.
Trong mệnh đề WHERE thường sử dụng:
• Các toán tử kết hợp điều kiện (AND, OR)
• Các toán tử so sánh
• Kiểm tra giới hạn của dữ liệu (BETWEEN/ NOT BETWEEN)
• Kiểm tra khuôn dạng dữ liệu
• Các giá trị NULL a Các toán tử so sánh
SELECT masv,hodem,ten,ngaysinh
Để lấy mã, họ tên và ngày sinh của các sinh viên tên Anh có độ tuổi nhỏ hơn hoặc bằng 20, ta sử dụng cú pháp SQL kết hợp với hàm YEAR Để kiểm tra xem giá trị dữ liệu có nằm trong một khoảng nhất định hay không, ta áp dụng toán tử BETWEEN (hoặc NOT BETWEEN) để xác định giới hạn dữ liệu.
Cách sử dụng Ý nghĩa giá_trị BETWEEN a AND b a giá_trị b giá_trị NOT BETWEEN a AND b (giá_trị < a) AND (giá_trị>b)
Ví dụ 4.16: Câu lệnh dưới đây cho biết họ tên và tuổi của các sinh viên có tên là
Bình và có tuổi nằm trong khoảng từ 20 đến 22
SELECT hodem,ten,year(getdate())-year(ngaysinh) AS tuoi
YEAR(GETDATE())-YEAR(ngaysinh) BETWEEN 20 AND 22 c Danh sách (IN và NOT IN)
Từ khoá IN được sử dụng trong câu lệnh SELECT để chỉ định điều kiện tìm kiếm dữ liệu với một danh sách giá trị cụ thể Sau IN (hoặc NOT IN) có thể là danh sách các giá trị hoặc một câu lệnh SELECT khác.
Ví dụ 4.17: Để biết danh sách các môn học có số đơn vị học trình là 2, 4 hoặc 5, thay vì sử dụng câu lệnh
WHERE sodvht=2 OR sodvht=4 OR sodvht=5 ta có thể sử dụng câu lệnh
WHERE sodvht IN (2,4,5) d Toán tử LIKE và các ký tự đại diện
TẠO VÀ SỬA ĐỔI BẢNG DỮ LIỆU
Tạo CSDL và bảng dữ liệu bảng lệnh Create Database
* tạo CSDL có 2 tập mdf và ldf
( name = Tên file DL chính, filename = 'Nơi lưu tập tin', size=dung lượng ban đầu, maxsize=dung lượng lớn nhất, filegrowth= tăng trưởng)
( name = Tên file nhật ký, filename = 'Nơi lưu tập tin', size=dung lượng ban đầu, maxsize=dung lượng lớn nhất, filegrowth= tăng trưởng) ví dụ 5.1: Tạo CSDL QLHD
Tập tin dữ liệu thứ 1 có tên luận lý là tênSVqlhd_data1, với tên vật lý là tênSVqlhd_data1.mdf Tập tin này có dung lượng ban đầu là 3MB, dung lượng tối đa đạt 10MB và lượng tăng trưởng là 1MB.
Tập tin nhật ký có tên luận lý là tênSVqlhd_log1 và tên vật lý là tênSVqlhd_log1.ldf Dung lượng ban đầu của tập tin là 2MB, với dung lượng tối đa là 5MB và lượng tăng trưởng là 1MB.
To create a database named QLHD_data1, use the command: `USE master; CREATE DATABASE QLHD ON (NAME = QLHD_data1, FILENAME = 'D:\T_SQL\CNTTQLHD_data1.mdf', SIZE = 4MB, MAXSIZE = UNLIMITED, FILEGROWTH = 1MB) LOG ON (NAME = QLHDD_log1, FILENAME = 'D:\T_SQL\CNTTQLHD_log1.ldf', SIZE = 2MB, MAXSIZE = 8MB, FILEGROWTH = 1MB);` This command initializes the database with specified file sizes and growth parameters, ensuring efficient data management and storage.
*tạo CSDL 3 tập mdf, ndf và ldf
To create a database in SQL Server, use the command `CREATE DATABASE [DatabaseName] ON (NAME = [LogicalName], FILENAME = '[FilePath]', SIZE = [InitialSize], MAXSIZE = [MaxSize], FILEGROWTH = [GrowthSize])` and specify the filegroup name.
(name =tên_data2, filename = 'Nơi lưu tập tin', size=dung lượng ban đầu, maxsize=dung lượng lớn nhất, filegrowth= tăng trưởng) log on
(name =tên_log1, filename = 'Nơi lưu tập tin', size=dung lượng ban đầu, maxsize=dung lượng lớn nhất, filegrowth= tăng trưởng) ví dụ 5.2: Tạo CSDL TênSVQLHD
Tập tin dữ liệu thứ 1 có tên luận lý là tênSVqlhd_data1 và tên vật lý là tênSVqlhd_data1.mdf Tập tin này có dung lượng ban đầu là 3MB, dung lượng tối đa là 10MB và lượng tăng trưởng là 1MB.
Tập tin dữ liệu thứ 2 thuộc nhóm nhom2, với tên luận lý là tênSVqlhd_data2 và tên vật lý là tênSVqlhd_data2.ndf Tập tin này có dung lượng ban đầu là 2MB, dung lượng tối đa có thể đạt được là 8MB, và lượng tăng trưởng là 1MB.
Tập tin nhật ký có tên luận lý là tênSVqlhd_log1 và tên vật lý là tênSVqlhd_log1.ldf Dung lượng ban đầu của tập tin này là 2MB, dung lượng tối đa có thể đạt được là 5MB, và lượng tăng trưởng mỗi lần là 1MB.
Use master go create database CNTTQLHD on (name =CNTTQLHD_data1, filename= 'D:\14qtm-tên
SV\T_SQL\CNTTQLHD_data1.mdf', size=4mb, maxsizemb, filegrowth= 1mb) , filegroup nhom2
(name =CNTTQLHD_data2, filename = 'D:14qtm-tên
The SQL Server database file configuration includes a data file named 'CNTTQLHD_data2.ndf' with an initial size of 2MB, a maximum size of 8MB, and a growth increment of 1MB Additionally, the log file is designated as 'CNTTQLHDD_log1.ldf', also starting at 2MB, with the same maximum size and growth parameters.
1.2 Tạo bảng dữ liệu sở dữ liệu được sử dụng để biểu diễn thông tin, lưu giữ dữ liệu về các đối tượng trong thế giới thực và/hoặc mối quan hệ giữa các đối tượng
Bảng trong hình 5.1 bao gồm 8 bản ghi và 3 trường là MAKHOA, TENKHOA, DIENTHOAI
Câu lệnh CREATE TABLE được sử dụng để tạo một bảng dữ liệu mới trong cơ sở dữ liệu, và khi thực hiện điều này, cần xác định các yêu cầu cần thiết để định nghĩa bảng một cách chính xác.
• Bảng mới được tạo ra sử dụng với mục đích gì và có vai trò như thế nào trong cơ sở dữ liệu
Hình 5.1 Bảng trong cơ sở dữ liệu
Cấu trúc của bảng dữ liệu bao gồm các trường (cột) khác nhau, mỗi trường mang một ý nghĩa cụ thể trong việc biểu diễn dữ liệu Mỗi trường có kiểu dữ liệu riêng, và cần xác định xem trường đó có cho phép nhận giá trị NULL hay không.
Các trường tham gia vào khóa chính của bảng sẽ được xác định rõ ràng Bảng này có mối quan hệ với các bảng khác, và việc hiểu rõ mối quan hệ này là rất quan trọng để đảm bảo tính toàn vẹn của dữ liệu.
Trên các trường của bảng, cần xác định xem có tồn tại ràng buộc về khuôn dạng và điều kiện hợp lệ của dữ liệu hay không; nếu có, cần làm rõ vị trí và cách thức áp dụng chúng.
Câu lệnh CREATE TABLE có cú pháp như sau
( tên_cột thuộc_tính_cột các_ràng_buộc [,
,tên_cột_n thuộc_tính_cột_n các_ràng_buộc_cột_n]
[,các_ràng_buộc_trên_bảng]
Để tạo một bảng, tên bảng phải tuân theo quy tắc định danh và không vượt quá 128 ký tự Tên cột cũng cần tuân thủ các quy tắc tương tự và không được trùng nhau trong cùng một bảng Mỗi bảng cần có ít nhất một cột, và nếu có nhiều cột, định nghĩa của chúng phải được phân cách bằng dấu phẩy Ngoài tên cột, mỗi cột còn có các thuộc tính riêng.
Kiểu dữ liệu của cột Đây là thuộc tính bắt buộc phải có đối với mỗi cột
Giá trị mặc định của cột là giá trị tự động được gán cho cột khi người sử dụng không nhập dữ liệu một cách rõ ràng Mỗi cột chỉ có thể chứa tối đa một giá trị mặc định.
Sử dụng được các ràng buộc: CHECK
Ràng buộc CHECK được áp dụng để xác định tính hợp lệ của dữ liệu Khi có sự thay đổi dữ liệu trong bảng (INSERT, UPDATE), các ràng buộc này sẽ kiểm tra tính hợp lệ của dữ liệu mới.
Ràng buộc CHECK được khai báo theo cú pháp như sau:
Điều kiện CHECK là một biểu thức logic áp dụng cho cột trong cơ sở dữ liệu, nhằm xác định giá trị hoặc định dạng dữ liệu được phép Mỗi bảng và cột có thể có nhiều ràng buộc CHECK khác nhau.
Câu lệnh dưới đây tạo bảng DIEMTOTNGHIEP, trong đó quy định rằng giá trị của cột DIEMVAN và DIEMTOAN phải nằm trong khoảng từ 0 đến 10, bao gồm cả hai giá trị biên.
( hoten NVARCHAR(30) NOT NULL, ngaysinh DATETIME, diemvan DECIMAL(4,2)
CONSTRAINT chk_diemvan CHECK(diemvan>=0 AND diemvan=0 AND diemtoan