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

Bài giảng Microsoft SQL server: Bài 5 - TS. Lê Thị Tú Kiên

30 14 0
Tài liệu được quét OCR, nội dung có thể không chính xác

Đ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 2,69 MB

Nội dung

Bài giảng Microsoft SQL server - Bài 5: Truy vấn dữ liệu trên hai hoặc nhiều bảng được biên soạn giúp các bạn sinh viên biết cách viết câu truy vấn có liên kết (liên kết trong) trên nhiều bảng; sử dụng câu lệnh union.

Trang 1

Lecture 5

How to retrieve data from two or more tables

Trang 2

Objectives

Applied

e Use the explicit syntax to code an inner join that returns data from a single table or multiple tables

e Code a union statement

Knowledge

e Describe the differences between an inner join, a left outer join, a right outer join, a full outer join, and a cross join

e Explain why you don’t need to use right outer joins

e Describe the use of the implicit syntax for coding inner joins e Describe the use of unions including the use of the EXCEPT and INTERSECT operators Murach's SQL Server 2012, C4 Le Thi Tu Kien — FIT - HNUE Slide 2 Muc tiéu bai giang: ° Ung dung: ‹©_ Biết cách viết câu truy vấn có liên kết (liên kết trong) trên nhiều bảng ¢ Biết cách sử dung cau Iénh union ¢ Kién thức:

¢ Phan biét su khdc nhau gitra lién kết trong (inner join), liên kết ngoài trai (left outer join), lién két ngaoif phai (right outer join), lién kêt ngoai day du (full outer join) va lién két chéo (cross join)

¢ Gidi thich tai sao khéng can ding right outer join

¢ M6 ta cú pháp câu lệnh liên kết trong không tường minh

Trang 3

The Departments table The Employees table

DeptName DeptNo EmployeelD LastName FFirstName DeptNo

essai ' Em mở 2

2 Payroll 2 2 2 Jones Elmer 4

3 Operations 3 3 3 Simonian Ralph 2

4 Personnel 4 4 4 Hemandez Olivia 1

Trang 4

The explicit syntax for an inner join SELECT select_list FROM table 1 [INNER] JOIN table 2 ON join condition 1 [[INNER] JOIN table 3 _ ON join_condition_2] The implicit syntax for an inner join SELECT select_list

FROM table 1, table 2 [, table 3]

WHERE table 1.column_name operator table _2.column_name [AND table 2.column_name operator table 3.column_name]

Murach's SQL Server 2012, C4 Le Thi Tu Kien — FIT - HNUE Slide 4

Trang 5

An inner join of the Employee and Department tables

SELECT Employee.*, Department *

FROM Employee JOIN Department

ON Employee.DeptNo = Department DeptNo;

EmployeelID LastName FFirstName DeptNo DeptName DeptNo

2 a torn Cer ri 2 "Pal — 2

3 3 Simonian Ralph 2 3 Operations 3

4 4 Hemandez Olivia 1 4 Personnel 4

5 5 Aaronsen Robert 2 5 Maintenance 5 6 6 Watson Denise 6 7 7 Hardy Thomas 5 8 8 O'Leary Rhea 4 ay 9 9 Locario Paulo 6 Mưrach's SQL Server 2012, C4 Le Thi Tu Kien — FIT -

Ví dụ liên két trong gitta hai bang Employee va Department

Trong liên kết trong, những cặp bản ghi nào của hai bảng làm cho biểu thức

điêu kiện sau ÔN đúng thì sẽ được liên kêt với nhau đê tạo thành bản ghi mới

Trang 6

The explicit syntax for an outer join SELECT select_list FROM table 1 {LEFT|RIGHT|FULL} [OUTER] JOIN table 2 ON join condition 1 [{LEFT|RIGHT|FULL} [OUTER] JOIN table 3 ON join_condition_2] What outer joins do

Joins of this type Keep unmatched rows from Left outer join The first (left) table

Right outer join The second (right) table Full outer join Both tables

Murach's SQL Server 2012, C4 Le Thi Tu Kien — FIT - HNUE Slide 6

Cấu trúc lệnh tường minh của liên kết ngoài

Trang 7

A left outer join DeptNo

SELECT DeptName, Departments.DeptNo, LastName 1 i

FROM Departments LEFT JOIN Employees 2 ”¿

ON Departments.DebtNo = Employees DeptNo ; 3 Operations 3

4 Personnel 4

The result set 5 Maintenance 5

DeptName DeptNo LastName

1 | Accounting 1 Hemandez ——x.-.h ¬ ae."

2 am 2 Sith 1 fo ảnh Ondy 2

3 Payroll 2 Simonian 2 2 Jones Eimer a

- 2 aster 4 | onder | Chen 1

5 Operations 3 NULL 5 5 Aaronsen Robert 2

_—L XE Jones 6 6 Watson Denise 6

7 Personnel 4 O'Leary 7 - Hardy Thomas 5

8 Maintenance 5 Hardy 8 8 O'Leary Rhea 4

9 9 Locario Paulo 6

Murach's SQL Server 2012, C4 Le Thi Tu Kien — FIT - HNUE Slide 7

Kết quả phép liên kết ngoài trái giữa Department (trái) và Employee (phải) Trong liên kết ngoài trái, kết quả bao gồm những cặp bản ghi của hai bảng làm

cho biểu thức điều kiện sau ON đúng sẽ được liên kết với nhau để tạo thành

Trang 8

A right outer join

SELECT DeptName, Employees.DeptNo, LastName FROM Departments RIGHT JOIN Employees He TÊN DeptNo ON Departments.DeptNo = Employees.DeptNo; sa 2 Payroll 2 3 erat 3 The result set 4 Personne! oe 4 5 Maintenance 5 Dept Name DeptNo LastName 1 | Payroll 2 Smith

2 Personnel 4 Jones r Employee!D oy LastName FirstName _ DeptNo

3 Payroll 2 Simonian bản | Smith ow :

4 Accounting 1 Hemandez — oe 3 3 Simonian Ralph 2 5 Payroll 2 Aaronsen

P NULL P Nưnn | 4 4 Hemandez Olivia 1 = rr 5 ach 5 5 Aaronsen Robert 2 : ae : = y 6 6 Watson Denise 6 8 ersonnel Olea 7 7 Hardy Thomas 5

[|9 NULL 6 Locario te Saad m Td

9 9 Locario Paulo 6

Mưrach's SQL Server 2012, C4 Le Thi Tu Ken — FIT - HNUE Side 8

Kết quả phép liên kết ngoài phải giữa Department (trái) và Employee (phải) Trong liên kết ngoài trái, kết quả bao gồm những cặp bản ghi của hai bảng làm

cho biểu thức điều kiện sau ON đúng sẽ được liên kết với nhau để tạo thành bản ghi mới trong bảng kết quả (giống như liên kết trong) và những bản ghi ở

bảng phải không liên kết được với bảng ghi nào ở bảng bên trái

Liên kết ngoài phải thường cho kết quả giống như liên kết trong vì điều kiện

ràng buộc tham chiếu luôn yêu cầu các giá trị của khóa ngoài đều phải là các giá trị đã tôn ở khóa chính mà nó tham chiêu đến Do đó, không có hàng (bản shï) nào bên bảng chứa khóa ngồi (phải) khơng liên kết được với bất kì hàng

Trang 9

A full outer join

SELECT DeptName, Departments.DeptNo,

Employees.DeptNo, LastName DeptName _ DeptNo

FROM Departments FULL JOIN Employees 5 | Accounting _ |

ON Departments DeptNo = Employees DeptNo; é —

3 Operations 3

The result set m—-.- 5 Maintenance 5

DeptName DeptNo DeptNo LastName

1 [Accounting |1 1 Hemandez EmployeeiD DeptNe 2 Payroll 2 2 Smith 1 1 Ì 2 3 Payol 2 2 Simonian 2 2 1 4 + Payroll 2 2 Aaronsen 3 3 2 ||5 Operations 3 NULL NULL Ail 1 6 Personnel 4 + Jones 5 5 2 7 Personnel 4 * O'Leary 6 6 6 8 Maintenance 5 5 Hardy 5) 7 5

9 NULL NULL 6 Watson 8 8 O'Leary Rhea 4

10 NULL NULL 6 Locario 9 9 Locario Paulo 6

Murach's SQL Server 2012, C4 Le Thi Tu Kien — FIT - HNUE Side 9

Kết quả phép liên kết ngoài trái và phải giữa Department (trái) và Employee (phai)

Trong liên kết ngoài trái, kết quả bao gồm hợp của liên kết ngoài trái và liên

Trang 10

How to code a cross join using the explicit syntax

The explicit syntax for a cross join

SELECT select list

FROM table 1 CROSS JOIN table 2

A cross join that uses the explicit syntax

SELECT Departments DeptNo, DeptName, EmployeeID, LastName

Trang 11

How to code a cross join using the implicit syntax

The implicit syntax for a cross join

SELECT select list FROM table 1, table 2

A cross join that uses the implicit syntax

SELECT Departments DeptNo, DeptName, EmployeeID, LastName

Trang 12

More example slides

Murach's SQL Server 2012, C4 Le Thi Tu Kien — FIT - HNUE Slide 12

Một số slide ví dụ thêm về liên kết 3 bảng, tự liên kết và cách sử dụng các

phép toán tập hợp trén quan hé nhu Union (hgp), Intersect (giao) va Except

Trang 13

Join three tables using left outer joins SELECT DeptName, LastName, ProjectNo

FROM Departments LEFT JOIN Employees

ON Departments DeptNo = Employees DeptNo LEFT JOIN Projects

ON Employees.EmployeeID = Projects.EmployeeID ORDER BY DeptName, LastName, ProjectNo;

The result set DeptName LastName ProjeetNo = “ri

2— Mantenace Hany NULL

Trang 14

Join three tables using full outer joins SELECT DeptName, LastName, ProjectNo

FROM Departments FULL JOIN Employees

ON Departments DeptNo = Employees DeptNo FULL JOIN Projects ON Employees.EmployeeID = Projects.EmployeeID ORDER BY DeptName ; The result set Name LasName No nit I Watson P1013 2 NUL 7 Locaio — P1013 3 NULL NULL P1014 4 Accounting Hemandez P1011

5 Maintenance Hardy NULL

6 Operations NULL NULL | 7 — Payol Smith P1012

8 Payroll Simonian P1012

Trang 15

Combine an outer and an inner join SELECT DeptName, LastName, ProjectNo FROM Departments

JOIN Employees

ON Departments DeptNo = Employees DeptNo LEFT JOIN Projects

Trang 17

COMPANY Database EMPLOYEE | FNAME | MINIT | LNAME BDATE ADDRESS Slide 8- 17

Slide hiển thị dữ liệu của các bảng trong CSDL COMPANY

Trang 18

z LName Seth Wong English Narayan Borg Wallace Jabbar Zelaya F11111 SSN 123456789 333445555 453453453 ې@84444 999665555 987654321 987987987 999887777 Murach's SQL Server 2012, C4 BDate 1965-01-10 1978-08-12 197207431 1970-09-12 1954-04-10 1941-06-20 1981-03-29 1967-12-22 The result set Address Sex 731 Fondren, Houston, TX M 638 Voss, Houston, TX M 5631 Rice, Houston, TX M 975 Fie Oak, Humble, TX F 450 Stone, Houston, TX M 231 Bemy, Bellaire, TX F 980 Dallas, Houston, TX M 321 Castle Spring, Houston, TX Ff SuperSSN 333445555 333445555 333445555 888665555 987654321 888665555

Le Thi Tu Kien - FIT - HNUE

The implicit syntax for an inner join SELECT select list

FROM table 1, table 2 [, table 3]

WHERE table _1.column_name operator table 2.column_name

[AND table 2.column_name operator table _ 3.column_name] Department * WHERE Employee.DNo = Department Dnumber; DNumber ManagerSSN a ee Ơn Ơn Ơn Ơn 333445555 333445555 333445555 333445555 888665555 123456789 999887777 999887777 A join of the Employee and Department tables SELECT Employee.*, FROM Employee, Department ManagerStatDate — DLocation 2008-05-12 Houston 2008-05-12 Houston 2009-05-12 Houston 2009-05-12 Houston 2001-01-10 Houston 2007-06-23 Houston 2005-02-16 Stafford 2005-02-16 Stafford Side 18

Cú pháp câu lệnh liên kết trong dạng không tường minh

Biểu hức liên kết được đặt trong mệnh đề WHERE

Trang 19

The syntax for an inner join

that uses correlation names SELECT select_list

FROM table 1 [AS] nl

[INNER] JOIN table 2 [AS] n2

ON n1.column name operator n2.column name [[TNNER] JOIN table 3 [AS] n3

ON n2.column name operator n3.column name]

Mưrach's SQL Server 2012, C4 Le Thi Tu Kien — FIT - HNUE Slide 19

Cú pháp câu lệnh liên kết trong có sử dụng tên bí danh (biễn bộ) cho các bảng

Trang 20

An inner join of the Employee and Department tables

SELECT E.*, D.3 FROM Employee AS E

J Department D

ON E.DNo = D.Dnumber;

The result set

FName Mint LName SSN BDate Address Sex Salary SuperSSN DNo DName DNumber ManagerSSN Manage3atDde DLocation 1 | Jonh ÌB Smth 123456789 1965-01-10 731 Fondren, Houston, TX M 30000 333445555 5 Research 5 333445555 22090512 Houston 2 Faliin T Wong 33345553 1978-08-12 638 Voss, Houston, TX M 40000 888665555 5 Research 5 333445555 2090612 Houston 3 Joyce A — English 4553433 19720731 5631 Rice, Houston, TX M 2500 333445555 5 Research 5 333445555 20090512 Houston 4 Ramesh K Narayan 666884444 1970-09-12 975 Fre Oak, Humble, TX F 38000 333445555 5 Research 5 333445555 20090512 Houston 5 James E Bog 889665555 19540410 450 Stone, Houston, TX M 55000 0 1 Headquarter † 888665555 2001-01-10 Houston 6 Jennifer S Wallace 987654321 1941-06-20 291 Beny Bellaire TX F 43000 888665555 6 — Production 6 123456789 2007023 Houston 7 Armed V_ Jabba 987987987 19910323 980 Dallas Houston, TX M 25000 987654321 4 © Administration 4 999887777 200951216 Stafford 8 Aica J Zelaya 93993697777 1967-12-22 321 Castle Spring Houston TX F 25000 888665555 4 Administration 4 999887777 2051216 Staford (8 rows) Mưrach's SQL Server 2012, C4 Le Thi Tu Kien — FIT - HNUE Slide 20 Vi du truy van cé str dung tén bi danh E cho bang Employee va D cho bảng Department

Chú ý: Khi đã đặt tên bí danh cho bảng thì chỉ được dùng các bí danh đó trong

Trang 21

A self-join that returns supervisors’ name of employees SELECT E1.SSN, El.FName, El.SuperSSN, E2.FName AS SupervisorName FROM Employee AS El JOIN Employee AS E2 ON E1l.SuperSSN = E2.SSN; The result set SSN FName SupeSSN SupervisorName 1 |123456789 |jonh 333445555 Frenklin 2 333445555 Frankin 898665555 James 3 453453453 Joyce 333445555 Franklin 4 666894444 Ramesh 333445555 Franklin 5 987654321 Jennifer 888665555 James 6 987987987 Ahmad 987654321 Jennifer 7 999887777 Alca 999665555 James (7 rows) Murach's SQL Server 2012, C4 Le Thi Tu Kien — FIT - HNUE Slide 21 Vi du vé tu lién két (self-join):

Truy vân: Đưa ra tên người quản lí của các nhân viên

Trong ví dụ này bảng employee tự liên kết trong với chính nó dựa trên giá trị của hai cột SuperSsn và Ssn do đó câu lệnh này bắt buộc phải dùng tên bí danh cho bảng Employee

(Note: Why does the result including only 7 rows?)

Trang 22

A SELECT statement that joins three tables

SELECT PNUMBER, DNUM, LNAME, BDATE, ADDRESS

FROM PROJECT

N DEPARTMENT ON DNUM=DNUMBER

JOIN EMPLOYEE ON ManagerSSN=SSN

WHERE PLOCATION='New York'

The result set

PNUMBER DNUM LNAME BDATE ADDRESS

1 | 10 ¡4 Zelaya 1967-1222 321 Casle Spring Houston, TX

Mưrach's SQL Server 2012, C4 Le Thi Tu Kien — FIT - HNUE Slide 22

Ví dụ truy vấn liên kết đữ liệu của 3 bảng:

For every project located in “New York’, list the project number, the controlling department number, and the department manager's last name,

address, and birthdate (V6i moi du 4n 6 New York, dua ra mã dự án, mã phòng

quản lý dự án và họ, địa chỉ, ngày sinh của trưởng phòng quản lý dự án đó)

Trang 23

The syntax for a union operation SELECT statement_1 UNION [ALL] SELECT statement 2 [UNION [ALL] SELECT statement 3]

[ORDER BY order by list] Rules for unions

e Each result set must return the same number of columns

e The corresponding columns in each result set must have compatible data types

e The column names in the final result set are taken from the first SELECT clause Murach's SQL Server 2012, C4 Le Thi Tu Kien — FIT - HNUE Slide 23 Cú pháp truy vẫn dùng phép toán hợp (Union) Một số quy định: - Kết quả của các câu truy vấn Select trong truy vân Union có số cột như nhau -_ Các cặp cột trương ứng trong mỗi kết quả phải có kiểu dữ liệu đối sánh được

-_ Tên các cột trong bảng kết quả cuối cùng được lây từ tên các cột trong kết quả của câu lệnh Select đâu tiên

Trang 24

Union example

Query: Make a list of all project names for projects that involve an employee whose last name is 'Wong' as a worker or as a manager of the department that controls the project

Murach's SQL Server 2012, C4 Le Thi Tu Kien — FIT - HNUE Slide 24

Truy vấn: Đưa ra tên của các dự án mà nhân viên có họ là Wong tham gia hoặc là trưởng phòng quản lí dự án đó

Trang 25

Union example (SELECT PNAME

FROM PROJECT, DEPARTMENT, EMPLOYEE

WHERE DNUM=DNUMBER AND ManagerSSN=SSN AND

LNAME='Wong' )

UNION

(SELECT PNAME

FROM PROJECT, WORKSON, EMPLOYEE WHERE PNUMBER=PNO ANL

ESSN=SSN AND LNAME='Wong')

Murach's SQL Server 2012, C4 Le Thi Tu Kien - FIT - HNUE Side 25

Trang 26

The syntax for the EXCEPT and INTERSECT operators SELECT statement _1 {EXCEPT | INTERSECT} SELECT statement 2

[ORDER BY order by list]

Murach's SQL Server 2012, C4 Le Thi Tu Kien — FIT - HNUE Slide 26

Cú pháp câu truy vẫn có sử dụng phép toán tập hợp EXCEPT (hiệu) và

INTERSEC (giao)

Trang 27

Union example

(SELECT PNAME

FROM PROJECT, DEPARTMENT, EMPLOYEE

WHERE DNUM=DNUMBER AND ManagerSSN=SSN LNAME='Wong' INTERSECT (SELECT PNAME FROM PROJECT, WORKSON, EMPLOYEE WHERE PNUMBER=PNO

ESSN=SSN AND LNAME='Wong')

Murach's SQL Server 2012, C4 Le Thi Tu Kien — FIT - HNUE Slide 27

Intersect example

Query: Make a list of all project names for projects that involve an employee whose last name is 'Wong' as a worker and as a manager of the department that controls the project

Truy vân: Đưa ra tên của các dự án mà nhân viên có họ là Wong tham gia va là trưởng phòng quản lí dự án đó

Trang 28

Union example (SELECT PNAME FROM PROJECT, DEPARTMENT, EMPLOYEE LNAME='Wong'" ) EXCEPT (SELECT PNAME FROM PROJECT, WORKSON, EMPLOYEE WHERE PNUMBER=PNO

ESSN=SSN AND LNAME='Wong")

Murach's SQL Server 2012, C4 Le Thi Tu Kien — FIT - HNUE WHERE DNUM=DNUMBER AND ManagerSSN=SSN ANI EXCEPT example

Query: Make a list of all project names for projects that involve an employee whose last name is 'Wong' as a manager of the department that controls the project but is not as a worker

Truy vân: Đưa ra tên của các dự án mà nhân viên có họ là Wong là trưởng phòng quản lí dự án đó nhưng không tham gia

Trang 29

Practice

1 Đưa ra mã nhân viên, họ tên và tên phòng của các nhân viên 2 Đưa ra ngày sinh và địa chỉ của nhân viên làm việc cho phòng

“Nghiên cứu'

3 Đưa ra mã nhân viên, tên phòng của nhân viên có họ tên là "Tran Van Tra’

4 Với mọi dự án ở Ba Đình, đưa ra tên dự án, mã phòng quản lí dự án đó và họ, địa chỉ, tên của trưởng phòng quản lí dự án đó

A + A A A A r A

5 Đưa ra tên của nhân viên chưa kêt hôn (chưa có phụ thuộc) 6 Đưa ra tên của các nhân viên thuộc phòng Š tham gia dự án Sản

phâm A hon 10 tiêng

7 Đưa ra tên của các nhân viên có cùng tên với người phụ thuộc của chính nhân viên đó

§ Đưa ra mã nhân viên, họ tên của các nhân viên trực tiêp bị quản lí

bởi nhân viên Lê Mã Lương

Slide §- 29

Trang 30

Practice(cont) 9, 10 is i 12 13 14 15

Đưa ra mã dự án, tên dự án chưa có nhân viên tham gia Đưa ra tên các nhân viên chưa tham gia dự án nào Đưa ra tên các phòng chưa quản lý dự án nào

Đưa ra tên các dự án mà nhân viên Lê Mã Lương đã tha gia

Đưa ra tên các nhân viên tham gia dự an ‘Tin hoc hóa'

Đưa ra tên các các dự án do phòng nghiên cứu quản lý Đưa ra mã nhân viên, họ tên của các nhân viên phòng Nghiên

cứu đã tham gia vào dự án sản phâm A

Slide §- 30

Ngày đăng: 09/05/2021, 04:07

TỪ KHÓA LIÊN QUAN