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

Hướng dẫn SQL & XQuery cho IBM DB2, Phần 2: Các truy vấn cơ sở

32 28 0

Đ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

Nội dung

Cơ bản về truy vấn SQL Pat Moffatt, Giám đốc Chương trình quản lý thông tin, Sáng kiến học đường, IBM Bruce Creighton, Chuyên viên lập kế hoạch các phần kỹ năng, IBM Jessica Cao, Chuyên viên phát triển các công cụ đào tạo, IBM Tóm tắt: Thông qua một loạt các ví dụ đơn giản, hướng dẫn này minh họa làm thế nào để lấy ra từ một cơ sở dữ liệu IBM® DB2® bằng các lệnh SELECT của SQL chuẩn. Hướng dẫn này mô tả cách lấy ra các hàng từ một bảng cơ sở dữ liệu quan...

Hướng dẫn SQL & XQuery cho IBM DB2, Phần 2: Các truy vấn sở Cơ truy vấn SQL Pat Moffatt, Giám đốc Chương trình quản lý thơng tin, Sáng kiến học đường, IBM Bruce Creighton, Chuyên viên lập kế hoạch phần kỹ năng, IBM Jessica Cao, Chuyên viên phát triển công cụ đào tạo, IBM Tóm tắt: Thơng qua loạt ví dụ đơn giản, hướng dẫn minh họa làm để lấy từ sở liệu IBM® DB2® lệnh SELECT SQL chuẩn Hướng dẫn mô tả cách lấy hàng từ bảng sở liệu quan hệ, lấy cột cụ thể, lấy hàng cụ thể, thực phép tốn lơgic liệu lấy sử dụng ký tự đại diện điều kiện tìm kiếm Hướng dẫn Phần loạt hướng dẫn SQL & XQuery cho loạt IBM DB2 Trước bạn bắt đầu Về loạt Loạt hướng dẫn dạy chủ đề SQL từ đến nâng cao chủ đề XQuery Nó cách diễn đạt câu hỏi nghiệp vụ thường gặp truy vấn sở liệu sử dụng câu truy vấn SQL hay câu truy vấn XQuery Những người phát triển ứng dụng người quản trị sở liệu sử dụng hướng dẫn để nâng cao kỹ truy vấn sở liệu Các thành viên tham gia sáng kiến học đường IBM sử dụng loạt hướng dẫn phần chương trình giảng dạy sở liệu họ Tất ví dụ dựa Aroma, sở liệu mẫu chứa liệu doanh thu sản phẩm cà phê chè bán cửa hàng khắp nước Mỹ Mỗi ví dụ gồm có ba phần:  Một câu hỏi kinh doanh dạng ngôn ngữ thường ngày  Một nhiều Ví dụ truy vấn, biểu diễn SQL hay Xquery  Một bảng kết trả từ sở liệu Hướng dẫn thiết kế phép học viên học tập ngôn ngữ SQL XQuery Cũng học khác, việc bổ sung thêm tập thực hành quan trọng Dữ liệu định nghĩa bảng tạo điều kiện thuận lợi cho tập thực hành Đối với sinh viên sử dụng tài liệu phần khoá học, nhận từ thầy hướng dẫn dẫn để kết nối tới sở liệu Aroma tìm hiểu khác biệt hướng dẫn cài đặt máy cục Hướng dẫn viết cho DB2 Express-C UNIX®, Linux® Windows® (trước gọi Viper) Về hướng dẫn Sử dụng loạt ví dụ đơn giản, hướng dẫn minh họa cách lấy liệu từ sở liệu DB2 IBM lệnh SELECT SQL tiêu chuẩn Hướng dẫn mô tả cách để:  Lấy hàng từ bảng sở liệu quan hệ  Lấy cột cụ thể từ bảng sở liệu quan hệ  Lấy hàng cụ thể từ bảng sở liệu quan hệ  Thực phép tốn lơgic liệu lấy  Sử dụng ký tự đại diện điều kiện tìm kiếm Kết nối tới sở liệu Bạn cần kết nối tới sở liệu trước sử dụng câu lệnh SQL để truy vấnhay xử lý liệu Lệnh CONNECT kết hợp kết nối sở liệu với tên người sử dụng Thơng qua người hướng dẫn tìm tên sở liệu bạn cần nối tới Đối với loạt này, tên sở liệu aromadb Để kết nối tới sở liệu aromadb, gõ lệnh sau vào xử lý dòng lệnh DB2: CONNECT TO aromadb USER userid USING password Thay "userid" "password" số ID mật người sử dụng mà bạn nhận từ thầy hướng dẫn Nếu máy không hỏi userid password cần gõ vào lệnh sau đây: CONNECT TO aromadb Thông điệp sau báo cho bạn biết tạo kết nối thành công: Database Connection Information Database server = DB2/NT 9.0.0 SQL authorization ID = USERID Local database alias = AROMADB Khi kết nối được, bạn bắt đầu sử dụng sở liệu Sáu mệnh đề lệnh SELECT Có sáu mệnh đề sử dụng câu lệnh SQL Sáu mệnh đề SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY Phải viết mã lệnh mệnh đề theo cụ thể Ở ta nói tóm tắt mệnh đề Bạn học chúng kỹ bắt gặp chúng sau >(các) tên cột * SELECT FROM bảng khung cảnh điều kiện thuộc tính WHERE đáp ứng GROUP tập BY hàng điều kiện chung HAVING nhóm ORDER phương pháp BY xếp loại Chú ý: (Các) tên cột nên gọi phần tử, lệnh SELECT hiển thị cột có bảng lẫn cột SQL tạo kết thực truy vấn Ví dụ truy vấn SELECT perkey, sum(dollars) FROM aroma.sales WHERE perkey < 50 GROUP BY perkey HAVING sum(dollars) > 8000 ORDER BY perkey; Về truy vấn Mệnh đề SELECT nơi liệt kê cột mà bạn quan tâm SELECT hiển thị bạn đưa vào Có thể đặt vào mệnh đề SELECT số mục khác giải thích sau Trong ví dụ này, cột perkey tổng cột dollar chọn Mệnh đề FROM rõ bảng nơi bạn lấy thơng tin từ Có thể liệt kê nhiều bảng Số lượng bảng mà bạn liệt kê tùy thuộc riêng hệ điều hành Trong ví dụ này, hai cột chọn từ bảng Sales Hai mệnh đề SELECT FROM bắt buộc phải có; mệnh đề lại tuỳ chọn dùng để lọc hay hạn chế, gộp nhóm hay kết hợp mục liệu điều khiển việc xếp kết Mệnh đề WHERE nơi rõ điều kiện để lọc liệu Nó giúp bạn lọc liệu khơng mong muốn khỏi kết cuối WHERE đưa tập hàng bảng Trong ví dụ này, hàng có giá trị perkey thấp 50 chọn GROUP BY cho phép nhóm liệu để đạt kết có ý nghĩa Thay nhận số tổng doanh thu tính đơla tất hàng chọn, bạn phân chia thành nhóm theo perkey tđể nhận tổng doanh thu ngày Trong ví dụ trên, việc thực thị GROUP BY perkey HAVING đặt điều kiện nhóm Trong ví dụ này, truy vấn trả ngày có tổng doanh thu lớn 8.000 ORDER BY xếp thứ tự hàng kết Bạn chọn xếp hàng kết thị ASC (sắp theo thứ tự tăng dần) hay DESC (sắp theo thứ tự giảm dần) Giá trị mặc định ASC Lệnh SELECT lệnh thường dùng ngôn ngữ xử lý liệu (DML) Các lệnh xử lý liệu khác (UPDATE, INSERT, DELETE) hai thành phần SQL (ngôn ngữ định nghĩa liệu ngôn ngữ điều khiển liệu) bàn đến phần loạt Sử dụng lệnh SELECT để lấy liệu Câu hỏi Những vùng nào, hạt nào, thị trường định nghĩa sở liệu Aroma? Giải đáp Bước xác định bảng có chứa hàng cột trả lời câu hỏi Trong phần 1, có sơ đồ bảng AROMADB Nhìn vào phần dưới, bên trái sơ đồ, có bảng gọi Market Bảng có chứa cột mktkey, hq_city, hq_state, district region Việc liệt kê nội dung bảng trả lời câu hỏi thực lệnh SELECT SQL Ví dụ truy vấn SELECT * FROM aroma.market; Kết Mktkey Hq_city Hq_state District Region Atlanta GA Atlanta South Miami FL Atlanta South New Orleans LA New Orleans South Houston TX New Orleans South New York NY New York North Philadelphia PA New York North Boston MA Boston North Hartford CT Boston North Chicago IL Chicago Central 10 Detroit MI Chicago Central 11 Minneapolis MN Minneapolis Central 12 Milwaukee WI Minneapolis Central 14 San Jose CA San Francisco West 15 San Francisco CA San Francisco West 16 Oakland CA San Francisco West 17 Los Angeles CA Los Angeles West 19 Phoenix AZ Los Angeles West Lấy liệu: Lệnh SELECT Bạn sử dụng lệnh SELECT để lấy cột hàng liệu từ bảng sở liệu; để thực phép toán số học liệu; để nhóm, để xếp thứ tự hay để đồng thời nhóm xếp thứ tự liệu Trong đa số trường hợp, lệnh SELECT gồm có biểu thức truy vấn đơn giản khóa SELECT nhiều mệnh đề hay mệnh đề Lệnh SELECT gồm có hai từ khóa, SELECT FROM: SELECT column name(s) FROM table name(s) Các tên cột biểu thức SQL phân tách dấu phẩy Một column dấu (*) dùng để liệt kê tất tên cột xuất name(s) danh sách (các) tên bảng Các tên bảng danh sách bảng lệnh SELECT Các tên bảng phân tách dấu phẩy (Các) bảng tham chiếu phải chứa (các) tên cột xuất sau từ khóa SELECT Trong ví dụ này, lệnh FROM tham chiếu đến AROMA.MARKET Sau phần table thảo luận chi tiết quy ước đặt tên, Table Names and Schemas name(s) (Các tên bảng lược đồ) Trong trường hợp này, mệnh đề FROM tham chiếu đến tên bảng đầy đủ Phần tên lược đồ phần thứ hai tên bảng Các lược đồ có ích nhóm bảng tương tự đối tượng DB2 khác Trong sở liệu AROMADB, tất bảng thiết lập với lược đồ chung AROMA Dạng khác lệnh SELECT SELECT mktkey, hq_city, hq_state, district, region FROM aroma.market Truy vấn sinh kết giống SELECT * FROM aroma.market; nhiên, thay cho việc sử dụng dấu (*) để liệt kê tất cột, tên cột nêu Chú ý: SELECT FROM (và tất từ khác viết chữ hoa) từ khóa dành riêng SQL Các từ phải sử dụng xác định nghĩa SQL chuẩn Chúng ta dùng định dạng chữ hoa để làm cho từ khóa dễ thấy hơn; SQL khơng phân biệt chữ hoa chữ thường, từ khóa viết theo chữ hoa hay chữ thường Các lưu ý cách dùng Dấu chấm phẩy (;) cuối ví dụ hướng dẫn phần bắt buộc cú pháp SQL Theo quy ước, ngôn ngữ SQL bỏ qua khoảng trống thừa, dấu tab dấu hết dịng Thế thì, dấu chấm phẩy dấu kết thúc câu lệnh, khơng cần phải có bạn thực lệnh đơn Trong trường hợp bạn tạo loạt câu lệnh SQL thành kịch bản, dấu chấm phẩy dấu kết thúc rõ ràng cho lệnh Tuỳ thuộc vào công cụ SQL tương tác mà bạn sử dụng để nhập vào truy vấn, cần hay không cần dấu kết thúc lệnh Khi sử dụng Bộ xử lý dòng lệnh để thực nhiều lệnh SQL, dấu chấm phẩy bắt buộc phải có để báo hiệu kết thúc lệnh Sử dụng danh sách SELECT để lấy cột cụ thể Câu hỏi Những hạt vùng định nghĩa sở liệu Aroma? Ví dụ truy vấn SELECT district, region FROM aroma.market; Kết District Region Atlanta South Atlanta South New Orleans South New Orleans South New York North New York North Boston North Boston North Chicago Central Chicago Central Minneapolis Central Minneapolis Central San Francisco West San Francisco West True Unknown Unknown True False True False True False False False False False Unknown False Unknown Unknown True Unknown True Unknown False False Unknown Unknown Unknown Unknown Unknown Phủ định (đúng) sai, Phủ định (sai) Phủ định (khơng rõ) khơng rõ Các điều kiện tìm kiếm bên cặp dấu ngoặc đơn đánh giá Nếu trình tự đánh giá khơng xác lập dấu ngoặc NOT áp dụng trước AND, AND áp dụng trước OR Nếu phép tốn lơgic có mức ưu tiên trình tự đánh giá không xác định Điều cho phép tối ưu hóa điều kiện tìm kiếm Sử dụng AND, OR dấu ngoặc mệnh đề WHERE Câu hỏi Những cửa hàng lớn hay nhỏ công ty Cà phê Chè Aroma đặt Los Angeles San Jose? Ví dụ truy vấn SELECT store_type, store_name, city FROM aroma.store WHERE (store_type = 'Large' OR store_type = 'Small') AND (city = 'Los Angeles' OR city = 'San Jose'); Kết Store_Type Store_Name City Large San Jose Roasting Company San Jose Large Beaches Brew Los Angeles Small Instant Coffee San Jose Xác lập điều kiện tìm kiếm phức tạp Các điều kiện tìm kiếm, đặc biệt điều kiện lập để phân tích hỗ trợ định, trở nên phức tạp Tuy xây dựng từ điều kiện đơn giản sử dụng từ nối AND, OR NOT, điều kiện phức tạp thành khó hiểu May thay, SQL tự định dạng, cấu trúc lơgíc điều kiện làm rõ cách sử dụng ký tự tab, khoảng trống ký tự xuống dòng để định nghĩa quan hệ lơgíc Về truy vấn Ví dụ truy vấn lấy hiển thị tên cửa hàng Công ty Cà phê Chè Aroma lớn nhỏ đặt Los Angeles hay San Jose Dấu ngoặc truy vấn thiết yếu từ nối AND có mức ưu tiên cao hơn so với từ nối OR Nếu loại bỏ dấu ngoặc, truy vấn trả bảng kết khác Ví dụ truy vấn (khơng có dấu ngoặc đơn) SELECT store_type, store_name, city FROM aroma.store WHERE store_type = 'Large' OR store_type = 'Small' AND city = 'Los Angeles' OR city = 'San Jose'; Kết Store_Type Store_Name City Large San Jose Roasting Company San Jose Large Beaches Brew Los Angeles Small Instant Coffee San Jose Large Miami Espresso Miami Large Olympic Coffee Company Atlanta Các lưu ý cách dùng Một truy vấn lấy hiển thị liệu mà không rõ ràng bị loại bỏ điều kiện tìm kiếm Một truy vấn có vài điều kiện chung chung trả số lượng khổng lồ hàng Bất mà bạn hồ nghi cách thức máy chủ đánh giá điều kiện hỗn hợp, dùng dấu ngoặc để nhóm điều kiện cách rõ ràng nhằm áp đặt trình tự đánh giá mong muốn Sử dụng toán tử lớn (>) nhỏ ( AND mktkey Lớn Không >= Lớn '4'; [IBM][CLI Driver][DB2/LINUX] SQL0401N Kiểu liệu tốn hạng phép tốn ">" khơng tương thích SQLSTATE=42818 Bạn nhận trợ giúp diễn giải thông báo lỗi xác định hành động sửa lỗi cần thực cách sử dụng Trung tâm thông tin DB2 Trung tâm giới thiệu phần loạt Các lưu ý cách dùng Các biểu thức điều kiện phải so sánh giá trị kiểu liệu so sánh Nếu bạn cố so sánh loại liệu không giống nhau, máy chủ trả thông báo lỗi kết sai Có thể dùng tốn tử so sánh để so sánh chuỗi ký tự với chuỗi khác minh họa biểu thức điều kiện hợp lệ sau đây: (city > 'L') Để có thêm nhiều thơng tin kiểu liệu so sánh được, tham khảo SQL Reference Guide Sử dụng thuộc tính so sánh IN Câu hỏi Các thành phố nằm hạt Chicago, New York, New Orleans? Ví dụ truy vấn SELECT hq_city, hq_state, district FROM aroma.market WHERE district IN ('Chicago', 'New York', 'New Orleans'); Kết Hq_City Hq_State District New Orleans LA New Orleans Houston TX New Orleans New York NY New York Philadelphia PA New York Chicago IL Chicago Detroit MI Chicago Sử dụng thuộc tính so sánh Một điều kiện đơn giản biểu diễn thuộc tính so sánh SQL sau đây: Thuộc tính BETWEEN expression1 AND expression2 LIKE pattern IN (list) IS NULL IS NOT NULL ALL SOME or ANY EXISTS Các ví dụ thuộc tính ALL, SOME hay ANY EXISTS trình bày phần loại Để biết mơ tả cú pháp ví dụ tất thuộc tính định nghĩa chi tiết biểu thức đơn giản phức tạp, tham khảo SQL Reference Guide Về truy vấn Ví dụ truy vấn liệt kê tất thành phố hạt Chicago, New York New Orleans Nó viết với tốn tử so sánh (=) tập hợp điều kiện OR WHERE district = 'Chicago' OR district = 'New York' OR district = 'New Orleans' Các lưu ý cách dùng Hãy cố gắng viết tập hợp lơgíc điều kiện cách đơn giản, dễ hiểu dễ bảo trì Ln làm rõ cấu trúc lơgíc điều kiện hỗn hợp khoảng trống lớn, định nghĩa khối lôgic cách thụt dịng áp đặt trình tự ưu tiên đánh giá biểu thức cặp dấu ngoặc Sử dụng ký tự đại diện dấu phần trăm (%) Câu hỏi Những thành phố nằm hạt bắt đầu với chữ Min? Ví dụ truy vấn SELECT district, hq_city FROM aroma.market WHERE district LIKE 'Min%'; Kết District Minneapolis Hq_City Minneapolis Minneapolis Milwaukee Sử dụng ký tự đại diện Các truy vấntrước biểu diễn điều kiện yêu cầu so khớp chuỗi ký tự đầy đủ Với thuộc tính LIKE hai ký tự đại diện dấu phần trăm (%) dấu gạch chân (_), bạn biểu diễn điều kiện yêu cầu so khớp với phần chuỗi ký tự (một chuỗi con) Ký tự đại diện phần trăm (%) khớp với chuỗi ký tự Ví dụ:  like 'TOT%' với chuỗi bắt đầu với 'TOT'  like '%ZERO%' với chuỗi có chứa 'ZERO'  like '%FRESH' FRESH' chuỗi kết thúc với 'FRESH' không chứa chỗ trống nối đuôi Các chỗ trống nối đuôi liệu ký tự ý nghĩa ràng buộc LIKE áp dụng Dấu phần trăm (%) sử dụng để tìm kiếm chuỗi ký tự rỗng -chuỗi có ký tự không (0) Ký tự đại diện gạch chân (_) khớp với ký tự vị trí cố định Ví dụ:  like '_EE_' với chuỗi bốn chữ có hai ký tự chúng 'EE'  like '%LE_N%' với chuỗi chứa mẫu 'LE_N’ Tất chuỗi 'CLEAN', 'KLEEN', 'VERY KLEEN' khớp với mẫu Về truy vấn Ví dụ truy vấn lấy tên tất hạt bắt đầu với ký tự ‘Min’ liệt kê thành phố lấy Ký tự đại diện phần trăm (%) cho phép tổ hợp ký tự (bao gồm khoảng trống) xuất sau 'n' trong' Min', ký tự phía trước 'n' phải khớp xác với mẫu ký tự lưu giữ Các lưu ý cách dùng Điều kiện LIKE mẫu khớp với chuỗi cột Nếu mẫu không chứa ký tự đại diện mẫu phải so khớp xác với mục liệu cột Ví dụ, điều kiện sau mục liệu cột chứa chuỗi ký tự APRIL khác month LIKE 'APRIL' Nói cách khác, điều kiện tương đương với: month = 'APRIL' Thuộc tính LIKE sử dụng cột có chứa chuỗi ký tự Đặt tên cột cách sử dụng mệnh đề AS Câu hỏi Những thành phố hạt bắt đầu với chữ Min? Hãy đặt tên cho cột hq_city cho có ý nghĩa Ví dụ truy vấn SELECT district, hq_city AS City FROM aroma.market WHERE district LIKE 'Min%'; Kết District Minneapolis City Minneapolis Minneapolis Milwaukee Đặt tên cho biểu thức: AS Mệnh đề tuỳ chọn AS cho phép bạn gán tên có ý nghĩa cho biểu thức để làm cho việc tham khảo lại biểu thức dễ dàng Khi sử dụng mệnh đề AS, có quy tắc tên phép dùng Nói chung, tên hợp lệ phải bắt đầu chữ cái, không dài 128 ký tự, khoảng trống khơng từ khóa SQL Từ khóa SQL từ SELECT, FROM, WHERE vân vân Để biết thêm chi tiết từ khóa SQL, tham khảo SQL Reference Guide Ví dụ, mệnh đề AS sau gán bí danh hq_citycho cột City: hq_city AS City Bạn gán bí danh mà khơng sử dụng từ khóa AS, điều làm cho câu truy vấn không rõ ràng xem lại nó: hq_city City Bạn nhận thấy tiêu đề cột hiển thị tất chữ hoa bất chấp biểu thức viết hoa hay viết thường Về truy vấn Ví dụ truy vấn trả tập hợp kết giống truy vấn trước chương Tuy nhiên, bí danh gán cho cột tạo tiêu đề cho kết gộp Chú ý: Nếu giá trị chứa cột tham chiếu qua bí danh kết hàm tập hợp khơng thể xuất mệnh đề WHERE; nhiên, xuất mệnh đề HAVING Để biết chi tiết mệnh đề HAVING, xem phần loạt Tóm tắt Lệnh SELECT SELECT column name(s) FROM table name(s) [WHERE search_condition] [GROUP BY group_list] [HAVING search_condition] [ORDER BY order_list]; Các điều kiện tìm kiếm () Các dấu ngoặc (áp đặt trình tự đánh giá) NOT Phủ định AND Và OR Hoặc Các toán tử so sánh = Bằng < Nhỏ > Lớn Không >= Lớn

Ngày đăng: 11/05/2021, 04:55

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN