intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài 8 Quản trị dữ liệu trong SQL Server

Chia sẻ: Hoang Minh Minh | Ngày: | Loại File: PDF | Số trang:14

179
lượt xem
20
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Giới thiệu Trong phần trước chúng ta đã biết cách thiết kế, tạo và quản lý bảng sử dụng công cụ Enterprise Manager cũng như T-SQL và công cụ Query Analyzer. Chúng ta cũng đã hiểu các khái niệm toàn vẹn thực thể (Entity Intergrity) và toàn vẹn Domain, biết được cách triển khai chúng. Cuối cùng là cách xóa và sửa thiết kế của một bảng. Trong bài này chúng ta sẽ học cách thêm, sửa và xóa dữ liệu từ các bảng. ...

Chủ đề:
Lưu

Nội dung Text: Bài 8 Quản trị dữ liệu trong SQL Server

  1. SQL Server Bài 8 Quản trị dữ liệu trong SQL Server Mục tiêu: Hoàn thành bài này chúng ta có thể – Làm việc được với biểu thức điều kiện và các toán tử logic trong T-SQL Sử dụng T-SQL để chèn dữ liệu vào bảng Cách cập nhật dữ liệu đã có trong bảng Cách xóa dữ liệu trong bảng Cách export và import dữ liệu bằng công cụ Enterprise Manager Giới thiệu Trong phần trước chúng ta đã biết cách thiết kế, tạo và quản lý bảng sử dụng công cụ Enterprise Manager cũng như T-SQL và công cụ Query Analyzer. Chúng ta cũng đã hiểu các khái niệm toàn vẹn thực thể (Entity Intergrity) và toàn vẹn Domain, biết được cách triển khai chúng. Cuối cùng là cách xóa và sửa thiết kế của một bảng. Trong bài này chúng ta sẽ học cách thêm, sửa và xóa dữ liệu từ các bảng. Chúng ta cũng sẽ nắm được sự đa dạng của các câu lệnh điều kiện và các toán tử được hỗ trợ bởi SQL Server 2000. Chúng ta sẽ nghiên cứu cú pháp của các câu lệnh INSERT, UPDATE và DELETE và áp dụng nó vào các ví dụ minh họa. Khái niệm join các bảng cũng sẽ được giới thiệu và cuối cùng chúng ta sẽ học cách import và export dữ liệu từ SQL Server 2000 sử dụng DTS Wizard. 8.1 Biểu thức điều kiện và các toán tử logic trong T-SQL Như chúng ta đã biết, Transact-SQL (T-SQL) là một tập hợp các câu lệnh mở rộng của Microsoft. Nó cho phép chúng ta có thể thực hiện các chức năng lập trình bên trong các CSDL quan hệ được cung cấp bởi SQL Server 2000. Mệnh đề WHERE được sử dụng để lọc dữ liệu. Mệnh đề WHERE cho phép sử dụng các biểu thức điều kiện kết hợp với các toán tử logic. Một biểu thức (expression) được cấu thành từ các toán tử và các toán hạng, nó được SQL Server tính toán sau đó trả về một giá trị. Biển thức đơn giản có thể là một hằng số (constant), biến (variable), cột (column), hoăc một giá trị vô hướng. Các toán tử có thể được dùng để nối hai hay nhiều biểu thức đơn giản thành một biểu thức phức tạp. Mệnh đề WHERE sẽ được nói chi tiết hơn trong bài sau.. Một biểu thức có thể gồm có một trong những thành phần sau:  Constant: là một ký hiệu diễn tả một giá trị xác định. Constant có thể bao gồm ký tự và chữ số (a-z, A-Z, và n 0-9) hoặc các ký hiệu (!, @, #, ...). Các hằng ký tự và hằng datetime phải nằm trong dấu nháy đơn, trong khi các hằng chuỗi nhị phân (binary strings) và hằng số (numeric) thì không cần dấu nháy. Quản trị dữ liệu trong SQL Server 131
  2. SQL Server  Column: Tên cột trong bảng. Trong biểu thức có thể sử dụng tên cột; không nhất thiết phải chỉ rõ tên cột gồm đầy đủ bốn phần như tên Server, tên CSDL, tên owner.  Unary Operator: Toán tử mả chỉ làm việc với một toán hạng (toán tử một ngôi): Toán tử + xác định một số dương. Toán tử – xác định một số. Toán tử ~ xác định phần bù của một số. Toán tử một ngôi chỉ áp dụng với các biểu thức được đánh giá theo kiểu numeric.  Binary Operator: Là toán tử xác định cách kết hợp 2 biểu thức để mang lại một kết quả đơn (toán tử hai ngôi). Một binary _operator có thể là một toán tử số học, toán tử gán(=), toán tử bít, toán tử so sánh, toán tử logíc, toán tử kết hợp các chuỗi (+), hoặc toán tử đơn nguyên. Có thể xem thêm Operators để biết thêm chi tiết Bảng 8.1 liệt kê các toán tử so sánh có thể sử dụng được trong các câu lệnh T-SQL cùng với WHERE. Toán tử Ý nghĩa = Bằng > Lớn hơn < Nhỏ hơn >= Lớn hơn hoặc bằng 100 NAME LIKE ‘DAVID’ GRADE ‘FAIL’ Cũng có thể sử dụng các toán tử đại diện(wildcard operators) trong bảng 8.2 Wildcard Mô tả Ví dụ ‘_’ Một ký tự Select UDesc From UserTypes Where UDesc Like ‘C_’ % Nhiều ký tự Select UserName From Users Where UserName Like ‘'AL%'’ [] Một ký tự thuộc khoảng đặt trong Select * from CourseMaterial where ngoặc vuông YearSem Like 'Sem[1-2]' [^] Một ký tự mà không thuộc khoảng Select * from CourseMaterial where đặt trong ngoặc vuông YearSem Like 'Sem[^1-2]' Bảng 8.2: Các toán tử đại diện Quản trị dữ liệu trong SQL Server 132
  3. SQL Server Với nhu cầu chọn lọc dữ liệu. Mệnh đề WHERE sủ dụng trong câu lệnh T-SQL sẽ hoạt động như một bộ lọc và hoàn toàn thỏa mãn các nhu cầu chọn lọc dữ liệu. Nó không thể đứng đơn lẻ nhưng lại rất hữu ích khi kết hợp với các câu lênh T-SQL. Mệnh đề Where có thể coi như là mệnh đề để phát biểu điều kiện tìm kiếm. 8.1.2 Logical operators Các toán tử logíc được hỗ trợ bới T-SQL là AND, OR, và NOT. Toán tử AND và OR được sử dụng để kết hợp các biểu thức điều kiện trong mệnh đề WHERE. NOT phủ định điều kiện tìm kiếm. AND kết hợp hai điều kiện và trả về TRUE khi và chỉ khi cả hai điều kiện đều là true, OR cũng kết hợp hai đièu kiện, nhưng nó trả về TRUE khi một trong hai điều kiện là true. Nếu trong câu lệnh sử dụng nhiều hơn một toán tử logíc, NOT được đánh giá đầu tiên, sau đó là AND, và cuối cùng là OR. 8.2 Sử dụng T-SQL để chèn dữ liệu Chúng ta đã biết cách tạo bảng, sửa cấu trúc của bảng và thêm các ràng buộc, bây giờ chúng ta sẽ học cách thêm dữ liệu vào bảng. Chúng ta có thể thêm dữ liệu vào bảng hay cũng có thể lấy dữ liệu từ một bảng đã tồn tại để đưa vào một bảng mới. 8.2.1 Sử dụng INSERT để chèn dữ liệu Cú pháp để thêm dữ liệu vào bảng sử dụng T-SQL là: Cú pháp: INSERT [INTO] VALUES Trong đó: [INTO] là một từ khoá tuỳ chọn (optional keyword) đặt giữa INSERT và bảng đích. là tên bảng mà dữ liệu sẽ được chèn vào. danh sách các giá trị cho các cột của bảng. Ví dụ: INSERT INTO jobs VALUES (‘Graphics Artist’, 25, 100) Bảng jobs bao gồm 4 cột: job_id, job_desc, min_lvl, max_lvl. Trong đó, cột job_id được thiết đặt là cột Identity, vì vậy câu lệnh trên chèn một dòng với 3 giá trị ứng với 3 cột còn lại trong bảng jobs. Hình 8.1 chỉ ra cách thực thi câu lệnh trên trong trình Query Analyzer. Quản trị dữ liệu trong SQL Server 133
  4. SQL Server Hình 8.1: Thêm dữ liệu vào bảng Chúng ta có thể xem dữ liệu mới được thêm vào bằng công cụ Enterprise Manager. Hình 8.2: Xem kết quả nhập liệu 8.2.2 Sử dụng SELECT INTO để thêm dữ liệu từ một bảng vào một bảng khác Một cách nhập liệu nữa, chúng ta có thể lấy dữ liệu từ một bảng đã tồn tại để thêm vào một bảng mới bằng câu lệnh INSERT SELECT. Cú pháp như sau INSERT SELECT FROM Trong đó, table name là tên của bảng mà ta muốn thêm dữ liệu, column list là danh sách cột được chọn từ bảng nguồn và tablename2 là tên bảng nguồn. CREATE TABLE author_details ( au_id varchar(11), au_lname varchar(40)) GO INSERT author_details SELECT authors.au_id, authors.au_lname FROM authors Quản trị dữ liệu trong SQL Server 134
  5. SQL Server Hình 8.3: Thêm dữ liệu từ một bảng vào bảng khác Chúng ta cũng có thể lấy dữ liệu từ một bảng để thêm vào một bảng khác như dưới đây: INSERT INTO Sales (Stor_id) SELECT stor_id FROM Stores Trong ví dụ này, chỉ dữ liệu trong cột stor_id của bảng Stores sẽ được thêm vào bảng Sales chứ không phải dữ liệu của tất cả các cột sẽ đựoc thêm vào. 8.3 Sử dụng T-SQL để cập nhật dữ liệu vào bảng Bên cạnh việc thêm dữ liệu vào bảng ta còn có thể chỉnh sửa dữ liệu bằng câu lệnh UPDATE. Việc cập nhật là cần thiết với bất cứ khi nào dữ liệu cần được thay đổi. Ví dụ địa chỉ của một sinh viên bất kỳ có thể thay đổi hoặc Batchno cũng có thể bị thay đổi. Trong mọi trường hợp chúng ta sẽ không thêm dữ liệu để thể hiện các thay đổi mà thay vào đó ta sẽ sửa trực tiếp vào dữ liệu có sẵn. 8.3.1 Cập nhật dữ liệu cho một dòng Cú pháp cập nhật dữ liệu cho một dòng sử dụng T-SQL là: Cú pháp: UPDATE SET [WHERE ] Tham số được mô tả như sau: là tên bảng nơi dữ liệu được cập nhật. giá trị mới sẽ được thay vào. Giả sử chúng ta muốn tăng giá của một quyển sách lên 25%. Chúng ta cũng biết title id của quyển sách đó và biết cả tên trường chứa giá. Câu lệnh để thực hiện sẽ là: UPDATE titles set price=price + (25/100*price) where title_id='TC7777' Dữ liệu trong bảng trước và sau khi cập nhật có thể xem bằng công cụ Enterprise Manager. Câu lệnh T-SQL được thực hiện trong công cụ Query Analyzer như trong hình 8.5. Quản trị dữ liệu trong SQL Server 135
  6. SQL Server Hình 8.4: Dữ liệu trước khi cập nhật Hình 8.5: Cập nhật dữ liệu vào một dòng Hình 8.6: Dữ liệu sau khi cập nhật 8.3.2 Câp nhật nhiều dòng trong một bảng Chúng ta có thể cập nhật nhiều dòng trong một bảng bằng cách bỏ mệnh đề WHERE hoặc sử dụng điều kiện kết hợp trong WHERE để cập nhật nhiều dòng dữ liệu. Khi chúng ta không sử dụng mệnh đề WHERE, tất cả các dòng trong bảng sẽ được tác động bởi câu lệnh UPDATE. Ví dụ, UPDATE publishers SET city = 'Atlanta', state = 'GA' Sẽ cập nhật tất cả các giá trị của city thành Atlanta và giá trị của state thành GA. Quản trị dữ liệu trong SQL Server 136
  7. SQL Server Hình 8.7: Cập nhật nhiều dòng Tương tự, để thay tất cả phiên bản (edition) của các quyển sách thành 1, chúng ta sử dụng câu lệnh sau: UPDATE Books SET Edition = 1 8.3.3 Cập nhật với mệnh đề JOIN Chúng ta cũng có thể thay đổi dữ liệu dựa trên dữ liệu từ 2 bảng khác nhau. Có thể làm được việc này bằng cách sử dụng mệnh đề Join. JOINS được sử dụng để lấy dữ liệu từ 2 hoặc nhiều bảng dựa trên quan hệ logíc giữa các bảng. Đặc trưng của Join là chỉ ra một Khóa Ngoại (Foreign key) liên quan giữa các bảng. Nó định nghĩa cách mà 2 bảng được quan hệ với nhau trong câu truy vấn:  Chỉ ra cột liên quan giữa các bảng để JOIN. Đặc trưng của JOIN là chỉ định một Khóa Ngoại (Foreign Key) từ một bảng và các trường khoá liên quan tới nó từ bảng kia.  Chỉ ra toán tử so sánh giữa các cột. JOIN có thể sử dụng cùng với FROM hoặc WHERE với cú pháp như sau: Table_A AS Table_Alias_A Table_B AS Table_Alias_B ON Table_Alias_A. = Table_Alias_B. Trong đó, Table_A và Table_B – Tên của các bảng để join AS Table_Alias – bí danh (alias) của bảng. Một bí danh định nghĩa trong một truy vấn có thể sử dụng thay cho tên bảng và như vậy không cần phải chi rõ tên đầy đủ của bảng. Có 3 kiểu JOINS khác nhau: Quản trị dữ liệu trong SQL Server 137
  8. SQL Server  Inner Joins  Outer Joins  Self Joins A. Inner Joins Trong Inner Join các dòng của 2 bảng được kết hợp lại và đưa vào trong kết quả nếu các dòng của cả 2 bảng thoả mãn điều kiện kết hợp dựa trên cột kết hợp. Một ví dụ của cập nhật các dòng sử dung Inner Join như sau: Hình 8.8: Cập nhật sử dụng INNER Join B. Outer Joins Inner Join trả về dòng chỉ khi có ít nhât một dòng của cả 2 bảng thoả mãn điều kiện kết hợp. Inner Joins loại bỏ những dòng mà không thoả mãn điều kiện kết hợp. Outer Joins, trả về tất cả các dòng của ít nhất một trong những bảng xuất hiện sau FROM thêm vào đó là những dòng phù hợp với bất kỳ điều kiện đặt trong WHERE hoặc HAVING. Left Outer Join trả về tất cả các dòng ở bảng bên trái và những dòng thoả mãn điều kiện kết hợp ở bảng bên phải. The Right Outer Join trả về tất cả các dòng ở bảng thứ 2 và bỏ qua những dòng không thoả mãn điều kiện kết hợp ở bảng đầu tiên. Hình 8.9: Outer Joins C. Self Join Self-join là một kiểu của inner join. Được sử dụng để tìm những dòng trong một bảng mà có quan hệ với các dòng khác trong chính bảng đó. Một bảng mà được Join với chính nó thì được gọi là self-join. Quản trị dữ liệu trong SQL Server 138
  9. SQL Server 8.4 Sử dụng T-SQL để xoá dữ liệu khỏi bảng Chúng ta không chỉ có thể thay đổi dữ liệu trong bảng của SQL Server 2000, mà chúng ta còn có thể xóa dữ liệu khỏi bảng. Xoá dữ liệu bằng câu lệnh T-SQL là rất đơn giản như mô tả sau đây. 8.4.1 Xoá một dòng Cú pháp để xoá một dòng khỏi bảng sử dụng T-SQL như sau: Cú pháp: DELETE FROM [WHERE ] Ở đây là tên bảng sẽ được xoá bớt các dòng. WHERE được sử dụng để đưa ra các điều kiện. Điều kiện phải trả về dòng sẽ bị xoá. Ví dụ: DELETE FROM pub_info WHERE pub_id=9999 Câu lệnh dưới đây sẽ xoá dòng có publisher id là 9999. Hình 8.10: Xoá một dòng khỏi bảng Chú ý: Trong khi xoá dòng khỏi bảng, cần xem xét sự toàn vẹn tham chiếu có được duy trì không. Nếu có những dòng của bảng khác đang được liên kết với dòng bị xoá, sẽ không thể xoá được các dòng này nếu như nó gây ra sự không toàn vẹn trong tham chiếu. 8.4.2 Xoá nhiều dòng Nếu WHERE không được sử dụng trong câu lệnh DELETE, tất cả các dòng trong bảng sẽ bị xoá hết. Thông thường, mệnh đề WHERE được sử dụng để lọc ra những dòng dữ liệu cần phải xóa. Hình 8.11: Xoá nhiều dòng khỏi bảng Quản trị dữ liệu trong SQL Server 139
  10. SQL Server 8.4.3 Sử dụng TRUNCATE TABLE để xoá tất cả dữ liệu khỏi bảng TRUNCATE TABLE là câu lệnh mà chúng ta có thể sử dụng để xoá tất cả các dòng khỏi bảng. Câu lệnh TRUNCATE TABLE chạy nhanh hơn và sử dụng ít tài nguyên hệ thống và transaction log hơn câu lệnh DELETE. Mặc dù TRUNCATE TABLE loại bỏ hoàn toàn các dòng khỏi bảng, tuy nhiên cấu trúc bảng và các cột, các ràng buộc, indexes, … là vẫn còn nguyên.. Hình 8.12 chỉ ra câu lệnh được thực hiện trong công cụ Query Analyzer. Hình 8.12: Truncate table 8.5 Importing và Exporting dữ liệu trên SQL Server 2000 Có thể sử dụng các nguồn dữ liệu từ bên ngoài đưa vào trong SQL Server 2000. Quá trình này được gọi là importing dữ liệu. Cũng có thể gửi dữ liệu từ SQL Server 2000 ra các nguồn khác. Quá trình này được gọi là exporting dữ liệu. Chúng ta có thể import và export dữ liệu bằng một trong hai cách sau:  Chọn Import/Export công cụ trong bộ công cụ Microsoft SQL Server hoặc  Chọn Import/Export trong công cụ Enterprise Manager Chọn Import/Export trong bộ công cụ Microsoft SQL Server sẽ khởi động Data Transformation Services (DTS) Import/Export Wizard. Công cụ wizard sẽ hướng dẫn người sử dụng thực hiện các chức năng của DTS gồm import, export, … dữ liệu và các đối tượng giữa nhiều nguồn dữ liệu khác nhau. Cách khác là chúng ta có thể chọn một bảng riêng và chọn Import/Export rồi gọi Data Transformation Services (DTS) Import/Export Wizard sau đó thực hiện các bước theo hướng dẫn của DTS để import hoặc export dữ liệu. Hình 8.13 chỉ cách DTS được sử dụng để import hoặc export dữ liệu. Quản trị dữ liệu trong SQL Server 140
  11. SQL Server Figure 8.13: Data Transformation Services Import/Export Wizard Nguồn dữ liệu đích của quá trình export có thể là CSDL MS Access, bảng tính Excel hoặc thậm chí cả các tệp văn bản thông thường. SQL Server 2000 hỗ trợ khá nhiều nguồn dữ liệu để export. Tương tự như vậy chúng ta cũng có thể import dữ liệu từ các nguồn ở trên. Quản trị dữ liệu trong SQL Server 141
  12. SQL Server Tóm tắt  T-SQL cung cấp nhiều toán tử và nhiều biểu thức điều kiện có thể làm việc cùng nhau.  Mệnh đề WHERE hoạt động như một bộ lọc trong các câu lệnh T-SQL.  Các toán tử logíc được hỗ trợ bởi T-SQL là AND, OR, và NOT.  Các toán tử AND và OR được sử dụng để kết hợp các biểu thức điều kiện trong câu lệnh WHERE. NOT phủ định biểu thức điều kiện. AND kết hợp 2 điều kiện và trả về TRUE khi và chỉ khi cả hai điều kiện đều là true. OR cũng kết hợp 2 điều kiện nhưng nó trả về TRUE khi một trong 2 điều kiện là true.  Câu lệnh T-SQL để thêm dữ liệu vào bảng là INSERT [INTO] VALUES Câu lệnh T-SQL để lấy dữ liệu từ một bảng đã có thêm vào một bảng mới là INSERT SELECT FROM  Câu lệnh T-SQL để cập nhật một dòng trong bảng là UPDATE SET [WHERE ]  Nếu WHERE không được sử dụng trong câu lệnh UPDATE, thì tất cả các dòng trong bảng sẽ bị cập nhật.  Mệnh đề Joins được sử dụng để lấy dữ liệu từ 2 hay nhiều bảng dựa trên quan hệ logíc giữa các bảng.  Câu lệnh để xoá một dòng khỏi bảng là DELETE FROM [WHERE ]  TRUNCATE TABLE là câu lệnh chúng ta có thể sử dụng để xoá tất cả các dòng trong bảng.  Chúng ta có thể import và export dữ liệu bằng một trong 2 cách sau: • Chọn Import/Export trong bộ công cụ Microsoft SQL Server hoặc • Chọn Import/Export trong công cụ Enterprise Manager Quản trị dữ liệu trong SQL Server 142
  13. SQL Server Kiểm tra kiến thức 1. Các toán tử logíc được hỗ trợ bởi T-SQL là ___________, _______ và _______. 2. _________ là ký hiệu diễn tả một giá trị xác định. 3. Công cụ ______________ wizard hướng dẫn người sử dụng thực hiện các chức năng của DTS gồm import, export, … dữ liệu và các đối tượng giữa nhiều nguồn khác nhau. 4. Nếu ____________không được sử dụng cùng với câu lệnh DELETE, thì tất cả các dòng trong bảng sẽ bị xoá hết. 5. Khi có nhiều hơn một toán tử logíc được sử dụng trong một câu lệnh, __________ được đánh giá trước, sau đó là _______ và cuối cùng là ________. 6. _________ chạy nhanh hơn và sử dụng ít tài nguyên hệ thống và transaction log hơn câu lệnh DELETE. 7. Một bảng là join với chính nó thì được gọi là ______________. 8. Có ba kiểu join là _____________ , _________________ và ____________. 9. Chúng ta có thể lấy dữ liệu từ một bảng đã có thêm vào một bảng mới bằng câu lệnh ______________. 10. Gửi dữ liệu từ một CSDL của SQL Server 2000 tới một nguồn dữ liệu khác được gọi là __________. Quản trị dữ liệu trong SQL Server 143
  14. SQL Server Trang này được chủ ý để trống. Quản trị dữ liệu trong SQL Server 144
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2