Khái niệm: Cơ sở dữ liệu là một tập hợp các dữ liệu có liên quan, được lưu trữ có tổ chức theo dạng bảng nhằm giảm việc lưu dưa thừa dữ liệu và được lưu trữ lại để sử dụng khi cần thiết.
Trang 1Bài tập SQL 2005 1
smallmoneybinaryvarbinarynumericdecimalfloatintsmallinttinyintcharvarcharncharnvarchartextntextimage
Order Data Type
Data integrity
Entity integrity Referential integrity Domain integrity User-defined integrity
Trang 3Lời giới thiệu
Sách bài tập do tập thể giáo viên AiTi-Aptech thiết kế và được sử dụng như một phần không thể tách rời khỏi giáo trình đang học của Aptech Ấn Độ với các học viên đang theo học tại Trung tâm
Tập sách bài tập này là tài liệu lưu hành nội bộ, chỉ dành cho các học viên theo học tại Trung tâm đào tạo Lập trình viên Quốc tế AiTi-Aptech Mọi hình thức sao chép lại nội dung của sách là vi phạm bản quyền và không tuân thủ Luật Sở hữu trí tuệ của Nhà nước Việt Nam
AiTi-Aptech luôn mong mỏi tạo dựng một môi trường học tập tốt cho các bạn học viên theo học tại trung tâm Mọi ý kiến đóng góp về xây dựng Sách bài tập, cải tiến hệ thống xin gửi mail về
contact.aiti@gmail.com hoặc đường dây nóng (04) 6 64 8848 Chúng tôi sẽ ghi nhận và cải
tiến để có thể cung cấp cho các bạn một môi trường học tập ngày một tốt hơn
“Sự nghiệp tương lai của các bạn là thành công của chúng tôi”
Đội thiết kế Sách bài tập
Việt Nam luôn thiếu Lập trình viên đẳng cấp Quốc tế
Trang 4Ch ng 1 : Gi i thi u h qu n tr C s d li u (CSDL) ươ ớ ệ ệ ả ị ơ ở ữ ệ 3
Ch ng 2 : T ng quan v SQL Server 2005ươ ổ ề 4
Ch ng 3 : B ng và các ki u d li uươ ả ể ữ ệ 12
Chương 1 : Giới thiệu hệ quản trị Cơ sở dữ liệu (CSDL)
Tóm tắt những nội dung cần ghi nhớ trong chương:
1 Khái niệm: Cơ sở dữ liệu là một tập hợp các dữ liệu có liên quan, được lưu trữ có tổ chức theo dạng bảng nhằm giảm việc lưu dưa thừa dữ liệu và được lưu trữ lại để sử dụng khi cần thiết
2 Phương pháp tiếp cận Quản lý dữ liệu
- Hệ thống file
- Ưu điểm chính: đơn giản, thuận tiện, hệ thống nào cũng hỗ trợ
- Nhược điểm chính: Dư thừa dữ liệu, dữ liệu không nhất quán, khó khăn trong truy vấn dữ liệu
Trang 55) …6) …7) …8) …
- (?) Thực hiện so sánh ưu nhược điểm trong việc tổ chức và lưu trữ dữ liệu cũng như truy vấn
dữ liệu từ các mô hình trên
5 Hệ quản trị CSDL Quan hệ
1 Khái niệm: từ khái niệm Hệ quản trị CSDL ta có thể dễ dàng định nghịa khái niệm Hệ quản trị CSDL Quan hệ (RDBMS) là Hệ quản trị CSDL theo mô hình dữ liệu quan hệ
2 (?) Các khái niệm trong Hệ quản trị CSDL Quan hệ:
1) Dữ liệu được biểu diễn dưới dạng một tập các…
2) Mỗi quan hệ được biểu diễn dưới dạng…
3) Các cột dữ liệu trong bảng là các…
4) Mỗi dòng dữ liệu biểu diễn thông tin của một…
5) Mỗi bảng dữ liệu có một tập các thuộc tính được gọi là … cho phép biểu
diễn một Thực thể duy nhất
Bài tập:
1) Viết một chương trình C cho phép lưu dữ liệu của 2 bảng Table 1.8 và Table 1.11 trong trang 18
và 19 của sách vào trong file phẳng
a Viết hàm lấy thông tin khách hàng theo số điện thoại, ví dụ nhập liệu: 0241 chương trình hiển thị thông tin 2 khách hàng là Ryan và Bruce
b Viết hàm hiển thị danh sách khách hàng và số lượng đơn hàng mà khách hàng đặt
2) Hãy liệt kê những câu hỏi truy vấn về những thông tin mà bạn có thể thu được từ Table 1.8 và Table 1.11 như “Khách hàng đặt nhiều đơn hàng nhất?”, “Từ ngày 01/08/06 đến 20/08/06 có bao
Trang 6nhiêu đơn hàng?” v.v rồi thử trao đổi với các bạn của bạn về những câu hỏi này, cùng nhau xác định xem cần viết bao nhiêu hàm trong chương trình C để trả lời các câu hỏi này
Chương 2 : Tổng quan về SQL Server 2005
A Tóm tắt nội dung cần ghi nhớ
(?) Cho biết các tính năng cơ bản của SQL Server 2005.
Các tính năng mới của SQL Server 2005 bao gồm:
-Notification Services: cho phép gửi thông báo khi có một sự kiện xảy ra trong
CSDL.
-Reporting Services: dịch vụ báo cáo về các sự kiện xảy ra trên hệ thống CSDL.
-Service Broker: công nghệ này dựa trên kiến trúc hướng dịch vụ (Service Oriented
Architecture - SOA) Nó cung cấp phương thức liên lạc chắc chắn và bảo mật giữa các CSDL với nhau.
-Engine CSDL nâng cao: cải tiến ngôn ngữ Transact-SQL, thêm tính năng mới XML,
thêm kiểu dữ liệu mới,…
b Các phiên bản:
Trang 7SQL Server chia thành nhiều phiên bản tùy theo nhu cầu sử dụng:
-Bản Enterprise với đầy đủ tính năng, phục vụ những ứng dụng cỡ lớn.
-Bản Standard dành cho doanh nghiệp vừa và nhỏ.
-Bản Workgroup dành cho nhóm làm việc và tổ chức nhỏ.
-Bản Developer dành cho người phát triển và kiểm thử ứng dụng.
-Bản Express là bản miễn phí, chỉ có các tính năng cơ bản nhất.
c Ưu điểm:
-Nâng cao khả năng quản lý dữ liệu.
-Tăng năng suất và hiệu quả phát triển ứng dụng.
-Hỗ trợ nghiệp vụ thông minh và linh hoạt.
-Có các tính năng ưu việt, nổi trội.
3. Các thành phần của SQL Server 2005:
(?) Nêu các thành phần của SQL Server 2005.
4. Kiến trúc ứng dụng doanh nghiệp
a Các lớp (layer):
-Data Presentation: nơi người dùng duyệt và truy cập dữ liệu.
-Application Logic: đặt ra các quy định và xử lý dữ liệu.
-Data Services: trực tiếp thao tác và lưu trữ dữ liệu Bốn chức năng chính thuộc lớp
này là: lấy dữ liệu, chèn thêm dữ liệu, cập nhật và xóa dữ liệu.
b Các mô hình phân lớp:
Trang 8-Mô hình 2 lớp: gồm 2 lớp Data Presentation và Data Services
-Mô hình 3 lớp: gồm 3 lớp Data Presentation, Application Logic và Data Services.
5. Các CSDL hệ thống:
-master: lưu trữ tất cả thông tin hệ thống cho một instance của SQL Server.
-msdb: được chương trình SQL Server Agent dùng để hẹn giờ thông báo hay thực
hiện tác vụ.
-model: dùng làm mẫu để tạo CSDL mới.
-Resource: chứa các đối tượng hệ thống có trong SQL Server 2005.
-tempdb: dùng để chứa các dữ liệu tạm.
-Các đối tượng trong CSDL: bảng, kiểu dữ liệu, ràng buộc,…
-Thông tin đăng nhập, phân nhóm, phân quyền: login, user, role, group Có 2 cách xác thực: dùng user của Windows và dùng user của SQL Server.
Trang 10-Mở Microsoft SQL Server Management Studio.
-Kết nối đến instance của SQL Server 2005 bản Enterprise.
-Ngắt kết nối (disconnect) và kết nối lại.
-Đóng và mở lại các panel Object Explorer, Object Explorer Details.
-Duyệt cây thư mục trong Object Explorer, xem xét những thay đổi bên Object
Explorer Details Cho biết tác dụng của các panel này?
-Mở SQL Server Books Online từ SQL Server Management Studio.
-Trong SQL Server Books Online, mở panel Index (nhấn nút Index trên thanh công cụ) Tiếp đó tìm kiếm thông tin về “.mdf files”.
Trang 112. Ngôn ngữ T-SQL
a Biến:
-Biến cục bộ: (?) Nêu cách khai báo và gán giá trị cho biến cục bộ.
-Biến toàn cục: @@VERSION, @@LANGUAGE, @@SERVERNAME,…
b Kiểu dữ liệu:
-Những đối tượng được định kiểu là: các cột trong bảng, tham số, biến.
-Các kiểu dữ liệu thường dùng: int, bigint, nvarchar, ntext, datetime, smalldatetime, decimal, image.
c Ghi chú:
Đây là một dòng ghi chú /* Đây là một đoạn ghi chú nằm trên nhiều dòng */
3. Hàm và biểu thức trong T-SQL
Trang 12a Các hàm:
-Hàm gộp: SUM (tính tổng), AVG (giá trị trung bình), COUNT (đếm), MAX (tìm giá
trị lớn nhất), MIN (tìm giá trị nhỏ nhất).
-Hàm chuyển đổi: CONVERT (chuyển kiểu dữ liệu của một giá trị).
-Hàm ngày giờ: (?)Tìm ví dụ về cách sử dụng các hàm ngày giờ trên SQL Server
Books Online.
-Hàm toán học: phục vụ việc tính toán đại số.
-Hàm hệ thống: cung cấp thông tin về siêu dữ liệu và các cấu hình của hệ thống.
-Hàm xếp hạng: Đánh số dòng bắt đầu từ 1, 2, 3… trong tập hợp kết quả
(ROW_NUMBER); Trả về thứ hạng trong tập hợp kết quả (DENSE_RANK).
b Biểu thức:
(?)Cho biết các dạng toán tử có thể sử dụng trong biểu thức.
4. Ngôn ngữ định nghĩa dữ liệu (Data Definition Language – DDL)
a Tạo bảng:
CREATE TABLE <Tên_Bảng>
(<Tên_Cột1> <Kiểu_dữ_liệu>, <Tên_Cột2> <Kiểu_dữ_liệu>,…)
CREATE TABLE Contacts
(MailID varchar(20) PRIMARY KEY, Name text NOT NULL, TelephoneNumber int)
b Sửa bảng: ALTER TABLE
Trang 13ALTER TABLE <Tên_Bảng>
[ALTER COLUMN <Tên_Cột> <Kiểu_dữ_liệu_mới>]
| [ADD <Tên_Cột> <Kiểu_dữ_liệu>]
| [DROP COLUMN <Tên_Cột>
c Xóa bảng: DROP TABLE
DROP TABLE <Tên_Bảng>
5. Ngôn ngữ thao tác dữ liệu:
a Cơ bản:
Ngôn ngữ thao tác dữ liệu (Data Manipulation Language – DML) sử dụng các lệnh SELECT, INSERT, UPDATE, DELETE để thực hiện những thao tác tương ứng trên các đối tượng tạo bởi DDL.
AS (SELECT <Danh_sách_cột> FROM <Tên_bảng>)
-Mệnh đề WRITE: thay đổi một phần giá trị của một biểu thức.
6. Ngôn ngữ điều khiển dữ liệu
Trang 14Ngôn ngữ điều khiển dữ liệu (Data Control Language – DCL) sử dụng các lệnh
GRANT, REVOKE, DENY để phân quyền và hủy quyền truy cập, sửa đổi các đối tượng trong CSDL.
-Mệnh đề TOP: quyết định số dòng trả về của tập kết quả.
-Mệnh đề TABLESAMPLE: giới hạn số dòng trả về của tập kết quả.
-Mệnh đề OUTPUT: cho thông tin về sự thay đổi của các dòng bởi lệnh INSERT, UPDATE hoặc DELETE.
-Toán tử PIVOT: Gộp một số giá trị trong bảng rồi chuyển dòng thành cột.
-Toán tử UNPIVOT: Lấy các cột trong bảng rồi chuyển thành các dòng.
B Bài tập
Trong CSDL AdventureWorks:
-Hiển thị tổng số nhân viên nữ trong bảng HumanResources.Employee.
-Hiển thị 15% số dòng của bảng Person.Contact.
Trang 15-Tạo bảng Item theo cấu trúc sau:
Tên cột Kiểu dữ liệu Kích thước
StandardCost Decimal 18, 4 SellEndDate Datetime
-Lấy tất cả dữ liệu thỏa mãn điều kiện SellEndDate khác NULL từ bảng Production.Product đưa vào bảng Item.
-Thêm cột Picture có kiểu dữ liệu Image vào bảng Item.
-Tăng StandardCost thêm 5% đối với các sản phẩm có tên là “Road-150 Red, 44” trong bảng Item.
-Đổi kiểu dữ liệu của cột ItemID trong bảng Item thành Bigint.
-Hiển thị thông tin về tên và giá chuẩn của các sản phẩm có ItemID > 820 trong bảng Item.
-Xóa cột Picture khỏi bảng Item.
-Xóa thông tin về các sản phẩm có tên là “HL Mountain Frame - Black, 48” trong bảng Item.
-Hủy toàn bộ bảng Item.
-Tạo một file script ghi lại các thao tác đã thực hiện trong bài tập này Đặt tên file là
“baitap05.sql”.
-Sử dụng các ghi chú để mô tả rõ ý nghĩa của từng dòng lệnh VD:
Delete all records from table Item
DELETE FROM Item
Trang 16-Đóng file “baitap05.sql” Mở lại file này, nhấn F5 để chạy toàn bộ các lệnh trong file Quan sát kết quả và nêu nhận xét.
Chương 3 : Bảng và các kiểu dữ liệu
I Bảng – Table:
Trong cơ sở dữ liệu bảng là thành phần chính của chúng.Do bảng là đối tương lưu trữ dữ liệu thực , khi cần giao tiếp với cơ sở dữ liệu khác, bảng là đối tượng căn bản nhất trong bất kỳ loại cơ sở dữ liệu nào, chúng được coi như là một miền dữ liệu
Mỗi bảng được định nghĩa nhiều trường,mỗi trường(field hay còn gọi là column name) ứng với một loại kiểu dữ liệu Dữ liệu nhập vào có thể chấp nhận hoặc từ chối tùy thuộc vào nguyên tắc ràng buộc dữ liệu hoặc loại dữ liệu tương thích do hệ thống hay người dùng định nghĩa
Khi thiết kế cơ sở dữ liệu nên đặt tên bảng đúng chuẩn, điều này giúp cho việc lập trình theo nhóm ,hay làm việc trong các công ty chuyên nghiệp, bạn nên sử dụng tiếp đầu ngữ ‘tbl’ trước, kế đến là tên bảng
VD: tblEmployee, tblCustomer, tblOrders…
Khi định nghĩa bảng số liệu, bạn cần quan tâm đến các yếu tố sau:
Key: Trường đó có Khóa hay không (Primary key)
ID: Trường có thuộc tính Indentity hay không
Column name: Tên của trường (cột)
Data Type: Loại dữ liệu cho trường tương ứng
Size: Kích thước trường dữ liệu
Allow null: Cho phép giá trị rỗng lưu trong trường hay không
Default: Giá trị mặc nhiên cho trường
Identity: Nếu bạn cần sử dụng một trường có giá trị tự động như Autonumber trong Access, trường này Not Null và Identity:Yes
Identity Seed: Nếu trường (cột) này là Identity , cần số bắt đầu số 1 hoặc 2…
Identity Increament: Số nhảy cho mỗi lần tăng
1) Tạo bảng- Create table:
Tên bảng nên đặt ngắn gọn và dễ hiểu, không có khoảng trắng, không trùng với những từ dành riêng, có ý nghĩa để khi đồng nghiệp của bạn cùng phát triển ứng dụng sẽ dễ dàng hiểu được
Trang 17Cú pháp đầy đủ phát biểu tạo bảng như sau:
CREATE TABLE <Table_Name>
(<Column_Name> <Data_Type>)Example:
CREATE TABLE tblEmployee
(
Type_emp nvarchar(2),Name_emp nvarchar(20))
2) Tên cột – Column Name:
Đặt tên cột cũng giống như đặt tên bảng, có rất nhiều qui tắc đặt tên ( như đã trình bày ở phần table nhưng khuyến khích bạn đặt tên theo một số qui tắc cơ bản sau:
Tên cột bắt đầu bằng chữ hoa, còn lại bằng chữ thường
Tên ngắn gọn và đầy đủ ý nghĩa
Không nên đặt tên cột có khoảng trắng, sau này bạn sẽ gặp phiền toái khi tham chiếu đến trường đó
Không nên đặt cột trùng với từ khóa, từ dành riêng và những ký tự đặc biệt như các phép toán hay toán tử khác
3) Kiểu dữ liệu – Data Type:
Khi xây dựng cơ sở dữ liệu, tất cả các trường trong bảng cần phải có kiểu dữ liệu cụ thể.Vấn đề quan trọng là việc chọn kiểu dữ liệu nào cho phù hợp với dữ liệu mà người dùng sẽ nhập vào
Để thiết kế dữ liệu cho phù hợp với thực tế ngoài tính ứng dụng hợp với ngữ cảnh bạn cũng cần quan tâm đến kiểu dữ liệu tương thích và chiều dài của từng cột
VD: [CustomerNo] [varchar] (10) NULL
Dưới đây là một số kiểu mà SQL 2000 hỗ trợ:
Trên thực tế, thông thường trong quá trình xử lý dữ liệu, một vài trường hợp khi cần trao đổi thông tin nhưng có sự khác nhau về kiểu dữ liệu chúng ta cần có các hàm chuyển đổi qua lại các kiểu dữ liệu
Trang 18Để làm được điều này chúng ta cần một số kiến thức về các hàm chuyển đổi của SQL Server Tuy nhiên cũng có một số kiểu dữ liệu không thể chuyển đổi được.
Ví dụ như binary không thể chuyển đổi sang dữ liệu số như float hay real Nhưng bạn có thể chuyển đổi float, real, decimal, numeric sang text hay ntext
4) Toàn vẹn dữ liệu – Data integrity:
Trong quá trình chạy ứng dụng thì việc toàn vẹn dữ liệu trong cơ sở dữ liệu là một điều rất quan trong SQL Server 2000 cung cấp một vài thuộc tính tối ưu trong phương thức ràng buộc dữ liệu khi xây dựng cơ sở
là một phương thức để rà soát lại tất cả các điều kiện và các qui luật khi thiết lập cơ sở dữ liệu
Nếu một dữ liệu thêm vào hoặc xóa đi hay cập nhật không thỏa mãn điều kiện hoặc qui luật đã định, tùy vào nhóm phân lỗi mà SQL phát sinh ngoại lệ (exception) nhằm thông báo cho người dùng biết rằng dữ liệu đưa vào không hợp lệ,dữ liệu khi đó sẽ không được phép cập nhật và thay đổi trong cơ sở dữ liệu
Data integrity có thể phân loại thành bốn loại sau:
1 Domain integrity:
Domain integrity liên quan đến nhiều cột.Ứng với mỗi cột có một qui luật hay tiêu chuẩn.Khi bạn thêm hay cập nhật mẩu tin ràng buộc này kiểm tra mà không cần xét đến sự liên quan đến các mẩu tin trong bảng
2 Entitty integrity:
Entity integrity liên quan đến các mẩu tin, ràng buộc này không quan tâm đến cột trong mẩu tin, kiểm tra
số liệu có đúng tiêu chuẩn hay không
3 Referential integrity:
Referential integrity kiểm tra giá trị của cột có phù hợp với cột trong bảng khác quan hệ với bảng hiện chứa ràng buộc hay không
Trang 194 User-defined integrity
Đây là kiểu toàn vẹn dữ liệu do người dùng tự tạo ra để kiểm tra tính toàn vẹn dữ liệu trong cơ sở dữ liệu
Dưới đây là danh sách chi tiết các dàng buộc cụ thể của từng loại:
Entity Integrity 1 Dàng buộc khóa chính- Primary Key
Constraints
2 Dàng buộc duy nhất – UNIQUE Constraints
3 Dàng buộc đồng nhất – IDENTITY columns
4 NOT NULL property
2 CHECK constraint
4 Stored Procedures
5 Triggers
5) Ràng buộc khóa chính – Promary Key constraints:
Primary key được chia làm hai kiểu:
Trang 20o Composite key
o Candidate key – Identifying the Primary Key
Primary key là cách duy nhất để nhận dạng một mẩu tin trong bảng dữ liệu nên chúng phải chứa duy nhất một giá trị, không thể null, và tuân theo các ràng buộc với các bảng quan hệ khác Khóa chính là nền tảng cho ràng buộc Primary constraints Khi dữ liệu thêm vào hay sửa đổi trên cột Primary key quá trình kiểm tra ràng buộc Primary Key sẽ xảy ra
Note:
o Một bảng có duy nhất một khóa chính
o Một khóa chính có thể chứa một hoặc nhiều trường
o Primary key không thể xóa nếu tồn tại một foreign key tới bảng khác
o Khi tạo primary key trong bảng mà đã chứa dữ liệu thì SQL server 2000 check xem dữ liệu trong cột cần tạo primary key có null hay trùng lắp giá trị không.nếu null hay trùng lắp SQL server 2000 sẽ trả về một lỗi
Tạo khóa chính trong bảng:
Systax:
CREATE TABLE Table_Name
( Column_definition PRIMARY KEY)
Example:
CREATE TABLE Reservation
( PNR_no int PRIMARY KEY )
Hoặc sau khi bạn tạo xong bảng dữ liệu:
ALTER TABLE Table_name
ADD CONSTRAINT <constraint_nam>
PRIMARY KEY (column_name)
Example:
ALTER TABLE Rerservation
ADD CONSTRAINT PK_constPRIMARY KEY (PNR_no)