Đăng ký Đăng nhập
Trang chủ cơ sở dữ liệu quan hệ và SQL...

Tài liệu cơ sở dữ liệu quan hệ và SQL

.PDF
80
296
146

Mô tả:

Giới thiệu cơ sở dữ liệu quan hệ và SQL
1 Giới thiệu cơ sở dữ liệu quan hệ và SQL Trước khi sử dụng SQL để làm việc với cơ sở dữ liệu SQL Server, bạn cần làm quen với những khái niệm và thuật ngữ được dùng trong các hệ quản trị cơ sở dữ liệu. Cụ thể, bạn cần hiểu cơ sở dữ liệu quan hệ là gì và lợi ích mà nó mang lại so với các mô hình dữ liệu khác. Đó là những nội dung bạn sẽ được học trong phần đầu của chương này. Tiếp đó, bạn sẽ tìm hiểu các câu lệnh SQL và những tính năng cơ bản của SQL Server. Giới thiệu hệ thống client/server (máy khách/máy chủ)....................................... 2 Các thành phần phần cứng trong hệ thống client/server ............................................2 Các thành phần phần mềm của hệ thống client/server ..............................................4 Các kiến trúc hệ thống client/server khác ...................................................................6 Giới thiệu mô hình cơ sở dữ liệu quan hệ............................................................. 8 Cách tổ chức bảng cơ sở dữ liệu ...............................................................................8 Cách liên kết các bảng trong cơ sở dữ liệu quan hệ ................................................10 Cách định nghĩa các cột trong bảng .........................................................................12 So sánh cơ sở dữ liệu quan hệ với các mô hình dữ liệu khác .................................14 Giới thiệu về SQL và những hệ thống trên nền SQL (SQL-based system)....... 16 Tóm lược lịch sử SQL ...............................................................................................16 So sánh Oracle, DB2 và SQL Server ........................................................................18 Các hệ thống trên nền SQL khác ..............................................................................18 Các câu lệnh Transact-SQL................................................................................... 20 Giới thiệu các câu lệnh SQL .....................................................................................20 Các câu lệnh điển hình để làm việc với đối tượng cơ sở dữ liệu .............................22 Hướng dẫn truy vấn bảng đơn .................................................................................24 Hướng dẫn nối dữ liệu từ hai hay nhiều bảng ..........................................................26 Hướng dẫn thêm, sửa và xóa dữ liệu trong bảng ....................................................28 Hướng dẫn viết mã SQL ...........................................................................................30 Hướng dẫn làm việc với các đối tượng cơ sở dữ liệu khác.............................. 32 Hướng dẫn làm việc với view ...................................................................................32 Hướng dẫn làm việc với stored procedure, trigger, hàm người dùng định nghĩa .....34 Hướng dẫn sử dụng SQL từ một chương trình ứng dụng................................. 36 Các mô hình truy cập dữ liệu phổ biến .....................................................................36 Hướng dẫn sử dụng ADO.NET từ ứng dụng .NET ...................................................38 Mã Visual Basic truy xuất dữ liệu từ cơ sở dữ liệu SQL Server ...............................40 Mã C# truy xuất dữ liệu từ cơ sở dữ liệu SQL Server ..............................................42 Tổng kết .................................................................................................................. 44 2  SQL Server 2008 căn bản - Hướng dẫn học qua ví dụ Giới thiệu hệ thống client/server (máy khách/máy chủ) Nếu bạn chưa quen với các hệ thống client/server, hai mục ngay bên dưới sẽ giới thiệu cho bạn về các thành phần phần cứng và phần mềm thiết yếu của hệ thống. Đây cũng là những dạng hệ thống được sử dụng nhiều nhất cùng với SQL. Ở phần cuối sẽ cung cấp cho bạn một hình dung về hệ thống client/server phức tạp sẽ như thế nào. Các thành phần phần cứng trong hệ thống client/server Hình 1-1 biểu diễn ba thành phần phần cứng của hệ thống client/server: Client (máy khách), hệ thống mạng, và server (máy chủ). Client thường là các máy tính cá nhân (Personal Computer - PC) được lắp đặt sẵn trên bàn làm việc ở một công ty. Còn hệ thống mạng là hệ thống dây cáp, đường kết nối, card giao tiếp mạng (NIC - network inteface card), hub, router cùng các thành phần kết nối khác giữa client và server. Server cơ sở dữ liệu (database server) thường được gọi là server, là một máy tính có bộ vi xử lý đủ nhanh, bộ nhớ trong (RAM), và ổ đĩa để lưu trữ các file và cơ sở dữ liệu của hệ thống, đồng thời cung cấp các dịch vụ tới client trong hệ thống. Server thường là các máy tính hiệu năng cao, nhưng cũng có thể là một hệ thống máy tính tầm trung như IBM iSeries, Unix, hoặc thậm chí là một hệ thống máy tính lớn (mainframe system). Khi một hệ thống bao gồm mạng, hệ thống máy tầm trung hoặc cỡ lớn nằm trải rộng trên lãnh thổ một quốc gia hoặc thế giới, sẽ được gọi là hệ thống doanh nghiệp (enterprise system). Để thực hiện sao lưu các file trong hệ thống client/server, server thường có băng từ (tape drive) hoặc một vài dạng lưu trữ offline khác. Server thường có một hay nhiều máy in, hoặc các thiết bị chuyên dụng, được chia sẻ giữa những người dùng của hệ thống. Và server cũng có khả năng cung cấp các chương trình, hoặc dịch vụ như email cho phép toàn bộ người dùng trong hệ thống truy cập. Trong một hệ thống client/server đơn giản, các client và server là một phần của mạng nội bộ (local area network - LAN). Tuy nhiên, hai hoặc nhiều mạng LAN ở những địa điểm địa lý khác nhau có thể kết nối để trở thành một phần của hệ thống mạng lớn hơn, như mạng diện rộng (wide area network - WAN). Thêm vào đó, các hệ thống hoặc mạng đơn lẻ có thể được kết nối qua Internet. Chương 1  Giới thiệu cơ sở dữ liệu quan hệ và SQL  3  Một hệ thống client/server đơn giản Server cơ sở dữ liệu Mạng Client Client Client Ba thành phần phần cứng của hệ thống client/server • • • Các client như PC, Macintosh hoặc máy trạm (workstation) của hệ thống. Server là máy tính lưu trữ các file, cơ sở dữ liệu của hệ thống và cung cấp dịch vụ tới client. Nếu server lưu trữ cơ sở dữ liệu, ta có thể gọi nó là một server cơ sở dữ liệu (database server). Hệ thống mạng gồm hệ thống dây cáp, đường kết nối cùng các thành phần khác kết nối giữa client và server của hệ thống. Cài đặt hệ thống client/server • • • • Trong hệ thống client/server đơn giản như đã trình bày ở trên, server thường là những máy PC hiệu năng cao giao tiếp với client qua mạng nội bộ (LAN). Server cũng có thể là một hệ máy tầm trung như IBM iSeries, Unix hoặc một hệ thống máy tính lớn. Server đòi hỏi những thành phần phần cứng và phần mềm đặc biệt để client có thể thực hiện giao tiếp, kết nối với hệ máy tính lớn và máy tầm trung. Hệ thống client/server cũng có thể bao gồm một hoặc nhiều hệ thống máy PC, một hoặc nhiều hệ máy tầm trung và hệ máy lớn, được đặt ở những địa điểm địa lý tách biệt. Hệ thống như vậy thường được biết đến như một hệ thống doanh nghiệp. Hệ thống đơn lẻ và mạng LAN có thể kết nối và chia sẻ dữ liệu qua một hệ thống mạng riêng (private network), ví dụ như mạng diện rộng (WAN) hoặc mạng công cộng (public network) như Internet. Hình 1-1  Thành phần phần cứng của hệ thống client/server 4  SQL Server 2008 căn bản - Hướng dẫn học qua ví dụ Các thành phần phần mềm của hệ thống client/server Hình 1-2 biểu diễn các thành phần phần mềm của một hệ thống client/server điển hình. Ngoài hệ điều hành mạng (network operating system) để quản lý chức năng hệ thống mạng, server còn cần một hệ quản trị cơ sở dữ liệu (database management system - DBMS) như Microsoft SQL Server hay Oracle. Các DBMS này quản lý cơ sở dữ liệu lưu trữ trên server. Ngược lại với server, mỗi client lại yêu cầu phần mềm ứng dụng (application software) để thực hiện những việc có ích. Đó có thể là các gói phần mềm thương mại như gói phần mềm tài chính, hoặc cũng có thể là những phần mềm được viết cho ứng dụng cụ thể. Mặc dù chạy trên client, phần mềm ứng dụng lại dùng dữ liệu được lưu trên server. Để thực hiện điều này, phần mềm ứng dụng dùng các API truy cập dữ liệu (Application Programing Interface - Giao diện lập trình ứng dụng) như ADO.NET. Vì các kỹ thuật làm việc với API phụ thuộc vào ngôn ngữ lập trình và bản thân API được sử dụng, nên bạn sẽ không học những kỹ thuật trên ở cuốn sách này. Thay vào đó, chúng ta sẽ tìm hiểu về SQL, còn gọi là ngôn ngữ truy vấn có cấu trúc (Structured Query Language). Thông qua SQL, mọi ứng dụng có thể giao tiếp được với bất cứ DBMS nào. (Theo quy ước, SQL được phát âm là S-Q-L hoặc sequel). Khi các phần mềm trên được cài đặt cho cả client và server, client sẽ thực hiện giao tiếp với server thông qua các truy vấn SQL (SQL query), hoặc gọi đơn giản là truy vấn. Những truy vấn này được chuyển tới DBMS thông qua các API. Sau khi client gửi truy vấn tới DBMS, DBMS thực hiện quá trình thông dịch và gửi lại kết quả trả về client. Như bạn thấy trong hình, cả client và server cùng phân chia thực hiện để hoàn thành quá trình thực thi một công việc của hệ thống client/server. Trong trường hợp này, DBMS trên server xử lý các yêu cầu của ứng dụng trên client. Về lý thuyết, điều này sẽ cân bằng khối lượng công việc giữa server và client, giúp hệ thống hoạt động hiệu quả hơn. Ngược lại, đối với hệ thống xử lý file (file-handling system), client phải làm mọi việc, do server chỉ được dùng để lưu trữ các file này. Chương 1  Giới thiệu cơ sở dữ liệu quan hệ và SQL  5  Phần mềm client, phần mềm server và giao diện SQL Truy vấn SQL Kết quả Client     Server cơ sở dữ liệu Phần mềm ứng dụng     DBMS API truy cập dữ liệu     Cơ sở dữ liệu Phần mềm server • • Lưu trữ và quản lý cơ sở dữ liệu của hệ thống client/server, mỗi server đòi hỏi một hệ quản trị cơ sở dữ liệu (DBMS) như Microsoft SQL Server. Các xử lý thực hiện bởi DBMS được hiểu là xử lý back-end (back-end processing - xử lý phía sau, bên dưới), và server cơ sở dữ liệu được hiểu là back-end. Phần mềm client • • • Phần mềm ứng dụng thực thi các công việc mà người dùng muốn thực hiện. Những phần mềm như vậy có thể tự phát triển hoặc mua. API truy cập dữ liệu (Application Programing Interface - Giao diện lập trình ứng dụng) cung cấp giao tiếp giữa chương trình ứng dụng và DBMS. ADO.NET là API mới nhất của Microsoft, cung cấp khả năng giao tiếp trực tiếp với SQL Server. Các API phiên bản cũ hơn đòi hỏi mô hình truy cập dữ liệu như ADO hoặc DAO, đi kèm với một driver(1), như OLE DB hay ODBC. Các xử lý thực hiện bởi phần mềm client được hiểu là xử lý front-end (front-end processing - xử lý bên trên), và client được hiểu là frontend. Giao diện SQL (SQL Interface) • • Phần mềm ứng dụng giao tiếp với DBMS bằng cách gửi truy vấn SQL thông qua API truy cập dữ liệu. Khi DBMS nhận truy vấn, nó sẽ cung cấp dịch vụ như trả về dữ liệu được yêu cầu (kết quả truy vấn - query result) cho client. SQL là viết tắt của Structured Query Language (ngôn ngữ truy vấn có cấu trúc), ngôn ngữ chuẩn dùng để làm việc với cơ sở dữ liệu quan hệ. So sánh hệ thống client/server và hệ thống xử lý file • • Trong hệ thống client/server, các xử lý sẽ được ứng dụng phân chia giữa client và server. Trong hệ thống xử lý file, mọi xử lý sẽ được thực hiện ở client. Mặc dù client có thể truy cập được dữ liệu lưu trong file trên server, nhưng không xử lý nào được thực hiện trên server. Chính vì vậy, hệ thống xử lý file không được coi là một hệ thống client/server. Driver: trong ngữ cảnh cuốn sách này, driver là một thành phần phần mềm cho phép ứng dụng tương tác với cơ sở dữ liệu. Nó cung cấp kết nối tới cơ sở dữ liệu và thực thi giao thức để truyền truy vấn từ client đến cơ sở dữ liệu và kết quả từ cơ sở dữ liệu đến client. (1) Hình 1-2  Thành phần phần mềm của hệ thống client/server 6  SQL Server 2008 căn bản - Hướng dẫn học qua ví dụ Các kiến trúc hệ thống client/server khác Ở dạng đơn giản nhất, hệ thống client/server bao gồm một server cơ sở dữ liệu đơn lẻ và một hay nhiều client. Nhiều hệ thống client/server ngày nay còn bổ sung thêm các server khác. Hình 1-3 là ví dụ mô tả hai hệ thống client/server, trong đó, một server được thêm vào giữa các client và server cơ sở dữ liệu. Hình minh họa đầu tiên mô tả về hệ thống trên nền Windows (Windows-based system) đơn giản. Với hệ thống này, chỉ giao diện người dùng (user interface) của ứng dụng mới hoạt động trên client. Các xử lý còn lại được thực hiện bởi một hay nhiều thành phần nghiệp vụ (business component) trên server ứng dụng (application server). Sau đó, client gửi yêu cầu xử lý tới server ứng dụng. Nếu yêu cầu này đòi hỏi truy cập dữ liệu trên cơ sở dữ liệu, server ứng dụng tính toán truy vấn phù hợp và chuyển nó tới server cơ sở dữ liệu. Kết quả câu truy vấn được gửi trả lại server ứng dụng để server này tiếp tục xử lý, rồi gửi trả lại phản hồi thích hợp tới client. Ở hình thứ hai, hệ thống trên nền web (web-based system) cũng thực hiện quá trình xử lý tương tự. Trong trường hợp này, trình duyệt web (web browser) trên client được dùng để gửi yêu cầu tới ứng dụng web (web application) chạy trên server web qua Internet. Ứng dụng web có thể sử dụng các dịch vụ web (web service) để thực hiện việc xử lý. Sau đó, ứng dụng web hoặc dịch vụ web có thể chuyển yêu cầu dữ liệu tới server cơ sở dữ liệu. Mặc dù hình minh họa đưa ra một ý tưởng về kiến trúc của hệ thống client/ server, nhưng trên thực tế hệ thống có thể phức tạp hơn thế. Ví dụ, trong hệ thống trên nền Windows, các thành phần nghiệp vụ có thể nằm phân tán trên nhiều server ứng dụng (application server), bất kể số lượng. Đồng thời, các thành phần này có thể giao tiếp với cơ sở dữ liệu nằm trên bất kể server cơ sở dữ liệu nào khác. Tương tự, các ứng dụng web và dịch vụ nền web có thể được phân tán trên nhiều server web, những server web này lại truy cập tới nhiều server cơ sở dữ liệu. Trong đa số trường hợp, bạn không nhất thiết phải biết kiến trúc hệ thống ra sao để sử dụng SQL. Trước khi tiếp tục, bạn nên biết hệ thống client/server không phải là hệ thống duy nhất hỗ trợ SQL. Ví dụ, các hệ thống máy tính lớn truyền thống và hệ thống thin client(1) đời mới cũng sử dụng SQL. Không giống như hệ thống client/server, hầu hết xử lý của những hệ thống này được thực hiện bởi máy tính lớn hoặc các máy hiệu năng cao. Những thiết bị đầu cuối (terminal) hay PC truy cập tới các hệ thống này sẽ hầu như không phải thực hiện xử lý nào. (1) Thin client: là các máy client mà năng lực xử lý, lưu trữ đều tập trung vào server. Chương 1  Giới thiệu cơ sở dữ liệu quan hệ và SQL  7  Hệ thống trên nền Windows sử dụng server ứng dụng Yêu cầu người dùng Truy vấn SQL Phản hồi Kết quả Client Giao diện người dùng Server ứng dụng Thành phần nghiệp vụ Server cơ sở dữ liệu DBMS Cơ sở dữ liệu Hệ thống trên nền web đơn giản Yêu cầu người dùng Yêu cầu người dùng Truy vấn SQL Internet Phản hồi Client Trình duyệt web Kết quả Phản hồi Server web Ứng dụng web Dịch vụ web Server cơ sở dữ liệu DBMS Cơ sở dữ liệu Tóm lược • • • • • Ngoài kiến trúc gồm server cơ sở dữ liệu và client, hệ thống client/server có thể bao gồm các server bổ sung, như server ứng dụng và server web. Thành phần nghiệp vụ thực hiện một phần trong quá trình xử lý, và thường được lưu trữ trên server ứng dụng. Cụ thể, những thành phần này được dùng để xử lý các yêu cầu cơ sở dữ liệu từ giao diện người dùng hoạt động trên client. Server web chủ yếu được sử dụng để lưu trữ các ứng dụng web (web application) và dịch vụ web (web service). Ứng dụng web là ứng dụng được thiết kế để hoạt động trên server web. Dịch vụ web giống như thành phần nghiệp vụ, chỉ khác là được thiết kế để chạy được trên server web giống như các ứng dụng web. Trong hệ thống trên nền web, một trình duyệt web chạy trên client gửi yêu cầu thông qua Internet tới server web. Sau đó, server web xử lý yêu cầu trên và chuyển yêu cầu dữ liệu tới server cơ sở dữ liệu. Nhiều kiến trúc hệ thống phức tạp hơn có thể bao gồm hai hay nhiều server ứng dụng, server web và server cơ sở dữ liệu. Hình 1-3  Các kiến trúc hệ thống client/server khác 8  SQL Server 2008 căn bản - Hướng dẫn học qua ví dụ Giới thiệu mô hình cơ sở dữ liệu quan hệ Năm 1970, tiến sỹ E. F. Codd đã phát triển mô hình cơ sở dữ liệu mới với tên gọi cơ sở dữ liệu quan hệ (relational database). Loại cơ sở dữ liệu này đã loại bỏ được những vấn đề liên quan tới chuẩn file và các thiết kế cơ sở dữ liệu khác. Sử dụng mô hình quan hệ, bạn có thể giảm thiểu việc dư thừa dữ liệu nhằm tiết kiệm không gian lưu trữ ổ đĩa và truy xuất dữ liệu hiệu quả. Bạn cũng có thể quan sát cũng như thao tác dữ liệu một cách trực quan, hiệu quả. Ngày nay, cơ sở dữ liệu quan hệ đã trở thành chuẩn cho các ứng dụng cơ sở dữ liệu. Cách tổ chức bảng cơ sở dữ liệu Mô hình cho cơ sở dữ liệu quan hệ chỉ ra dữ liệu được lưu trữ trên một hoặc nhiều bảng (table). Và mô hình này cũng cho thấy, mỗi bảng có thể được hình dung như một ma trận hai chiều gồm các hàng (row) và cột (column). Hình 1-4 mô tả một bảng quan hệ. Mỗi hàng của bảng này chứa thông tin về một nhà cung cấp. Trong thực tế, các hàng và cột của bảng cơ sở dữ liệu quan hệ thường được gọi tên theo thuật ngữ là các bản ghi (record) và trường (field). Một số gói phần mềm sử dụng một bộ thuật ngữ, một vài gói phần mềm lại sử dụng bộ thuật ngữ khác hoặc sử dụng kết hợp. Cuốn sách này sử dụng thuật ngữ hàng (row) và cột (column), bởi đây là những thuật ngữ được dùng trong SQL Server. Thông thường, mỗi bảng sẽ được mô hình hóa theo các thực thể ngoài thế giới thực như “nhà cung cấp” (Vendor) hoặc “hóa đơn” (Invoice). Và mỗi cột của bảng tương ứng với thuộc tính của thực thể đó, như “tên” (Name), “địa chỉ” (Address) hay “số điện thoại” (Phone Number). Mỗi hàng của bảng tương ứng với một thể hiện (instance) của thực thể. Mỗi giá trị được lưu trữ tại phần giao giữa hàng và cột thường được gọi là ô (cell). Nếu một bảng chứa một hay nhiều cột có khả năng xác định duy nhất mỗi hàng của bảng, bạn có thể định nghĩa những cột này được là khóa chính (primary key) của bảng. Ví dụ, khóa chính của bảng Vendors trong hình là cột VendorID. Trong ví dụ này, khóa chính chỉ chứa một cột. Tuy nhiên, khóa chính cũng có thể chứa hai hay nhiều cột và trong trường hợp này, nó còn được gọi là khóa chính phức hợp (composite primary key). Ngoài khóa chính, một số hệ quản trị cơ sở dữ liệu (DBMS) còn cho phép bạn định nghĩa thêm các khóa có khả năng xác định duy nhất mỗi hàng trong bảng. Ví dụ, nếu cột VendorName trên bảng Vendors chứa dữ liệu mang tính duy nhất, nó có thể được định nghĩa là khóa phụ (non-primary key). Trong SQL Server, cột VendorName còn được gọi là khóa đơn nhất (unique key). Index (chỉ mục) mang đến cách thức hiệu quả để truy cập các hàng trên bảng dựa vào giá trị của một hay nhiều cột. Vì ứng dụng thường truy cập hàng của bảng bằng cách tham chiếu tới giá trị của khóa, nên một index sẽ được tự động tạo ra cho mỗi khóa bạn định nghĩa. Tuy nhiên, bạn cũng có thể đánh index cho các cột khác. Ví dụ, nếu thường xuyên phải sắp xếp các hàng của bảng Vendors theo cột “Zip Code”, bạn có thể tạo index cho cột này. Tương tự như khóa, index có thể gồm một hoặc nhiều cột. Chương 1  Giới thiệu cơ sở dữ liệu quan hệ và SQL  9  Bảng Vendors trong cơ sở dữ liệu Accounts Payable Khóa chính Cột Hàng Khái niệm • • • • • • • • • Cơ sở dữ liệu quan hệ chứa nhiều bảng (table). Bảng chứa nhiều hàng và cột. Các hàng và cột còn được gọi là bản ghi và trường. Mỗi bảng sẽ được mô hình hóa theo thực thể trong thế giới thực, ví dụ như “hóa đơn” (Invoice) hoặc “nhà cung cấp” (Vendor). Mỗi cột biểu diễn thuộc tính của thực thể, như “tổng tiền” (Amount) của một “hóa đơn” hoặc “địa chỉ” (Address) của “nhà cung cấp”. Mỗi hàng chứa một tập giá trị cho thể hiện của thực thể, như một hàng đại diện cho một “hóa đơn” hay một “nhà cung cấp”. Phần giao của hàng và cột thường được gọi là ô. Một ô chỉ chứa giá trị đơn. Phần lớn các bảng đều có khóa chính, xác định duy nhất mỗi hàng trong bảng. Khóa chính thường là một cột, song cũng có thể chứa hai hay nhiều cột. Nếu một khóa chính gồm hai hay nhiều cột, nó được gọi là khóa chính phức hợp. Ngoài khóa chính, một số DBMS còn cho phép bạn định nghĩa một hay nhiều khóa phụ (non-primary key). Trong SQL Server, các khóa này còn được gọi là khóa đơn nhất (unique key). Tương tự như khóa chính, khóa phụ giúp xác định duy nhất mỗi hàng của bảng. Mỗi bảng cũng có thể được định nghĩa một hay nhiều index (chỉ mục). Index cung cấp cách thức hiệu quả để truy cập dữ liệu từ một bảng thông qua giá trị trên những cột cụ thể. Một index được tự động tạo ra cho mỗi khóa chính và khóa phụ của bảng. Hình 1-4  Cách tổ chức bảng cơ sở dữ liệu 10  SQL Server 2008 căn bản - Hướng dẫn học qua ví dụ Cách liên kết các bảng trong cơ sở dữ liệu quan hệ Các bảng trong cơ sở dữ liệu quan hệ được liên kết với những bảng khác thông qua giá trị trên các cột xác định. Hai bảng trong Hình 1-5 minh họa khái niệm này. Ở đây, mỗi hàng của bảng Vendors liên kết với một hay nhiều hàng của bảng Invoices. Liên kết này được gọi là quan hệ một - nhiều (one-to-many relationship). Thông thường, các quan hệ tồn tại giữa khóa chính ở một bảng và khóa ngoại (foreign key) ở một bảng khác. Khóa ngoại có thể là một hay nhiều cột trong một bảng và trỏ tới khóa chính của một bảng khác. Trong SQL Server, quan hệ cũng có thể tồn tại giữa khóa đơn nhất (unique key) trên một bảng và khóa ngoại trên một bảng khác. Mặc dù quan hệ một - nhiều là trường hợp hay xảy ra nhất, song giữa hai bảng cũng có thể có quan hệ một - một hoặc nhiều - nhiều. Nếu một bảng có quan hệ một - một (one-to-one relationship) với một bảng khác, dữ liệu trên hai bảng có thể được lưu trữ trên một bảng đơn. Vì lý do này, quan hệ một - một thường ít được sử dụng. Ngược lại, quan hệ nhiều - nhiều (many-to-many relationship) thường được thiết lập bằng cách sử dụng một bảng trung gian. Bảng trung gian này sẽ có quan hệ một - nhiều với hai bảng có quan hệ nhiều - nhiều với nhau. Nói cách khác, quan hệ nhiều - nhiều có thể được chia nhỏ thành hai quan hệ một - nhiều. Chương 1  Giới thiệu cơ sở dữ liệu quan hệ và SQL  11  Quan hệ giữa bảng Vendors và Invoices trong cơ sở dữ liệu Khóa chính Khóa ngoại Khái niệm • • • Các bảng trong cơ sở dữ liệu quan hệ liên kết tới mỗi bảng khác qua các cột khóa của chúng. Ví dụ, cột VendorID được dùng để liên kết bảng Vendors và bảng Invoices ở trên. Cột VendorID trong bảng Invoices được gọi là khóa ngoại (foreign key), bởi nó xác định tới hàng tương ứng trong bảng Vendors. Mỗi bảng có thể chứa một hay nhiều khóa ngoại. Trong SQL Server, khi định nghĩa khóa ngoại cho một bảng, bạn không thể thêm hàng vào bảng đó với khóa ngoại, trừ khi khóa ngoại tương ứng với một khóa chính trong bảng liên kết với bảng này. Quan hệ giữa các bảng trong một cơ sở dữ liệu tương ứng với quan hệ giữa các thực thể mà bảng đại diện. Loại quan hệ phổ biến nhất là quan hệ một - nhiều, như minh họa bởi hai bảng Vendors và Invoices ở trên. Mỗi bảng cũng có thể có quan hệ một - một hoặc quan hệ nhiều - nhiều tới một bảng khác. Hình 1-5  Cách liên kết các bảng trong cơ sở dữ liệu quan hệ 12  SQL Server 2008 căn bản - Hướng dẫn học qua ví dụ Cách định nghĩa các cột trong bảng Khi định nghĩa một cột của bảng, bạn có thể ấn định các thuộc tính cho cột đó, như thiết kế của bảng Invoices trong Hình 1-6. Một thuộc tính quan trọng nhất của cột là kiểu dữ liệu, cho biết loại thông tin được lưu trữ trong cột. Với SQL Server 2008, bạn có thể sử dụng một số kiểu dữ liệu (data type) được liệt kê trong hình minh họa. Khi định nghĩa cột của bảng, bạn thường ấn định kiểu dữ liệu để giảm thiểu việc sử dụng tài nguyên lưu trữ, bởi điều này sẽ nâng cao hiệu suất của các câu truy vấn sau này. Thêm vào đó, bạn phải chỉ ra cột có thể chứa giá trị null hay không. Null thể hiện giá trị chưa xác định, không có sẵn hoặc không thích hợp. Nếu cột không chấp nhận giá trị null, bạn buộc phải gán giá trị cho cột đó, hoặc bạn không thể lưu trữ cả hàng đó trong bảng. Bạn cũng có thể gán một giá trị mặc định (default value) cho mỗi cột. Giá trị này sẽ được gán cho cột đó khi không có giá trị nào được cung cấp. Bạn sẽ tìm hiểu sâu hơn về cách làm việc với giá trị null và giá trị mặc định ở các phần sau của cuốn sách. Mỗi bảng có thể chứa cột kiểu số (numeric column), giá trị của cột có thể được DBMS tự động tạo ra. Trong SQL Server, cột này được gọi là identity column (cột định danh), và bạn có thể thiết lập bằng cách sử dụng thuộc tính Is Identity, Identity Seed, và Identity Increment. Bạn sẽ học cách sử dụng các thuộc tính này ở Chương 5. Còn bây giờ, bạn chỉ cần lưu ý, khóa chính của bảng Vendors và bảng Invoices - VendorID và InvoiceID - chính là các identity column. Chương 1  Giới thiệu cơ sở dữ liệu quan hệ và SQL  13  Các cột của bảng Invoices Các kiểu dữ liệu phổ biến trong SQL Server Kiểu Mô tả bit Giá trị 1 hoặc 0 biểu diễn giá trị True (đúng) hoặc False (sai). int, bigint, smallint, tinyint Giá trị số nguyên (integer) với các kích thước khác nhau. money, smallmoney Các giá trị tiền tệ với độ chính xác lên tới bốn chữ số thập phân. decimal, numeric Các giá trị thập phân với độ chính xác đến ít nhất chữ số có nghĩa. Các giá trị có thể chứa phần nguyên và phần thập phân. float, real Các giá trị số dấu phẩy động chứa giá trị xấp xỉ của số thập phân. datetime, smalldatetime Ngày và giờ. char, varchar Chuỗi các chữ cái, ký hiệu và số trong bảng mã ký tự ASCII. nchar, nvarchar Chuỗi các ký tự, ký hiệu và số trong bảng mã ký tự Unicode. Tóm lược • • • • Kiểu dữ liệu của một cột chỉ ra kiểu và kích thước của thông tin có thể được lưu trữ trong cột đó. Định nghĩa của mỗi cột cũng cho biết nó có thể chứa hay không chứa giá trị null. Giá trị null chỉ ra rằng cột đó có giá trị chưa xác định. Mỗi cột có thể được định nghĩa với một giá trị mặc định. Giá trị mặc định sẽ được sử dụng khi thêm một hàng vào bảng mà giá trị trên cột này không được cung cấp. Mỗi cột cũng có thể được định nghĩa như một identity column. Identity column là một cột kiểu số mà các giá trị của nó được tự động tạo ra mỗi khi thêm hàng vào bảng. Hình 1-6  Cách định nghĩa các cột trong bảng 14  SQL Server 2008 căn bản - Hướng dẫn học qua ví dụ So sánh cơ sở dữ liệu quan hệ với các mô hình dữ liệu khác Đến đây, khi đã hiểu cách tổ chức cơ sở dữ liệu quan hệ, bạn có thể sẵn sàng tìm hiểu sự khác biệt giữa cơ sở dữ liệu quan hệ với các mô hình dữ liệu khác. Đặc biệt, bạn nên biết cách so sánh giữa cơ sở dữ liệu quan hệ với hệ thống file truyền thống, cơ sở dữ liệu phân cấp (hierachical database), và cơ sở dữ liệu mạng (network database). Hình 1-7 chỉ ra những khác biệt quan trọng nhất. Để bắt đầu, bạn cần nhận thức rõ rằng: Do cấu trúc vật lý của cơ sở dữ liệu quan hệ được định nghĩa và quản lý bởi DMBS, nên việc định nghĩa cấu trúc này trong các chương trình có sử dụng cơ sở dữ liệu là điều không cần thiết. Thay vào đó, bạn chỉ cần gọi tên các bảng và cột, và DBMS sẽ thực hiện những việc còn lại. Ngược lại, với hệ thống file truyền thống, bạn cần định nghĩa và quản lý các file của hệ thống trong mỗi chương trình sử dụng chúng. Bởi mỗi hệ thống file truyền thống chỉ là một tập hợp các file chứa dữ liệu của hệ thống. Thêm vào đó, nếu chỉnh sửa cấu trúc của một file, bạn phải chỉnh sửa tất cả chương trình sử dụng file đó. Đó là điều không cần thiết đối với cơ sở dữ liệu quan hệ. Mô hình cơ sở dữ liệu phân cấp và cơ sở dữ liệu mạng là tiền thân của mô hình cơ sở dữ liệu quan hệ. Mô hình cơ sở dữ liệu phân cấp hạn chế ở chỗ nó chỉ có thể mô tả quan hệ một - nhiều, còn được gọi là quan hệ cha/con (parent/child relationship). Mô hình cơ sở dữ liệu mạng là một mở rộng của mô hình cơ sở dữ liệu phân cấp, hỗ trợ mọi loại quan hệ. Mặc dù cơ sở dữ liệu phân cấp và cơ sở dữ liệu mạng không có những mặt hạn chế như hệ thống file truyền thống, song lại không dễ dùng như cơ sở dữ liệu quan hệ. Cụ thể, mỗi chương trình sử dụng cơ sở dữ liệu phân cấp và cơ sở dữ liệu mạng sẽ phải điều hướng thông qua cách thức sắp đặt vật lý của bảng mà chúng sử dụng. Ngược lại, trong cơ sở dữ liệu quan hệ, DBMS cung cấp việc tự động điều hướng. Ngoài ra, chương trình có thể định nghĩa mối quan hệ ad-hoc(1) giữa các bảng trong cơ sở dữ liệu quan hệ. Nói cách khác, chương trình có thể sử dụng các quan hệ không được định nghĩa trong DBMS. Đó là điều bất khả thi đối với cơ sở dữ liệu phân cấp và cơ sở dữ liệu mạng. Một loại cơ sở dữ liệu khác không được nhắc tới trong hình vẽ là cơ sở dữ liệu đối tượng (object database). Loại cơ sở dữ liệu này được thiết kế để lưu trữ và truy xuất các đối tượng được dùng bởi những ứng dụng được viết bằng ngôn ngữ lập trình hướng đối tượng như C#, C++ hay Java. Mặc dù có nhiều ưu điểm so với cơ sở dữ liệu quan hệ, song cơ sở dữ liệu đối tượng cũng tồn tại những nhược điểm riêng. Nói chung, cơ sở dữ liệu đối tượng hiện chưa được sử dụng rộng rãi, song cũng có chỗ đứng thích hợp trong một số lĩnh vực, như kỹ thuật xây dựng, viễn thông, dịch vụ tài chính, vật lý năng lượng và sinh học phân tử. (1) Quan hệ ad-hoc: cho phép tạo ra các bảng mới để truy vấn (gọi là truy vấn ad-hoc) từ việc nối các bảng đã tồn tại. Chương 1  Giới thiệu cơ sở dữ liệu quan hệ và SQL  15  So sánh cơ sở dữ liệu quan hệ với hệ thống file truyền thống Tính năng Hệ thống file truyền thống Cơ sở dữ liệu quan hệ Định nghĩa Mỗi chương trình sử dụng file phải định Các bảng, hàng, cột được định nghĩa nghĩa file và cách sắp đặt các bản ghi trong cơ sở dữ liệu và được truy cập trong file. qua tên. Bảo trì Nếu định nghĩa file thay đổi, mỗi chương Khi định nghĩa của bảng thay đổi, trình sử dụng file phải thay đổi theo. không cần thay đổi chương trình. Kiểm tra tính hợp lệ Mỗi chương trình thực hiện cập nhật dữ Có thể bao gồm việc kiểm tra dữ liệu liệu, phải bao gồm đoạn mã kiểm tra dữ hợp lệ. liệu hợp lệ. Quan hệ Mỗi chương trình phải cung cấp và tuân Có thể thực thi mối quan hệ giữa các theo quan hệ giữa các file. bảng sử dụng khóa ngoại; có thể sử dụng quan hệ ad-hoc. Truy cập dữ liệu Mỗi thao tác I/O (vào/ra) xác định rõ bản Chương trình có thể sử dụng SQL để ghi trong file và vị trí tương đối của nó truy cập dữ liệu được chọn trong một trong file hoặc giá trị khóa của bản ghi. hoặc nhiều bảng của cơ sở dữ liệu. So sánh cơ sở dữ liệu quan hệ với hệ thống cơ sở dữ liệu khác Tính năng Cơ sở dữ liệu phân cấp Cơ sở dữ liệu mạng Cơ sở dữ liệu quan hệ Quan hệ được hỗ trợ Một - nhiều. Một - nhiều, một - một, Một - nhiều, một - một nhiều - nhiều. và nhiều - nhiều; các quan hệ ad-hoc cũng có thể được sử dụng. Truy cập dữ liệu Chương trình phải bao gồm đoạn mã để điều hướng qua cấu trúc vật lý của cơ sở dữ liệu. Chương trình phải bao Chương trình có thể truy gồm đoạn mã để điều cập dữ liệu mà không hướng qua cấu trúc vật biết cấu trúc vật lý. lý của cơ sở dữ liệu. Bảo trì Các quan hệ mới hay có thay đổi có thể khó triển khai trong chương trình ứng dụng. Các quan hệ mới hay có Khi định nghĩa của bảng thay đổi có thể khó triển thay đổi, không cần thay khai trong chương trình đổi chương trình. ứng dụng. Tóm lược • • • • • Để làm việc với bất cứ mô hình dữ liệu nào khác ngoài mô hình cơ sở dữ liệu quan hệ, bạn phải biết cấu trúc vật lý của dữ liệu và mối quan hệ giữa các file hoặc bảng. Do khó thực hiện việc cài đặt các quan hệ trong hệ thống file truyền thống, dữ liệu dư thừa thường được lưu trữ trong các kiểu file này. Mô hình cơ sở dữ liệu phân cấp chỉ hỗ trợ quan hệ một - nhiều, còn gọi là quan hệ cha/con. Mô hình cơ sở dữ liệu mạng có khả năng hỗ trợ mọi loại quan hệ. Cơ sở dữ liệu file truyền thống, cơ sở dữ liệu phân cấp và cơ sở dữ liệu mạng thường đạt hiệu suất cao hơn cơ sở dữ liệu quan hệ, bởi chúng đòi hỏi ít tài nguyên của hệ thống hơn. Tuy nhiên, tính linh hoạt và dễ sử dụng của cơ sở dữ liệu quan hệ thường mang lại nhiều giá trị hơn ảnh hưởng không đáng kể này. Hình 1-7  So sánh cơ sở dữ liệu quan hệ với các mô hình dữ liệu khác 16  SQL Server 2008 căn bản - Hướng dẫn học qua ví dụ Giới thiệu về SQL và những hệ thống trên nền SQL (SQL-based system) Trong mục này, bạn sẽ nghiên cứu về SQL và tìm hiểu xem các hệ quản trị cơ sở dữ liệu trên nền SQL đã có những tiến triển ra sao. Thêm vào đó, mục này cũng trình bày phép so sánh giữa các cơ sở dữ liệu trên nền SQL (SQL-based) phổ biến nhất hiện nay. Tóm lược lịch sử SQL Trước bản phát hành đầu tiên của hệ quản trị cơ sở dữ liệu quan hệ (relational database management system - RDBMS), mỗi cơ sở dữ liệu đều có một cấu trúc vật lý duy nhất và một ngôn ngữ lập trình duy nhất mà các lập trình viên cần biết. Sự xuất hiện của SQL và RDBMS đã làm thay đổi điều đó. Hình 1-8 liệt kê các mốc lịch sử quan trọng của SQL. Năm 1970, tiến sỹ E. F. Codd công bố một bài báo mô tả mô hình cơ sở dữ liệu quan hệ khi ông đang làm việc cùng nhóm nghiên cứu tại IBM. Năm 1978, nhóm nghiên cứu của IBM đã phát triển hệ thống cơ sở dữ liệu dựa trên mô hình này có tên System/R và một loại ngôn ngữ truy vấn có tên SEQUEL (Structured English Query Language - Ngôn ngữ truy vấn tiếng Anh có cấu trúc). Mặc dù khi đó cơ sở dữ liệu và ngôn ngữ truy vấn chưa bao giờ được phát hành một cách chính thức, nhưng IBM vẫn tiếp tục phát triển mô hình quan hệ này. Những năm sau đó, công ty Relational Software, Inc. đã phát hành RDBMS đầu tiên có tên Oracle. RDBMS này hoạt động trên một máy tính nhỏ và dùng SQL làm ngôn ngữ truy vấn. Sản phẩm này đã đạt được thành công lớn và công ty quyết định đổi tên thành Oracle để phản ánh sự thành công đó. Năm 1982, IBM phát hành phiên bản thương mại đầu tiên của RDBMS trên nền SQL có tên SQL/DS (SQL/Data System - SQL/Hệ thống dữ liệu), tiếp theo là phiên bản DB2 (Database 2) vào năm 1985. Cả hai hệ thống đều chỉ chạy trên máy tính lớn của IBM. Sau đó, DB2 được cấu hình để hoạt động trên các hệ thống khác, bao gồm những máy sử dụng hệ điều hành Unix và Windows. Ngày nay, DB2 tiếp tục là hệ cơ sở dữ liệu hàng đầu của IBM. Trong suốt thập niên 1980, nhiều cơ sở dữ liệu khác trên nền SQL đã được phát triển, bao gồm cả SQL Server. Mặc dù đều sử dụng SQL làm ngôn ngữ truy vấn, cách thức triển khai của mỗi hệ thống đều khác nhau. Điều này bắt đầu thay đổi vào năm 1989, khi Viện Tiêu chuẩn Quốc gia Hoa Kỳ (American National Standards Institue - ANSI) công bố tập các chuẩn dành cho ngôn ngữ truy vấn cơ sở dữ liệu đầu tiên. Các chuẩn này được chỉnh sửa một vài lần sau đó, và gần nhất với thời điểm xuất bản cuốn sách này là năm 2003. Khi các nhà sản xuất cơ sở dữ liệu cố gắng tuân theo những chuẩn trên, việc cài đặt SQL của họ trở nên tương đồng hơn. Tuy nhiên, mỗi sản phẩm lại sử dụng hình thức ngôn ngữ (dialect) SQL riêng, bao gồm cả những bổ sung, và mở rộng (extension) so với chuẩn. Lợi ích chủ yếu của các chuẩn đem lại là sự đồng nhất của những câu lệnh SQL cơ bản trên mỗi hình thức ngôn ngữ. Kết quả là, khi bạn học một dạng ngôn ngữ SQL, bạn cũng có thể dễ dàng tìm hiểu dạng ngôn ngữ SQL khác. Tuy nhiên, việc chuyển một chương trình sử dụng loại cơ sở dữ liệu này sang loại cơ sở dữ liệu khác lại không dễ dàng. Thực tế, bất cứ ứng dụng quan trọng nào ít nhất cũng đòi hỏi những thay đổi nào đó, để có thể chuyển sang sử dụng một loại cơ sở dữ liệu khác. Chương 1  Giới thiệu cơ sở dữ liệu quan hệ và SQL  17  Các sự kiện quan trọng trong lịch sử SQL Năm Sự kiện 1970 Tiến sỹ E. F. Codd phát triển mô hình cơ sở dữ liệu quan hệ. 1978 IBM phát triển tiền thân của SQL, gọi là Ngôn ngữ truy vấn tiếng Anh có cấu trúc (Structured English Query Language - SEQUEL). Ngôn ngữ này được sử dụng trong hệ thống cơ sở dữ liệu có tên System/R, nhưng cả hệ thống và ngôn ngữ truy vấn đều không được phát hành. 1979 Relational Software, Inc. (sau này đổi tên thành Oracle) phát hành RDBMS đầu tiên. 1982 IBM phát hành hệ thống cơ sở dữ liệu quan hệ đầu tiên của mình, SQL/DS (SQL/Data System). 1985 IBM phát hành DB2 (Database 2). 1987 Microsoft phát hành SQL Server. 1989 Viện Tiêu chuẩn Quốc gia Hoa Kỳ (American National Standards Institute - ANSI) xuất bản chuẩn ngôn ngữ truy vấn cơ sở dữ liệu đầu tiên, gọi là ANSI/ISO SQL-89, hay SQL1. Các chuẩn này tương đương với hình thức ngôn ngữ trong ngôn ngữ DB2 SQL của IBM. Vì đây không phải là chuẩn nghiêm ngặt, nên hầu hết sản phẩm thương mại đều ít bám theo. 1992 ANSI xuất bản chuẩn đã sửa đổi (ANSI/ISO SQL-92, hay SQL2) nghiêm ngặt hơn SQL1 và kết hợp chặt chẽ nhiều tính năng mới. Các chuẩn này giới thiệu các cấp độ của việc tuân theo chuẩn, chỉ ra những mở rộng có thể có để các hình thái ngôn ngữ vẫn đáp ứng chuẩn. 1999 ANSI xuất bản SQL3 (ANSI/ISO SQL:1999). Chuẩn này tích hợp nhiều tính năng mới, bao gồm hỗ trợ đối tượng. Chuẩn này loại bỏ các cấp độ của việc tuân theo chuẩn, và được thay thế bởi đặc tả cốt lõi cùng các đặc tả cho chín gói bổ sung. 2003 ANSI xuất bản SQL4 (ANSI/ISO SQL:2003). Các chuẩn này giới thiệu những tính năng liên quan tới XML, chuẩn hóa tuần tự (sequence) và identity column (cột định danh). Tóm lược • • • SQL-92 đầu tiên cung cấp ba cấp độ tuân theo chuẩn (level of compliance, hay level of conformance) là entry (bắt đầu), intermediate (trung gian) và full (đầy đủ). Cấp độ transitional (quá độ) về sau mới được đưa vào giữa mức entry và intermediate, vì độ chênh lệch giữa hai cấp độ này quá lớn. SQL:1999 bao gồm đặc tả cốt lõi (core specification) định nghĩa những yếu tố thiết yếu phải tuân thủ kèm theo chín gói (package). Mỗi gói này được thiết kế để phục vụ cho một mảng thị trường riêng. Mặc dù SQL là ngôn ngữ chuẩn, mỗi nhà cung cấp lại có những hình thái (dialect) SQL riêng, hay biến thể (variant) SQL riêng, bao gồm cả những mở rộng so với chuẩn. SQL trên SQL Server có hình thái ngôn ngữ được gọi là Transact-SQL. Hiểu về “chuẩn SQL” giúp ích cho bạn • • Hầu hết câu lệnh SQL cơ bản đều giống nhau trên mọi hình thái ngôn ngữ. Khi bạn học hình thái ngôn ngữ SQL này, bạn cũng dễ dàng tìm hiểu hình thái ngôn ngữ khác. Hiểu về “chuẩn SQL” không giúp được bạn • Bất kỳ chương trình nào cũng đòi hỏi sự thay đổi nếu bạn muốn chuyển đổi từ cơ sở dữ liệu này sang cơ sở dữ liệu SQL khác. Hình 1-8  Tóm lược lịch sử SQL 18  SQL Server 2008 căn bản - Hướng dẫn học qua ví dụ So sánh Oracle, DB2 và SQL Server Mặc dù cuốn sách nói về SQL Server, nhưng có lẽ bạn cũng muốn biết thêm về các DBMS khác trên nền SQL. Hình 1-9 so sánh hai trong nhiều DBMS khá phổ biến: Oracle và DB2, với SQL Server. Một trong những điểm khác biệt lớn giữa SQL Server và các DBMS khác là SQL Server chỉ hoạt động trên hệ điều hành Windows. Ngược lại, Oracle và DB2 có thể hoạt động trên hầu hết hệ điều hành như z/OS, Unix và Windows. Vì các nhà phát triển coi z/OS và Unix ổn định, an toàn hơn Windows, hầu hết công ty lớn đều sử dụng z/OS hay Unix là hệ điều hành cho server để lưu trữ cơ sở dữ liệu dành cho các ứng dụng thiết yếu của họ. Ban đầu, DB2 được thiết kế để chạy trên máy tính lớn của IBM và tiếp tục là lựa chọn hàng đầu về cơ sở dữ liệu trên các hệ thống này. Nếu hệ thống máy tính lớn của IBM và các server mới bắt buộc phải hoạt động cùng nhau, DB2 cũng tỏ rõ sự thống trị ở môi trường lai này. Mặc dù nổi tiếng vì chi phí cao, DB2 cũng nổi tiếng về độ tin cậy và dễ sử dụng. Oracle có thể đáp ứng rất nhiều yêu cầu cài đặt của khách hàng và tiếp tục thống trị thị trường, đặc biệt là thị trường server chạy hệ điều hành Unix. Oracle hoạt động tốt với các hệ thống lớn và là một hệ thống cực kỳ đáng tin cậy, nhưng chi phí cao và khó sử dụng. SQL Server được sử dụng rộng rãi ở các hệ thống cỡ nhỏ và vừa với chi phí không cao, lại dễ sử dụng. Tuy nhiên, độ tin cậy và khả năng mở rộng để phục vụ lượng lớn người dùng của SQL Server còn rất hạn chế. Tất nhiên, cả ba cơ sở dữ liệu trên đang có những bước phát triển bền vững và cạnh tranh với nhau trên nhiều phân khúc thị trường. Ví dụ, một số nhà phát triển cho rằng các phiên bản mới nhất của Oracle và DB2 dễ sử dụng hơn. Thêm vào đó, Oracle và DB2 còn phát hành những phiên bản cơ sở dữ liệu chi phí thấp ra thị trường. Hệ quả là, Oracle và DB2 đang bắt đầu lấy thị phần từ tay SQL Server trên các hệ thống cỡ trung bình. Ngược lại, một số nhà phát triển khác lại cho rằng phiên bản mới nhất của SQL Server đã được cải thiện về tính bảo mật, độ tin cậy, hiệu suất và tính mở rộng. Vì vậy, họ cho rằng SQL Server đã sẵn sàng để sử dụng cho những hệ thống thiết yếu với một lượng lớn người dùng. Các hệ thống trên nền SQL khác Nhiều hệ thống khác trên nền SQL cũng có thể được sử dụng. Ví dụ, nếu tìm kiếm trên Internet, bạn sẽ thấy hàng tá sản phẩm cơ sở dữ liệu quan hệ với sự góp mặt của các công ty như Informix, Sybase và Teradata. Song hành cùng các hệ thống có bản quyền này là một số hệ thống mã nguồn mở (open source system). Mã nguồn của các hệ thống này được công khai, tái sử dụng và phân phối miễn phí. Hai hệ thống phổ biến nhất là MySQL và PostgreSQL. Những cơ sở dữ liệu này đều hoạt động được trên hầu hết các hệ điều hành, bao gồm cả Unix và Linux. Chương 1  Giới thiệu cơ sở dữ liệu quan hệ và SQL  19  Tính năng của Oracle, DB2 và SQL Server Loại Oracle IBM Microsoft Phát hành 1979 1985 1987 Phiên bản hiện tại Oracle 11g DB2 9 SQL Server 2008 Nền tảng Unix OS/390, z/OS và AIX Windows z/OS Unix Windows Windows Điểm mạnh Tin cậy Tin cậy Điểm yếu Khó sử dụng Hệ thống điển hình Trung bình đến rất lớn Dễ sử dụng Ít tin cậy Lớn đến rất lớn Nhỏ đến trung bình Kết nối mạng Kiến trúc tập trung Kết nối mạng Nhiệm vụ quan trọng Nhiệm vụ quan trọng Toàn doanh nghiệp Toàn doanh nghiệp Tóm lược • • • Oracle được sử dụng chủ yếu cho các hệ thống lớn, nhiệm vụ quan trọng và hoạt động trên một hay nhiều server Unix. DB2 được sử dụng chủ yếu cho các hệ thống lớn, nhiệm vụ quan trọng và chạy trên máy tính cỡ lớn của IBM (IBM mainframe), dùng hệ điều hành z/OS hoặc OS/390. SQL Server được sử dụng chủ yếu cho các hệ thống nhỏ và trung bình hoạt động trên một hay nhiều server Windows. Hình 1-9  So sánh Oracle, DB2 và SQL Server 20  SQL Server 2008 căn bản - Hướng dẫn học qua ví dụ Các câu lệnh Transact-SQL Trong mục này, bạn sẽ được học về một số câu lệnh SQL được cung cấp bởi SQL Server. Như đã thấy, bạn có thể sử dụng một số câu lệnh này để thao tác dữ liệu, và dùng một số lệnh khác để làm việc với các đối tượng cơ sở dữ liệu. Mặc dù ngay sau khi đọc xong, bạn chưa thể viết mã các câu lệnh này, nhưng bạn sẽ có những hình dung về cách làm việc với chúng. Sau đó, bạn đã có sự chuẩn bị để tìm hiểu chi tiết cách viết các lệnh này được trình bày trong những phần sau của cuốn sách. Giới thiệu các câu lệnh SQL Hình 1-10 tóm tắt một số câu lệnh phổ biến nhất của SQL, được chia làm hai loại. Các lệnh làm việc với dữ liệu trong cơ sở dữ liệu được gọi là ngôn ngữ thao tác dữ liệu (data manipulation language - DML). Bốn câu lệnh này thường được các lập trình viên sử dụng nhiều nhất. Các lệnh làm việc với những đối tượng trong cơ sở dữ liệu được gọi là ngôn ngữ định nghĩa dữ liệu (data definition language - DDL). Trên những hệ thống lớn, các lệnh này thường được quản trị viên cơ sở dữ liệu (database administrator DBA) sử dụng. Đây là công việc của DBA nhằm bảo trì cơ sở dữ liệu đã có, nâng cao hiệu suất và tạo các cơ sở dữ liệu mới. Với những hệ thống nhỏ hơn, các lập trình viên SQL cũng có thể là DBA. Bạn sẽ thấy ví dụ về một số lệnh này ở hình minh họa tiếp theo, đồng thời học cách sử dụng chúng ở Chương 5.
- Xem thêm -

Tài liệu liên quan