Bài 4: Hàm kiểu kết nối câu truy vấn Mục tiêu: Cách dùng hàm xử lý chuỗi câu truy vấn Cách dùng hàm xử lý thời gian câu truy vấn Cách dùng hàm xử lý toán học câu truy vấn Sử dụng kiểu kết nối inner join Sử dụng kiểu kết nối outter join Sử dụng kiểu kết nối self join Sử dụng câu truy vấn Lưu kết câu truy vấn vào bảng tạm ©NIIT Hàm truy vấn Bài / Slide Hiển thị kết câu truy vấn chữ hoa Trong SQL, ta muốn kết câu truy vấn chuyển sang toàn chữ hoa ta dùng hàm upper Cách dùng hàm câu lệnh select có cú pháp sau: SELECT function_name (parameters) Ví dụ demo: Viết câu truy vấn hiển thị tên tờ báo, tên người liên lạc số điện thoại liên lạc để công ty liên hệ quảng cáo Tên tờ báo phải hiển thị chữ hoa SELECT 'Newspaper Name‘ = UPPER(cNewspaperName), vContactPerson,cPhone FROM Newspaper ©NIIT Hàm truy vấn Bài / Slide Một số hàm xử lý chuỗi ASCII STR REVERSE NCHAR DIFFERENCE UNICODE SOUNDEX QUOTENAME LOWER CHAR STUFF RIGHT PATINDEX LEFT UPPER SPACE REPLICATE LTRIM CHARINDEX SUBSTRING RTRIM REPLACE LEN ©NIIT Hàm truy vấn Bài / Slide Hàm xử lý ngày (Datetime function) Hàm xử lý ngày tháng dùng để xử lý giá trị thời gian, thực số phép tóan cộng trừ thời gian có hàm để lấy phần thông tin thời gian như: ngày, tháng, năm Cách dùng hàm datetime câu lệnh select có cú pháp sau: SELECT datetime_function (parameters) Ví dụ demo: Ngày hết hạn dự kiến tuyển dụng 10 ngày từ bắt đầu trình tuyển dụng Viết câu truy vấn liệu hiển thị mã trường, ngày bắt đầu tuyển dụng, ngày hết hạn cho tất trường mà công ty định tuyển sinh viên SELECT cCollegeCode, dRecruitmentStartDate, 'Proposed Deadline' = DATEADD(dd, 10, dRecruitmentStartDate) FROM CampusRecruitment ©NIIT Hàm truy vấn Bài / Slide Một số hàm xử lý datetime Tên hàm Tham số DATEADD (datepart, number, date) DATEDIFF (datepart, date1, date2) DATENAME (datepart, date) DATEPART (datepart, date) GETDATE () ©NIIT Hàm truy vấn Bài / Slide Hàm toán học Hàm toán học dùng để thực phép tính giá trị trả câu truy vấn Cách dùng hàm toán học câu lệnh select có cú pháp sau: SELECT function_name (parameters) Ví dụ demo: Viết câu truy vấn hiển thị tên, số điện thoại điểm vấn ứng viên có tên Helen Điểm phải làm trịn SELECT vFirstName, cPhone,'Score'= ROUND(79.9,0) FROM ExternalCandidate WHERE vFirstName='Helen' ©NIIT Hàm truy vấn Bài / Slide Một số hàm toán học Tên hàm Tham số ABS (numeric_expression) ACOS, ASIN, ATAN (float_expression) COS, SIN, COT, TAN (float_expression) ROUND (numeric_expression, length) RAND ([seed]) ©NIIT Hàm truy vấn Bài / Slide Kết nối (Join) Toán tử JOIN dùng câu truy vấn lấy liệu từ nhiều bảng thời điểm Cú pháp cho toán tử JOIN sau: SELECT column_name, column_name [,column_name] FROM table_name [CROSS|INNER|[LEFT | RIGHT]OUTER] JOIN table_name [ON table_name.ref_column_name join_operator table_name.ref_column_name] [WHERE search_condition] ©NIIT Hàm truy vấn Bài / Slide Join (Tiếp theo) Có nhiều kiểu kết nối khác nhau: ©NIIT Inner Join Outer Join Cross Join Equi Join Natural Join Self Join Hàm truy vấn Bài / Slide Hiển thị liệu từ hai bảng dùng inner join Inner join dùng để hiển thị liệu từ hai hay nhiều bảng cách so sách giá trị cột giống nhau, dịng có giá trị hai cột hiển thị Ví dụ minh họa: Viết câu truy vấn hiển thị tên ứng viên tên văn phòng tuyển dụng ứng viên này? SELECT cName 'Candidate Name'=vFirstName,'Recruitment Agency' = FROM ExternalCandidate JOIN RecruitmentAgencies ON ExternalCandidate.cAgencyCode=RecruitmentAgencies.cAgencyCode ©NIIT Hàm truy vấn Bài / Slide Kết nối liệu dùng outter join Outter join hiển thị tất dòng bảng, riêng bảng lại hiển thị dòng so trùng với bảng Ví dụ minh họa: Viết câu truy vấn hiển thị tên ứng viên bên ngòai tên văn phòng tuyển dụng cho ứng viên có SELECT vFirstName, vLastName, cName FROM ExternalCandidate LEFT OUTER JOIN RecruitmentAgencies ON ExternalCandidate.cAgencyCode=RecruitmentAgencies.cAgencyCode ©NIIT Hàm truy vấn Bài / Slide Kết nối liệu bảng (Self Join) Self Join kiểu kết nối mà hàng bảng kết nối với hàng khác bảng Ví dụ minh họa: SELECT t1.title,t2.title , t1.price FROM titles t1 JOIN titles t2 ON t1.price=t2.price WHERE t1.price=2.99 ©NIIT Hàm truy vấn Bài / Slide Câu truy vấn (Sub query) Câu truy vấn dùng lệnh SQL SELECT, UPDATE, INSERT DELETE gọi câu truy vấn Câu truy vấn dùng để truy xuất liệu từ nhiều bảng nên dùng để thay toán tử Join Câu truy vấn sử dụng mệnh đề WHETE HAVING Khi thực thi câu lệnh SQL có câu truy vấn con, câu truy vấn thực thi trước, sau đến câu lệnh truy vấn bên ngịai ©NIIT Hàm truy vấn Bài / Slide Ví dụ minh họa câu truy vấn Hãy viết câu truy vấn hiển thị tên nhà tuyển dụng sống thành phố với ứng viên từ bên ngồi có tên: Barbara Johnson SELECT cName FROM ContractRecruiter WHERE cCity = (SELECT cCity FROM ExternalCandidate WHERE vFirstName = 'Barbara' AND vLastName = 'Johnson') ©NIIT Hàm truy vấn Bài / Slide Câu truy vấn với mệnh đề IN Nếu câu truy vấn trả giá trị người ta phải dùng mệnh đề IN thay cho toán tử so sánh (=) Ví dụ minh họa: Viết câu truy vấn trả mã tác giã có sách bán được? SELECT Au_Id FROM TitleAuthor WHERE Title_Id IN (SELECT Title_Id FROM Sales) ©NIIT Hàm truy vấn Bài / Slide Câu truy vấn với mệnh đề EXISTS Câu truy vấn dùng với mệnh đề EXISTS để kiểm tra tồn liệu hay khơng? Mệnh đề EXISTS trả giá trị TRUE FALSE Ví dụ minh họa: Viết câu truy vấn trả tên nhà xuất có xuất sách thuộc thể loại business SELECT Pub_Name FROM Publishers WHERE EXISTS ( SELECT * FROM Titles WHERE Type = 'business') ©NIIT Hàm truy vấn Bài / Slide Câu truy vấn dùng với hàm nhóm Câu truy vấn dùng với hàm nhóm Ví dụ minh họa: Hiển thị tên sách có tiền đặt trước lớn số tiền đặt trước trung bình thể loại ‘Business’ SELECT Title FROM Titles WHERE Advance > (SELECT AVG(Advance) FROM Titles WHERE Type = 'business') ©NIIT Hàm truy vấn Bài / Slide Lưu kết câu truy vấn vào bảng Kết câu truy vấn lưu vào bảng mệnh đề SELECT … INTO Ví dụ minh họa: Hãy viết câu truy vấn lưu thông tin ứng viên bên tháng năm 2006 vào bảng tạm có tên TempExternalCandidate SELECT * INTO tempExternalCandidate FROM ExternalCandidate WHERE DATEPART(mm,dDateOfApplication)= AND DATEPART(yyyy,dDateOfApplication)= 2001 ©NIIT Hàm truy vấn Bài / Slide Tóm tắt Trong bạn học: Cách dùng hàm xử lý chuỗi câu truy vấn Cách dùng hàm xử lý thời gian câu truy vấn Cách dùng hàm xử lý toán học câu truy vấn Sử dụng kiểu kết nối inner join Sử dụng kiểu kết nối outter join Sử dụng kiểu kết nối self join Sử dụng câu truy vấn Sử dụng câu truy vấn với mệnh đề IN Sử dụng câu truy vấn với mệnh đề EXITS Sử dụng câu truy vấn với hàm nhóm Lưu kết câu truy vấn vào bảng tạm ©NIIT Hàm truy vấn Bài / Slide Bài tập Bài 1: Viết câu truy vấn hiển thị tên, mô tả đánh giá cho tất đồ chơi trẻ em, nhiên hiển thị 40 ký tự phần mô tả Bài 2: Viết câu truy vấn hiển thị thơng tin trình trạng giao hàng theo mẩu sau: Bài 3: Viết câu truy vấn hiển thị thơng tin hóa đơn có mã 00009 theo mẩu sau: ©NIIT Hàm truy vấn Bài / Slide Bài tập Bài 4: Viết câu truy vấn hiển thị tên tất loại đồ chơi tên thể loại mà thuộc Bài 5: Lưu thơng tin đồ chơi có giá lớn 20 USD vào bảng PremiumToys ©NIIT Hàm truy vấn Bài / Slide ... Hàm truy vấn Bài / Slide Tóm tắt Trong bạn học: Cách dùng hàm xử lý chuỗi câu truy vấn Cách dùng hàm xử lý thời gian câu truy vấn Cách dùng hàm xử lý toán học câu truy vấn Sử dụng kiểu kết. .. tử Join Câu truy vấn sử dụng mệnh đề WHETE HAVING Khi thực thi câu lệnh SQL có câu truy vấn con, câu truy vấn thực thi trước, sau đến câu lệnh truy vấn bên ngịai ©NIIT Hàm truy vấn Bài / Slide... truy vấn với mệnh đề EXITS Sử dụng câu truy vấn với hàm nhóm Lưu kết câu truy vấn vào bảng tạm ©NIIT Hàm truy vấn Bài / Slide Bài tập Bài 1: Viết câu truy vấn hiển thị tên, mô tả đánh giá cho