1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài thực hành cơ sở dữ liệu

30 2,4K 3

Đ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 30
Dung lượng 590,5 KB

Nội dung

Lệnh CREATE Lệnh này dùng để tạo ra các đối tượng như DATABASE, TABLE CREATE TABLE - Bảng là một cấu trúc để cất giữ các bộ của quan hệ.Có khuôn dạng hai chiều gồm có các cột và hàng.. V

Trang 1

BÀI 1: THỰC HÀNH CÂU LỆNH CREATE DATABASE, CREATE TABLE,

ALTER TABLE, DROP TABLE

CHO CSDL QUẢN LÝ THƯ VIỆN GỒM CÁC BẢNG SAU

1 Bảng tblDauSach: Lưu trữ thông tin của các đầu sách có trong thư viện

m

a DS varchar mã đầu sách 4

2 Bảng tblDocGia: lưu trữ thông tin về độc gia

3 tblLinhVuc: Thông tin về các lĩnh vực sách

m

a LV varchar Mã lĩnh vực 10

4 tblNXB: Thông tin về nhà xuất bản

m

a N X B varchar Mã nhà xuất bản 10

5 tblPhieuMuon: thông tin về phiếu mượn

Trang 2

6 tblSach: Thông tin về sách

m

7 tblTacGia: Thông tin về tác giả

m

dienThoai varchar Điện thoại của tác giả 10

I N h ắc lại l ý t h u y ết

a Lệnh CREATE

Lệnh này dùng để tạo ra các đối tượng như DATABASE, TABLE

CREATE TABLE

- Bảng là một cấu trúc để cất giữ các bộ của quan hệ.Có khuôn dạng hai chiều gồm

có các cột và hàng Nó là yếu tố cơ bản cho các thao tác khác nhau Có thể nói việc tạo bảng là bước đầu tiên quan trọng nhất để thiết lập CSDL

-Cú pháp của lệnh này:

CREATE TABLE table-name(colom_name type(size) )

Khi tạo ra bảng chúng ta phải chỉ ra kiểu dữ liệu của cột và mỗi cột chỉ có thể có môt kiểu dữ liệu duy nhất Khi tạo bảng ta có thể đưa ra các ràng buộc

Các ràng buộc của các trường có thể là : primary key, foreign key , unique, not null VD:Tạo bảng nhân viên

Trang 3

CREATE TABLE NHAN_VIEN (NV varchar(4) constraint p_NV Primary key, ho_ten Varchar(25), Ng_sinh datetime, chứcvụ varchar(20), đia_chi varchar(30), luong int);

trong VD trên ta tạo ra một ràng buộc là p_NV được định nghĩa là primary key

Ta cũng có thể tạo ra bảng mới với cấu trúc và dữ liệu từ 1 bảng khác

Cú pháp:

SELECT <ds cột> into <tên bảng mới>

from <Tên bảng>

[where <điều kiện>]

Với cấu trúc này, bảng tạo ra có cấu trúc và dữ liệu, tuy nhiên bảng mới không có ràng buộc khóa chính

VD: Tạo ra 1 bảng mới có tên là NVN (NV,họ_tên) từ bảng NHAN_VIEN

SELECT NV,họ_tên into NVN FROM NHAN_VIEN;

+ ADD: thêm cột mới, hoặc ràng buộc

+ ALTER: sửa đổi kiểu dữ liệu của cột

+ DROP: xoá bỏ các ràng buộc, cột

VD1: thêm trường gia đình kiểu varchar(1) vào R1

ALTER TABLE R1 ADD gia đình varchar(1)

VD2: thay đổi trường Địa_chỉ Varvarchar(30) trong R1 thành Địa_Chỉ(20):

ALTER TABLE R1 ALTER COLUMN Địa_Chỉ varvarchar(20)

VD3: Xóa cột Địa_chỉ khỏi bảng R1

Trang 4

ALTER TABLE R1 Drop COLUMN Địa_Chỉ

VD4: huỷ bỏ ràng buộc trường khoá #NV trong R1

ALTER TABLE R1 DROP constraint NV_prim

1 Sử dụng câu lệnh SQL tạo bảng tblNXB trong CSDL Quản lý thư viện

- Ta nhận thấy với bảng tblNXB, trường maNXB chính là khóa chính của bảng, các trường tenNXB, diaChi ta yêu cầu không được trống, trường dienThoai có thể trống

- Để tạo bảng ta sử dụng câu lệnh create table

- Để tạo khóa chính của bảng ta sử dụng ràng buộc primary key

Thực thi các câu lệnh này trong hệ quản trị CSDL access hoặc hệ quản trị CSDL SQL server Cài đặt hệ quản trị 2000 trở lên Sau đây là cửa sổ soạn thạo và thực thi các câu lệnh SQL trong môi trường là hệ quản trị SQL Server 2008:

Click vào 1, sẽ mở ra cửa sổ 2, cửa sổ này cho phép soạn thảo bất kỳ một câu lệnh nào của ngôn ngữ SQL, database đang được mở hiện thị ở 3.

- Tạo database có tên QLTV

1

Cửa sổ soạn thảo câu lệnh SQL3

2

Trang 5

create database QLTV

Bôi đen và dùng F5 để thực hiện câu lệnh n ày, khi đó hệ thống sẽ tạo ra một cơ sở

dữ liệu trên ổ đĩa với đường dẫn sau:

Muốn thao tác với CSDL này, dùng câu lệnh:

Use QLTV

Để tạo bảng tblNXB ta sử dụng câu lệnh sau đây:

CREATE TABLE tblNXB

(

maNXB varchar(10) primary key,

tenNXB varchar(50) not null,

diaChi varchar(50) not null,

dienThoai varchar(10) null )

Sau khi thực thi câu lệnh này, bảng tblNXB sẽ được tạo ra trong CSDL có tên QLTV, và

hệ thống sẽ tạo ra cho bảng 1 ràng buộc khóa chính với một tên do hệ thống quy định

Muốn đặt tên ràng buộc cho khóa chính (tên ràng buộc là P_NXB), câu lệnh trên sẽ được

viết lại như sau:

Trang 6

2 Sử dụng câu lệnh SQL sửa đổi độ rộng của trường tenNXB có độ rộng 40 ký tự

Alter table tblNXB alter column tenNXB varchar(40) not null

3 Sử dụng câu lệnh SQL xóa bảng tblNXB

- Để xóa bảng ta sử dụng câu lệnh drop như sau:

Drop table tblNXB

III B ài t ập t h ực hành

Anh/Chị hãy dùng các câu lệnh SQL thực hiện các yêu cầu sau:

1 Tạo cơ sở dữ liệu Quản lý sách thư viện ở trên

2 Tạo các bảng trong CSDL Quản lý sách thư viện

3 Thêm cột idSach vào bảng tblDauSach

4 Thêm bảng nhapSach (gồm các trường maPhieuNhap, maDS, ngayNhap, soLuong, đơn giá) vào CSDL trên

5 Xóa các trường ngayNhap, soLuong của bảng tblDauSach

6 Xóa cột idSach ở bảng tblDauSach

C

hú ý: Sinh viên làm các bài tập thực hành ở trên, cuối buổi thực hành nộp lại bài làm cho giáo viên.

Trang 7

INSERT INTO tên_bảng VALUES (giá_trị_1, giá_trị_2, )

Bạn cũng có thể chỉ rõ các cột/trường nào cần chèn dữ liệu:

INSERT INTO tên_bảng (cột_1, cột_2, ) VALUES (giá_trị_1, giá_trị_2, )

- Chèn nhiều bản ghi vào bảng từ một bảng khác:

INSERT INTO <Tên bảng>

SELECT Clause

Câu lệnh UPDATE được sử dụng để cập nhật/sửa đổi dữ liệu đã có trong bảng

Cú pháp:

UPDATE tên_bảng

SET tên_cột = giá_trị_mới

WHERE tên_cột = giá_trị

Trang 8

Câu lệnh DELETE được dùng để xoá tất cả các dòng hoặc tất cả các dòng ra khỏi bảng.

Cú pháp:

Xóa những bản ghi thỏa mãn điều kiện:

DELETE FROM tên_bảng

WHERE <Điều kiện>

CREATE TABLE NHANVIEN (

HONV VARCHAR(10) CONSTRAINT NV_HONV_NN NOT NULL,

TENLOT VARCHAR(20) NOT NULL,

TENNV VARCHAR(10) NOT NULL,

MANV CHAR(9) CONSTRAINT NV_MANV_PK PRIMARY KEY,

 Muốn xem thông tin về các ràng buộc trong bảng, ta dùng câu lệnh sau:

Exec sp_helpconstraint NHANVIEN

Ràng buộc toàn vẹn tạo ra khi ta tạo ra các cấu trúc bảng hoặc sau khi tạo ra cấu trúc bảng:

Ví dụ:

Cấu trúc tạo bảng sau có 1 ràng buộc khóa chính:

Trang 9

CREATE TABLE tblNXB

(

maNXB varchar(10) primary key, tenNXB varchar(50), diaChi archar(50), dienThoai

varchar(10))

với các này, hệ thống sẽ quy định tên của ràng buộc

hoặc ta có thể viết theo cách khác như sau:

cách 1:

CREATE TABLE tblNXB

(

maNXB varchar(10) constraint p_NXB primary key, tenNXB varchar(50), diaChi

varchar(50), dienThoai varchar(10))

cách 2:

CREATE TABLE tblNXB

(

maNXB varchar(10) , tenNXB varchar(50), diaChi archar(50), dienThoai varchar(10),

constraint p_NXB primary key(MaNXB) )

với 2 cách này, ta tự đặt tên cho ràng buộc khóa chính là p_ NXB.

- Cách 1, chỉ phù hợp với trường hợp ràng buộc khóa chính có 1 cột còn cách 2 thì có thể áp dùng cho mọi trường hợp (số lượng cột tham gia ràng buộc >=1)

 Câu lệnh thêm ràng buộc:

ALTER TABLE <Tên_bảng> ADD

CONSTRAINT <Ten_RBTV> <RBTV>, CONSTRAINT <Ten_RBTV> <RBTV>,

Câu lệnh này sử dụng khi đã tạo xong cấu trúc bảng (bảng chưa có dữ liệu)

Ví dụ 1: Thêm ràng buộc check có tên c_PHAI trên cột PHAI của bảng NHANVIEN: ALTER TABLE NHANVIEN ADD CONSTRAINT c_PHAI CHECK (PHAI IN (‘Nam’,

‘Nu’))

Hoặc:

ALTER TABLE NHANVIEN ADD CONSTRAINT c_phai CHECK(PHAI='nam' OR

Trang 10

maphong varchar(10) NOT NULL, tenphong varchar(50), diadiem varchar(50))

- Thêm ràng buộc khóa chính trên cột maphong:

ALTER TABLE PHONGBAN ADD CONSTRAINT P_PHONG primary key (maphong)

Lưu ý: Cột tham gia vào ràng buộc khóa chính phải NOT NULL

- Thêm cột maphong Varchar(10) vào bảng NHANVIEN:

ALTER TABLE NHANVIEN ADD maphong varchar(10)

- Thêm ràng buộc khóa ngoại của bảng NHANVIEN và ràng buộc tham chiếu đến bảng PHONGBAN thông qua cột Maphong:

ALTER TABLE NHANVIEN ADD f_NV FOREIGN key(maphong) REFERENCES

PHONGBAN(maPhong) ON DELETE CASCADE ON UPDATE CASCADE

Ví dụ 2: Ràng buộc khóa chính gồm nhiều thuộc tính:

CREATE TABLE Thuctap(masv VARCHAR(10), madt VARCHAR(10) , NTT

NVARCHAR(25),

kqtt FLOAT CONSTRAINT c_kqtt CHECK(kqtt>0 AND kqtt<=10),

CONSTRAINT p_tt PRIMARY key(masv,madt),

CONSTRAINT f1_tt FOREIGN key(masv) REFERENCES sv(masv) ON DELETE

CASCADE ON UPDATE CASCADE ,

CONSTRAINT f2_tt FOREIGN key(madt) REFERENCES dt(madt) ON DELETE

CASCADE ON UPDATE CASCADE )

Trang 11

 Câu lệnh xóa ràng buộc:

ALTER TABLE <Tên_bảng> DROP CONSTRAINT <Tên_RBTV>

Ví dụ:

- Xóa ràng buộc khóa chính trên cột Maphong của bảng PHONGBAN:

ALTER TABLE PHONGBAN DROP CONSTRAINT P_PHONG

- Xóa ràng buộc Check trên cột Phai của bảng NHANVIEN:

ALTER TABLE NHANVIEN DROP CONSTRAINT C_PHAI

2 ) Hãy viết các câu truy vấn SQL thực hiện thêm các bản ghi sau vào bảng

Trang 12

nào đó; delete from: để thực hiện xóa một hoặc nhiều bộ dữ liệu trong một bảng nào đó.

- Với mỗi câu lệnh insert into ta chỉ thực hiện thêm được một bộ bản ghi cho mỗi lần thực hiện câu lệnh Vì vậy cần thêm bao nhiêu bản ghi thì ta cần thực hiện bấy nhiêu câu lệnh

Lời

giải:

1 insert into tblDauSach

values (‘1010111’, ‘Phương pháp tính’, 2007, ‘111’, ‘Nxb01’, ‘Tg002’);

insert into tblDauSach

values (‘1011111’, ‘Lập trình hướng đối tượng với C#’, 2008, ‘101’, ‘Nxb02’,

2 delete from tblDauSach where maDS like ‘%11’;

3 update tblDauSach Set maDS =’1010110’

3 Tạo ràng buộc trên cột ngayNhap sao cho cột này nhận giá trị mặc định là ngày

hiện tại (hàm Getdate() lấy ngày hiện hành).

4 Xóa hết ràng buộc tại các cột trong các bảng trong CSDL QLTV

5 Tạo lại các ràng buộc khóa chính, khóa ngoại và các ràng buộc khác trên các bảng trong CSDL QLTV

Trang 13

Bài 2: Viết các câu lệnh SQL thực hiện các yêu

cầu sau:

1 Thêm các thông tin sau vào bảng tblTacGia

Tg003 Phạm Ngọc Thách Hà Nội 04 3223049

2 Thêm các thông tin sau vào bảng tblNXB

Nxb01 Nhà xuất bản giáo dục Hà Nội 04 7892345

Nxb02 Nhà xuất bản đồng nai Đồng Nai 078 789223

Nxb03 Nhà xuất bản giao thông vận tải Hà Nội 04 3223049

Nxb04 Nhà xuất bản Kim Đồng Hà Nội 04 2230498

3 Thêm các thông tin sau vào bảng tblLinhVuc

4 Thay đổi mã của tác giả Quách Tuấn Ngọc thành ‘Tg005’

5 Thay đổi tên tác giả có mã ‘TG007’ thành ‘Đỗ Xuân Lôi’

6 Thay đổi tên cuốn sách có mã ‘2010111’ thành ‘Kết cấu ô tô’

7 Xóa tất cả các độc giải có mã bắt đầu bằng chuỗi ‘10103’

8 Xóa tất cả các đầu sách được nhập vào ngày ‘20/6/2008’

9 Hiển thị tất cả các tác giả viết sách thuộc về lĩnh vực Công Nghệ Thông Tin

10 Thực hiện các bài tập trong phần 18.3

Trang 14

hú ý: Sinh viên làm các bài tập thực hành ở trên, cuối buổi thực hành nộp lại bài làm cho giáo viên.

Trang 15

BÀI 3: TRUY VẤN DỮ LIỆU

WHERE <điều kiện>

- <danh sách các cột>: Tên các cột cần được hiển thị trong kết quả truy vấn

- <danh sách các bảng>: Tên các bảng liên quan đến câu truy vấn

- <điều kiện>: Biểu thức boolean xác định dòng nào sẽ được rút trích

Nối các biểu thức: AND, OR, và NOT

Phép toán: < , > , <= , >=, <> , =, LIKE và BETWEEN

Cú pháp

Cú pháp của câu lệnh SELECT như sau:

SELECT tên_các_cột

FROM tên_bảng

Để truy xuất nhiều cột ta liệt kê các cột sao cho mỗi cột đặt cách nhau bởi dấu phẩy

Ví Dụ: Để truy xuất maTG và tenTG trong bảng tblTacGia ta thực hiện câu truy vấn

SELECT * FROM tên_Bảng;

Cú pháp mệnh đề WHERE trong câu lệnh SELECT như sau:

SELECT tên_cột[,…] FROM tên_bảng[,…]

WHERE tên_cột phép_toán giá_trị[and/or …]

Trong mệnh đề WHERE, các phép toán được sử dụng là

<> So sánh không bằng

Trang 16

< Nhỏ hơn

>= Lớn hơn hoặc bằng

<= Nhỏ hơn hoặc bằng

BETWEEN Nằm giữa một khoảng

L

ư u ý: Trong một số phiên bản của SQL, phép toán <> có thể được viết dưới dạng !=

Ví dụ 1: Để lấy về tất cả các cuốn sách được xuất bản từ năm 2004 đến năm 2008 ta

có câu truy vấn sau:

Select *

From tblDauSach

Where (namXB >= 2004) and (namXB <= 2008);

Ví dụ 2: Để lấy về tất cả tên các cuốn sách có mã là ‘1010111’ Ta sử dụng câu truy vấn sau:

1.Dùng câu lệnh SQL thực hiện các yêu cầu sau:

a) Hiện thị tất cả các nhà xuất bản có trong trong CSDL.

b) Hiển thị tất cả các thông tin về các đầu sách có mã bắt đầu bằng ký tự :’101’ c) Hiển thị tất cả tên sách thuộc lĩnh vực ‘Công nghệ thông tin’, tên sách được sắp

- Để kiểm tra một xâu có được bắt đầu bằng chuỗi ký tự nào đó ta sử dụng từ khóa like

- Thông tin về các độc giả được lưu trong bảng tblDocGia

Trang 17

- Thông tin về đầu sách được lưu trong bảng tblDauSach

Lời

gi ả i

a) select tenNXB [Nhà xuất bản] from tblNXB;

b) select * from tblDauSach where maDS like ‘101%’;

c) select tenSach from tblDauSach ds, tblLinhVuc lv

where ((ds.MaLV = lv.MaLV) and (tenLV= ‘Công nghệ thông tin’))

order by tenSach;

d) select * from tblDocGia where soThe =’skh20984’;

III.

B ài t ập t h ực hành

Sử dụng các câu lệnh SQL thực hiện các truy vấn sau:

1 Hiển thị thông tin về các độc giả mượn sách ngày: 23/03/2005

2 Hiển thị tất cả các đầu sách của tác giả Quách Tuấn Ngọc

3 Hiển thị tất cả các sách có số lượng lớn hơn 100

4 Hiển thị tất cả các đọc giả đang mượn sách

5 Hiển thị tất cả thông tin về sách thuộc về lĩnh vực ‘Kinh tế’, sắp xếp kết quả theo trường ngayNhap

6 Hiển thị tất cả tác giả viết cuốn sách ‘Pascal nâng cao’

7 Hiển thị tất cả tác giả có địa chỉ ở Hà Nội

8 Hiển thị tất cả độc giả sinh ngày năm 15/10/1988

………

Trang 18

BÀI 4: TRUY VẤN DỮ LIỆU (TIẾP) Mục tiêu:

Rèn luyện kỹ năng truy vấn trên nhiều bảng có sử dụng các toán tử: IN, LIKE, BETWEEN

Đề bài tập:

Cho CSDL QLDIEM gồm các bảng như sau:

Khoa(MaKhoa, TenKhoa) MonHoc(MaMH, TenMH, SoTc) SinhVien(MaSV, Hoten,Ngaysinh, Quequan, GioiTinh, MaKhoa) KetQua(MaSV, MaMH, DiemL1, DiemL2 )

Hãy tạo CSDL và thiêt lập các ràng buộc theo mô tả dưới đây:

-Một khoa có nhiều sinh viên

-Một sinh viên có nhiều kết quả (một sinh viên học nhiều môn học)

-Một môn học có nhiều kết quả (mỗi sinh viên có 1 KQ riêng)

Sau đó nhập dữ liệu cho các bảng và thực hiện các yêu cầu sau đây:

1 Liệt kê tất cả các sinh viên, thông tin gồm MaSV, TenSV, GioiTinh Tên sinh viên viết Hoa, sắp xếp tên sinh viên theo thứ tự giảm dần trong bảng chữ cái

2 Hiển thị thông tin của các sinh viên họ ‘Nguyễn’

3 Hiển thị thông tin của các sinh viên gồm: Masv, Hoten, Tuoi (đây là thuộc tính

tự đặt)

4 Hiển thị thông tin của các sinh viên thuộc khoa ‘Công nghệ thông tin’ và có điểm thi lần 1 các môn >=8

5 Hiển thị thông tin của các môn học có số tín chỉ >=3 thuộc khoa có mã “KT”

6 Hiển thị thông tin về các khoa có các sinh viên tên: ‘Lan’, ‘Mai’, ‘Hoa’

7 Hiển thị thông tin của các sinh viên chưa tham gia thi bất kì môn nào (chưa có kết quả thi môn học)

Trang 19

BÀI 5: TRUY VẤN LỒNG, HÀM KẾT HỢP VÀ GOM NHÓM

I

N h ắc lại lý t h u y ết

A CÁC PHÉP TOÁN TẬP HỢP

- Toán tử UNION cho phép ta hợp các kết quả của hai hay nhiều truy vấn

thành một tập kết quả duy nhất Cú pháp của phép hợp như sau:

- Toán tử INTERSECT: phép giao

SELECT <ds cột> FROM <ds bảng> WHERE <điều kiện>

Trang 20

Ví dụ : trong cơ sở dữ liệu quản lý sách của thư viện trường ĐHSPKTHY, hiển thị tên các đầu sách không được nhập trong năm 2007, chúng ta sẽ thiết kế câu truy vấn như sau:

SELECT tenDS FROM tblDauSach WHERE maDS NOT IN (SELECT

maDS

FROM tblPhieuNhap WHERE ngayNhap BETWEEN '1/1/2007' AND '31/12/2007' );

 Các câu lệnh SELECT có thể lồng nhau ở nhiều mức

 Câu truy vấn con thường trả về một tập các giá trị

 Các câu truy vấn con trong cùng một mệnh đề WHERE được kết hợp bằng phép nối logic

 Mệnh đề WHERE của câu truy vấn cha

- <biểu thức> <so sánh tập hợp> <truy vấn con>

- So sánh tập hợp thường đi cùng với một số toán tử

IN, NOT IN, ALL, ANY hoặc SOME

- Kiểm tra sự tồn tại

EXISTS, NOT EXISTS

Truy vấn lồng phân cấp

+ Mệnh đề WHERE của truy vấn con không tham chiếu đến thuộc tính của các quan

hệ trong mệnh đề FROM ở truy vấn cha

+ Khi thực hiện, câu truy vấn con sẽ được thực hiện trước

Ví dụ:

SELECT MANV, TENNV

FROM NHANVIEN, PHONGBAN

WHERE TENPHG=‘Nghien cuu’ AND PHG=MAPHG

Ngày đăng: 11/11/2015, 21:07

TỪ KHÓA LIÊN QUAN

w