Upload
itnoi
View
191
Download
2
Embed Size (px)
Citation preview
TRƢỜNG ĐẠI HỌC SƢ PHẠM TP HCM
KHOA TOÁN – TIN
280, An Dương Vương, Q5, Tp HCM ĐT: (08).8352020 - 8352021
Lê Đức Long
Email: [email protected]
Website: http://www.2learner.edu.vn
CƠ SỞ DỮ LIỆU
NỘI DUNG TRÌNH BÀY
2Edited by Duc-Long, Le - 2009
TRƢỜNG ĐẠI HỌC SƢ PHẠM TP HCM
KHOA TOÁN – TIN
280, An Dương Vương, Q5, Tp HCM ĐT: (08).8352020 - 8352021
Lê Đức Long
Email: [email protected]
Website: http://www.2learner.edu.vn
Các lệnh định nghĩa dữ liệu Các lệnh truy vấn dữ liệu cơ bản Lệnh tạo khung nhìn (View)
NGÔN NGỮ SQL(Structured Query Language)
4
Đặt vấn đề …
Một DBMS phải có ngôn ngữ giao tiếpgiữa ngƣời sử dụng với CSDL, baogồm: Ngôn ngữ mô tả dữ liệu (Data Definition Language –
DDL) để cho phép khai báo cấu trúc các bảng CSDL,khai báo các mối liên hệ của dữ liệu và các ràngbuộc áp đặt lên các dữ liệu đó
Ngôn ngữ thao tác dữ liệu (Data ManipulationLanguage – DML) cho phép ngƣời dùng thêm, xoá,sửa dữ liệu
Ngôn ngữ truy vấn dữ liệu, hay ngôn ngữ hỏi đáp cócấu trúc ( Structured Query Language – SQL) chophép khai thác thông tin cần thiết trong CSDL
Ngôn ngữ quản lý dữ liệu (Data Control Language –DCL) cho phép ngƣời quản trị hệ thống thay đổi cấutrúc của bảng, khai báo bảo mật thông tin, cấp quyềnkhai thác CSDL
Ngôn ngữ ĐSQH
Cách thức truy vấn dữ liệu
Khó khăn cho ngƣời sử dụng
Ngôn ngữ giao tiếp CSDL: SQL
Ngôn ngữ cấp cao
Ngƣời sử dụng chỉ cần đƣa ra nội dung cần truy vấn
Đƣợc phát triển bởi IBM (1970s)
Ban đầu có tên là SEQUEL (Structured English Query Language)
Đƣợc ANSI (American National Standard Institute)
công nhận và phát triển thành chuẩn:
• SQL-86 (được ISO – International Standards Organization công nhận)
• SQL-92
• SQL-99
Giới thiệu về SQL
Ví dụ và bài tập : MS SQL Server 2000
THAO TAC VỚI NGÔN NGỮ SQL QUA DMBS MS SQL SERVER
6Edited by Duc-Long, Le - 2009
Cửa sô Enterprise Manager Cửa sô Query Analyzer
Thao tác
trưc tiếpThao tác
gián tiếp
Sử dụng ngôn ngữ SQL để
thưc hiện các yêu cầu
Sử dụng hệ thống thưc đơn
(menu) để thưc hiện các yêu cầu
Chủ yếu các yêu cầu tao,
thêm, xoá, sửa dữ liệuBao gôm tất cả các yêu cầu
cập nhật, khai thác dữ liệu
Man hinh go câu lênh
Man hinh xuât tbao, kêt qua
TRƢỜNG ĐẠI HỌC SƢ PHẠM TP HCM
KHOA TOÁN – TIN
280, An Dương Vương, Q5, Tp HCM ĐT: (08).8352020 - 8352021
Lê Đức Long
Email: [email protected]
Website: http://www.2learner.edu.vn
Định nghĩa dữ liệu
XEM CHAPTER 4 – DATA DEFINITION LANGUAGE
Ở SQL SERVER 2000-A BEGINNER’S GUIDE
8
Các lệnh định nghĩa dữ liệu
Là ngôn ngữ mô tả (DDL) cho:
Tao CSDL
Lƣợc đô cho mỗi quan hệ
Miền giá trị tƣơng ứng của từng thuộc tính
Ràng buộc toàn vẹn
…
Vi dụ CREATE DATABASE (tao CSDL)
CREATE TABLE (tao bảng), DROP TABLE (xóa bảng)
ALTER TABLE (sửa bảng)
…
Tối đa có thể tao 32,767 databases trên một DB server.
Có 3 loại file được dùng để lưu trữ một Database: The primary file contains the startup information for the database. The primary file is also
used to store data. Every database has one primary file. (tập tin dữ liệu)
Secondary files hold all of the data that does not fit in the primary data file. Databases
need not have any secondary data files if the primary file is large enough to hold all of the
data in the database. Other databases may be large enough to need multiple secondary data
files, or they may use secondary files on separate disk drives to spread the data across
multiple disks.
Transaction log files hold the log information used to recover the database. There must
be at least one transaction log file for each database, although there may be more than
one. The minimum size for a transaction log file is 512 KB. (tập tin lƣu vết)
Mỗi Database phải có ít nhất 2 files, a primary file and a transaction log file.
Có thể đặt tên các file này theo qui tắc đặt tên file bình thƣờng, nhƣng nên sử dụng tên và
phần mở rộng mặc định (xem bảng dƣới)
File type File name extension
Primary data file .mdf
Secondary data file .ndf
Transaction log file .ldf
Tạo cơ sở dữ liệuTạo mới một database và các files được dùng để lưu trữ Database, hay
attaches một Database từ các files của một previously created Database.
10
Tạo cơ sở dữ liệu
Tạo trực tiếp từ cửa sổ Enterprise Manager Tạo gián tiếp từ cửa sổ SQL Query Analyzer
Cú pháp tông quátCREATE DATABASE tên csdl
[ ON
[ < filespec > [ ,...n ] ]
[ , < filegroup > [ ,...n ] ]
]
[ LOG ON { < filespec > [ ,...n ] } ]
[ COLLATE collation_name ]
[ FOR LOAD | FOR ATTACH ]
< filespec > ::=
[ PRIMARY ]
( [ NAME = logical_file_name , ]
FILENAME = 'os_file_name'
[ , SIZE = size ]
[ , MAXSIZE = { max_size | UNLIMITED } ]
[ , FILEGROWTH = growth_increment ] ) [ ,...n ]
< filegroup > ::=
FILEGROUP filegroup_name < filespec > [ ,...n ]
11
Tạo CSDL có tên Sales với các thông số như sau:
CREATE DATABASE Sales
ON
( NAME = Sales_dat,
FILENAME = 'c:\program files\microsoft sql server\mssql\data\saledat.mdf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = 'Sales_log',
FILENAME = 'c:\program files\microsoft sql server\mssql\data\salelog.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB )
Kích thƣớc
ban đầu
Kích thƣớc
tối đa
Tao CSDL có tên QLSV gôm 2 file QLSV_Data.mdf
và QLSV_log.ldf với các thông số mặc định (kích
thƣớc ban đầu 1MB, kích thƣớc tối đa không giới han)
CREATE DATABASE QLSV
Hê thống sẽ tạo CSDL Sales với 2 file có tên saledat.mdf và
salelog.ldf cùng với cac thông số đã chỉ định
12
CREATE DATABASE QLSV
QUAN SÁT CỬA SỔ ENTERPRISE MANAGER
Khi tạo CSDL QLSV với các thông số mặc nhiên trong
cửa sô Enterprise Manager – tương đương với lệnh tạo:
Trasaction log file với cac
thông số mặc địnhPrimary file với cac
thông số mặc định
Lưu ở …\MSSQL\data
Xoá cơ sở dữ liệu hiện có
13
Xoá trực tiếp từ cửa sổ Enterprise Manager: nhấnphím Delete, nhấp chuột trên biểu tƣợng Delete
Xoá gián tiếp từ cửa sổ SQL Query Analyzer
DROP DATABASE QLSV
Lưu ý: Không thể hủy bỏ cac CSDL hê thống như: Master, Model, Tempdb
Để hủy bỏ một CSDL thanh công thi phai đam bao không còn người sd đang
truy cập CSDL
Tuyêt đối không xoa CSDL bằng cach sử dụng Windows Explorer hoặc
Windows Commander (chẳng hạn) để hủy bỏ cac loại tập tin dữ liêu của SQL
trong thư mục C:\Microsoft SQL Server\MSSQL.1\MSSQL\DATA
14
Lệnh tạo bảng (Table)
Để định nghĩa một bảng
Tên bảng
Các thuộc tính
• Tên thuộc tính
• Kiểu dữ liệu
• Các RBTV trên thuộc tính
Cú pháp tổng quát
CREATE TABLE < Tên quan hệ> (
<Thuộc tính> <Kiểu> [<Kích thƣớc>] [NOT NULL],….
PRIMARY KEY (<Khoá chính>)
[UNIQUE (<Khoá chỉ định>),…]
[FOREIGN KEY (<Khoá ngoai>) REFERENCES <bảng>,…]
[CHECK < Điều kiện ràng buộc>, …]
[CONSTRAINT <Tên ràng buộc> <kiểu ràng buộc>] )
15
QUAN SÁT CỬA SỔ ENTERPRISE MANAGER
CSDL QLSinhVien
Cấu trúc của bảng
HPhan
16
Ý NGHĨA
Lệnh tao một bảng rỗng có cấu trúc gôm các thuộc tính với các kiểu
dữ liệu tƣơng ứng, cùng với một số tham số.
-Các kiểu dữ liệu có thể sử dụng nhƣ: char(n), smallint, integer,
decimal(p,s), real, datetime, binary, ...
-not null: thuộc tính không lây gia trị rỗng. Lưu ý thuộc tính khoa
mặc nhiên bị rang buộc not null.
-primary key (<khoa chính>): khai bao khoa chính của bang.
-unique (<khoa>): khai bao cac khoa chỉ định khac (nêu có)
-foreign key (<khoa ngoại>) …: khai bao khoa ngoại của bang
-check <điều kiên rang buộc>: mô ta cac rang buộc miền gia trị
CREATE TABLE < Tên quan hệ> (
<Thuộc tính> <Kiểu> [<Kích thƣớc>] [NOT NULL],….
PRIMARY KEY (<Khoá chính>)
[UNIQUE (<Khoá chỉ định>),…]
[FOREIGN KEY (<Khoá ngoai>) REFERENCES <bảng>,…]
[CHECK < Điều kiện ràng buộc>, …]
[CONSTRAINT <Tên ràng buộc> <kiểu ràng buộc>] )
17
Các kiểu dữ liệu của SQL
Số (numeric)
INTEGER
SMALLINT
NUMERIC, NUMERIC(p),
NUMERIC(p,s)
DECIMAL, DECIMAL(p),
DECIMAL(p,s)
REAL
DOUBLE PRECISION
FLOAT, FLOAT(p)
Kiểu số thường dùng
trong lập trình
18
Kiểu dữ liệu (tt)
Chuỗi ký tự (character string) CHARACTER, CHARACTER(n)
CHARACTER VARYING(x)
Chuỗi bit (bit string) BIT, BIT(x)
BIT VARYING(x)
Ngày giờ (datetime) DATE gôm ngày, tháng và năm
TIME gôm giờ, phút và giây
TIMESTAMP gôm ngày và giờ
Xem MS SQL Online Help
Kiểu thường dùng
trong lập trình
19
Table 6-1. SQL Server datatype synonyms.
Synonym Mapped to system datatype
binary varying varbinary
char varying varchar
character char(1)
character(n) char(n)
character varying(n) varchar(n)
dec decimal
double precision float
float[(n)] for n = 1 to 7 real
float[(n)] for n = 8 to 15 float
integer int
national character(n) nchar(n)
national char(n) nchar(n)
national character varying(n) nvarchar(n)
national char varying(n) nvarchar(n)
national text ntext
numeric decimal
20
Table 6-2. SQL Server number datatypes.
Datatype RangeStorage
(bytes)
bigint -263 to 263-1 8
int -231 to 231-1 4
smallint -215 to 215-1 2
tinyint 0 to 255 1
money
- 922,337,203,685,477.5808 to
922,337,203,685,477.5807 with accuracy of one ten-
thousandth of a monetary unit 8
smallmoney-214,748.3648 to 214,748.3647, with accuracy of
one ten-thousandth of a monetary unit4
decimal(p,s) Whole or fractional numbers from -1038 to 1038 2~17
float Approximations of numbers from -1.79E308 to
1.79E308 (15 digit precision)8
realApproximations of numbers from -3.40E38 to 3.40E38
(7 digit precision)4
21
Table 6-3. SQL Server decimal and numeric datatype storage requirements.
Precision Storage (bytes)
1 to 9 5
10 to 19 9
20 to 28 13
29 to 38 17
Table 6-4. SQL Server datetime datatypes.
Datatype RangeStorage
(bytes)
datetimeJanuary 1, 1753, through December 31, 9999, with an
accuracy of three-hundredths of a second8
smalldatetimeJanuary 1, 1900, through June 6, 2079,with an
accuracy of one minute 4
22
Table 6-5. SQL Server character datatypes.
char(n)Up to 8000 characters, 1 byte per character n declared, even
if partially unsused (fix length)
varchar(n)Up to 8000 characters, 1 byte per character stored. Declared
but unsused characters do not consume storage (variable
length)
nchar(n)Up to 4000 character, 2 bytes per character declared (Unicode
character strings)
nvarchar(n)Up to 4000 character, 2 bytes per character stored. Declared
but unsused do not use storage (Unicode character strings)
ntextUp to 230 -1 (1,073,741,823) characters (Unicode character
strings)
text and imageText: character data up to 231-1 characters
Image: Binary data up to 231-1 characters
Text and Image is always variable length
binary(n)Any binary representation (bit patterns) up to 255 bytes (n
bytes)
varbinary(n)Any binary representation (bit patterns) up to 255 bytes (n
bytes). No storage for space declared but not used
23
Gọi từ menu Start
Start/All Programs/Microsoft SQL Server/Book Online
Gọi trực tiếp từ ứng dụng
Bấm F1
Chọn tab Search,
gõ từ cần tra cứu
24
CREATE TABLE NhanVien(
MaNV char(8) not null,
HoNV nvarchar(50) not null,
TenLot nvarchar(50) not null,
TenNV nvarchar(50) not null,
NgSinh datetime not null,
Phai nvarchar(5),
Dchi nvarchar(100),
Ma_NQL char(8),
Phong char(4) not null,
MLuong real
)
Tạo bảng NHANVIEN
trong CSDL hiện
hành (đang mở) với
các thuộc tính được
định nghĩa là bắt
buộc hay không bắt
buộc nhập khi nhập
liệu hoặc thêm
Vi dụ - Tạo bảng đơn giản
25
QUAN SÁT CỬA SỔ ENTERPRISE MANAGER
Khi tạo bảng NHANVIEN trực tiếp với các thuộc tính tương ứng
Tương đương với lệnh CREATE TABLE NHANVIEN...
Khóa chính
Kiểu dữ liệu
Chọn kiểu dữ liêu
phù hợp với phân tích
Kích thƣớc (tƣơng ứng
số byte lƣu trữ)
Cho phép Null
Mô tả thuộc tính
26
Tạo bảng NHANVIEN có khai báo các khóa
chính, khóa ngoại
CREATE TABLE NhanVien(
MaNV char(8) not null,
HoNV nvarchar(50) not null,
TenLot nvarchar(50) not null,
TenNV nvarchar(50) not null,
NgSinh datetime,
Phai nvarchar(5),
Dchi nvarchar(100),
Ma_NQL char(8) not null,
Phong char(4) not null,
MLuong real,
Primary Key (MaNV),
Foreign Key (Ma_NQL) References NhanVien(MaNV),
Foreign Key (Phong) References PhongBan(MaPhg)
)
Khai báo khóa chính
Khai báo khóa ngoai QUAN HỆ CHA
QUAN HỆ CON
27
Ví dụ - Tạo bảng
CREAT TABLE MONHOC (
Mamon char(4) NOT NULL,
Tenmon char(20) NOT NULL,
Mato char(2),
Sotietquidinh int,
CHECK (Sotietquidinh > 0),
PRIMARY KEY (Mamon),
UNIQUE (Tenmon),
FOREIGN KEY (Mato) REFERENCES TOBM(MaBM)
)
Tạo bảng MONHOC có khai báo các khóa chính, khóa
ngoại và kiểm tra duy nhất
Khai báo tên môn là duy nhất (điểm
khác biệt với PK là đƣợc phép xuất
hiện nhiều lần
Kiểm tra thuộc tính Sotietquidinh
phải lớn hơn 0
QUAN HỆ CHA
QUAN HỆ CON
Có thể bỏ qua (kô báo lỗi)
Hệ thống tự đặt tên ràng buộc
28
Ví dụ - Tạo bảng
CREATE TABLE PHONGBAN(
MaPhg char(4) NOT NULL,
TenPhg nvarchar(100) NOT NULL,
TrPhg char(8) DEFAULT '88556611',
NgNC datetime,
CONSTRAINT PK_PhongBan PRIMARY KEY (MaPhg),
CONSTRAINT U_PhongBan UNIQUE (TenPhg),
CONSTRAINT FK_PhongBan
FOREIGN KEY (TrPhg) REFERENCES NhanVien(MaNV)
ON DELETE SET DEFAULT ON UPDATE CASCADE
)
Tạo bảng PHONGBAN có khai báo các ràng buộc (có đặt
tên ràng buộc)
Tao ràng buộc khóa ngoai, có kiểm tra khi xóa, sửa
Tao ràng buộc tên phòng ban là duy nhất
Tao ràng buộc khóa chính
Đặt giá trị mặc nhiên là ‘88556611’
29
Thao tác chỉnh sửa cấu trúc
Đƣợc dùng để
Thay đổi cấu trúc bảng
Thay đổi các ràng buộc (RB)
Thêm cột
Xóa cột
Mở rộng cột
ALTER TABLE <Tên_bảng> ADD <Tên_cột> <Kiểu_dữ_liệu> [<RBTV>]
ALTER TABLE <Tên_bảng> DROP COLUMN <Tên_cột>
ALTER TABLE <Tên_bảng> ALTER COLUMN<Tên_cột> <Kiểu_dữ_liệu_mới>
30
Vi dụ - Thay đổi cấu trúc bảng
ALTER TABLE NHANVIEN ADD NGHENGHIEP CHAR(20)
ALTER TABLE NHANVIEN DROP COLUMN NGHENGHIEP
ALTER TABLE NHANVIEN ALTER COLUMN NGHENGHIEP CHAR(50)
THÊM CỘT
XOÁ CỘT
THAY ĐỔI ĐỘ RỘNG CỘT
ALTER TABLE NHANVIEN ADD PRIMARY KEY (MANV)
ALTER TABLE NHANVIEN ADD FOREIGN KEY (PHONG) REFERENCES PHONGBAN (MAPHG)
BỔ SUNG KHOÁ CHÍNH, KHOÁ NGOẠI
31
Thêm ràng buộc
Xóa ràng buộc
ALTER TABLE <Tên_bảng> ADDCONSTRAINT <Ten_RBTV> <RBTV>,
CONSTRAINT <Ten_RBTV> <RBTV>,
…
ALTER TABLE <Tên_bảng> DROP <Tên_RBTV>
Thao tác chỉnh sửa cấu trúc
32
CREATE TABLE PhongBan(
MaPhg char(4) not null,
TenPhg nvarchar(100) not null,
)
ALTER TABLE PhongBan ADD TrPhg char(8), NgNC datetime
ALTER TABLE PhongBan ADD CONSTRAINT fk_PhongBan
FOREIGN KEY (TrPhg) REFERENCES NhanVien(MaNV)
SAU KHI TẠO BẢNG PHONGBAN, TẠO BẢNG NHANVIEN
BỔ SUNG THÊM CÁC RÀNG BUỘC
ALTER TABLE PhongBan ADD CONSTRAINT pk_PhongBan
PRIMARY KEY (MaPhg)
TẠO RÀNG BUỘC KHÓA CHÍNH
TẠO BẢNG PHONG BAN
33
Lệnh xóa bảng
Đƣợc dùng để xóa cấu trúc bảng
Tất cả dữ liệu của bảng cũng bị xóa
Cú pháp
Vi dụ
DROP TABLE <Tên_bảng>
DROP TABLE NHANVIEN
DROP TABLE PHONGBAN
CHÚ Ý ĐẾN THỨ TỰ KHI XOÁ LIÊN QUAN ĐẾN RELATIONSHIP
34
Lệnh xóa bảng (tt)
NHANVIEN
TENNVHONV TENLOT MANV NGSINH DCHI PHAI LUONG MA_NQL PHG
PHONGBAN
TRPHGTENPHG MAPHG NG_NHANCHUC
ALTER TABLE PHONGBAN DROP COLUMN TRPHG (xoá cột TRPHG)
ALTER TABLE PHONGBAN DROP fk_PHONGBAN (xoá RB fk_PHONGBAN)
DROP TABLE NHANVIEN
DROP TABLE PHONGBAN
HAY
(1)
(2)
(3)
(1)
(2)
(3)
TRƢỜNG ĐẠI HỌC SƢ PHẠM TP HCM
KHOA TOÁN – TIN
280, An Dương Vương, Q5, Tp HCM ĐT: (08).8352020 - 8352021
Lê Đức Long
Email: [email protected]
Website: http://www.2learner.edu.vn
Truy vấn dữ liệu
XEM CHAPTER 5 – SIMPLE QUERIES
Ở SQL SERVER 2000-A BEGINNER’S GUIDE
36
Khai thác CSDL bằng SQL
Title Author Publisher Year
Intro to DB Systems Date Addison-Wesley 1986
Fund. of DB Systems Elmasri Addison-Wesley 1989
London Fields Amis Penguin 1989
100 years of solitude Marquez Picador 1982
The history man Bradbury Arrow Books 1977
BOOKINSERT INTO BOOKVALUES('Fund of...','..')
INSERT INTO BOOKVALUES('Fund of...','..')
DELETE FROM BOOKWHERE TITLE='London
Fields'
DELETE FROM BOOKWHERE TITLE='London
Fields'
UPDATE BOOKSET YEAR='1975'WHERE TITLE=The
history man'
UPDATE BOOKSET YEAR='1975'WHERE TITLE=The
history man'
SELECT TITLE, AUTHORFROM BOOKWHERE YEAR='1989'
SELECT TITLE, AUTHORFROM BOOKWHERE YEAR='1989'
Title AuthorFund. of DB lmasri Systems
London Amis Fields
37
Truy vấn dữ liệu
Là ngôn ngữ rút trich dữ liệu thỏa một số điều kiện nào đó
Dựa trên
Lệnh cơ bản để rút trich thông tin từ CSDL: SELECT
Lệnh SELECT không hoàn toàn giống phép chọn/chiếu trong ĐSQH:
Cho phép 1 bảng có nhiều dòng trùng nhau
Bảng kết quả truy vấn là tập các bộ (đa bộ - tuples)
Phép toán ĐSQH Một số bổ sung
38
CÚ PHAP CÂU LỆNH SELECT
SELECT <Danh sách các cột đƣợc chọn>
FROM < Danh sách các bảng>
WHERE <Điều kiện chọn>
GROUP BY <Danh sách cột cần nhóm>
HAVING < Điều kiện nhóm>
ORDER BY < Danh sách cột cần sắp xếp>
Trả lời câu truy vấn khai thác CSDL như sau:
“LIỆT KÊ DANH SÁCH CÁC CỘT ĐƯỢC CHỌN TỪ DANH
SÁCH CÁC BẢNG THEO ĐIỀU KIỆN CHỌN”
39
Câu truy vấn cơ bản
Gồm 3 mệnh đề
<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
SELECT <danh sách các cột>
FROM <danh sách các bảng>
WHERE <điều kiện>
Gần giống phép chiếu
Tƣơng ứng phép chọn
Tƣơng ứng phép tích
40
Truy vấn cơ bản (tt)
SELECT <danh sách các cột>
FROM <danh sách các bảng>
WHERE <điều kiện>
SELECT L
FROM R
WHERE CL (C (R))
Tƣơng ứng giữa SQL và ĐSQH
41
Vi dụ
SELECT *
FROM NHANVIEN
WHERE PHONG=‘NC’
Lấy tất cả các cột của quan hệ kết quả
MANV,HONV,TENLOT,TENNV,NGSINH,DCHI,PHAI,LUONG,MA_NQL,PHONG (PHONG=„NC‟ (NHANVIEN))
PHONG=„NC‟ (NHANVIEN)HAY
MANV HONV TENLOT TENNV NGSINH PHAI DCHI MA_NQL PHONG MLUONG
002 Nguyen Thanh Tung 1955-01-09 Nam 731 Tran Hung Dao,Q1,Tp HCM 001 NC 2500000.0
004 Dinh Ba Tien 1968-01-09 Nam 638 Nguyen Van Cu,Q5,Tp HCM 002 NC 2200000.0
006 Nguyen Manh Hung 1973-09-15 Nam 978 Ba Ria,Vung Tau 002 NC 2000000.0
007 Tran Thanh Tam 1975-07-31 Nu 543 Mai Thi Luu,Q1,TpHCM 002 NC 2200000.0
008 Tran Hong Van 1976-07-04 Nu 980 Le HongPhong,Q10,HCM 004 NC 1800000.0
Liệt kê các nhân viên ở phòng Nghiên
cứu (MÃ PHÒNG = „NC‟)
Gía trị chuỗi phải để
trong nháy đơn ‘
42
SELECT MANV, HONV, TENLOT, TENNV
FROM NHANVIEN
WHERE PHONG=‘NC’ AND PHAI=‘Nam’
SỬ DỤNG THÊM CÁC TOÁN TỬ LUẬN LÝ AND, OR, NOT, LIKE, BETWEEN
Vi dụLiệt kê manv, honv, tenlot, tennv của các nhân
viên nam ở phòng Nghiên cứu (PHONG = „NC‟)
MANV HONV TENLOT TENNV
002 Nguyen Thanh Tung
004 Dinh Ba Tien
006 Nguyen Manh Hung
Sử dụng nháy đơn nếu là chuỗi
43
Đặt tên/bi danh khi truy vấn
SELECT MANV, HONV AS HONV, TENLOT AS „TEN LOT‟, TENNV AS “TÊN ”
FROM NHANVIEN
WHERE PHONG=„NC‟ AND PHAI=„Nam‟
Tên bí danh - Alias
Sư khác nhau khi đặt tên có thêm
nháy đơn/nháy kép và không có
Có thể có hoặc
không
MANV HONV TEN LOT TÊN
002 Nguyen Thanh Tung
004 Dinh Ba Tien
006 Nguyen Manh Hung
ĐẶT BÍ DANH CHO QUAN HỆ CŨNG TƯƠNG TỰ - NHANVIEN AS NV
44
Nối các thuộc tinh
SELECT MANV, HONV + ‘ ‘ + TENLOT + ‘ ‘ + TENNV AS ‘HỌ TÊN’
FROM NHANVIEN
WHERE PHONG=‘NC’ AND PHAI=‘Nam’
SỬ DỤNG TOÁN TỬ CỘNG CHUỖI + (CHỈ DÙNG CHO THUỘC TÍNH KIỂU CHUỖI)
MANV HỌ TÊN
002 Nguyen Thanh Tung
004 Dinh Ba Tien
006 Nguyen Manh Hung
Ví dụ Liệt kê manv, họ tên của các nhân viên nam ở
phòng Nghiên cứu (PHONG = „NC‟)
45
Mở rộng thuộc tinh hiển thị
SELECT MANV, LUONG*1.1 AS ‘LUONG 10%’
FROM NHANVIEN
WHERE PHG=5 AND PHAI=‘Nam’
Mở rộng với các biểu thức số học
MANV LUONG 10%
002 2750000.0
004 2420000.0
006 2200000.0
Ví dụ Liệt kê manv, lương tăng thêm 10% của các nhân
viên nam ở phòng Nghiên cứu (PHONG = „NC‟)
46
Sử dụng toán tử Between
SELECT MANV, TENNV
FROM NHANVIEN
WHERE MLUONG>=2000000 AND MLUONG<=3000000
SELECT MANV, TENNV
FROM NHANVIEN
WHERE MLUONG BETWEEN 2000000 AND 3000000
HAY CÓ THỂ VIẾT LẠI SỬ DỤNG TOÁN TỬ BETWEEN
Lƣơng nhân viên từ 2000000 đến 3000000
Ví dụ Liệt kê manv, tennv của các nhân viên có mức lương từ 2.000.000
đến 3.000.000
MANV TENNV
001 Quyen
002 Tung
003 Nhan
004 Tien
005 Vu
006 Hung
007 Tam Chú ý Between lấy Từ đâu ….. Đến đâu
47
SELECT MANV, TENNV
FROM NHANVIEN
WHERE MLUONG NOT BETWEEN 2000000 AND 3000000
TOÁN TỬ NOT BETWEEN
SELECT MANV, TENNV
FROM NHANVIEN
WHERE MLUONG < 2000000 OR MLUONG > 3000000
TƢƠNG ĐƢƠNG VỚI CÁCH VIẾT:
Sử dụng toán tử Between
Ví dụ Liệt kê manv, tennv của các nhân viên có mức lương KHÔNG
từ 2.000.000 đến 3.000.000
MANV TENNV
008 Van
48
Sử dụng toán tử In
Ví dụ Liệt kê manv, tennv của các nhân viên có mức lương là
2.500.000 hoặc 3.000.000
SELECT MANV, TENNV
FROM NHANVIEN
WHERE MLUONG = 2500000 OR MLUONG =3000000
TƢƠNG ĐƢƠNG VỚI CÁCH VIẾT:
SELECT MANV, TENNV
FROM NHANVIEN
WHERE MLUONG IN (2500000, 3000000)
MANV TENNV
001 Quyen
002 Tung
003 Nhan
Hoặc 2500000 hoặc 3000000
Thuộc các giá trị 2500000 hoặc 3000000
Toán tử tập hợp
49
SELECT DISTINCT MLUONG
FROM NHANVIEN
WHERE PHONG=‘NC’
Loại bỏ các dòng trùng nhau
- Loại bỏ sẽ tốn chi phí thời gian
- Người dùng muốn thấy
- Khi dùng ham kêt hợp nêu tự
động loại bỏ có thể cho kêt qua sai
SELECT MLUONG
FROM NHANVIEN
WHERE PHONG=‘NC’
SQL HIỂN THỊ CÁC BỘ TRÙNG
NHAU TRONG KẾT QUẢ TRUY VẤN
Sử dụng toán tử Distinct
Ví dụ Liệt kê các mức lương của nhân viên ở phòng
Nghiên cứu (PHONG = „NC‟)
MLUONG
2500000.0
2200000.0
2000000.0
2200000.0
1800000.0
MLUONG
1800000.0
2000000.0
2200000.0
2500000.0
-Kêt qua cho thây
đã được sắp thứ tự
một cach phân biêt
50
SELECT MANV, TENNV
FROM NHANVIEN
WHERE TENNV LIKE ‘Va_’
TOÁN TỬ LIKE – so sánh chuỗi tương đối
SELECT MANV, TENNV
FROM NHANVIEN
WHERE TENNV LIKE ‘T%’
Chuỗi bất kỳ tối đa 255 ký tự
(tai vị trí đó trở đi)
1 Ký tự bất kỳ
_ : ký tự đại diện cho 1 ký tự tại vị trí dấu
% : ký tự đại diện cho 1 nhóm ký tự tại vị trí dấu
Sử dụng toán tử Like
Kí tự gạch nối dưới
Kí tự phần trăm
Liệt kê manv, tennv của nhân viên có tên bắt đầu
bằng vần “Va”
Liệt kê manv, tennv của nhân viên có tên bắt đầu
bằng kí tự “T”
MANV TENNV
008 Van
MANV TENNV
002 Tung
004 Tien
007 Tam
51
SELECT MANV, TENNV
FROM NHANVIEN
WHERE TENNV LIKE ‘%u%’ OR TENNV LIKE ‘%o%’
SELECT MANV, TENNV
FROM NHANVIEN
WHERE TENNV NOT LIKE ‘T%’
TOÁN TỬ LIKE – so sánh chuỗi tương đối
_ : ký tự đại diện cho 1 ký tự tại vị trí dấu
% : ký tự đại diện cho 1 nhóm ký tự tại vị trí dấu
Sử dụng toán tử Like
Kí tự gạch nối dưới
Kí tự phần trăm
TOÁN TỬ NOT LIKE
Liệt kê manv, tennv của nhân viên có tên chứa vần “u”hoặc vần “o”
MANV TENNV
001 Quyen
002 Tung
005 Vu
006 Hung Liệt kê manv, tennv của nhân viên có tên KHÔNG
bắt đầu bằng vần “T”
MANV TENNV
001 Quyen
003 Nhan
005 Vu
006 Hung
008 Van
52
TOÁN TỬ LIKE – so sánh chuỗi tương đối
Sử dụng toán tử Like
SELECT MANV, TENNV
FROM NHANVIEN
WHERE DCHI LIKE ‘%TP HCM%’
Liệt kê manv, tennv của nhân viên có địa chỉ ở TP.HCMMANV TENNV
002 Tung
003 Nhan
004 Tien
005 Vu
007 Tam
008 Van Toán tử LIKE đƣợc sử dụng kèm với nhiều kí tư
(Wildcard Character) nhƣ: %, _, [ ], [^] và từ khóa
Escape
53
Gọi từ menu Start
Start/All Programs/Microsoft SQL Server/Book Online
Gọi trực tiếp từ ứng dụng
Bấm F1
Chọn tab Search,
gõ từ cầm tra cứu
54
Search với từ khóa Escape, chọn topic LIKE
Gọi từ menu Start
Start/All Programs/Microsoft SQL Server/Book Online
Gọi trực tiếp từ ứng dụng
Bấm F1
55
Wildcard character Description Example
% Any string of zero or more
characters.
WHERE title LIKE '%computer%' finds all
book titles with the word 'computer' anywhere in
the book title.
_ (underscore) Any single character. WHERE au_fname LIKE '_ean' finds all four-
letter first names that end with ean (Dean,
Sean, and so on).
[ ] Any single character within
the specified range ([a-f]) or
set ([abcdef]).
WHERE au_lname LIKE '[C-P]arsen' finds
author last names ending with arsen and
beginning with any single character between C
and P, for example Carsen, Larsen, Karsen,
and so on.
[^] Any single character not
within the specified range
([^a-f]) or set ([^abcdef]).
WHERE au_lname LIKE 'de[^l]%' all author
last names beginning with de and where the
following letter is not l.
Cú pháp
Thuộc tính so trùng [ NOT ] LIKE giá trị [ ESCAPE kí tự ]
KẾT QUẢ TÌM KIẾM – TRA CỨU HIỂN THỊ …
56
YYYY-MM-DD
MM/DD/YYYY
„1955-12-08‟
‟12/08/1955‟
„Dec 8, 1955‟ hay „Dec, 8 1955‟
HH:MI:SS‟17:30:00‟
‟05:30PM‟
„1955-12-08 17:30:00‟
HH:MIPM (OR AM)
Thể hiện ngày giờCác dạng thể hiện trong SQL
SELECT MANV,NGSINH
FROM NHANVIEN
WHERE NGSINH > 'Jan 1, 1970'MANV NGSINH
005 1972-07-19 00:00:00.000
006 1973-09-15 00:00:00.000
007 1975-07-31 00:00:00.000
008 1976-07-04 00:00:00.000
SELECT MANV,NGSINH
FROM NHANVIEN
WHERE NGSINH > '1970-01-01'
SELECT MANV,NGSINH
FROM NHANVIEN
WHERE NGSINH > '1970-01-01 00:00:00'
hay
hay
thể hiện ngày giờ
trong cặp nháy đơn
Liệt kê manv, ngsinh của nhân viên có
ngày sinh sau ngày 1/1/1970
57
SELECT MANV, TENNV
FROM NHANVIEN
WHERE NGSINH BETWEEN ‘1955-01-01’ AND ‘1966-12-31’
Thể hiện ngày giờ
Ví dụ Liệt kê manv, tennv của các nhân viên có ngày
sinh từ ngày 1/1/1955 đến ngày 31/12/1966
MANV TENNV
001 Quyen
002 Tung
003 Nhan
SELECT MANV, TENNV
FROM NHANVIEN
WHERE NGSINH <= ‘Dec, 31 1960’ OR NGSINH >=‘Jan, 1 1975’
MANV TENNV
001 Quyen
002 Tung
003 Nhan
007 Tam
008 Van
Liệt kê manv, tennv của các nhân viên có ngày
sinh từ trước ngày 31/12/1960 và đến sau ngày
1/1/1975
58
Sử dụng hàm Datetime của SQL
Tên hàm Ý nghĩa Ví dụ minh họa
GETDATE( )
or DATE( )
Returns the current date in
datetime format.
SELECT MaHD FROM HOADON
WHERE NgayHD = GETDATE()
DATEDIFF( )Calculates an interval between
two dates.
SELECT * FROM NHANVIEN WHERE
DATEDIFF(year, NGSINH, GETDATE()) > 5
DATEPART( )
Returns the specified portion
of a date or datetime column,
including the day, month, or
year.
SELECT DATEPART(year, NGSINH)
FROM NHANVIEN
Tên hàm Cú pháp
DATEDIFF DATEDIFF ( datepart , startdate , enddate )
DATEPART DATEPART ( datepart , date )
DAY DAY ( date )
GETDATE GETDATE ( )
MONTH MONTH ( date )
YEAR YEAR ( date )
(Sử dụng Book online, Search với từ khóa Date and Time Functions)
59
Sử dụng hàm Datetime của SQL
The table lists dateparts and abbreviations recognized by Microsoft® SQL Server™.
Datepart Abbreviations
Year yy, yyyy
quarter qq, q
Month mm, m
dayofyear dy, y
Day dd, d
Week wk, ww
Hour hh
minute mi, n
second ss, s
millisecond ms
SELECT GETDATE() AS 'Current Date'
Here is the result set:
Current Date ---------- 2006-12-13 14:56:07.117
SELECT DATEPART(month, GETDATE()) AS 'Month Number'
Here is the result set:
Month Number -------- 12
This example assumes the date May 29.
SELECT DATEPART(month, GETDATE())
Here is the result set:
----------- 5 (1 row(s) affected)
In this example, the date is specified as a number. Notice that SQL
Server interprets 0 as January 1, 1900.
SELECT DATEPART(m, 0), DATEPART(d, 0), DATEPART(yy, 0)
Here is the result set:
----- ------ --- 1 1 1900
SELECT MANV, TENNV
FROM NHANVIEN
where year(getdate())-year(ngsinh)>=40
VD: Liệt kê manv, tennv của NV có tuôi từ 40
trở lên
SELECT MANV, TENNV
FROM NHANVIEN
where datepart(yy,getdate())-datepart(yy, ngsinh)>=40
SELECT MANV, TENNV
FROM NHANVIEN
where datediff(yy, ngsinh, getdate()) >=40
60
Sử dụng trong trƣờng hợp• Không biết giá trị (value unknown)
• Giá trị không thể áp dụng (value inapplicable)
• Không tôn tai giá trị (value withheld)
Những biểu thức tính toán có liên quan đến giá trị NULL sẽ cho ra kết quả là NULL
• x có giá trị là NULL
• x + 3 cho ra kết quả là NULL
• Tương tự cho phép toan -, *, /
Những biểu thức so sánh có liên quan đến giá trị NULL sẽ cho ra kết quả là NULL (UNKNOWN)
• x = 3 cho ra kết quả là UNKNOWN (x có giá trị NULL)
• Tương tự cho phép toan >, <, <>, not, and, or
Sử dụng giá trị Null
Xem tai liêu SQL Server 2000: A Beginer’s Guide, pp 74
61
Sử dụng giá trị Null
SELECT MANV, TENNV
FROM NHANVIEN
WHERE MA_NQL IS NULL
SELECT MANV, TENNV
FROM NHANVIEN
WHERE MA_NQL IS NOT NULL
LIỆT KÊ CÁC NHÂN VIÊN KHÔNG CÓ NGƢỜI QUẢN LÝ
LIỆT KÊ CÁC NHÂN VIÊN CÓ NGƢỜI QUẢN LÝ
MANV TENNV
001 Quyen
MANV TENNV
002 Tung
003 Nhan
004 Tien
005 Vu
006 Hung
007 Tam
008 Van
62
CAC ĐIỂM LƢU Ý
SELECT MANV, TENNV
FROM NHANVIEN, PHONGBAN
WHERE TENPHG=‘Nghien cuu’ AND PHONG=MAPHG
Biểu thức luận lý
TRUE TRUE
Các toán tử toán học
Các toán tử toán học bao gôm các phép toán +, -, *, / và các
phép toán so sánh >, < , <> , >=, <=, …
Các toán tử logic
Các toán tử logic là các toán tử đƣợc dùng trong biểu thức điều
kiện: AND, OR, NOT,..
Các toán tử khác
LIKE, EXISTS, ANY/SOME, ALL, IN
Sử dụng 2 bảng
nên phải sử dụng
phép kết
63
SELECT MANV, TENNV
FROM NHANVIEN, PHONGBAN
WHERE (TENPHG=‘Nghien cuu’ OR TENPHG=‘Quan ly’) AND PHONG=MAPHG
ĐỘ ƯU TIÊN CÁC TOÁN TỬ
(I) (II)
ƯU TIÊN TRONG NGOẶC SẼ THỰC HIỆN TRƯỚC
CAC ĐIỂM LƢU Ý (tt)
Liệt kê manv, tennv của các nhân viên làm việc ở
các phòng ban có tên Nghiên cứu hoặc Quản lýVi dụ
MANV TENNV
001 Quyen
002 Tung
004 Tien
006 Hung
007 Tam
008 Van
64
SELECT MANV, PHONG, MAPHG
FROM NHANVIEN, PHONGBAN
Không sử dụng mệnh đề WHERE PHÉP TÍCH DESCARTES
MANV, PNONG, MAPHG(NHANVIEN X PHONGBAN)
Tính tích Descartes của hai bảng
NHANVIEN và PHONGBAN và chiếu
trên hai cột MANV, PHONG, MAPHG
MANV PHONG MAPHG
001 QL DH
002 NC DH
003 DH DH
004 NC DH
005 DH DH
006 NC DH
007 NC DH
008 NC DH
001 QL NC
002 NC NC
003 DH NC
…. …. ….
CAC ĐIỂM LƢU Ý (tt)
65
SELECT TENPHG, DIADIEM
FROM PHONGBAN, DIADIEM_PHG
WHERE MAPHG=MAPHG
SELECT TENPHG, DIADIEM
FROM PHONGBAN AS PB, DIADIEM_PHG AS DD
WHERE PB.MAPHG=DD.MAPHG
SELECT TENNV, NGSINH, TENTN, NGSINH
FROM NHANVIEN, THANNHAN
WHERE MANV=MA_NVIEN
SELECT TENNV, NV.NGSINH, TENTN, TN.NGSINH
FROM NHANVIEN NV, THANNHAN TN
WHERE MANV=MA_NVIEN
TRƯỜNG HỢP CÁC THUỘC TÍNH Ở CÁC QUAN HỆ KHÁC NHAU BỊ TRÙNG TÊN
SỬ DỤNG TÊN BÍ DANH Tên bí danh
Tên bí danh
Server: Msg 209, Level 16, State 1, Line 1
Ambiguous column name 'MAPHG'.
Server: Msg 209, Level 16, State 1, Line 1
Ambiguous column name 'MAPHG'.
CAC ĐIỂM LƢU Ý (tt)
66
Sử dụng mệnh đề ORDER BY
Dùng để hiển thị kết quả câu truy vấn theo một thứ tự nào đó (sắp xếp kết quả hiển thị)
Cú pháp
ASC: sắp xếp tăng (mặc định)
DESC: sắp xếp giảm
SELECT <danh sách các cột>
FROM <danh sách các bảng>
WHERE <điều kiện>
ORDER BY <danh sách các cột>
67
Mệnh đề ORDER BY (tt)
Vi dụ
SELECT MANV, MADA
FROM PHANCONG
ORDER BY MANV DESC, MADA
Liệt kê manv, mada mà nhân viên đó tham gia đề án
theo thứ tự manv giảm dần, nếu trùng manv thì liệt
kê theo thứ tự tăng dần
MANV MADA
008 DT002
008 TH001
007 TH001
007 TH002
006 DT001
004 DT001
004 DT002
003 TH001
002 DT001
002 DT002
002 TH001
002 TH002
001 TH001
001 TH002
MADA tăng dần
MANV giảm dần
68
MANV HO TEN NV
001 Vuong Ngoc Quyen
003 Le Thi Nhan
005 Bui Thuy Vu
007 Tran Thanh Tam
008 Tran Hong Van
002 Nguyen Thanh Tung
004 Dinh Ba Tien
006 Nguyen Manh Hung
SELECT MANV, HONV + ' ‘ + TENLOT+' ‘ + TENNV AS "HỌ TÊN NV"
FROM NHANVIEN
ORDER BY PHAI DESC, MANV
Ví dụLiệt kê manv, họ tên nhân viên theo thứ tự nữ trước nam
sau, nếu trùng giới tính thì liệt kê theo thứ tự manv tăng
dần
PHAI giảm dần
MANV tăng dần
Mệnh đề ORDER BY (tt)
Kết hợp mệnh đề TOP n
69Edited by Duc-Long, Le - 2009
Ví dụLiệt kê 3 nhân viên (manv) có tham gia đề án „TH001‟ với
thời gian được phân công nhiều nhất
SELECT TOP 3 MANV
FROM PHANCONG
WHERE MADA = ‘TH001’
ORDER BY THOIGIAN DESC
Xem mệnh đê TOP n ở trang 570-572 trong sách SQL Server 2000:
A Beginner’s Guide
Ý tưởng:
Chọn các nhân viên tham gia đề án „TH001‟
Sắp xếp theo thứ tự giảm dần
Lấy ra 3 nhân viên đầu tiên
TRƢỜNG ĐẠI HỌC SƢ PHẠM TP HCM
KHOA TOÁN – TIN
280, An Dương Vương, Q5, Tp HCM ĐT: (08).8352020 - 8352021
Lê Đức Long
Email: [email protected]
Website: http://www.2learner.edu.vn
Truy vấn dữ liệu
XEM CHAPTER 5 – SIMPLE QUERIES
Ở SQL SERVER 2000-A BEGINNER’S GUIDE
71
Câu truy vấn trên nhiều bảng
Phân tich tƣơng tự nhƣ trong ĐSQH
Sau đó ánh xạ tự ĐSQH SQL
Lƣu ý ở mệnh đề
From: chỉ ra các bảng cần liên kết
Where: chỉ ra thêm điều kiện kết
SELECT MASV,TENSV,SVIEN.MAKHOA,TENKHOA
FROM SVIEN,KHOA
WHERE SVIEN.MAKHOA='CNTT' AND SVIEN.MAKHOA=KHOA.MAKHOA
72
Tìm họ tên nhân viên và tên phòng ban nhân
viên đó trực thuộc có mức lương từ 2.000.000
đến 3.000.000
HONV,TENLOT, TENNV, TENPHG,MLUONG (MLUONG 2000000 MLUONG ≤ 3000000
(NHANVIEN PHONG = MAPHG PHONGBAN ))
Ví dụ 1
SELECT HONV,TENLOT,TENNV,TENPHG,MLUONG
FROM NHANVIEN,PHONGBAN
WHERE PHONG=MAPHG
AND MLUONG >= 2000000 AND MLUONG <=3000000
SELECT HONV,TENLOT,TENNV,TENPHG,MLUONG
FROM NHANVIEN,PHONGBAN
WHERE PHONG=MAPHG
AND MLUONG BETWEEN 2000000 AND 3000000
HONV TENLOT TENNV TENPHG MLUONG
Vuong Ngoc Quyen Quan Ly 3000000.0
Nguyen Thanh Tung Nghien Cuu 2500000.0
Le Thi Nhan Dieu Hanh 2500000.0
Dinh Ba Tien Nghien Cuu 2200000.0
Bui Thuy Vu Dieu Hanh 2200000.0
Nguyen Manh Hung Nghien Cuu 2000000.0
Tran Thanh Tam Nghien Cuu 2200000.0
73
Lập danh sách các thân nhân dưới 18 tuôi
của các nhân viên.Ví dụ 2
R1 NHANVIEN X THANNHAN
R2 YEAR(NOW) – YEAR(THANNHAN.NGSINH) < 18 ^ NHANVIEN.MANV = THANNHAN.MANV (R1)
MANV, TENNV, TENTN, THANNHAN.PHAI, THANNHAN.NGSINH, QUANHE (R2)
(NOW kí hiêu cho ham lây gia trị ngay thang hiên hanh)
SELECT NV.MANV,TENNV, TENTN, TN.PHAI, TN.NGSINH, QUANHE
FROM NHANVIEN NV,THANNHAN TN
WHERE NV.MANV =TN.MANV AND YEAR(GETDATE())-YEAR(TN.NGSINH)<18
MANV TENNV TENTN PHAI NGSINH QUANHE
003 Nhan Tran Minh Tien Nam 1990-11-12 Con
003 Nhan Tran Ngoc Linh Nu 1993-10-03 Con
005 Vu Nguyen Manh Tam Nam 2003-01-13 Con
Server: Msg 209, Level 16, State 1, Line 1
Ambiguous column name 'MANV'.
Server: Msg 209, Level 16, State 1, Line 1
Ambiguous column name 'NGSINH'.
Bắt buộc nếu kô sẽ báo lỗi !!!
74
Ví dụ 3Với mỗi phòng ban, cho biết tên phòng ban và
địa điểm phòng
TENPHG, DIADIEM (PHONGBAN PHONGBAN.MAPHG = DIADIEM_PHG.MAPHG DIADIEM_PHG ))
SELECT TENPHG,DIADIEM
FROM DIADIEM_PHG DD,PHONGBAN PB
WHERE DD.MAPHG=PB.MAPHG
TENPHG DIADIEM
Dieu Hanh HANOI
Dieu Hanh NHATRANG
Dieu Hanh TPHCM
Nghien Cuu HANOI
Nghien Cuu TPHCM
Quan Ly TPHCM
75
Ví dụ 4Tìm tên những người trưởng phòng của từng
phòng ban
HONV, TENLOT, TENNV, TENPHG(PHONGBAN TRPHG = MANVNHANVIEN))
SELECT TENPHG,HONV+' '+TENLOT+' '+TENNV AS TENTP
FROM NHANVIEN,PHONGBAN
WHERE MANV=TRPHG
TENPHG TENTP
Dieu Hanh Le Thi Nhan
Nghien Cuu Nguyen Thanh Tung
Quan Ly Vuong Ngoc Quyen
76
Ví dụ 5
TENDA, MADA, DDIEM_DA, PHONG, TENPHG, MAPHG, TRPHG, NGNC(PHONGBAN MAPHG = PHONGDEAN ))
Tìm TENDA, MADA, DDIEM_DA, PHONG,
TENPHG, MAPHG, TRPHG, NGNC
SELECT TENDA,MADA,DDIEM_DA,MAPHG,TENPHG,TRPHG,NGNC
FROM DEAN,PHONGBAN
WHERE PHONG=MAPHG
TENDA MADA DDIEM_DA MAPHG TENPHG TRPHG NGNC
DAO TAO 1 DT001 NHATRANG DH Dieu Hanh 003 2002-10-10
DAO TAO 2 DT002 HANOI DH Dieu Hanh 003 2002-10-10
TIN HOC HOA 1 TH001 HANOI NC Nghien Cuu 002 2002-03-15
TIN HOC HOA 2 TH002 TPHCM NC Nghien Cuu 002 2002-03-15
77
Ví dụ 6Tìm tên và địa chỉ của tất cả các nhân viên
của phòng "Nghien cuu".
SELECT TENNV,DCHI
FROM PHONGBAN,NHANVIEN
WHERE PHONG = MAPHG AND TENPHG='Nghien cuu'
TENNV,DCHI (TENPHG=”Nghien cuu”(PHONGBAN MAPHG=PHONGNHANVIEN))
TENNV DCHI
Tung 731 Tran Hung Dao,Q1,TPHCM
Tien 638 Nguyen Van Cu,Q5,TPHCM
Hung 978 Ba Ria,VungTau
Tam 543 Mai Thi Luu,Q3,TPHCM
Van 980 LeHong Phong,Q10,TPHCM
78
Ví dụ 7Tìm tên những nữ nhân viên và tên người
thân của họ
TENNV,TENTN(PHAI=”Nu”(NHANVIEN MANVTHANNHAN))
SELECT TENNV,TENTN
FROM THANNHAN TN,NHANVIEN NV
WHERE TN.MANV=NV.MANV AND NV.PHAI='Nu'
TENNV TENTN
Quyen Le Nhat Minh
Nhan Tran Minh Tien
Nhan Tran Ngoc Linh
Nhan Tran Minh Long
TRƢỜNG ĐẠI HỌC SƢ PHẠM TP HCM
KHOA TOÁN – TIN
280, An Dương Vương, Q5, Tp HCM ĐT: (08).8352020 - 8352021
Lê Đức Long
Email: [email protected]
Website: http://www.2learner.edu.vn
Cám ơn đã theo dõi …
79