Đồ án môn học :Công nghệ phần mềm MS SQL Server và Postgre SQL

doc
Số trang Đồ án môn học :Công nghệ phần mềm MS SQL Server và Postgre SQL 46 Cỡ tệp Đồ án môn học :Công nghệ phần mềm MS SQL Server và Postgre SQL 331 KB Lượt tải Đồ án môn học :Công nghệ phần mềm MS SQL Server và Postgre SQL 5 Lượt đọc Đồ án môn học :Công nghệ phần mềm MS SQL Server và Postgre SQL 79
Đánh giá Đồ án môn học :Công nghệ phần mềm MS SQL Server và Postgre SQL
4.1 ( 4 lượt)
Nhấn vào bên dưới để tải tài liệu
Để tải xuống xem đầy đủ hãy nhấn vào bên trên
Chủ đề liên quan

Nội dung

MS SQL Server vµ Postgre SQL Đồ án môn học :Công nghệ phần mềm Sinh viên thực hiện: Nguyễn Tuấn Anh Đỗ Minh Ngọc Phạm Hồng Phúc Nguyễn Hoàng Tú Lớp Tin 7- K44 Phần I. Giới thiệu chung. 1. SQL là gì? SQL là viết tắt của Structure Query Language, nó là một công cụ quản lý dữ liệu được sử dụng phổ biến ở nhiều lĩnh vực. Hầu hết các ngôn ngữ bậc cao đều có trình hỗ trợ SQL như Visual Basic,Oracle,Visual C... Trong Oracle tất cả các chương trình và người sử dụng phải sử dụng SQL để truy nhập vào dữ liệu trong CSDL của Oracle. Các chương trình ứng dụng và các công cụ Oracle cho phép người sử dụng truy nhập tới CSDL mà không cần sử dụng trực tiếp SQL. Nhưng những ứng dụng đó khi chạy phải sử dụng SQL. 2.Lịch sử phát triển: SQL được phát triển từ ngôn ngữ SEQUEL2 bởi IBM theo mô hình Codd tại trung tâm nghiên cứu của IBM ở California vào những năm 70 cho hệ thống quản trị cơ sở lớn. 1 MS SQL Server vµ Postgre SQL Ban đầu SQL được sử dụng trong các ngôn ngữ quản lý CSDL và chạy trên các máy đơn lẻ. Song do sự phát triển nhanh chóng của nhu cầu xây dựng những CSDL lớn theo mô hình khách chủ( trong mô hình này toàn bộ CSDL được tập trung trên máy chủ (Server)). Mọi thao tác xử lý dữ liệu được thực hiện trên máy chủ bằng các lệnh SQL máy trạm chỉ dùng để cập nhập hoặc lấy thông tin từ máy chủ). Ngày nay trong các ngôn ngữ lập trình bậc cao đều có sự trợ giúp của SQL. Nhất là trong lĩnh vực phát triển của Internet ngôn ngữ SQL càng đóng vai trò quan trọng hơn. Nó được sử dụng để nhanh chóng tạo các trang Web động.. SQL đã được viện tiêu chuẩn quốc gia Mỹ (ANSI) và tổ chức tiêu chuẩn quốc tế (ISO) chấp nhận như một ngôn ngữ chuẩn cho CSDL quan hệ. Nhưng cho đến nay chuẩn này chưa đưa ra đủ 100%. Nên các SQL nhúng trong các ngôn ngữ lập trình khác nhau đã được bổ xung mở rộng cho SQL chuẩn cho phù hợp với các ứng dụng của mình. Do vậy có sự khác nhau rõ ràng giưã các SQL. 3 Đối tượng làm việc của SQL: Là các bảng ( tổng quát là các quan hệ dữ liệu hai chiều). Các bảng này bao gồm một hoặc nhiều cột và hàng. Các cột gọi là các trường, các hàng gọi là các bản ghi. Cột với tên gọi và kiểu dữ liệu (kiểu dl của mỗi cột là duy nhất)xác định tạo nên cấu trúc của bảng ( ta có thể dùng lệnh Desc[ribe] TABLE-name để xem cấu trúc của bảng, phần tuỳ chọn[] có thể được bỏ trong Oracle). Khi bảng đã được tổ chức hệ thống cho một mục đích nào đó có một CSDL SQL thực hiện thao tác trên các bảng này bằng những câu lệnh truy vấn. Chúng có tác dụng bao gồm tìm ra những quan hệ theo yêu cầu hay tạo ra những bảng mới, những quan hệ mới... Do đề tài là tìm hiểu SQL server nên chúng em không đi chi tiết vào những vấn đề này. II. Giới thiệu chung SQL Server SQL Server là một sản phẩm của tập đoàn phần mềm nổi tiếng Microsoft. Nó được thị trường chấp nhận một cách rộng rãi vào những phiên bản 6.5 trở lên. Khi ra đời phiên bản 7.0, hãng này có tuyên bố họ thay đổi toàn bộ engine bên trong cho server và tạo ra một bước nhảy vọt. Một số đặc tính vốn có của các version trước không còn tương thích với version 7.0. Từ phiên bản 7.0 lên đến 8.0 ( tức là Microsoft SQL Server 2000) có sự tăng cường mạnh mẽ về các tính năng thao tác trên các Web site và làm cho nó đáng tin cậy hơn. Một trong những đặc điểm được coi là nổi bật của phiên bản 2000 là khả năng cài đa phiên bản trong cùng một máy mà không cần gỡ bỏ các phiên bản tr ước nếu có. Người ta gọi đấy là Mutliple-Instance. Khi đó các phiên bản cũ trên máy là DefaultInstance còn phiên bản 2000 vừa cài có tên là Named Instance. Để tiện theo kịp công nghệ mới, bắt đầu từ đây trở đi, chúng em xin trình bày về những đặc điểm trong SQL Server 2000. 2 MS SQL Server vµ Postgre SQL Phần 2 SQL Server. I. SQL server 2000. 1. Khái niệm. SQL server là một hệ thống quản lý cơ sở dữ liệu ( RDBMS – Relational Database Management System ) và sử dụng Transact-SQL để thao tác dữ liệu trên các máy khách và máy chủ. Một RDBMS bao gồm những database, data engine, các ứng dụng dùng quản lý dữ liệu và các bộ phận khác nhau trong RDBMS. SQL server được tối ưu nhằm tăng khả năng quản lý một khối lượng cơ sở dữ liệu rất lớn ( very large database environment). Cỡ vào khoảng hàng Tera-Byte và đồng thời phục vụ hàng ngàn user. Ngoài ra, SQL server còn có thể cùng thao tác với các loại server khác như IIS ( Microsoft Internet Information Server), E-Commerce... 2. Các ấn bản của SQL server 2000 a. Enterprise: có đầy đủ tính năng của một SQL Server. Cho phép chạy tốt trên hệ thống 32 CPUs và 64 GB RAM. Nó được tích hợp các dịch vụ phân tích dữ liệu hiệu quả (Analysis Service). b. Standard: phù hợp cho các công ty vừa và nhỏ do giá thành rẻ hơn nhiều Enterprise, tất nhiên không thể có đầy đủ các tính năng như ấn bản trên. Song nó cũng chạy tốt trên hệ thống 4 CPUs và 2 GB Ram. c. Personal: đây là một ấn bản tối ưu cho phép chạy trên các máy tính cá nhân và được cài trên hầu hết các phiên bản Window. d. Developer: có đầy đủ tính năng như ấn bản Enterprise nhưng giới hạn số lượng người dùng kết nối. Đây là một ấn bản nên cài đặt với người mới sử dụng trên Window 2000 hay Window NT e. Desktop Engine: là một engine chạy trên desktop không giao diện người dùng, kích thước cơ sở dữ liệu giới hạn khoảng 2GB. 3 MS SQL Server vµ Postgre SQL f. Win CE: dùng cho các ứng dụng trên Window CE g. Trial: một ấn bản dùng thử, có đầy đủ khả năng của ấn bản Enterprise, cho phép dùng miễn phí nhưng chỉ được dùng trong khoảng thời gian cho trước. 3. Các thành phần cơ bản trong hệ thống SQL Server Một hệ thống SQL Server có tương đối nhiều thành phần. Dưới đây mô tả chúng. Web Application Line of Business. Reporting Application Administration Tools DMO / DSO / WMI MDX ADO/OLE DB/ HTTP / ODBC Analysis Services Mutli Dimension Cube Relational Database Engine Enterprise XML Transact-SQL Query Data Transformation Service Relational Database Engine Enterprise Edition OLTP Database Replication Remote OLE DB Data Source Mobile Disconnected Users or Desktop Database Relational Database Engine Personal Edition or Desktop Engine Edition OLAP Data WareHouse SQL Server for Window CE 4 Local Database Local Database MS SQL Server vµ Postgre SQL a. Relational Database Engine: đây là thành phần cơ bản nhất của SQL Server. Nó có khả năng chứa dữ liệu ở các quy mô khác nhau như dạng bảng hay các kiểu kết nối thông dụng của Microsoft ( ADO-Activex Data Object, OLE DB, ODBC- Open Database Connectivity). Bên cạnh đó, nó có khả năng tự điều chỉnh như thêm tài nguyên của máy khi cần và trả lại tài nguyên cho hệ điều hành khi user log off. b. Replication: khả năng nhân bản. Nếu một user có một database dùng chứa dữ liệu được các ứng dụng thường truy cập tới. Tuy nhiên, có lúc user muốn dùng database này trên server khác để tạo ra một báo cáo nhằm tránh ảnh hưởng cho server chính. Điều này gây ra một khó khăn là làm thế nào để cập nhập database này trên server chính. Cơ chế nhân bản cho phép thực hiện điều này. c. DTS ( Data Transformation Service): dịch vụ chuyển giao dữ liệu. Khi có người dùng sử dụng trong một công ty có các dữ liệu được lưu trữ tại nhiều nơi và tại các dạng khác nhau như Oracle, Microsoft Access, DB2... thì làm thế nào để chuyển dữ liệu giữa các server có các dữ liệu khác nhau về định dạng như thế này? Chức năng DTS cho phép chuyển đổi cả về vị trí lẫn chuyển giao các định dạng cho nhau. d. Analysis Service: dịch vụ phân tích dữ liệu. Đây là một dịch vụ được cung cấp rất hiệu quả trong việc tìm được những thông tin cần thiết trong database dựa vào khái niệm khối đa chiều (multiple-dimension cube) và khai phá dữ liệu (data-mining) e. English Query: những người đã từng học SQL thì rõ ràng đây là một phần không thể thiếu. Chúng là những câu lệnh truy vấn thao tác cơ sơ dữ liệu. f . Meta Data Service: đây là một dịch vụ giúp cho lưu trữ và xử lý Meta data dễ dàng hơn. Chúng ta nên hiểu rằng Meta data là những thông tin mô tả cấu trúc của dữ liệu trong database như dữ liệu kiểu cột nào có thuộc tính khoá chính... Những kiểu dữ liệu này cũng được lưu trữ trong database nhưng khác với những loại dữ liệu thông thường nên gọi là Meta data. g. SQL Server Tools: những công cụ cho người quản trị cơ sở dữ liệu. Chúng có một số công cụ dưới đây: - Enterprise Manager: cho người dùng toàn cảnh hệ thống cơ sở dữ liệu một cách trực quan. Nó quan trọng với những người mới học SQL. 5 MS SQL Server vµ Postgre SQL - Query Analyzer: cho phép sửa lỗi câu lệnh SQL rất quan trọng đối với những người quản trị hệ thống. - SQL Profiler: có khả năng bắt các sự kiện hay hoạt động diễn ra trên một SQL server và lưu lại dưới dạng text hữu dụng trong việc kiểm soát server. h. Data Warehousing Framework: là tập hợp các thành phần và các API thực thi các tính năng lưu trữ dữ liệu của SQL Server 2000. Nó cung cấp một giao diện chung vốn được sử dụng bởi nhiều thành phần khác nhau để tạo và sử dụng một nơi lưu trữ dữ liệu. 4. Những tính năng trong SQL Server 2000  Tăng cường khả năng liên kết với Internet. Cho phép xuất các kết quả của Transact-SQL ra dạng XML với Web hoặc các trình ứng dụng kinh doanh bằng API ADO và OLE DB.  Bao gồm một ISAPI DLL cho phép các gốc ảo trong Microsoft Internet Information (IIS) liên kết với một instance của SQL Server. Các trình ứng dụng Internet có thể tạo các chuỗi URL để tham chiếu tới một gốc ảo của SQL Server và chứa một câu lệnh Transact-SQL. Câu lệnh này được gởi tới một instance của SQL Server và cho kết quả dạng XML.  Có các tính năng tối ưu hoá cao, hỗ trợ cho môi trường có khối lượng cơ sở dữ liệu lớn. Các phiên bản cũ hơn 6.5 có thể hỗ trợ các cơ sở dữ liệu từ 200GB - 300GB, còn đối với 7.0 trở lên là terabyte.  Trình cơ sở dữ liệu quan hệ SQL Server hỗ trợ tạo các index trên các khung nhìn. Tập hợp kết quả index được xác định lúc index được tạo ra và được bảo lưu lúc dữ liệu nền tảng được sửa chữa. Nhờ tạo ra một index trên một khung nhìn, việc thực hiện các phép tính phức tạp trên số lượng dữ liệu lớn có thể được gia tăng về tốc độ các query liên tiếp theo thứ tự độ rộng.  SQL Server tự động cấu hình khi chạy. Nhiều user cùng kết nối với SQL Server thì nó có thể sử dụng tài nguyên bổ sung. Nếu các trình ứng dụng khác cùng chạy trên server thì SQL Server sẽ giảm sử dụng bộ nhớ ảo để dành các trình ứng dụng kia...  Có các tính năng bảo vệ đầy đủ đối với các môi trường nhằm đảm bảo tính an toàn ngăn các sự cố như nhiều user cùng cố cập nhập cùng một loại dữ liệu trong một thời điểm. 6 MS SQL Server vµ Postgre SQL  Nhiều instance SQL Server 2000 có thể cùng chạy trên cùng một máy tính. Chẳng hạn, 1 công ty cung cấp các dịch vụ cơ sở dữ liệu cho nhiều khách hàng khác có thể chạy 1 instance của SQL Server cho mỗi khách hàng.  Các trình ứng dụng SQL Server có thể chạy trên cùng máy tính với SQL Server. II. Transact SQL 1. Khái niệm về Transact SQL (T-SQL) Thực chất T-SQL là một dạng mở rộng của chuẩn SQL theo ISO ( International Organization for Standardization) và ANSI ( American National Standards Institute) được sử dụng trong các SQL Server (nó khác với Procedural-SQL dùng trong Oracle). Có thể hiểu T-SQL là một ngôn ngữ chính giúp người dùng giao tiếp với SQL Server. 2. Phân loại. T-SQL bao gồm 3 nhóm sau đây a. Data Definition Language ( DDL): chứa các lệnh quản lý thuộc tính của database như hàng, cột, tạo bảng mới... Chúng thường có dạng. Để tạo ra một đối tượng có tên là name_Object Creat name_Object Để thay đổi định nghĩa bảng tên là name_Object Alter name_Object Để xoá bảng tên name_Object Drop name_Object b. Data Control Language ( DCL): đây là các lệnh trên từng Object. Chúng có các lệnh như là Grant, Revoke, Deny... c. Data Manipulation Language ( DML): đây là các lệnh cho phép thao tác dữ liệu. Chúng có dạng Select, Delete, Update, Insert... Select Name, Class From Customers 7 MS SQL Server vµ Postgre SQL Where (ClassName=’Tin7-K44’) Trong ví dụ trên là, chọn Name, Class trong bảng Customers có ClassName là chuỗi Tin7-K44. 3. Cú pháp của T-SQL a. Identifiers: là tên của các đối tượng cơ sở dữ liệu. Các đối tượng ở đây là những table, view, index... Có 2 loại identifier: regular identifier và delimited identifier (loại này cần phải có dấu ngoặc vuông đi kèm []) Select * From [My Table] Where [Order]=40 Lý do đặt Order trong dấu ngoặc vuông như trên là tránh va chạm với từ khoá Order. b. Variances: biến trong SQL phải khai báo kiểu. Bắt đầu một biến luôn có @. Trong trường hợp biến là toàn cục cần 2 dấu @@. DECLARE @IdClass SET @IdClass=3 SELECT * FROM Customers WHERE IdClassRoom=@IdClass + 2 c. Function: bao gồm những hàm có sẵn và những hàm do người dùng tự xây dựng Hàm có sẵn lại thuộc vào 3 loại sau: - Rowset Functions: trả về một đối tượng như là recordset. Aggregate Functions: thực hiện tính toán và trả về các giá trị như tổng, tích, trung bình... Scalar Functions: làm việc trên các giá trị đơn và trả về giá trị đơn. Nó, chẳng hạn, cắt lấy phần tháng trong kiểu date... d. Comment: những lời chú thích được đặt trong /*....*/ 4. Thực thi lệnh trong SQL Server. a. Lệnh đơn. Đầu tiên, 1 lệnh đơn được phân tích cú pháp thông qua một bộ phân tích cú pháp là Parser. Tiếp đến, SQL Optimizer sẽ thực thi tối ưu câu lệnh nhằm tăng tốc độ và ít tốn tài nguyên. Sau đó, SQL Server Engine sẽ thực hiện và trả về kết quả. b. Tập nhóm lệnh. 8 MS SQL Server vµ Postgre SQL SQL Server cũng thực hiện tối ưu cho tập lệnh như các lệnh đơn và tìm cách thực thi tối ưu nhất. Đồng thời, chứa các lệnh trên đã biên dịch trong bộ nhớ. Sau đó, nếu các lệnh trên được gọi lại thì nó sẽ được chạy nhanh hơn nhờ không phải biên dịch lại. Bên cạnh đó, còn 1 lệnh mà không thuộc T-SQL. Đó là lệnh GO. Lệnh này thông báo cho biết kết thúc một tập nhóm lệnh để thực thi tập lệnh. III. Cơ sở dữ liệu trên SQL Server 1. Cấu trúc của SQL Server. SQL Server có là một hệ thống multiple-instance như đã nói ở trên. Do vậy, chúng ta khi nói đến instance nào đó của Server thì hiểu rằng đang nói tới Default instance. Một instance bất kì của Server bao gồm 4 cơ sở dữ liệu hệ thống và có 1 hay nhiều cơ sở dữ liệu người dùng. 4 cơ sở dữ liệu hệ thống bao gồm: - Master: chứa thông tin hệ thống, các thông tin về database khác trong hệ thống, vị trí các file dữ liệu, thiết kế cấu hình hệ thống, các mã số khi đăng nhập. Tempdb: chứa các bảng biểu hay các hàm lưu trữ tạm thời trong quá trình làm việc bởi các user hay chính do SQL Server Engine. Các bảng này tự động biến mất khi khởi động lại SQL Server hay cắt kết nối. Model: có vai trò như một bản mẫu cho các database khác. Khi mà user tạo ra một database cho mình thì SQL sẽ copy những thông tin này vào database của user vừa tạo. Msdb: những dữ liệu này được SQL Server Agent sử dụng hoặch định các báo động và các công việc làm cần thiết. 2. Cấu trúc của một SQL Server Database Mỗi một database trong SQL Server bao giờ cũng có ít nhất 1 file chính và có thể có 1 hay nhiều file phụ đồng thời có 1 file transaction log. - Primary Data File (file chính): có phần mở rộng là .mdf. Nó chứa dữ liệu và các bảng hệ thống. - Secondary Data File (file phụ): có phần mở rộng là .ndf. Thường được dùng khi database phân chia trên nhiều đĩa. 9 MS SQL Server vµ Postgre SQL - Transaction Log File : thường có phần mở rộng là .ldf. Chứa những sự thay đổi trong database và đầy đủ thông tin để có thể roll back hay roll forward. Trong SQL Server thì dữ liệu được lưu trữ theo từng Page 8KB và 8 Page liên tục tạo ra một phần mở rộng. database tÖp d÷ liÖu .mdf hay .ndf tÖp log .ldf 8 Page s 8KB liªn tiÕp nnha u 1 page 8KB Trong SQL Server, muốn lưu trữ dữ liệu vào 1 bảng thì chúng ta phải dành một khoảng trống cho bảng đó. Những khoảng trống đó là các mở rộng ở trên. Có 2 loại mở rộng: phần mở rộng hỗn hợp ( mixed extend - cho phép chứa nhiều bảng trong cùng một mở rộng) và phần đồng bộ ( uniform extend - chỉ chứa dữ liệu của một bảng table). Đầu tiên, SQL Server thực hiện phần mở rộng hỗn hợp cho dữ liệu của một bảng và khi dữ liệu tăng trưởng thì chuyển sang phần đồng bộ. 3. Nguyên tắc hoạt động của file Transaction Log. Như đã nói ở trên, file này ghi nhận sự thay đổi trong cơ sở dữ liệu. Quá trình thực hiện: khi có sự thay đổi data bằng các lệnh Insert, Update, Delete... từ các trình ứng dụng của người dùng, SQL Server sẽ tải trang dữ liệu tương ứng lên bộ nhớ ( vùng bộ nhớ này còn gọi là data cache). Tại đây, dữ liệu trên trang này được thay đổi ( những trang này đựơc gọi là dirty page) và những sữ thay đổi này được ghi vào file này. Sau cùng có một quá trình kiểm tra và ghi vào đĩa cứng nội dung của file này. 10 MS SQL Server vµ Postgre SQL Quá trình đó được gọi là Check Point Process. Tuy nhiên, không chỉ có quá trình trên, còn một quá trình khác mang tên Lazy writer cũng ghi nội dung của file log vào đĩa theo từng chu kì. Chúng ta tiếp tục đi kỹ một chút về tiến trình Check Point này. Transaction nghĩa là giao dịch. Nhưng giao dịch nhiều khi gây nên những lỗi nguy hiểm. Vậy Check Point phải có cơ chế thực hiện thích hợp để không gây nhiễu database. Sơ đồ dưới đây minh hoạ điều này. None 1 Roll forward 2 Roll back 3 Roll forwarrd 4 Roll back 5 Check Point System faillure Có thể giải thích sơ đồ này như sau: Trong sơ đồ trên, mỗi transaction được biểu diễn bởi 1 mũi tên. Trục nằm ngang là trục thời gian. Tại transaction 2 và 3 có điểm Check Point. Tiếp đến, nó gặp sự cố hệ thống. Khi SQL Server được khôi phục trở lại, nó sẽ dựa vào những thông tin trên file log để phục hồi dữ liệu. Như vậy, đối với transaction 1 thì Server không cần làm gì cả khi hệ thống bị sụp đổ vì tại Check Point nó đã được ghi vào đĩa rồi. Đối với transaction 2 và 4 sẽ được roll forward còn transaction 3 và 5 được roll back. 4. Cấu trúc logic của một SQL Server Database. 11 MS SQL Server vµ Postgre SQL Trong SQL Server, mọi thứ đều được cụ thể hoá theo hướng đối tượng. Có những đối tượng dễ biết như table, view... và có những đối tượng thuộc hệ thống. Đối tượng thuộc hệ thống luôn bắt đầu với cụm từ sys hay sp. Chẳng hạn, Sp_help[‘object’] : cho biết thông tin của object. Object ở đây là những table, view... Sp_helpdb[‘database’]: cung cấp thông tin của một database nào đó. Sp_helpdb[‘login’]: cho biết thông tin của user IV Sao lưu và phục hồi dữ liệu. 1. Chiến lược phục hồi dữ liệu. Chúng ta nên biết việc phục hồi dữ liệu là cực kì quan trọng. Khi những sự cố thường xuyên xảy ra như người dùng vô ý xoá đi một file cơ sở dữ liệu, file hệ thống, file transaction, bị tấn công bởi virus... phải đảm bảo hệ thống phục hồi đầy đủ trong thời gian sớm nhất. Bởi vậy, cần phải luôn kiểm tra trước khi hệ thống xảy ra sự cố và tránh số lần sao lưu dự phòng. 2 Một số phương pháp Back Up có trong SQL Server - Full Database Backups: copy toàn bộ các file trong cơ sở dữ liệu. Như vậy, mọi thông tin về user, database object, system object đều được sao lưu đề phòng. Làm như thế này giúp cho khôi phục toàn bộ thông tin nhưng gây tốn bộ nhớ và tốn thời gian thực hiện. - Differential Database Backups: copy toàn bộ thay đổi trong database sau lần full database backup trước đó. - File or File Group Backups: copy một data file đơn hay một nhóm file - Differantial File or File Group Backups: copy sự thay đổi của một file hay một nhóm file. - Transaction Log Backups: ghi lại những transaction trong transaction log file kể từ lần transaction log backup gần nhất. Phương pháp này cho ta phục hồi dữ liệu vào một thời điểm nào đó trong quá khứ mà vẫn đảm bảo tính đồng nhất. Trong khi thực hiện quá trình sao lưu, mọi hoạt động của cơ sở dữ liệu cũng được back up nên có thể sao lưu ngay khi SQL đang chạy. 12 MS SQL Server vµ Postgre SQL 3. Một số mô hình phục hồi. - Full Recovery Model: phục hồi dữ liệu ít rủi ro nhất. Mọi hoạt động trong chế độ này như insert, update, delete... kể cả insert bằng bulk insert hay bcp cũng được đưa vào file transaction log. Khi có sự cố ta có thể phục hồi dữ liệu tại một thời điểm nào đó trong quá khứ. Khi dữ liệu bị hỏng, sẽ được back up lại từ file transaction log. - Bulk-Logged Recovery Model: phục hồi mang tính hành động. Có nghĩa là những hoạt động như bulk insert, bcp, creat index, write text, update text... chỉ được đưa vào transaction log file một lượng ít nhất thông tin nhằm cho biết hoạt động này có diễn ra mà không đi chi tiết về hoạt động đó. Còn những hoạt động của lệnh insert, update, delete vẫn được đưa đầy đủ vào file trên để tiện cho việc phục hồi. - Simple Recovery Model: trong chế độ này file transaction log luôn được cập nhập nhưng lại không back up. Do vậy, chỉ có thể hồi phục dữ liệu trong 1 thời điểm gần đây nhất mà thôi. Có thể hình dung một cách đơn giản qua ví dụ dưới đây. §­a vµo file Transaction Chủ Nhật Thø S¸u Thứ Hai Thứ Ba Thứ Tư Sù cè Thứ Năm Thứ Full Database Sáu BackUp Differental Database BackUp 13 MS SQL Server vµ Postgre SQL Thứ Bảy Có thể giải thích như sau: Các ngày trong tuần đều được đưa vào trong file transaction log. Trong đó riêng ngày chủ nhật được thực hiện Full Database BackUp còn 2 ngày thứ 3 và thứ 5 thực hiện lưu trữ những thay đổi. Không may, đến ngày thứ 6, máy tính hỏng đĩa cứng. Quá trình khôi phục bắt đầu được tiến hành. Chúng ta phải thống nhất rằng file transaction log được lưu trữ trong một đĩa cứng khác, nghĩa là file này không bị hỏng cùng với đĩa cứng lưu trữ dữ liệu. Trước tiên, file transaction log này được khôi phục. Sau đó, phục hồi dữ liệu từ ngày chủ nhật. Copy toàn bộ file dữ liệu vào từ đĩa backup đến đĩa mới và thực hiện toàn bộ transaction trong transaction log file. Tiếp tục, lphục hồi dữ liệu ( differental database backup) ngày thứ 5. Cuối cùng, phục hồi trong các file transaction log sau ngày thứ 5. Người ta gọi đây là quá trình Data Recovery. 4. BackUp Database Đây là quá trình cất giữ dữ liệu đề phòng sự cố. Trong SQL Server, chúng ta có thể tạo ra những backup device hay backup file để thực hiện lưu trữ dữ liệu. Các backup device thường là cố định để tiện cho việc lưu trữ nhiều lần. Dưới đây là một số thuật ngữ trong lưu trữ. 14 MS SQL Server vµ Postgre SQL Backup: copy toàn bộ một phần hay toàn bộ dữ liệu hay file transaction log, 1 file hay nhóm file để tạo ra một backup set. Backup set này thường chứa trên các backup device. Backup device: thường là một file hay một đĩa để ghi backup set vào backup media. Backup file: chứa backup set. Backup media: là đĩa hay băng từ chứa một hay nhiều backup set. V. Tính toàn vẹn dữ liệu. Khi nói đến tính toàn vẹn dữ liệu là nói đến độ chính xác, tin cậy của dữ liệu. Đảm bảo dữ liệu có độ tin cậy cao là một vấn đề quan trọng trong cơ sở dữ liệu. 1. Phương pháp đảm bảo an toàn dữ liệu. Trong SQL Server có một số cách nhằm đảm bảo tính an toàn dữ liệu. Data Type: trong khi thiết lập cơ sở dữ liệu, cần phải chọn kiểu dữ liệu cho từng cột. Như vậy, nếu cột ClassName, chẳng hạn, là kiểu String thì không thể nào đặt số thực vào giá trị cho cột này. Default Definition: một cột trong bảng được đặt dữ liệu mặc định trong bảng thì khi không có dữ liệu đưa vào nó dùng giá trị mặc định này để đưa vào bảng. Not Null Definition: khi một cột thực hiện cấm “not null” thì cột đấy phải có giá trị đưa vào. Nên biết, giá trị Null không phải là một string rỗng hay số nguyên 0. Identity Properties: data thuộc dạng ID đảm bảo tính duy nhất dữ liệu trong bảng. Contraints: là những ràng buộc đảm bảo tính chính xác của dữ liệu đưa vào. Rule: là Object mang tính backward-compatible nhằm giúp tương thích với các phiên bản trước đây của SQL Server. Rule tương đương với Check Constraint trong SQL Server 2000 nhưng dùng Check Constraint có tính chính xác cao hơn nhiều. Có thể sử dụng nhiều Constraint lên một cột trong khi chỉ có thể dùng một Rule lên một côt trong bảng. Check constraint là một thuộc tính của bảng trong khi Rule là một đối tượng riêng. 15 MS SQL Server vµ Postgre SQL Trigger: đây là một thủ tục lưu trữ đặc biệt được thực hiện khi một bảng được Update, Insert, hay Delete. Chẳng hạn, khi bán một món hàng thì tổng lượng hàng trong kho phải giảm đi một. Chức năng này do trigger quản lý. Dưới đây đi vào một số chi tiết. 2. Constraints. Đây là những thuộc tính mà bảng khi có sẽ tránh được các dữ liệu không chính xác đưa vào bảng. Bản thân, các giá trị Default hay Null cũng là những constraint. Có 4 loại constraint cơ bản. Đó là Primary Key Constraint, Unique Constraint, Foreign Key Constraint và Check Constraint. a. Primary Key Constraint (thuộc tính khoá chính). Trong một bảng thường có một hay nhiều cột có giá trị mang tính chất duy nhất để xác định một hàng bất trong bảng. Đó là cột có thuộc tính khoá chính. Chỉ một cột duy nhất được có thuộc tính này. Nhiều cột có thể cùng tham gia để tạo nên thuộc tính này. Khi Primary Key được tạo ra thì Unique Index sẽ tự động tạo ra để duy trì tính duy nhất. Nếu trong bảng chưa có Clustered Index một Unique và Clustered Index sẽ được tạo ra. Có nhiều cách cho phép tạo ra thuộc tính Primary Key cho một cột. CREATE TABLE MyTable ( StudentID INT PRIMARY KEY, StudentName VARCHAR(30) ) b Unique Constraint (thuộc tính duy nhất). Tạo thuộc tính này cho bảng nhằm bảo đảm giá trị của một cột nào đó không bị lặp lại. Cho dù có những điểm tương đồng giữa Unique và Primary Key nhưng chúng có những cách dùng khác nhau. Trong một bảng có thể có nhiều Unique nhưng chỉ duy nhất một Primary Key. Một cột cho phép chứa giá trị Null, thì Unique được đặt lên cột này nhưng Primary Key thì không. c. Foreign Key Constraint (thuộc tính khoá ngoài). Một cột hay nhiều cột được thiết lập thuộc tính này để liên kết với dữ liệu trong bảng khác. Có thể đặt nhiều Foreign Key trong cùng một bảng để liên kết với bảng khác. Foreign Key của một bảng này sẽ giữ thuộc tính khoá chính cho bảng khác hay tham chiếu với cột có tính Unique. Foreign Key có thể có chứa NULL. Mặc dù mục đích của Foreign Key là quản lý một bảng con nhưng thực tế nó kiểm soát luôn cả bảng cha. Bởi lẽ, khi ta xoá dữ liệu trong bảng cha thì bảng con không thể liên kết với bảng cha. Cho nên khi xoá thuộc tính Foreign Key phải kiểm soát vấn đề này. d. Check Constraint. 16 MS SQL Server vµ Postgre SQL Dùng để kiểm soát hay giới hạn giá trị đưa vào trong bảng dữ liệu. Tương tự như Foreign Key kiểm soát giá trị đưa vào một cột nhưng nó không dựa vào bảng cha để xác định mà nó dựa vào một biểu thức để xác định điều này. CREATE TABLE MyTable( StudentID INT PRIMARY KEY, StudentName VARCHAR(30), StudentScore INT limit_amount CHECK ( StudentScore BETWEEN 5 AND 8) ) Có thể tạo nhiều Check Constraint trên một cột. VI. Truy vấn nâng cao. 1. Dạng của câu lệnh truy vấn nâng cao. SELECT Select_List [ INTO New_Table] FROM Table_Source [ WHERE Search_Condition] [ GROUP BY Group_By_Expression] [ HAVING Search_Condition] [ ORDER BY Order_Expression[ASC | DESC]] a. SELECT: đây là lựa chọn trong bảng những trường quan trọng theo yêu cầu. Có 3 chức năng trong trường chọn này. - Distinct: cho phép chọn các cột có giá trị không trùng nhau. - Top n: cho phép chọn n hàng đầu tiên trong bảng. - As: dùng thay thế cho dễ đọc hơn với câu truy vấn. SELECT IdentityCol AS "Employee ID",HomePhone FROM Northwind.dbo.Employees ORDER BY LastName, FirstName ASC b INTO: đây là chọn dữ liệu từ một bảng hay nhiều bảng sau đó đưa dữ liệu vào trong một bảng mới. 17 MS SQL Server vµ Postgre SQL SELECT FirstName, LastName INTO EmployeeNames FROM Employers Dãy lệnh trên thực hiện lấy dữ liệu hai cột FirstName và LastName từ bảng Employers vào trong bảng EmployeeNames. c. GROUP BY và HAVING: là những dãy điều kiện đi kèm khi ta chọn dữ liệu trong bảng. SELECT FirstName, LastName INTO EmployeeNames FROM Employers GROUP BY FirstName HAVING LastName=’Do’ cũng như trên nhưng bây giờ có thêm điều kiện LastName là chuỗi Do và được nhóm lại bởi FirstName. d. UNION: kết nối 2 hay nhiều queries thành một kết quả. SELECT * MyTableOne UNION ALL SELECT * MyTableTwo thực hiện việc ghép nối 2 bảng có các cột và kiểu dữ liệu giống hệt nhau, chỉ khác nhau về giá trị trong các cột. Những hàng giống nhau được ghép mà không bị xoá bỏ. 2. Lệnh Joins. Lệnh này cho phép ghép nối các bảng có chung một hay nhiều cột lại với nhau. Có nhiều Joins. Dưới đây trình bày một số dạng. a. Inner Joins. inner joins Lệnh này giúp chọn dữ liệu từ 2 hay bảng có chung 1 hay nhiều cột. Các giá trị được này phải có ở cả 2 bảng. 18 MS SQL Server vµ Postgre SQL SELECT t.Title, p.Pub_name FROM Publishers AS p INNER JOIN Titles AS t ON p.Pub_id = t.Pub_id b. Left Outer Joins. Lệnh này lựa chọn dữ liệu từ 2 hay nhiều bảng mà những cột bảng thứ nhất không có bên bảng thứ 2 cộng với những cột có được từ Inner Joins. Số cột được chọn bằng số cột bảng thứ 1. SELECT a.Au_fname, a.Au_lname, p.Pub_name FROM Authors a LEFT OUTER JOIN Publishers p ON a.City = p.City c. Right Outer Joins. Lệnh này có tác dụng như trên nhưng lại thuộc về bảng 2. d. Full Outer Joins. SELECT a.Au_fname, a.Au_lname, p.Pub_name FROM Authors a FULL OUTER JOIN Publishers p ON a.City = p.City 19 MS SQL Server vµ Postgre SQL Lệnh này chọn tất cả những dữ liệu từ 2 hay nhiều bảng trong đó tất cả các cột của bảng thứ 1 và bảng thứ 2 đều được chọn các giá trị giống nhau chỉ lấy một lần. VII. Kỹ thuật Import và Export Data. 1. Import dùng lệnh bcp và BULK INSERT. bcp là lệnh của command promt dùng để import dữ liệu từ các file dữ liệu như file text, file excel vào SQL Server. Thậm chí nó có thể xuất dữ liệu từ SQL Server ra các file này. Từ đó, muốn chuyển giao dữ liệu từ Oracle sang SQL Server thì trước tiên dùng bcp xuất dữ liệu sang file text sau đó nhập lại vào SQL Server. Bulk Insert cũng là lệnh cho phép nhập dữ liệu vào SQL nhưng không thể xuất được dữ liệu. Khi nhập dữ liệu, thì bản thân file cho dữ liệu phải có dạng bảng hay cột. Đồng thời, trong SQL Server cũng phải tồn tại một bảng để lưu trữ dữ liệu được nhập vào. Còn khi xuất thì một file được tạo nếu nó chưa tồn tại hay được ghi đè nếu không tồn tại. bcp PracticeDB..Orders out c:\Orders.txt -c –T –t; Lệnh này được gõ trong cửa sổ Dos. Đây là xuất dữ liệu từ bảng Orders trong database PracticeDB ra file dạng văn bản Orders.txt, các cột ngăn với nhau bởi dấu ; Để xuất dữ liệu dùng “out” còn nhập dữ liệu dùng “in”. -c: là để chỉ xuất kiểu dữ liệu character. Nếu không có, mặc định là dùng TAB để phân cột và dùng xuống dòng để phân định hàng (“\n”). T: kết nối với cơ sở dữ liệu. Nếu user được phép vào hệ thống Window thì cũng được dùng SQL Server. t; : dấu đi sau t để dùng phân định cột. bcp "Select * From practiceDB..Orders" queryout c:\Orders.txt -c -SVinhtai -Usa –Pabc queryout: cho biết đầu ra là query chứ không là bảng. -S: tên của SQL Server -U: tên người dùng -P: mật khẩu người dùng. 2. Truy vấn phân tán. 20 MS SQL Server vµ Postgre SQL Khi muốn lựa chọn dữ liệu từ các hệ cơ sở dữ liệu như Access, DB2, Oracle hay một SQL Server khác... dùng truy vấn phân tán để thực thi. Để thực hiện điều này, ta dùng đến Linked Server hoặc Ad Hoc Computer Name. a. Linked Server. Đây là dùng một server ảo để truy nhập vào các hệ cơ sở dữ liệu khác. Sau khi cài đặt, nó bao gồm 4 phần: Tªn ng­êi së h÷u Linked_Server_Name.Catalog.Shema.Object_Name. Tªn server Tªn CSDL Tªn b¶ng... VD: Select * from OPENQUERY(LinkedPracticeDB,'Select * from Customers') b. Ad Hoc Computer Name. Đối với hệ thống cần thường xuyên truy nhập tới các hệ cơ sở khác chúng ta dùng Linked Server còn nếu ít hơn thì nên dùng Ad Hoc Computer Name. VD: Select * from Customers) OPENROWSET('Microsoft.jet.oledb.4.0', 'C:\PracticeDB.mdb'; 'admin';'', 3. Stored Procedure. Khi dùng Query Analyzer, có thể lưu các lệnh đã được biên dịch vào trong SQL Server dưới dạng stored proecedure. Như vậy, stored procedure là một nhóm câu lệnh T-SQL đã được biên dịch và chứa trong SQL Server dưới một cái tên nào đó và được xử lý như một đơn vị. Chú ý, đây không phải là các câu lệnh riêng lẻ. Các lệnh này làm tăng tốc độ tính toán cho hệ thống vì nó không cần phải kiểm tra cú pháp, biên dịch. Những điều này đã được thực hiện trước khi nó được lưu vào hệ thống. Có 5 loại stored procedure. 21 MS SQL Server vµ Postgre SQL System Stored Procedure: đây là những lệnh chứa trong master database thường bắt đầu bằng sp_ và chúng thuộc diện những hàm có sẵn nhằm quản lý, an ninh cho hệ thống. Local Stored Procedure: đây là loại thông dụng nhất. Nó có trong user database để thực hiện công việc của người dùng Temporary Stored Procedure: loại này tương tự như loại trên nhưng mang tính chất tạm thời. Nó sẽ bị mất đi khi mà kết nối tạo ra nó ngắt hay SQL Server ngừng hoạt động. Bản thân loại này lại chia ra 3 loại nhỏ hơn. Loại cho cục bộ bắt đầu bằng dấu # và sẽ mất khi kết nối tạo ra nó mất. Loại cho toàn cục bắt đầu bằng ##, tồn tại cho nhiều kết nối. Và loại được tạo trực tiếp trên TempDB có thể thiết lập được quyền, nó chỉ mất khi hệ thống tắt còn vẫn hoạt động khi mất đi kết nối. Extended Stored Procedure: đây là loại sử dụng chương trình bên ngoài đã được biên dịch trở thành một thư viện động để tăng cường chức năng cho SQL Server. Loại này bắt đầu bằng xp_. Remote Stored Procedure: đây là loại dùng để gọi stored procedure của các server khác. VIII. SQL Server và mạng. SQL Server trong thực tế sử dụng một cách rất đa dạng. Nó có thể ghép nối với các SQL Server khác, liên kết với các client, hoặc thực hiện cùng trình ứng dụng ngay trên một máy tính... 1. Các Server SQL được liên kết vớiInternet nhau. Browsers LAN/WAN COM++ ASP Server Area Networrk (SAN) 22 SQL Server IIS MS SQL Server vµ Postgre SQL Với những trang Web có cơ sở dữ liệu lớn vượt quá tải trọng của SQL Server riênglẻ thì việc kết hợp các SQL Server vào với nhau là một việc quan trọng. Để kết nối các SQL Server gần nhau, người ta dùng các mạng SAN nhằm hỗ trợ cấp độ chuyển thông báo cao, giảm tải trọng của CPU, và thời gian chờ thông báo của các SAN đáng tin cậy hơn LAN hay WAN. 2 SQL Server dưới dạng quản lý cơ sở dữ liệu trong mạng. SQL Server client application SQL Server client application Client Computer Database computer SQL Server SQL Server client application Internet server Server applicatio n Internet Information Services (IIS) Các user chạy trình ứng dụng trên máy tính của mình kết nối đến một instance của SQL Server đang chạy trên một máy tính server. Mô hình quản lý dữ liệu ở vị trí trung 23 MS SQL Server vµ Postgre SQL tâm này có nhiều điểm thuận lợi. Mỗi hạng mục dữ liệu đều được lữu trữ ở vị trí trung tâm và các user đều có thể làm việc với nó. Điều này loại đi các sự cố xảy ra với các user đang thực hiện trên một thông tin. 3 SQL Server dưới dạng quản lý cơ sở dữ liệu cùng ứng dụng trong desktop. Client applicatio n Desktop comput er Client applicatio n Client applicatio n SQL Server Database Các trình ứng dụng cùng thực hiện chung với SQL Server trên một máy tính tương tự như các user thực hiện trình ứng dụng của họ kết nối với trình cơ sở dữ liệu đang chạy trên server từ xa. Sự khác biệt cơ bản là các kết nối cục bộ được thực hiện qua các IPC cục bộ. 4. Quá trình trao đổi thông tin giữa một trình ứng dụng SQL Server chạy trên cùng một máy tính với một instance của SQL Server. SQL Server 2000 sử dụng các thành phần được gọi là client Net-Libraris để ngăn OLE DB Provider, SQL Server ODBC driver và DB-Library DLL không trao đổi thông tin với các IPC. Quá trình quản lý trao đổi thông tin giữa SQL Server và các client diễn ra như sau: - Trình ứng dụng gọi đến OLE DB, ODBC, DB-Library, hay Embedded SQL API. Điều này làm cho OLE DB Provider, SQL Server ODBC driver và DB-Library DLL được SQL Server sử dụng để trao đổi thông tin. 24 MS SQL Server vµ Postgre SQL - OLE DB, ODBC driver, DB-Library DLL gọi một client Net-Library. Sau đó, client Net-Library gọi một IPC API. - Các cuộc gọi của client Net-Library chuyển đến một server Net-Library và tiếp tục chuyển tới instance của SQL Server. - Quá trình truyền tin từ SQL Server tới client diễn ra ngược lại. Hình vẽ dưới đây mô tả quá trình này. OLE DB client application ODBC client application DB-Library client application OLE DB provider ODBC driver DB-Library DLL Client Shared Memory NetLibrary Client Shared Memory NetLibrary Client Shared Memory NetLibrary Shared Memory Server Shared Memory NetLibrary Open Data Service SQL Server 25 MS SQL Server vµ Postgre SQL 5. Quá trình trao đổi thông tin giữa một trình ứng dụng trên client với một instance SQL Server trên một máy tính riêng lẻ. Hình vẽ dưới đây minh hoạ một ví dụ đơn giản đường dẫn trao đổi thông tin khi một trình ứng dụng SQL Server kết nối qua mạng LAN hay WAN sang một instance của SQL Server trên một máy tính riêng rẽ. OLE DB application ODBC application DBLibrary application OLE DB provider for SQL Server SQL Server ODBC driver SQL Server DB-Library DLL Client Named Pipes Net-Library Client Multiprotocol NetLibrary Client TCP/IP Socket NetLibrary NWLink Network NeBeUI Network TCP/IP Network Server Named Pipes Net Library Server Named Pipes Net Library Open Data Services SQL Server 26 Server Named Pipes Net Library MS SQL Server vµ Postgre SQL Đến đây chúng em xin kết thúc nghiên cứu của SQL Server. Qua một phần ngắn nh ư trên, khó có thể trình bày tất cả những tính năng của SQL. Một dạng khác cũng khai thác, quản trị cơ sở dữ liệu dựa trên SQL là Postgre SQL. Chúng khác nhau căn bản ở SQL Server của hãng Microsoft là mã nguồn đóng còn Postgre SQL thì ngược lại. Xin xem phần 4 để biết thêm chi tiết. Phần 3. Sơ lược ngôn ngữ Perl. Perl được viết tắt từ Practical Extraction and Report Language. Ngôn ngữ này lần đầu tiên xuất hiện trên hệ điều hành Unix và được viết bởi Larry Wall. Nó là một trình thông dịch nằm trung gian giữa hệ vỏ Shell và ngôn ngữ lập trình cấp thấp C. Bây giờ, Perl đã phát triển trên các hệ điều hành như Window, Linux, Apple Macintosh... Lập trình Perl tỏ ra đặc biệt mạnh trong các vấn đề xử lý dữ liệu chuỗi và các công việc quản trị hệ thống. I. Cấu trúc của một chương trình Perl. Perl là một ngôn ngữ dùng để thông dịch. Cho nên, nó không cần biên dịch từng bước. Bạn chỉ cần gõ lệnh trong một file văn bản để tạo chương trình nguồn và Perl sẽ xử lý ngay lập tức. Dưới đây là một chương trình đơn giản về Perl. #!/bin/perl –w $w = 20.0; # in kN/m $l = 8; # in m $Mmax = $w*$l**2/8; print( "The maximum moment is $Mmax kN-m\n" ); Chương trình trên gồm: - Dấu “ # ” cho biết đây là dòng chú thích. Trong quá trình tiến hành xử lý Perl sẽ bỏ qua dòng này. Mục đích của chúng là làm cho chương trình trở nên dễ hiểu. 27 MS SQL Server vµ Postgre SQL - Song hãy cẩn thận với dòng 1. Bắt đầu bằng dấu “#!” một lời giới thiệu cấp cao trên DOS. Nó có tác dụng yêu cầu DOS triệu gọi perl trong th ư mục bin nhằm thực hiện các lệnh ở bên dưới. Tùy chọn “-w” cho biết perl sẽ thông báo lỗi trước khi thực hiện. - Kết thúc mỗi dòng lệnh là một dấu chấm phẩy để ngăn cách câu lệnh ngoại trừ dòng cuối cùng của tập tin có hay không có “;” cũng được. - Các biến trong Perl được xác định bằng dấu $. Rõ ràng trong chương trình trên không cần sự khai báo biến trước khi dùng . - Lệnh print là lệnh in ra màn hình, nó gần giống như printf của C. II.Cách chạy một chương trình trong Perl. Đầu tiên, bạn hãy soạn thảo một chương trình nguồn trong một file văn bản nào đó. Chẳng hạn, vidu1.pl và đặt nó trong thư mực vidu tại ổ đĩa C Hãy đến dấu nhắc con trỏ DOS và gõ: c:\vidu>perl vidu1.pl Nhớ là đuôi file là .pl thì perl mới thực hiện. III. Các kiểu dữ liệu trong Perl Trong Perl có 3 loại dữ liệu cơ bản : 1) Kiểu vô hướng (scalar) 2) Kiểu mảng (array) 3) Kiểu biến băm (associate array hay hash). Sau đây sẽ đi chi tiết các kiểu dữ liệu trên. 1. Biến vô hướng. Trong Perl các biến vô hướng được bắt đầu từ $. Vi dụ: $a,$b... Bản thân các biến này mang rất nhiều kiểu được định nghĩa trong các ngôn ngữ khác như C, Pascal... Đó là các kiểu string, int, char, real... # Bien dang sau $c="HELLO WORLD"; print "$c\n"; 28 MS SQL Server vµ Postgre SQL # Bien dang hex $a= 0xffff; print $a,"\n"; Kết quả in ra : HELLO WORLD 65535 2. Kiểu mảng. Đăng kí kiểu mảng trong Perl bắt đầu bằng kí hiệu @. Trong mảng luôn đánh chỉ số từ 0. @mg1 => có n phần tử, chỉ số của mảng đánh bắt đầu từ 0 @mg2(1,2,3,4( => có 4 phần tử, chỉ số của mảng đánh bắt đầu từ 0 @mg3(’a’,’b’( =>có 2 phần tử, chỉ số của mảng ‘a’ và ‘b’ chứ không phải là từ 0 như ở trên. Mỗi phần tử của mảng có thể chứa giá trị tương ứng là nguyên, thực, sâu, giá trị hex, giá trị oct hoặc trống. Để truy nhập vào từng phần tử của mảng ta dùng kiểu vô hướng . $mg21 hay $mg3’a’ 3. Biến băm Trong Perl có thêm một kiểu giá trị mới so với C. Đó là biến băm (hash) hay còn gọi là mảng kết hợp (associative arrays). Không như mảng ở trên, chỉ số của biến băm là các sâu còn gọi là khoá(key) trỏ đến giá trị (value) . Có hai cách để khai báo biến băm. 1) Dùng kí hiệu “ =>” chỉ từ khoá đến giá trị . 2) Giữa khóa và giá trị cách nhau bằng dấu phẩy. Chú ý rằng giá trị mang kiểu vô hướng, nghĩa là nó có thể bằng sâu, nguyên, thực, giá trị hex... Để truy xuất phần tử của biến băm, người ta dùng: $hash khoa Ví dụ: %bbam1=( "ngoc" => "987", 29 MS SQL Server vµ Postgre SQL hung => "654", ); print $bbam1{ngoc},"\n"; print $bbam1{hung},"\n"; IV. Xuất và nhập dữ liệu trong Perl. 1.Lệnh xuất dữ liệu: Lệnh print. Lệnh này có tác dụng xuất dữ liệu ra màn hình. Trong Perl thì các kí tự “ ”, ‘ ’ đều mô tả xâu. Lệnh print không sử dụng định dạng như printf. Vì Perl là ngôn ngữ chuyên về xử lý file cho nên print được sử dụng rộng rãi hơn printf. Lệnh print có những kí hiệu: \ t: tab \ n: tạo dòng mới.(new line) \ r : trả về.(return) \ b: xoá kí tự trước nó .(backspace) \ a: kêu bíp một tiếng.(alarm) \ e: escape \ 033: kí tự octal \ \ : in ra \ \’ : in ra ’ 2. Lệnh nhập dữ liệu: lệnh <> Trong Perl thì thiết bị vào chuẩn được đặt trong STDIN nên hai lệnh sau là như nhau: $a=< >; và $a=; Song hãy cẩn thận, khi nhập dữ liệu phải Enter để tiếp tục lệnh khác cho nên dòng vào có kí tự Enter ở cuối dòng vào. Người ta dùng lệnh chomp để xóa kí tự ở cuối dòng vào. $a=”hellos”; chomp ($a); # sẽ là hello V.Các phép toán trên Perl. 1.Phép toán. Trong Perl cũng có các phép toán : a) + (cộng); - (trừ); * (nhân); / (chia) ;% lấy phần dư 30 MS SQL Server vµ Postgre SQL b) c) ** : mũ ++: tăng giá trị lên một đơn vị -- : giảm giá trị đi một đơn vị Nhưng mạnh hơn C, phép ++ có những tác dụng khác nữa. Chẳng hạn, ++1 cho kết quả 2, ++ chữ cái cho kết quả t ăng giá trị của chữ cái trong bảng mã ASC lên một đơn vị. Trong trường hợp mà ++z thì lại quay về a song có nhớ nên thành aa. Đối với phép -- thì chỉ tác dụng với số chứ không có tác dụng với chữ cái vì nếu giảm đi thì trong mọi trường hợp đều đưa về -1. 2. Các hàm toán học. ( ( ( ( ( ( Hàm cos(expr): trả về cosin của expr (expr phải là radian) Hàm sin(expr) : trả về sin của expr (expr phải là radian) Hàm exp(expr): trả về e mũ expr Hàm int (expr): lấy phần nguyên của expr . Hàm log(expr): trả về loga cơ số e của expr Hàm sqrt(expr) : lấy căn bậc hai expr. VI .Các lệnh có cấu trúc. 1. Câu lệnh if. if (biểu thức điều kiện 1)( Lệnh 1; (elsif (biểu thức điều kiện 2)( Lệnh 2; (elsif (biểu thức điều kiện 3)( Lệnh 3; else Lệnh 4; ; Tuỳ theo từng trường hợp mà có nhiều biểu thức điều kiện hay không. 2) Lệnh unless. Về cấu trúc nó giống hệt như lệnh if song về ý nghĩa thì ngược lại. unless ( biểu thức điều kiện 1)( Lệnh 1 ; (elsif (biểu thức điều kiện 2)( Lệnh 2 ; else Lệnh 3 ;  3) Lệnh lặp for 31 MS SQL Server vµ Postgre SQL for( biểu thức 1; biểu thức 2 ; biểu thức 2) ( Lệnh ; ; Cho dù khối lệnh thực hiện chỉ có 1 lệnh thì bạn vẫn phải đặt nó trong dấu ngoặc nhọn (lệnh ( 4) Lệnh while Dạng 1: while (biểu thức điều kiện )( Khối lệnh ; (; # Nếu điều kiện đúng thì # thực hiện khối lệnh # cho đến khi điều kiện sai thì thoát . Dạng 2: do ( Khối lệnh ( while (biểu thức điều kiện ); #Thực hiện khối lệnh # cho đến khi điều kiện sai. 5) Lệnh lặp until Dạng 1: do  Khối lệnh; ( until (biểu thức điều kiện); Dạng 2: until ( biểu thức điều kiện) ( Khối lệnh;  VII. Lệnh nhỏ. Trong Perl, người ta còn cố gắng đưa ngôn ngữ lập trình gần với ngôn ngữ tự nhiên. Bằng cách đưa vào những câu lệnh nhỏ (còn gọi là bổ lệnh statement_modifier) các câu lệnh của Perl trở nên đơn giản hơn với người lập trình . 1) Lệnh if. Ví dụ : 32 MS SQL Server vµ Postgre SQL print "Chieu dai xau vua nhap $l\n " if $input ne "Ngoc"; Trong chương trình trên có dùng lệnh “ ne” nghĩa là không bằng (not equal). Nó dùng cho so sánh chuỗi. 2) Lệnh unless. print "Chieu dai xau vua nhap $l\n " unless $input eq "Ngoc"; 3) Lệnh while $i =0; print ("Dong thu ", ++$i,"\n") while ($i<2); Kết quả: Dong thu 1 Dong thu 2 Trong Perl còn có nhiều dạng lệnh khác. Do giới hạn đề tài không tiện nhắc tới. VIII. So khớp So khớp chính là một điểm tạo thế mạnh cho Perl mà các ngôn ngữ khác không thể có. Nó giúp Perl xử lý file, tìm kiếm và quản lý tập tin một cách tốt nhất. Trong phần này chúng ta sẽ nghiên cứu chút ít về nó. Để so khớp trên chuỗi cú pháp cơ bản là : $scalar =~ /expr/ khớp sai. trả về giá trị true nếu so khớp đúng, trả về fasle nếu so và ngược lại $scalar =!~ /expr/ trả về giá trị true nếu so khớp không thành công, trả về giá trị fasle nếu so khớp thành công. 1)Trong Perl để so khớp vị trí đầu hay cuối, người ta dùng kí hiệu: ( ^ dùng để so khớp đầu. ( $ dùng để so khớp cuối. 2)Sử dụng: ( . để so khớp với bất kì kí tự nào. ( | để so khớp xen kẽ. 33 MS SQL Server vµ Postgre SQL ( ( ) để so khớp với một nhóm kí tự. ( [ ] để so khớp với một lớp kí tự. 3)Bổ từ: /i : cho phép so khớp bất kể chữ hoa hay chữ thường. /m: cho phép so khớp đa dòng .(multi lines) /s : cho phép so khớp đơn dòng.(single line) /x: cho phép so khớp mở rộng hợp lệ đối với kí tự trắng và dấu #. 4) So khớp một hay nhiều kí tự. ( * so khớp 0 hay nhiều kí tự đứng trước. ( + so khớp 1 hay nhiều kí tự đứng trước. ( ? so khơp 0 hay 1 kí tự đứng trước. ( (n( so khớp đúng n kí tự đứng trước. ( (n, ( so khớp ít nhất n kí tự đứng trước. ( (n,m( so khớp ít nhất n kí tự , nhiều nhất m kí tự đứng trước. 5)Lớp kí tự POSIX. [: class :] trong đó class là một trong những dạng sau đây:  alpha  alnum  ascii  cntrl IsAlpha IsAlnum IsASCII IsCntrl 6)So khớp và thay thế. Trong Perl có những lệnh rất mạnh. Đó chính là tìm kiếm và thay thế kí tự trong chuỗi. Để thay thế phần tử tìm được bằng phần tử khác người ta dùng cú pháp: s/expr1/expr2/ ; tìm phần tử đầu tiên là expr1 trong chuỗi thay bằng expr2. Nhưng nhớ là chỉ thay 1 phần tử đầu tiên.Để thay thế toàn bộ expr1 có trong chuỗi ta dùng thêm bổ từ g. s/expr1/expr2/g ; IX. Lệnh thao tác trên biến băm và mảng. Lệnh delete $hash{key} : xóa một thành phần của biến băm. 34 MS SQL Server vµ Postgre SQL Lệnh each{hash} (hoặc each hash ): trả về khoá và giá trị khoá của thành phần trong biến băm. Hàm keys {%hash } hay keys hash: trả về một mảng chứa các khoá của biến băm. Hàm values{%hash} hay values %hash: trả về mảng chứa giá trị của biến băm . Hàm pop(@array) hay pop @array: trả về phần tử cuối cùng của mảng và loại phần tử ấy ra khỏi mảng. Trong trường hợp mảng không có phần tử nào thì trả về một giá trị không xác định. Hàm push(@array,danhsách): hàm này có tác dụng ngược lại so với hàm trên, nghĩa là đẩy danh sách vào cuối mảng. Hàm reverse (@array): đảo ngược các vị trí trong mảng. Mảng được trả về có các phần tử bị đảo ngược ví trị Hàm shift(@array) : lấy phần tử đầu tiên của mảng, mảng được trả về mảng không còn phần tử đầu tiên. Hàm sort (@array) hay sort@array: sắp xếp lại mảng, trả về mảng sau khi được sắp xếp. Hàm splice: xoá một tập các phần tử trong mảng và kết quả trả về tập các phần tử này. Lệnh split : chia cắt từ một xâu thành một mảng có giá trị là các xâu bị cắt. Lệnh unshift: thêm một phần tử vào đầu mảng. X.Toán tử và hàm trên xâu. Toán tử x : cho phép tăng gấp đôi số kí tự Toán tử . : dùng để ghép các sâu. Hàm chop :cắt bỏ kí tự cuối cùng của xâu bất kể nó là gì. Lệnh eval{expr}: dùng để thực hiện khối lệnh. Lệnh eval coi expr như là một chương trình nhỏ. Sau khi thực hiện nếu không có lỗi thì $@ trả về chuỗi null còn không thì nó sẽ chứa mã lỗi. Trong trường hợp thiếu expr thì $_ được thực hiện. 35 MS SQL Server vµ Postgre SQL Hàm index(xâu_cha,xâu_con,vị_trí_tìm): cho biết vị trí của xâu_con bắt đầu trong xâu_cha khi lần đầu tiên tìm thấy, mà vị trí tìm bắt đầu từ vị_trí_tìm. Trong trường hợp mà vị_trí_tìm không có thì bắt đầu tìm từ đầu xâu cha. Hàm length (xâu) : lấy độ dài của xâu. Trong trường hợp xâu không có thì lấy độ dài của $_ Hàm q{xâu} : cho kết quả là một xâu, xong nó chứa đựng được dấu “ , ”, hay ‘ v.v. Mục đích của hàm này dùng để mô tả lời nói mà không sử dụng quá nhiều dấu chéo \ Hàm rindex(xâu_cha,xâu_con,vị_trí_tìm): hàm này có tác dụng ngược với hàm index ở trên, có nghĩa là nó tìm xâu_con trong xâu_cha nhưng ở vị trí cuối cùng. Trong trường hợp tìm thấy thì trả về vị trí tìm thấy cuối cùng trong xâu_cha còn không thì là -1 Hàm substr(xâu_cha,vị_trí_đầu,chiều_dài): sao chép chuỗi cha từ vi_trí_đầu có số kí tự bằng chiều_dài. Nếu chiều_dài không có thì copy cho đến hết chuỗi. Nếu vị_trí_đầu mà âm thì copy tính từ cuối xâu. Hàm join(mẫu,@array) : ghép mảng thành một xâu. Phần 4. PostGre SQL. I. Giới thiệu về Postgre SQL 36 MS SQL Server vµ Postgre SQL Hệ thống quản lý cơ sở dữ liệu liên kết đối tượng được biết đến như Posgre SQL. Nó được bắt nguồn từ trường đại học California Berkeley. Qua một thập niên phát triển, PostGresql trở nên mạnh mẽ tiên tiến nhất - cơ sở dữ liệu nguồn sẵn sàng bất cứ nơi đâu, hỗ trợ mạnh tất cả SQL có cấu trúc ( Bao gồm lựa chọn, những giao dịch, và những hàm truy vấn từ phía người dùng) và mở rộng tới các ngôn ngữ sẵn có ( Bao gồm C, C ++, Java, Perl, Tcl, Và Python). 1. Dự án Posgre SQL của Berkelay Tiến hành nghiên cứu DBMS bắt đầu vào 1986. Những khái niệm ban đầu cho hệ thống được giới thiệu trong trang web http: // Date.spd.louisville.edu / DBLab / resource/ Pgsql / html / biblio.html . Các khái niệm mô hình dữ liệu ban đầu của Posgre SQL và kể cả các quy tắc thiết kế, lưu trữ dữ liệu cũng được nói đến trong trang web này. Các phiên bản tiếp theo của Posgre SQL lần lượt ra đời tại đây. Các ứng dụng của Posgre SQL bao gồm: hệ thống phân tích dữ liệu tài chính, theo dõi đóng gói, một cơ sở dữ liệu thông tin y học, và vài hệ thống thông tin địa lý, trong tính toán khoa học... Ngày càng có nhiều người sử dụng Postgre sql bởi các tính năng ưu việt của nó. 2. Postgre SQL năm 95. Năm 1994, Andrew Yu và Jolly Chen đã chuyển SQL thành một ngôn ngữ thông dịch. Postgre sql dựa trên chuẩn ANSI C và việc giảm kích thước 25 % của mã nguồn mở đã được công bố trên mạng của trường đại học Berkerlaynăm 95. Nhiều cải thiện sự thực hiện và các phiên bản nâng cấp sau đó đã mang lại cho Postgre sql các tính năng chính sau:  Ngôn ngữ truy vấn có cấu trúc Posgre sql được thay thế với SQL ( đợc thực hiện trong ngời phục vụ). Những truy vấn do người dùng đưa và chúng dựa trên mô phỏng cấu trúc đó. Ngoài ra nó còn hỗ trợ cho ngôn ngữ lập trình C.  Ngoài ra còn có nó còn cung cấp sự tương tác truy vấn cấu trúc cho các chương trình điều phối, các chương trình mới.  Nó hỗ trợ Tcl Client. Một ví dụ mẫu về cấu trúc pgtclsh, cung cấp những những lệnh Tcl mới tới chơng trình tcl giao diện với Gres95 backend.  Giao diện đối tợng đợc kiểm tra. Sự thay đổi lớn về đối tượng không chỉ trong cơ chế mà còn trong cả dự lưu trữ.  Các quy tắc được thay đổi đáng kể, nhưng vẫn có các quy tắc được áp dụng trở lại.  Quy tắc SQL được áp dụng trên hệ cơ sở dữ liệu phân tán. 37 MS SQL Server vµ Postgre SQL  GNU được sử dụng cho việc xây dựng. Ngoài ra Posgress 95 cũng có thể biên soạn với các bản unpatched gcc. 3. Grest- sql Sau năm 1996 tên của phiên bản đã bị thay đổi và phiên bản Posgress 95 không còn tồn tại nữa nó được thay bằng cái tên mới Posgress SQL nó thể hiện sự liên quan với SQL. Cũng trong thời gian này phiên bản PosGress SQL ra đời với phiên bản 6.0 chúng mang tính chất hướng đối tượng. Sự phát triển của phiên bản từ Posgress 95 là sự phát triển của mã Backend ... Với Posgre SQL đó là sự thay đổi trên tất cả các vùng làm việc... Những sự nâng cao chính bên trong Grest-sql bao gồm :  Các khoá và các mức đã đợc thay thế cùng với các phiên bản ,nó cho phép những phiên bản mới có thể vẫn xử dụng được dữ liệu của các phiên bản cũ .  Backend có các đặc tính quan trọng như giải quyết các tranh chấp thi hành biên dịch....  SQL92 -tương hợp bổ sung ngôn ngữ với các đặc tính đã đợc thêm, bao gồm những khoá sơ cấp , sự bắt buộc kiểu chuỗi ký tự, và số nguyên hệ 16 và nhị phân nhập vào.  Những kiểu gắn sẵn đã đợc cải thiện, bao gồm ngày tháng phạm vi rộng mới / thời gian những kiểu và bổ sung hình học ....  Tốc độ mã backend toàn bộ đã đợc tăng thêm bởi xấp xỉ 20 40 %, và khởi động backend thời gian đã giảm bớt 80 % từ phiên bản 6.0 released. II. Cấu trúc của Postgress SQL 1 Cấu trúc của Postgres. Postgres sử dụng mô hình client/server trong khi quản trị cơ sở dữ liệu. Mỗi phiên Postgres bao gồm những quá trình sau đây:   Postmaster: quản lý người dùng truy cập. User application: trình ứng dụng của người dùng.  The one or more backend database servers: quản lý cơ sở dữ liệu của chính server 38 MS SQL Server vµ Postgre SQL Hình vẽ dưới đây mô tả cơ chế kết nối giữa server và client. Trong sơ đồ trên một Postmaster quản trị một tập các cơ sở dữ liệu có trên một client host. Tập cơ sở dữ liệu như thế gọi là cluster. Một trình ứng dụng có thể truy nhập hệ cơ sở dữ liệu trên được gọi tới library (LIBP Q). Library gởi yêu cầu người dùng qua mạng tới Postmaster. Sau đó, Postmaster trả về một new backend process và kết nối tới một frontend process. Tại đây, frontend process sẽ trao đổi trực tiếp với backend process mà không cần thông qua Postmaster nữa. Do đó, Postmaster luôn chạy và chờ các yêu cầu khác tới. Thư viện LIBPQ cho phép một fronted tạo ra nhiều kết nối tới các backend. 2. Trình ứng dụng Postgre trên client. createdb — Tạo một cơ sở dữ liệu Postgres mới. createuser — Tạo người dùng mới. dropdb — Xoá một database. dropuser — Xoá người dùng. ecpg — Nhúng bộ tiền xử lý SQL pgadmin – Công cụ thiết kế và quản trị cho Window 95/98/NT pg_config — Cung cấp thông tin cài đặt PostgreSQL pg_dump — Giải nén một database vào trong file script hay một file text pg_dumpall — Giải nén một database vào trong file script psql — Kết thúc tương tác với Postgres vacuumdb — Làm sạch và phân tích một database Postgres 3. Trình ứng dụng Postgres trên server. createlang — Thêm một ngôn ngữ lập trình mới vào database. droplang — Xoá bỏ một ngôn ngữ lập trình ra khỏi database . initdb — Tạo một cluster database. initlocation — Tạo một khu lưu trữ dữ liệu thứ cấp. ipcclean — Xoá vùng nhớ dùng chung. pg_ctl — Bắt đầu, dừng, khởi động lại Postmaster 39 MS SQL Server vµ Postgre SQL pg_passwd — Tạo một file password văn bản. postgres — Chạy một backend 1 người dùng. postmaster — Server cơ sở dữ liệu đa người truy cập. III. Đặc điểm nổi bật của Postgres SQL 1 .Tính kế thừa. Để tạo hai bảng, ta có thể tạo ra một bảng trước, sau đó bảng sau có thể thừa kế lại bảng trước đó với thuộc tính của bảng trước. Ví dụ ta tạo bảng cities, bảng capitals thừa kế lại bảng cities. CREATE TABLE cities ( name text, population real, altitude int -- (in ft) ); CREATE TABLE capitals ( state char(2) ) INHERITS (cities); Trong ví dụ này, các cột trong bảng capitals thừa kế lại toàn bộ các thuộc tính về định dạng kiểu dữ liệu của bảng cities. Cho ví dụ, truy vấn sau tìm thấy cho những tên tất cả các thành phố, thành phố được định vị ở độ cao trên 500 fit so với mặt biển: SELECT name, altitude FROM cities WHERE altitude > 500; Kết quả +----------+----------+ |name | altitude | +----------+----------+ |Las Vegas | 2174 | +----------+----------+ |Mariposa | 1953 | +----------+----------+ |Madison | 845 | 2. Những giá trị không nguyên tố. 40 MS SQL Server vµ Postgre SQL Một trong những nguyên tắc của mô hình quan hệ là cột của bảng là nguyên tố. Còn PostgreSQL thì không có sự hạn chế này, cột có thể chứa đựng những mức dưới giá trị mà có thể được truy nhập từ ngôn ngữ hỏi. Chẳng hạn, bạn có thể tạo ra những cột là những mảng của nhièu kiểu cơ sở. a. Các mảng. PostgreSQL cho phép các cột của một hàng sẽ được định nghĩa cố định. Các mảng có kiểu cơ sở bất kì hoặc kiểu do người dùng định ra có thể được tạo ra. Sau đây là một ví dụ: CREATE TABLE SAL_EMP ( name text, pay_by_quarter integer[], schedule text[][] ); Trong ví dụ trên sẽ tạo ra một bảng có tên SAL_EMP với văn bản name, một mảng một chiều của số nguyên, mà đại diện tiền lương của người làm thuê bởi quý và một mảng hai chiều văn bản, mà đại diện chương trình hàng tuần của người làm thuê. Tiếp theo chúng ta xét tới ví dụ khởi tạo cấu trúc và việc chèn bảng bằng ngôn ngữ lập trình C: INSERT INTO SAL_EMP VALUES ('Bill', '{10000, 10000, 10000, 10000}', '{{"meeting", "lunch"}, {}}'); INSERT INTO SAL_EMP VALUES ('Carol', '{20000, 25000, 25000, 25000}', '{{"talk", "consult"}, {"meeting"}}'); Ví dụ sau đây truy vấn này khôi phục những tên của người làm thuê của ai thanh toán thay đổi vào quý hai: SELECT name FROM SAL_EMP WHERE SAL_EMP.pay_by_quarter[1] <> SAL_EMP.pay_by_quarter[2]; Kết quả +------+ |name | +------+ |Carol | 41 MS SQL Server vµ Postgre SQL IV. Lập trình Perl trong Postgre SQL Các trình ứng dụng độc lập với cơ sở dữ liệu có thể dễ dàng thay đổi, cập nhật hệ thống hoặc sử dụng các host cục bộ hay từ xa mà không cần thay đổi mã nguồn. Để đạt được điều này người ta sử dụng module DBI (Perl5 Database Interface Module). Vậy làm sao DBI có thể thực hiện cái mà nó phải làm? DBI là một giao diện cơ sở dữ liệu chung cung cấp cho một API tạo ra các script để sử dụng được các database driver ( DBD). DBI được tích hợp với các driver như ODBC và PROXY ( được sử dụng cho các kết nối của client/server). DBI hỗ trợ cho một số cơ sở dữ liệu như Oracle, Sybase, SQL Server và một số server mã nguồn mở khác. Thậm chí có thể sử dụng DBI để truy nhập các file có định dạng khác. Nếu có một server riêng cho mình, thì cần phải xác định có những driver nào trong hệ thống. Đầu tiên, sử dụng những module có khả năng quản trị để xác định liệu DBI có được cài đặt hay không? Nếu không được cài đặt, hãy tìm trong CPAN. Sau khi cài đặt được, thì chúng ta mới có thể sử dụng các phương thức trong DBI là available_driver() và data_sources() để tìm các driver và các database nào đang hiện diện. Nếu các driver cần lại không có trong danh sách tìm được thì hãy cố gắng cài lại trong một phiên bản mới hơn. Một câu lệnh có thể bao gồm 3 phần được sử dụng bởi các thuộc tính. Thuộc tính RaiseError được mặc định là 0 và thiết lập lại khi lệnh "chết", kết thúc script khi một lỗi xuất hiện đột ngột. Thuộc tính PrintError là được mặc định hoạt động và hiện văn bản lỗi từ DBI::err và DBI::errstr. Thuộc tính AutoCommit cũng mặc định đang được kích hoạt và sẽ đưa ra cảnh cáo nếu phương thức commit được sử dụng để thay đổi database. Khi một liên kết được tạo lập, một dãy lệnh được thông qua để tới database. Sau khi thực hiện song query, một liên kết được đóng lại theo phương thức sau: dbh->disconnect; Có 2 phương thức sau đây để thực hiện query. Nếu lệnh không đòi hỏi kết quả trả về như lệnh UPDATE, INSERT, hay DELETE, chúng ta có thể sử dụng phương thức này. $rc = $dbh->do($statement); trong đó $statement là một truy vấn SQL. Phương thức này ngay lập tức thực hiện truy vấn. Một phương pháp khác là đòi hỏi truy vấn có quyền phải "chuẩn bị" ưu tiên hơn để thực thi. 42 MS SQL Server vµ Postgre SQL $sth = $dbh->prepare($statement); Để biết thêm chi tiết xin hãy đến Perl DBI. Chỉ khi câu lệnh được "chuẩn bị" thì mới được quyền thực thi đưa vào database: $rv = $sth->execute; Tại đây, nếu thuộc tính AutoCommit không được thiết lập và cơ sở dữ liệu hộ trợ giao dịch thì có thể: $rc = $dbh->commit; Phương thức thực hiện có thể thực hiện nhiều lần cùng từ một bộ xử lý lệnh. Tuy nhiên, chúng ta nên trả về các kết quả giữa các lần thực hiện. Để thực hiện đIều này chúng ta sử dụng những phương thức sau fetchrow_array, fetchrow_arrayref, fetchrow_hashref, và fetchall_arrayref. Mỗi phương thức trên đều trả về dữ liệu ở dạng cụ thể là một mảng của các giá trị trường hay tham chiếu tới một biến băm có dạng name-value. Dưới đây thực hiện sử dụng fetchrow_hashref: while ( my $href = $sth->fetchrow_hashref ) { print “Name:\t”.$href->{name}.”\n”; print “Phone:\t”.$href->{phone}.”\n”; } Trong đó trường “name” và “phone” có trong database và là khóa trong phương thức fetchrow_hashref. Khi hoàn thành cú pháp dữ liệu trả về, chúng ta có thể thông báo cho bộ xử lý lệnh biết chúng ta sẽ thực hiện lệnh tiếp theo: $sth->finish(); Sử dụng module DBI Perl5, chúng ta có thể xây dựng các script linh động hỗ trợ cho các nguồn cơ sở tuỳ ý. 43 MS SQL Server vµ Postgre SQL Mục lục Phần 1 SQL Server. I. Giới thiệu chung về SQL II. Giới thiệu chung SQL Server I. II. III. IV. V. VI. VII. VIII. 1 2 Phần 2 SQL Server. SQL server 2000 Transact SQL Cơ sở dữ liệu trên SQL Server Sao lưu và phục hồi dữ liệu Tính toàn vẹn dữ liệu Truy vấn nâng cao Kỹ thuật Import và Export Data SQL Server và mạng 3 6 8 11 13 15 18 20 Phần 3. Sơ lược ngôn ngữ Perl. I. II. III. IV. V. Cấu trúc của một chương trình Perl Cách chạy một chương trình trong Perl Các kiểu dữ liệu trong Perl Xuất và nhập dữ liệu trong Perl Các phép toán trên Perl 44 25 25 26 27 27 MS SQL Server vµ Postgre SQL VI. VII. VIII. IX. X. Các lệnh có cấu trúc Lệnh nhỏ So khớp Lệnh thao tác trên biến băm và mảng Toán tử và hàm trên xâu 28 28 30 32 33 Phần 4. PostGre SQL. I. II. III. IV. Giới thiệu về Postgre SQL Cấu trúc của Postgress SQL Đặc điểm nổi bật của Postgres SQL Lập trình Perl trong Postgre SQL 45 34 35 37 38
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.