You are on page 1of 44

Buổi 3

1
2.2. Thiết kế bảng (Table)

2.2.1. Tạo bảng mới

2.2.2. Tạo các cột (thuộc tính- Field)

2.2.3. Ghi và đặt tên bảng

2.2.4. Nhập dữ liệu cho bảng

2.2.5. Cập nhật dữ liệu bảng

2.3. Tạo chỉ dẫn (Index)

2.3.1. Giới thiệu

2.3.2. Cập nhật dữ liệu Index


N-Đ-T
Bài 3
2

 Tạo bảng
Create table tên_bảng1,2,…n
(
Tênthuộctính1 kieudl (độ dài dl) lk,rb,ch,
Tênthuộctính2 kieudl (độ dài dl) lk,rb,ch,
..
Tênthuộctính1 kieudl (độ dài dl) lk,rb,ch
)
 Kiểu dữ liệu

N-Đ-T
3

 Thực thể
 Thuộc tính :4

 Liên kết : 3

Biểu đồ E- R: 6

N-Đ-T
4

 Tạo bảng
 Kiểu dữ liệu
 Chuẩn hóa

N-Đ-T
2.2. Thiết kế bảng (Table)
5

 Một bảng (table) thuộc một database. Mỗi


table bao gồm tên table, danh sách cột
(column), khóa chính, khóa ngoại.
 Table là nơi chứa thông tin.
 NhanVien : mã nv, họ tên, năm sinh, quê
quán, giới tính, chức vụ, năm công tác , đơn vị
 Sinh viên : mã sinh viên, họ tên, giới tính, năm
sinh, lớp, khóa

N-Đ-T
2.2.1. Tạo bảng mới
6

 Cú pháp :
Create Table Tên_Bảng
(
Tên_Cột Kiểu_Dữ_Liệu(Kích cỡ),
Tên_Cột Kiểu_Dữ_Liệu(Kích
cỡ) , ,primary key (Khoá chính) ,
foreign key (Khoá ngoại) references
Bảng_Tham_Chiếu(Khoá ngoại)
)

N-Đ-T
7

• Bảng tham chiếu phải tồn tại trước và có


khoá chính tham gia làm khoá ngoại trong
bảng đang được tạo.
• Nếu tạo bảng không có khoá ngoại thì chúng
ta loại bỏ dòng

N-Đ-T
qlnv
8

Nhanvien(manv, hoten, namsinh, quequan, luong)


Create table
( manv char(5) not null primary key ,
hoten nvachar(30),
namsinh datetime ,
quequan nvachar(30),
Luong float(30)
)
Phongban
duan
N-Đ-T
phongban
9

 Create table phongban


 (
 Mapb char(5) not null primary key,
 Tenbp nvachar(30),
 manv char(5) foreign key references nhanvien
(manv)

 )

N-Đ-T
1. Các kiểu dữ liệu
 Kiểu dữ liệu là một thuộc tính, nó chỉ định kiểu của dữ liệu
và dung lượng có thể lưu trữ của một đối tượng
 Các kiểu dữ liệu ép buộc dữ liệu phải toàn vẹn
 SQL Server hỗ trợ 3 kiểu dữ liệu:
 Kiểu dữ liệu hệ thống : được cung cấp bởi SQL Server

 Kiểu dữ liệu người dùng : Là kiểu dữ liệu được tạo ra dựa

trên kiểu dữ liệu hệ thống


 Kiểu dữ liệu được định nghĩa trong ngôn ngữ lập trình : Là

các kiểu dữ liệu được tạo ra bằng cách sử dụng ngôn


ngữ lập trình, chúng được hỗ trợ trong .Net Framework

N-Đ-T
Các kiểu dữ liệu hệ thống

Mục Kiểu dữ liệu Mô tả


int Một cột được khai báo kiểu dữ liệu này sẽ sử dụng 4 byte
trong bộ nhớ máy tính. Nó thường được sử dụng để lưu trữ giá
trị số nguyên
smallint Một cột được khai báo kiểu dữ liệu này sẽ sử dụng 2 byte
trong bộ nhớ máy tính. Nó có thể lưu trữ các số nguyên từ -
32768 đến 32767.
tinyint Một cột của kiểu này chiếm 1 byte trong bộ nhớ. Có giá trị từ 0
đến 255
Exact
bigint Một cột được khai báo kiểu dữ liệu này sẽ sử dụng 8 byte
Numbers
trong bộ nhớ máy tính. Nó có thể lưu trữ các số nguyên từ -
2^63 (-9223372036854775807) đến 2^63-1

numeric Một cột được khai báo kiểu dữ liệu này sẽ có độ chính xác cao
và có thể co dãn kích thước lưu trữ trong bộ nhớ.
money Một cột được khai báo kiểu dữ liệu này sẽ sử dụng 8 byte
trong bộ nhớ máy tính. Biểu diễn giá trị dữ liệu tiền tệ từ (-
2^63/10000) đến (2^63-1).
Các kiểu dữ liệu hệ thống

Mục Kiểu dữ liệu Mô tả

Approximate float Một cột được khai báo kiểu dữ liệu này sẽ sử dụng 8 byte
numerics trong bộ nhớ máy tính. Biễu diễn các số chấm động từ -
1.79E+308 đến 1.79E+308.
real Một cột được khai báo kiểu dữ liệu này sẽ sử dụng 4 byte
trong bộ nhớ máy tính. Biễu diễn các số chấm động có độ
chính xác từ -3.4E+38 đến 3.40E+38.
datetime Biễu diễn ngày và giờ. Được lưu trữ như là 2 số integer,
Date and time chiếm 8 byte.
smalldatetime Biểu diễn ngày và time.
Các kiểu dữ liệu hệ thống

Mục Kiểu dữ liệu Mô tả

Character String char Lưu trữ dữ liệu kí tự, nó được cố định kích thước và
không hỗ trợ Unicode.
Varchar Lưu trữ dữ liệu kí tự, độ dài có thể thay đổi và không
hỗ trợ Unicode.
Text Lưu trữ dữ liệu kí tự, độ dài có thể thay đổi và không
hỗ trợ Unicode.
Unicode nchar Lưu trữ dữ liệu kí tự, nó được cố định kích thước và
Types có hỗ trợ Unicode.
nvarchar Lưu trữ dữ liệu kí tự, độ dài có thể thay đổi và có hỗ
trợ Unicode.
Các kiểu dữ liệu hệ thống
Mục Kiểu dữ liệu Mô tả

Timestamp Một cột được khai báo kiểu dữ liệu này sẽ sử


dụng 8 byte trong bộ nhớ máy tính. Nó chứa
các số binary tự động phát sinh (mỗi hàng là
một số duy nhất).

binary(n) Lưu trữ dữ liệu binary có độ đài cố định với độ


dài tối đa là 8000byte.
Các kiểu dữ
varbinary(n) Lưu trữ dữ liệu binary có độ đài thay đổi với độ
liệu khác
dài tối đa là 8000byte. .
image Lưu trữ dữ liệu binary có độ đài thay đổi với
độ dài tối đa là (2^30-1) byte.
uniqueidentifier Một cột được khai báo kiểu dữ liệu này sẽ sử
dụng 16 byte trong bộ nhớ máy tính. Ngoài ra
nó lưu trữ một GUID (Globally Unique
Identifier)
Kiểu dữ liệu người dùng
Kiểu dữ liệu người dùng được dựa trên các kiểu dữ liệu
được hệ thống cung cấp.Chúng có thể được tạo bằng cách sử
dụng câu lệnh CREATE TYPE
Cú pháp:
CREATE TYPE [ schema_name. ] type_name {FROM base_type [ (
precision [ , scale ] ) ] [ NULL | NOT NULL ] } [ ; ]

where,

schema_name là tên của giản đồ mà kiểu dữ liệu người dùng đang được tạo ra
type_name là tên kiểu dữ liệu người dùng
base_type là tên của kiểu dữ liệu hệ thống cơ sở
precision and scale -Chỉ ra độ chính xác và độ co dãn đối với kiểu dữ liệu numeric
NULL | NOT NULL - qui định kiểu dữ liệu có cho phép chứa giá trị null hay không

N-Đ-T
Kiểu dữ liệu người dùng

Ví dụ:
CREATE TYPE usertype FROM varchar(20) NOT NULL

Kết quả:

N-Đ-T
Ràng buộc – Constraint
 Ràng buộc là thuộc tính được chỉ định
cho một cột hoặc một tập hợp các cột
trong bảng để ngăn ngừa các giá trị
không nhất quán được nhập vào
SQL Server 2014 hỗ trợ các loại ràng
buộc sau:

 PRIMARY KEY
 UNIQUE
 FOREIGN KEY
 CHECK
 NOT NULL
N-Đ-T
Ràng buộc kiểm tra
 Ràng buộc kiểm tra giới hạn giá trị có thể được
nhập vào trong cột
 Ràng buộc kiểm tra đảm bảo toàn vẹn dữ liệu

Ví dụ:
CREATE TABLE Person.PhoneExpenses ( Expense_ID int PRIMARY
KEY, MobileNumber bigint FOREIGN KEY REFERENCES
Person.ContactPhone (MobileNumber), Amount bigint CHECK
(Amount >0))

N-Đ-T
Cột được phép null – Column
Nullability
 Đặc trưng của khả năng Null của một cột quyết định các
hàng trong bảng có thể chứa một giá trị Null cho cột đó
 Khả năng Null của một cột có thể được định nghĩa khi tạo
một bảng hoặc định dạng một bảng
 Từ khóa NULL được sử dụng để chỉ ra rằng giá trị
null là được phép trong cột
 Từ khóa NOT NULL được sử dụng để chỉ ra rằng
giá trị null là không được phép

Ví du:
CREATE TABLE StoreDetails
(StoreID int NOT NULL, Name varchar(40) NULL)

N-Đ-T
Ràng buộc NOT NULL

Ràng buộc NOT NULL bảo đảm rằng không


được phép nhập giá trị null vào cột này
Ràng buộc NOT NULL được sử dụng để
bảo đảm toàn vẹn miền, tương tự như ràng
buộc kiểm tra

N-Đ-T
Primary Key – Khoá chính
Ràng buộc PRIMARY KEY được sử dụng để tạo một khóa
chính và đảm bảo toàn vẹn thực thể bảng:
CúCú pháp để thêm một khóa chính trong khi tạo bảng:
pháp:
CREATE TABLE <table_name> ( Column_name datatype PRIMARY KEY
[, column_list]
CREATE )
TABLE <table_name> (<column_name> <datatype>
[, column_list] CONSTRAINT constraint_name PRIMARY KEY)
Ví dụ:
CREATE TABLE Person.ContactPhone ( Person_ID int PRIMARY
KEY, MobileNumber bigint, ServiceProvider varchar(30),
Ví dụ:
LandlineNumber bigint)
INSERT INTO Person.ContactPhone VALUES (101,983345674,’Hutch’,
NULL)
GO
INSERT INTO Person.ContactPhone VALUES(101,989010002,’Airtel’,
NULL)
GO

N-Đ-T
UNIQUE - Khóa duy nhất
 Ràng buộc khóa duy nhất được sử dụng để bảo đảm
rằng chỉ các giá trị duy nhất được nhập vào trong cột
hoặc một tập hợp các cột. Nó cho phép nhà phát triển
Cúchắc
pháp:
chắn rằng không có các giá trị trùng lặp được nhập
vào
CREATE TABLE <table_name> ([column_list, ] <column_name>
<data_type>
Khóa chínhUNIQUE [,column_list])
là hoàn toàn duy nhất
Ví dụ: buộc khóa duy nhất đảm bảo ràng buộc thực thể
 Ràng
bởi vìTABLE
CREATE khi một ràng buộc được(Person_ID
Person.ContactPhone áp dụng,intkhông có hai
PRIMARY
hàng
KEY, trong bảngbigint
MobileNumber có thể UNIQUE,ServiceProvider
có cùng một giá trị đối với cột đó
varchar(30),LandlineNumber bigint UNIQUE)
 Ràng buộc UNIQUE cho phép null
Ví dụ:
INSERT INTO Person.ContactPhone values (101, 983345674,
’Hutch’, NULL)

N-Đ-T
FOREIGN KEY – Khóa ngoại
 Một khóa ngoại trong một bảng là một cột, nó chỉ đến một khóa
chính trong một bảng khác

 Ràng buộc khóa ngoại được sử dụng để đảm bảo toàn vẹn
tham chiếu

Cú pháp:
CREATE TABLE <table_name1>([ column_list,] <column_name>
<datatype> FOREIGN KEY REFERENCES <table_name2>
(pk_column_name> [, column_list])

N-Đ-T
FOREIGN KEY – Khóa ngoại 2-2
Ví dụ:
Kết qua: (Expense_ID int PRIMARY
CREATE TABLE Person.PhoneExpenses
KEY, MobileNumber bigint FOREIGN KEY REFERENCES
Person.ContactPhone (MobileNumber), Amount bigint)

Ví dụ:
INSERT INTO Person.PhoneExpenses values(101, 993026654,
500)
SELECT * FROM Person.PhoneExpenses

N-Đ-T
Bài tập 1
25

 Database tên QuanLyNhanSu gồm 2 bảng


PHONGBAN tên phòng ban (khoá chính), số
điện thoại;
NHANVIEN gồm mã nhân viên (khoá chính),
tên nhân viên, giới tính và tên phòng ban (khoá
ngoại)

N-Đ-T
Câu lệnh tạo bảng PHONGBAN
26

Create Table PHONGBAN


(
TenPhong nvarchar(30) primary key,
SDT varchar(15)
)

N-Đ-T
Câu lệnh tạo bảng NHANVIEN
27

 Create Table NHANVIEN


(
MaNv char(15) primary key ,
TenNv nvarchar(50) ,
GioiTinh nvarchar(4) ,
TenPhong nvarchar(30) foreign key
references PHONGBAN(TenPhong)
)

N-Đ-T
Bài tập 2
28

 Cho Database QuanLyBanHang bao gồm các


table sau: VATTU
Tên cột Kiểu dữ liệu Ghi chú

MaVTu Char (4) Khoá chính

TenVTu NVarChar (100)

DvTinh NVarChar (10)

PhanTram Int

N-Đ-T
NHACC
29

Tên cột Kiểu dữ liệu Ghi chú

MaNhaCC Char (3) Khoá chính

TenNhaCC NVarChar (100)

DiaChi NVarchar (200)

DienThoai NVarchar (20)

N-Đ-T
2.2.2. Tạo các cột (thuộc tính- Field)
30

 Đặt tên column (cột): Tên column phải dựa


trên tên của thuộc tính. Dùng các kí tự “_” để
phân tách các từ và tên cột là duy nhất trong
table.

N-Đ-T
;

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


31
 Cú pháp :
ALTER TABLE ten_bang
ADD ten_cot dinh_nghia_cot
Lệnh ALTER TABLE trên đây sẽ thêm
cột Luotxem vào bảng NHANVIEN.

ALTER TABLE NHANVIEN


ADD Luotxem FLOAT(10);

N-Đ-T
Thêm nhiều cột vào bảng
32
 Cú pháp:
ALTER TABLE ten_bang
ADD cot1 dinh_nghia_cot,
cot2 dinh_nghia_cot,

cot_n dinh_nghia_cot;

VD:
ALTER TABLE PHONGBAN
ADD Bientap VARCHAR(50),
Trangthai VARCHAR(50);
N-Đ-T
;
Chỉnh sửa cột trong bảng
33
 Cú pháp:
ALTER TABLE ten_bang
ALTER COLUMN ten_cot kieu_cot;
VD:
ALTER TABLE PHONGBAN
ALTER COLUMN Trangthai VARCHAR(75) NOT NULL

Lệnh trên sẽ sửa cột Trangthai sang kiểu dữ liệu


VARCHAR(75) và không chấp nhận giá trị NULL.

N-Đ-T
Xóa cột của bảng
34

 https://quantrimang.com/lenh-alter-table-trong-s
ql-server-148148

N-Đ-T
Xóa cột của bảng
35

Cú pháp:

Delete From Tên_Bảng

Where Điều_Kiện
- From : xác định table.
- Where : xác định điều kiện.

*Note : Nếu thiếu mệnh đề Where, SQLServer sẽ xóa tất


cả dữ liệu của bảng. xử lý rất nguy hiểm.

N-Đ-T
Ví dụsự1: Xoá dữ liệu của những nhân viên thuộc phòng
nhân
36
Delete From NHANVIEN
Where TenPhong = N'Phòng nhân sự'
Ví dụ 2: Xóa những nhân viên có giới tính là Nữ, thuộc
phòng IT
Delete From NHANVIEN
WhereTenPhong = N'Phòng nhân sự’
andGioiTinh = N'Nữ’

Ví dụ 3: Xóa tất cả dữ liệu của bảng PHONGBAN


Delete From PHONGBAN

N-Đ-T
2.2.4. Nhập dữ liệu cho bảng
37

Insert Into Tên_Bảng(Colum1,


Column2,...) Values (Value1, Value2,...
Lưu ý: Dữ liệu kiểu chuỗi, kiểu ngày tháng năm phải đặt
trong cặp dấu nháy đơn. Có thể bỏ danh sách cột ngay
phía sau tên bảng nếu số lượng value trùng khớp với số
lượng column.

N-Đ-T
Tạo Cơ sở dữ liệu bằng SQL Server có tên là
38
Thực tập nghề nghiệp:

Gồm sinh viên thuộc Khoa nào ? Giáo viên nào


giảng dạy ? Đề tài sinh viên đó nhận thuộc lĩnh
vực gì, địa điểm thực tập và kinh phí là bn ? Cuối
cùng sẽ là 1 bảng đánh giá bao gồm các thành
phần .

N-Đ-T
39
Tạo Cơ sở dữ liệu bằng SQL Server có tên là
TTNN1 gồm các bảng quan hệ sau:
- Khoa (makhoa , tenkhoa, dienthoai)
- GiangVien (magv, hotengv, luong , makhoa)
- SinhVien (masv, hoten, namsinh, quequan,
gioitinh, magv, makhoa)
- DeTai (madt, tendetai , kinhphi , diadiemthuctap)
- HuongDan (masv, ketqua, madt, magv)

N-Đ-T
40
2.3. Tạo chỉ dẫn (Index)
2.3.1. Giới thiệu
 Các chỉ mục hay index trong sql là các bảng
tra cứu đặc biệt mà công cụ tìm kiếm cơ sở
dữ liệu có thể sử dụng để tăng tốc độ truy
xuất dữ liệu.
 Đơn giản chỉ cần thiết lập một chỉ số là một
con trỏ đến dữ liệu trong một bảng.
 Một chỉ mục trong một cơ sở dữ liệu rất giống
với một chỉ mục ở mặt sau của một cuốn
sách.

N-Đ-T
41
 Ví dụ: muốn tham chiếu tất cả các trang trong
một cuốn sách thảo luận về một chủ đề nhất
định.
tham chiếu chỉ mục, liệt kê tất cả các chủ đề
theo thứ tự bảng chữ cái và sau đó được gọi
đến một hoặc nhiều số trang cụ thể.

N-Đ-T
.
?

2.3.2. Cập nhật dữ liệu Index


42

Cú pháp cơ bản của một CREATE INDEX như sau

1CREATE INDEX index_name ON table_name;

N-Đ-T
Bài tập
43

 Nhập dữ liệu cho CSDL SQL Quanlinhansu


vừa tạo ra ở trên ( 5 bản ghi / bảng giá trị)

N-Đ-T
Bye bye
44

N-Đ-T

You might also like