1. Trang chủ
  2. » Giáo án - Bài giảng

Bài tập tổng hợp SQL

26 3,1K 5

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 26
Dung lượng 415,72 KB

Nội dung

- Mở database Master, khảo sát các đối tượng: ƒ Vào đối tượng Table, tìm hiểu cấu trúc và dữ liệu của bảng lưu ý: chỉ được chọn xem không nên xoá hay sửa dữ liệu: Sysdatabases, SysObject

Trang 1

BÀI TẬP 1

1 Khởi động SQL Server Service Manager

- Start, Program File, MicroSoft SQL Server, Service Manager

- Thực hiện Start, Pause, Stop các Sevice của một Server trên máy hiện hành

ƒ Server: Chọn tên Server có service cần chạy Nếu máy hiện hành là Server thì

có thể gõ vào dấu chấm (.) hoặc chữ Local

ƒ Services: Chọn tên Service cần chạy

ƒ Chọn Star/Countinue: Khởi động chạy

Pause: Tạm dừng Sevice

- Bạn hãy cho khởi động dịch vụ SQL Server, SQL Server Agent

- Đóng hộp thoại SQL Server Service Manager

- Quan sát góc phải trên thanh task bar có biểu tượng không?

2 Khởi động Enterprise Manager

- Start, Program File, MicroSoft SQL Server, Enterprise Manager

- Lần lượt mở các nhánh của cây MicroSoft SQL Servers

- Tìm hiểu sơ lược cửa sổ, thực đơn, thanh công cụ

Trang 2

3 Tại Enterprise Manager, thực hiện:

- Quan sát các thành phần đối tượng trên cửa sổ và hãy cho biết:

ƒ Có bao nhiêu SQL Server Group, mỗi Server tên là gì? Đang connect hay

(Hãy so sánh tên của các database với các database của máy bên cạnh)

ƒ Trong mỗi Database có những đối tượng nào?

(Các database khác nhau thì các đối tượng có khác nhau không?)

- Mở database Master, khảo sát các đối tượng:

ƒ Vào đối tượng Table, tìm hiểu cấu trúc và dữ liệu của bảng (lưu ý: chỉ được chọn

xem không nên xoá hay sửa dữ liệu): Sysdatabases, SysObjects, systypes,

syslogins, sysusers, sysmessages, syspermissions…

ƒ Vào đối tượng Stored Procedures, tìm hiểu nội dung của các thủ tục sau (lưu ý:

chỉ được chọn xem không nên xoá hay sửa): sp_help, sp_helpdb, sp_helpcontraint,

sp_rename, sp_renamedb, sp_table, sp_addlogin, sp_addmessage, sp_addrole …

ƒ Lần lượt vào đối tượng còn lại User, Role, …

- Mở database NorthWind, khảo sát các đối tượng:

ƒ Cho biết trong các bảng trong CSDL Master được liệt kê ở trên, bảng nào có trong

NorthWind?

Trang 3

ƒ Trong stored procedures có các thủ tục liệt kê ở trên hay không?

ƒ Tìm hiểu cấu trúc và dữ liệu của các bảng: Customers, Orders, Order Detail,

Products, Suppliers, Region, Shippers,… Hãy cho biết mối quan hệ giữa các bảng

này (đưa ra mô hình quan hệ)

ƒ Tạo một diagram giữa các bảng trên (Hướng dẫn: Nhấp nút phải chuột tại

diagrams của CSDL NorthWind, chọn New database diagram, hoàn tất các hộp

thoại Create database diagrams wizard

- Tương tự khảo sát các đối tượng trong CSDL Pubs

4 Khởi động Books online Lần lượt tìm hiểu các lệnh Create DataBase, Create Table,

Alter Table, Select Statement, Select into, Update Statement, Insert Statement,

DataType, Triggers… (Hướng dẫn: Gõ tên lệnh/từ khóa cần tìm và nhấn Enter)

5 Khởi động Query Analayzer

- Start, Program File, MicroSoft SQL Server, Query Analyzer Xuất hiện hộp thoại

kết nối

- Khai báo thông tin kết nối:

ƒ SQL Server: <chọn tên Server cần kết nối>

ƒ Connect using: Chọn chế độ chứng thực Windows authentication/SQl Server

authentication Nếu là SQL Server authentication phải chỉ định tên đăng nhập

và mã đăng nhập (mặc định sa)

- Chọn OK Nếu kết nối thành công thì cửa sổ Query Analayzer xuất hiện

Trang 4

6 Tại Query Analyzer, quan sát các thành phần đối tượng trong cửa sổ:

- Có bao nhiêu CSDL

- Trong CSDL Master và NorthWind, khảo sát các đối tượng và so sánh có tương tự

như trong Enterprise Manager hay không?

- Tìm hiểu các chức năng trong thanh thực đơn, thử bật tắt cửa sổ Object Brower, cửa

sổ Result

- Tìm hiểu các lựa chọn trong hộp thoại Tool, Options

- Chọn File, Disconnect Sau đó File, Connect lại

7 Trong cửa sổ editor của Query Analyzer, gõ lần lược các câu lệnh, cho thực hiện

(đánh dấu chọn, nhấn F5) và quan sát kết quả

USE NorthWind

SELECT * FROM Employees

SELECT * FROM Customers

SELECT * FROM Customers WHERE companyName LIKE 'W%'

Sp_helpDB

Sp_help Orders

Sp_helpconstraints [Order Details]

SELECT * FROM INFORMATION_SCHEMA.COLUMNS

SELECT * FROM INFORMATION_SCHEMA.TABLES

SELECT * FROM INFORMATION_SCHEMA.TABLE_PRIVILEGES

Object Brower

cửa sổ Editor

Cửa sổ Result

Trang 5

8 Tiếp tục thực hiện

- Đánh dấu chọn câu lệnh sp_helpDB, nhấn Shift_F1

- Lưu các câu lệnh đang gõ vào tập tin có tên là Truyvan.SQL, trong thư mục tùy ý

- Disconnect và sau đó Connect lại

- Mở lại tập tin Truyvan.SQL

- Cho thực hiện lại từng câu lệnh

BÀI TẬP 2:

Chọn CSDL hiện hành là NorthWind, dùng câu lệnh Select … From … Where … để truy vấn

dữ liệu như sau, với cấu trúc của các bảng như sau:

Products(ProductID,ProductName, SupplierID, UnitPrice, UnitInStock, … )

Customers(CustomerID, CompanyName, Address, City, Region, Country, …)

Employees(EmployeeID, LastName, FirstName, BirthDate, City, …)

Orders(OderID, CustomerID, EmployeeID, OrderDate,…)

Order Details(OrderID, ProductID, UnitPrice, Quantity, Discount)

1 Danh sách các customers Thông tin bao gồm CustomerID, CompanyName, City,

Phone

2 Danh sách các products Thông tin bao gồm ProductId, ProductName, UnitPrice

3 Danh sách các employees Thông tin bao gồm EmployeeId, EmployeeName, Phone,

Age Trong đó EmployeeName được ghép từ LastName và FirstName; Age là tuổi

được tính từ năm hiện hành (GetDate()) và năm của Birthdate

4 Cho xem danh sách employees có năm sinh <=1960

5 Danh sách các products có từ ‘Boxes’ trong cột QuantityPerUnit

6 Danh sách các products có Unitprice lớn hớn 10 và nhỏ hơn 15

7 Danh sách các orders có OrderDate được lập trong tháng 9 năm 1996

8 Danh sách các products ứng với tiền tồn vốn Thông tin bao gồm ProductId,

ProductName, Unitprice, UnitsInStock, TotalAccount Trong đó TotalAccount=

UnitsInStock * Unitprice

9 Danh sách các customers có city là Paris

10 Danh sách 5 customers có city bắt đầu ‘M’

11 Danh sách 2 employees có tuổi lớn nhất Thông tin bao gồm EmployeeID,

EmployeeName, Age Trong đó, EmployeeName được ghép từ LastName và

FirstName; Age là năm hiện hành từ cho năm sinh

12 Danh sách các products đã từng có khách hàng đặt hàng (tức là ProductId có trong

Order Details) Thông tin bao gồm ProductId, ProductName, Unitprice

13 Danh sách các orders ứng với tổng tiền của từng hóa đơn Thông tin bao gồm

OrdersId, OrderDate, TotalAccount Trong đó TotalAccount là Sum của Quantity *

Unitprice, kết nhóm theo OrderId

14 Danh sách các orders ứng với tổng tiền của từng hóa đơn có Shipcity là ‘Madrid’

Thông tin bao gồm OrdersId, OrderDate, TotalAccount Trong đó TotalAccount là

Sum của Quantity * Unitprice, kết nhóm theo OrderId

15 Danh sách các products có tổng số lượng lập hóa đơn lớn nhất

Trang 6

16 Cho biết mỗi customers đã lập bao nhiêu lượt hóa đơn bao Thông tin gồm

CustomerID, CompanyName, CountOfOrder Trong đó CountOfOrder (tổng số hóa

đơn) được đếm (Count) theo từng Customers

17 Cho biết mỗi Employee đã lập được bao nhiêu hóa đơn, ứng với tổng tiền

18 Cho biết những Customers chưa từng lập hóa đơn

BÀI TẬP 3:

1 Ở tại cửa sổ Enterprise Manager, thực hiện:

a Dùng Enterprise manager hoặc Database Wizard tạo CSDL GhiDanh có tham số

như sau:

Tên tập tin và đường dẫn của data file chính D:\GhiDanh\GhiDanh_Data.mdf

Tên tập tin và đường dẫn của transaction log D:\GhiDanh\GhiDanh_Log.ldf

Kích cở khởi tạo của transaction log 6 MB

Kích cở tối đa của transaction log 8 MB

Gia số gia tăng tập tin transaction log 1 MB

b Xem lại thuộc tính (properties) của CSDL GhiDanh (HD: Nhắp phải chuột tại tên

CSDL, chọn properties) Quan sát và cho biết các trang thể hiện thông tin gì?

c Tại cửa sổ properties của CSDL, khai báo thêm

ƒ Một Group File mới có tên là DuLieuGhiDanh

ƒ Một tập tin dữ liệu (data file) thứ hai nằm trong Group file vừa tạo ở trên và có

thông số như sau Tên login của data file là GhiDanh_Data2; Tên tập tin và đường dẫn vật lý của data file là D:\GhiDanh\GhiDanh_Data2.ndf

ƒ Chọn thuộc tính ReadOnly, sau đó đóng cửa sổ properies Quan sát màu sắc

của CSDL Bỏ thuộc tính ReadOnly

2 Ở tại Query Analyzer (lưu ý: sau mỗi lần có sự thay đổi thì phải dùng các lệnh để

kiểm tra sự thay đổi đó)

a Dùng lệnh Create DataBase, tạo một CSDL với các tham số được liệt kê như trong

bảng dưới Lưu ý rằng CSDL này gồm một data file và nó được nằm trong primary

filegroup

Tên tập tin và đường dẫn của data file chính D:\data\database\SalesDb_data1.mdf

Trang 7

Kích cở tối đa của CSDL 40 MB

Tên tập tin và đường dẫn của transaction log D:\data\database\SalesDb.ldf

Kích cở khởi tạo của transaction log 6 MB

Kích cở tối đa của transaction log 8 MB

Gia số gia tăng tập tin transaction log 1 MB

b Xem lại thuộc tính của CSDL SalesDB bằng Enterprise Manager và bằng thủ tục hệ

thống sp_helpDb, sp_spaceused

c Thêm một filegroup có tên là DuLieuSalesDB (HD: dùnglệnh Alter DataBase <Tên

Database> ADD FILEGROUP <Tên filegroup>)

d Khai báo một secondary file có tên logic là SalesDb_data2, tên vật lý

SalesDB_data2.ndf nằm ở D:\Data\Database, các thông số khác tuỳ bạn chọn, data

file này nằm trong file group là DuLieuSalesDB (HD: Dùng lệnh Alter Database …

ADD FILE … TO FILEGROUP …)

e Dùng Books Online, bạn tìm hiểu thủ tục hệ thống sp_helpfilegroup dùng để làm gì?

f Dùng lệnh Alter Database … Set … để cấu hình cho CSDL SalesDB có thuộc tính là

Read_Only Dùng sp_helpDB để xem lạ thuộc tính của CSDL Hũy bỏ thuộc tính

Read_Only

g Dùng lệnh Alter DataBase … MODIFY FILE … để tăng SIZE của SalesDB_data1

thành 50 MB Tương tự tăng SIZE của tập tin SalesDB_log thành 10 MB Nếu trong

Enterprise Manager để thay đổi SIZE của các tập tin bạn làm như thế nào?

3 Ở tại cửa sổ Enterprise Manager, thực hiện:

a Dùng Enterprise manager hoặc Table Wizard tạo cấu trúc của các bảng sau trong

CSDL GhiDanh:

LOP (MaLop char(5) , TenLop char(20), SiSoDuKien Int, NgayKhaiGiang

DateTime)

SV (MaSV char(5), TenHo NVarchar(50), NgaySinh DateTime, MALOP char(5))

Lưu ý: cột in đậm gạch chân là khóa chính và không chấp nhận giá trị Null, cột in

đậm không chấp nhận giá trị Null

b Tạo Diagram giữa hai bảng vừa tạo

c Nhập dữ liệu tùy ý vào hai bảng, mỗi bảng khoảng 3 mẫu tin

d Dùng tác vụ General Script, để tạo đoạn Script cho CSDL và tất cả các đối tượng của

CSDL thành một tập tin Script có tên là GhiDanh.SQL

e Vào Query Analyzer, mở tập tin Script vừa tạo và khảo sát công dụng và cú pháp của

các lệnh có trong tập tin script

f Dùng thao tác xóa để xoá toàn bộ CSDL GhiDanh

4 Tìm hiểu về kiểu dữ liệu (datatype):

a Tìm hiểu và trả lời các câu hỏi sau:

- Có bao mấy loại datatype, hãy liệt kê

Trang 8

- Các system datatype được SQL Server lưu trữ trong Table nào ở trong CSDL

nào

- Các User-defined datatype được SQL Server lưu trữ trong Table nào ở trong

CSDL nào?

b Vào Query Analyzer, chọn SalesDB là CSDL hiện hành, định nghĩa các datatype:

Kiểu dữ liệu (Data type) Mô tả dữ liệu (Description of data)

Ví dụ: EXEC sp_addtype SODienThoai, 'char(13)', NULL

c Các User-defined datatype vừa định nghĩa được lưu trữ ở đâu và phạm vi sử dụng của

nó ở đâu (trong toàn bộ một instance hay chỉ ở trong CSDL hiện hành)

d Có bao nhiêu cách liệt kê danh sách các các User-Defined datatype vừa định nghĩa

SELECT domain_name, data_type, character_maximum_length FROM information_schema.domains

ORDER BY domain_name Hoặc SELECT * From Systype

e Muốn User-Defined datatype được dùng trong tất cả các CSDL thì bạn định nghĩa nó

ở đâu?

f Hãy xóa kiểu dữ liệu SOSienThoai

BÀI TẬP 4:

Ở tại cửa sổ Query analyzer, thực hiện:

a Dùng lệnh Create Table … để tạo cấu trúc của các bảng sau trong CSDL SalesDB:

Lưu ý - Khai báo cột có Null hoặc Not Null, không cần khai báo khóa chính, khóa ngoại

SanPham

Trang 9

MaSp int Not null

Dongia Money

ChietKhau Money

NhaCungCap

d Dùng lệnh Alter Table … khai báo các ràng buộc miền giá trị (Check Constraint) như

sau: Dongia>=0; ChietKhau>=0;

e Thêm cột LoaiHD vào bảng HOADON, LoaiHD có kiểu dữ liệu char(1), chỉ chấp

nhận ‘N’ hoặc ‘X’, giá trị mặc định là ‘N’

BÀI TẬP 5:

Mục tiêu: Tạo CSDL, cấu hình CSDL; Định nghĩa user-defined data type

Tạo Table, định nghĩa các constraint; Chức năng Import/Export

1 Dùng T-SQL tạo CSDL Movies với các tham số sau:

ƒ Tập tin Datafile có: Name: Movies_data; pathname: C:\Movies\Movies_data.mdf;

Size: 25 MB; Maxsize: 40 MB; FileGrowth: 1 MB

ƒ Tập tin Log file có: Name: Movies_log; pathname: C:\Movies\Movies_log.ldf;

Size: 6 MB; Maxsize: 8 MB; FileGrowth: 1 MB

2 Thực hiện, nhớ kiểm tra kết quả sau mỗi lần thực hiện:

ƒ Thêm một Datafile thứ 2 có Name: Movies_data2; pathname:

C:\Movies\Movies_data2.ndf; Size: 10 MB; thông số khác không cần chỉ định

Trang 10

ƒ Lần lược cấu hình CSDL Movies với chế độ single_user, restricted user, multi

user Sau đó cài đặt lại là multi_user Nhớ dùng lệnh để kiểm tra lại

ƒ Tăng kích cở của data file thứ 2 từ 10 MB lên 15 MB Kiểm tra lại

ƒ Cấu hình CSDL về chế độ tự động SHRINK

ƒ Phát sinh tập tin Script từ CSDL Movies, tạo script cho tất cả các đối tượng kể cả

database Lưu vào đĩa với tên là Movies.SQL

ƒ Xoá CSDL Movies

3 Mở tập tin Movies.SQL Thực hiện:

ƒ Bổ sung thêm câu lệnh tạo một filegroup tên là Data

ƒ Hiệu chỉnh maxsize của tập tin transaction log thành 10 MB

ƒ Size của tập tin datafile thứ 2 thành 10 MB

ƒ Cho datafile thứ 2 nằm trong filegroup có tên là Data

ƒ Lưu tập tin scrip

ƒ Cho thực thi toàn bộ tập tin script

ƒ Dùng sp_helpDB để kiểm tra sự tồn tại của Movies và các thông số của nó

4 Các bảng có trong CSDL Movies là

Tên bảng Nội dung lưu chứa

Rental_detail Chi tiết thuê phim

Bạn hãy suy nghĩ xem mỗi bảng trên cần lưu những thông tin cụ thể nào (tức là các

cột nào), kiểu dữ liệu ra sao? Khóa chính của từng bảng, mối quan hệ giữa các bảng,

có những ràng buộc toàn vẹn nào?

5 Thực hiện định nghĩa các user-defined datatype sau vào trong CSDL Movies Kiểm

tra sau khi tạo

Kiểu dữ liệu (Data type) Mô tả dữ liệu (Description of data)

6 Thực hiện tạo các bảng vào CSDL Movies, nhớ kiểm tra lại cấu trúc bằng sp_help

Customer

Trang 11

Fname varchar(20) No

Category

Category_num category_num IDENTITY(1,1) No

Rental:

Tên cột Kiểu dữ liệu cho phép Null Invoice_num Invoice_num No

Cust_num Cust_num No Rental_date Smalldatetime No

7 Thực hiện phát sinh tập tin script cho CSDL Movies với các lựa chọn sau, lưu với tên

Table.sql:

Trang 12

ƒ All Tables, All user-defined data types

ƒ Generate the CREATE <object> command for each object

ƒ Generate the DROP <object> command for each object

8 Ở Enterprise Manager, thực hiện tạo Diagram cho các bảng trong Movies Bạn có tạo

được không? Tại sao? Tạm thời lưu diagram với tên là Movies

9 Thực hiện định nghĩa các khoá chính (Primary Key Constraint) cho các bảng như sau,

nhớ kiểm tra các Constraint bằng lệnh sp_helpconstraint

10 Thực hiện định nghĩa các khoá ngoại (Foreign Key Constraint) cho các bảng như sau,

nhớ kiểm tra các Constraint bằng lệnh sp_helpconstraint

được tham chiếu đến

Cột được tham chiếu tên của Primary Constraint Cascade

Rental_detail Invoice_num Rental Invoice_num FK_detail_invoice delete

11 Mở lại Diagram có tên Movie, xem khóa chính, mối quan hệ giữa các bảng

12 Thực hiện định nghĩa các giá trị mặc định (Default Constraint) cho các cột ở các bảng

như sau, nhớ kiểm tra các Constraint bằng lệnh sp_helpconstraint

Tên bảng Cột có giá trị

Default

Giá trị Default tên của Primary Constraint

Customer join_date Ngày hiện hành DK_customer_join_date

Rental Rental_date Ngày hiện hành DK_rental_rental_date

Rental Due_date Ngày hiện hành + 2 DK_rental_due_date

13 Thực hiện định nghĩa các miền giá trị (Check Constraint) cho các cột ở các bảng như

sau, nhớ kiểm tra các Constraint bằng lệnh sp_helpconstraint

Tên bảng cột có giá trị

Default

Trang 13

14 Thực hiện phát sinh tập tin script cho các đối tượng trong CSDL Movie Tên của tập

tin là Constraint.sql Với lựa chọn Script Primary Keys, Foreign Keys, Default, and

Check Constraints

15 Chọn CSDL là Pub, lần lược thực hiện các yêu cầu và cho nhận xét

ƒ Dùng sp_helpconstraint hoặc bật Diagram của bảng Authors và bảng TitleAuthor,

để biết được tên của foreign key constraint được định nghĩa trên

TitleAuthor.Au_Id tham chiếu đến Author.Au_ID là ? (tên là

Bạn có thực hiện được không? Tại sao?

ƒ Thực hiện diable ràng buộc khóa ngoại trên

ƒ Chạy lại câu Update trên, thực hiện được không?

ƒ Cập nhật lại giá trị cũ '172-32-1176'

ƒ Thực hiện enable lại ràng buộc khóa

16 Mở CSDL SalesDb, thực hiện:

ƒ Thêm một Defaul Constraint cho cột MoTa với giá trị mặc định là ‘N/A’

ƒ Thêm một Default Constraint cho cột NgayLapHD với giá trị mặc định là ngày

hiện hành

17 Dùng chức năng Import/Export để đưa (nhớ kiểm tra kết quả sau mỗi lần thực hiện):

ƒ Tất cả các thông tin nhân viên có trong bảng Employees trong NorthWind ra

thành tập tin NhanVien.txt

ƒ Dữ liệu của các bảng Products, Orders, Order Details trong bảng NorthWind vào

tập tin QLHH.MDB Lưu ý: Tập tin QLHH.MDB phải tồn tại trên đĩa trước khi

ƒ Danh sách các sản phẩm ở Products trong NorthWind thành tập tin

SanPham.TXT, thông tin cần lấy bao gồm ProductID, ProductName,

QuantityPerUnit, Unitprice

ƒ Các sản phẩm có SupplierID là 1 hoặc 2 hoặc 3 ở bảng Products trong NorthWind

vào bảng SanPham trong SalesDB Lưu ý chỉ chọn những cột mà trong bảng sản

phẩm cần

ƒ Các nhà cung cấp có Country là USA ở bảng Suppliers trong NorthWin vào bảng

NhaCungCap trong SalesDB Lưu ý: chỉ chọn những cột mà trong bản

Nhacungcap cần

ƒ Danh sách các nhân viên có trong tập tin Nhanvien.TXT vào bảng NhanVien

Ngày đăng: 12/05/2014, 12:01

HÌNH ẢNH LIÊN QUAN

Bảng dưới. Lưu ý rằng CSDL này gồm một data file và nó được nằm trong primary - Bài tập tổng hợp SQL
Bảng d ưới. Lưu ý rằng CSDL này gồm một data file và nó được nằm trong primary (Trang 6)
Bảng Sanpham. - Bài tập tổng hợp SQL
ng Sanpham (Trang 17)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w