You are on page 1of 11

THỰC HÀNH 1

CÁC LỆNH ĐỊNH NGHĨA DỮ LIỆU VÀ THAO TÁC DỮ LIỆU

1. GIỚI THIỆU
Bài thực hành giới thiệu các kiểu dữ liệu, các lệnh định nghĩa dữ liệu (DDL – Data
Definition Lanluage) và thao tác dữ liệu (DML - Data Manipulation Lanluage) trong SQL
Server, bao gồm:
 Các lệnh tạo cơ sở dữ liệu (CSDL – Database), bảng (Table), ràng buộc toàn vẹn (RBTV
– Integrity constraint).
Các lệnh sửa bảng: Thay đổi cấu trúc bảng (thêm cột, xóa cột, mở rộng cột); Thay đổi

RBTV (thêm/xóa RBTV).


 Các lệnh xóa một đối tượng trong SQL Server.
 Các lệnh thao tác dữ liệu: thêm (INSERT), xóa (DELETE), sửa (UPDATE).
 Lệnh sao chép một bảng dữ liệu.

2. CÁC LỆNH TẠO CSDL, BẢNG, RBTV


2.1. Lệnh tạo cơ sở dữ liệu
CREATE DATABASE database_name
 Ví dụ:
CREATE DATABASE QLBH
Sau khi tạo CSDL để sử dụng CSDL đó cần chỉ định bằng cách dùng lệnh USE.
USE database_name
 Ví dụ:
USE QLBH

2.2. Lệnh tạo bảng


Để định nghĩa một bảng trong SQL cần: tên bảng, các cột, kiểu dữ liệu của cột và RBTV
trên cột.
CREATE TABLE table_name(
column_name data_type [intergrity_constraint],
column_name data_type [intergrity_constraint],

[intergrity_constraint]
)
 Ví dụ:
CREATE TABLE KHACHHANG(
MAKH CHAR(4),
HOTEN NVARCHAR(40),
NGAYSINH SMALLDATETIME,
)
3. Các lệnh tạo RBTV
RBTV trong SQL Server được chia ra làm hai loại chính: Loại đơn giản sử dụng
constraint để mô tả; Loại phức tạp sử dụng Trigger để thực hiện. Trong nội dung môn CSDL chỉ
tìm hiểu RBTV loại đơn giản.

Từ khóa Loại kiểm tra

PRIMARY KEY, UNIQUE Kiểm tra duy nhất

NULL/NOT NULL Kiểm tra rỗng/ khác


rỗng

FOREIGN Kiểm tra tồn tại


KEY…..REFERENCES

CHECK, DEFAULT Kiểm tra miền giá trị

[CONSTRAINT constraint_name]

Lưu ý:
 Một RBTV luôn gắn với một bảng
 Nếu không đặt tên thì hệ thống sẽ tự động phát sinh tên cho RBTV.
 Có thể tạo RBTV cùng thời điểm lúc tạo bảng hoặc sau khi tạo bảng xong (bằng cách
dùng lệnh ALTER TABLE)
 Phạm vi của RBTV áp dụng ở mức cột hoặc mức bảng
Bảng sau mô tả quy định về khai báo các RBTV:

Tên Mức cột Mức bảng Ý nghĩa, cú pháp

NULL x Cho phép cột tồn tại giá trị NULL

NOT NULL x Không cho phép cột tồn tại giá trị NULL

UNIQUE x X Không cho phép tồn tại giá trị trùng nhau
UNIQUE [<ds_cot>]

PRIMARY KEY x X Khóa chính của bảng


PRIMARY KEY[<dscot_khoachinh>]

FOREIGN KEY x X Khóa ngoại của bảng


FOREIGN KEY[<dscot_khoangoai>]
REFERENCES bangthamchieu (cotthamchieu)

CHECK x X Quy định miền giá trị của dữ liệu cột


CHECK (bieuthuc_luanly)

DEFAULT x X Quy định giá trị mặc định của dữ liệu cột
DEFAULT (giatri_macdinh) [ten_cot]

Ví dụ: Tạo bảng KHACHHANG cùng mới các RBTV như sau: MAKH là khóa chính,

HOTEN không cho phép tồn tại giá trị NULL, SDT không cho phép tồn tại giá trị trùng nhau,
NGAYSINH phải lớn hơn ngày ‘01/01/1900’, DOANHSO giá trị mặc định bằng 0.
CREATE TABLE KHACHHANG(
MAKH CHAR(4) PRIMARY KEY,
HOTEN NVARCHAR(40) NOT NULL,
DIACHI NVARCHAR(50),
SODT VARCHAR(10) UNIQUE,
NGAYSINH SMALLDATETIME CONSTRAINTNGSINH_CHECK CHECK
(NGAYSINH > ‘01/01/1900’),
DOANHSO MONEY,
NGDK SMALLDATETIME
)
 Ví dụ: Tạo bảng CTHD có RBTV khóa chính trên hai cột (SOHD, MASP), RBTV khóa
ngoại trên cột SOHD thuộc bảng HOADON, MASP thuộc bảng SANPHAM.
CREATE TABLE CTHD
(
SOHD INT, MASP CHAR(4),SOLUONG INT,
CONSTRAINT SOHD_MASP_PK PRIMARY KEY (SOHD, MASP),
CONSTRAINT SOHD_FK FOREIGN KEY (SOHD) REFERENCES
HOADON(SOHD),
CONSTRAINT MASP_FK FOREIGN KEY (MASP) REFERENCES
SANPHAM(MASP)
)

4. CÁC LỆNH SỬA BẢNG


4.1. Thêm cột
ALTER TABLE table_name
ADD colummn_name data_type
Ví dụ: Thêm cột GHICHU có kiểu dữ liệu varchar(20) vào bảng SANPHAM

ALTER TABLE SANPHAM


ADD GHICHU VARCHAR(20)
4.2. Mở rộng cột
ALTER TABLE table_name
ALTER COLUMN colummn_name data_type
Ví dụ: Sửa kiểu dữ liệu cột GHICHU có kiểu dữ liệu varchar(50) vào bảng SANPHAM

ALTER TABLE SANPHAM


ALTER COLUMN GHICHU VARCHAR(50)
4.3. Xóa cột
ALTER TABLE table_name
DROP COLUMN colummn_name
Ví dụ: Xóa cột GHICHU trong bảng SANPHAM
ALTER TABLE SANPHAM
DROP COLUMN GHICHU

4.4. Thêm RBTV


ALTER TABLE table_name
ADD [CONSTRAINT constraint_name] constraint_type
Ví dụ: Thêm vào bảng HOADON RBTV khóa chính là SOHD, RBTV khóa ngoại trên hai
cột MAKH, MANV, RBTV quy định giá trị mặc định của cột NGHD là ngày hiện tại.
ALTER TABLE HOADON ADD
CONSTRAINT SOHD_PK PRIMARY KEY (SOHD),
CONSTRAINT MAKH_FK FOREIGN KEY (MAKH) REFERENCES
KHACHHANG (MAKH),CONSTRAINT MANV_FK FOREIGN KEY (MANV)
REFERENCES NHANVIEN (MANV),CONSTRAINT NGHD_DF DEFAULT
(GETDATE()) FOR NGHD
Ví dụ: Thêm RBTV UNIQUE trên hai cột EMAIL, SDT của bảng KHACHHANG

ALTER TABLE HOADON ADD


CONSTRAINT EMAIL_SDT_UNIQUE UNIQUE (EMAIL, SDT)

1. Xóa RBTV
ALTER TABLE table_name
DROP CONSTRAINT constraint_name
Ví dụ: Xóa hai RBTV SOHD_PK, NGHD_DF

ALTER TABLE HOADON


DROP CONSTRAINT SOHD_PK, NGHD_DF

5. Các lệnh xóa một đối tượng trong SQL Server


5.1. Xóa CSDL
DROP DATABASE database_name
Ví dụ: Xóa CSDL QLBH
DROP DATABASE QLHB

5.2. Xóa bảng


DROP TABLE table_name
Ví dụ: Xóa bảng CTHD
DROP TABLE CTHD
Lưu ý: Không thể xóa bảng khi nó có tham chiếu khóa ngoại đến bảng khác

6. Các lệnh thao tác dữ liệu


6.1. Thêm dữ liệu
INSERT INTO table_name (columns_list)
VALUES (values_list)

Ví dụ: Thêm dữ liệu cho bảng HOADON


INSERT INTO HOADON
VALUES(‘1002’,’23/07/2017’,’KH02’,’NV01’,100000)
Lưu ý:
 Thứ tự của dữ liệu phải trùng thứ tự của các cột.
 Có thể thêm giá trị NULL ở những thuộc tính không phải là khóa chính hoặc
không có ràng buộc NOT NULL.
Thêm giá trị tương ứng của tất cả các cột trong bảng trong trường hợp này thì không cần
liệt kê danh sách
6.2. Cập nhật dữ liệu

UPDATE table_name
SET column_name new_value,column_name = new_value,
……
[WHERE condition]

Ví dụ: Tăng giá 5% cho tất cả sản phẩm


UPDATE SANPHAM
SET GIA = GIA *1.05
 Nếu có mệnh đề WHERE thì những dòng dữ liệu thỏa điều kiện mới thực hiện cập
nhật.
 Nếu không có mệnh đề WHERE thì tất cả các dòng dữ liệu sẽ được cập nhật.
 Lệnh UPDATE có thể gây vi phạm RBTV khóa ngoại: không cho sửa.

6.3. Lệnh xóa dữ liệu

DELETE FROM table_name


[WHERE <condition>]

Ví dụ: Xóa các nhân viên có họ bắt đầu là “Ngô”


DELETE FROM NHANVIEN
WHERE HOTEN LIKE = “Ngô%”
 Số lượng số dòng bị xóa phụ thuộc vào điều kiện ở mệnh đề WHERE.
 Nếu không có mệnh đề WHERE thì tất cả các dòng dữ liệu của bảng sẽ bị xóa.
 Lệnh DELETE có thể gây vi phạm RBTV khóa ngoại: không cho xóa.

7. BÀI TẬP YÊU CẦU


Cho lược đồ CSDL quản lý đề tài nghiên cứu khoa học của sinh viên tại một trường
đại học như sau:
 KHOA (MAKHOA, TENKHOA, NAMTHANHLAP, TRGKHOA, SLGV)
Mỗi khoa có một mã khoa duy nhất (MAKHOA) để phân biệt các khoa khác. Mỗi khoa xác
định tên khoa (TENKHOA) không trùng nhau, năm thành lập của khoa (NAMTHANHLAP) và
trưởng khoa (TRGKHOA) của khoa. Trong đó TRGKHOA lưu giữ MAGV đang làm trưởng
khoa. Mỗi khoa có số lượng giảng viên (SLGV) nhất định.

GIANGVIEN (MAGV, HOTEN, NGAYSINH, GIOITINH, HOCVI, CHUCVU,
MAKHOA)
Mỗi giảng viên có một mã số duy nhất (MAGV) để phân biệt các giảng viên khác. Mỗi
giảng viên bao gồm các thông tin: họ tên (HOTEN), ngày sinh (NAMSINH), giới tính
(GIOITINH), học vị (HOCVI), chức vụ (CHUCVU) và thuộc về một khoa quản lý (MAKHOA).
 SINHVIEN (MASV, HOTEN, NGAYSINH, LOP, QUEQUAN, MAKHOA)
Mỗi sinh viên có một mã số sinh viên duy nhất (MASV) để phân biệt các sinh viên khác tại
Trường. Mỗi sinh viên xác định họ và tên (HOTEN), ngày sinh (NGAYSINH), lớp danh nghĩa
(LOP), quê quán (QUEQUAN) và thuộc về một khoa quản lý (MAKHOA). Lưu ý, một sinh viên
có thể không thực hiện hoặc thực hiện nhiều đề tài nghiên cứu khoa học.
 PHUHUYNH (HOTENPH, MASV, GIOITINH, SDTPH, QUANHE)
Mỗi sinh viên khi học tại Trường có lưu giữ thông tin của một phụ huynh đại diện. Mỗi phụ
huynh có họ tên phụ huynh (HOTENPH) và mã sinh viên (MASV) để phân biệt các phụ huynh
khác. Mỗi phụ huynh xác định thêm thông tin về giới tính (GIOITINH) và mối quan hệ
(QUANHE) với sinh viên.

BANGLUONG (MASBL, MAGV, HESOLUONG, PHUCAP, LUONGCOBAN,
NGAYVAOLAM)
Mỗi bảng lương có một mã số bảng lương duy nhất (MASBL) để phân biệt với các bảng
lương khác. Mỗi bảng lương cho biết thông tin của một giảng viên (MAGV), hệ số lương
(HESOLUONG), phụ cấp (PHUCAP), lương cơ bản (LUONGCOBAN) và ngày bắt đầu vào làm
(NGAYVAOLAM).

DETAI (MADT, TENDT, KINHPHI, NGAYBD, NGAYDKKT, NGAYKT,
TONGDIEM, KETQUA, MAHD)
Mỗi đề tài có một mã số đề tài duy nhất (MADT) để phân biệt với các đề tài khác. Mỗi đề
tài xác định tên đề tài (TENDT), kinh phí để thực hiện (KINHPHI), ngày bắt đầu
(NGAYBATDAU), ngày kết thúc (NGAYKETTHUC), tổng điểm (TONGDIEM), kết quả
(KETQUA) và do một giảng viên hướng dẫn (MAHD).
 CTDT (MACT, MADT, MASV, VAITRO)
Mỗi đề tài có một hoặc nhiều chi tiết đề tài. Mỗi chi tiết đề tài có một mã chi tiết duy nhất
(MACT) để phân biệt với các chi tiết đề tài khác. Mỗi một chi tiết đề tài xác định thuộc của một
đề tài (MADT), sinh viên thực hiện (MASV) và vai trò của sinh viên (trưởng nhóm hoặc thành
viên)

YÊU CẦU: Sinh viên viết lệnh tạo lập CSDL và nhập dữ liệu các bảng.
KHOA

GIANGVIEN

SINHVIEN
DETAI

CTDT

BANGLUONG
PHUHUYNH

You might also like