Thứ Bảy, 7 tháng 1, 2017

Query Language

I.Định Nghĩa

JPQL không phải là SQL. Mặc dù những điểm tương đồng giữa hai ngôn ngữ về từ khóa và cấu trúc tổng thể, có rất khác biệt quan trọng. Cố gắng viết JPQL như thể nó là SQL là cách dễ nhất để nhận được thất vọng với ngôn ngữ. Các điểm tương đồng giữa hai ngôn ngữ là có chủ ý (cho các nhà phát triển một cảm giác về những gì JP QL có thể thực hiện được), nhưng bản chất hướng đối tượng của JPQL đòi hỏi một loại khác nhau về cách nghĩ.


JPQL là ngôn ngữ Java Persistence Truy vấn định nghĩa trong đặc tả JPA. Nó được sử dụng để tạo ra các truy vấn đối với các đơn vị để lưu trữ trong một cơ sở dữ liệu quan hệ. JPQL được phát triển dựa trên cú pháp SQL. Nhưng nó sẽ không ảnh hưởng đến các cơ sở dữ liệu trực tiếp. JPQL có thể lấy thông tin hoặc dữ liệu sử dụng mệnh đề SELECT, có thể làm cập nhật số lượng lớn bằng khoản UPDATE và DELETE khoản. EntityManager.createQuery () API sẽ hỗ trợ cho các truy vấn ngôn ngữ.

II.Chi Tiết


  • Constructor Expressions
SELECT NEW example.EmployeeDetails(e.name, e.salary, e.department.name) FROM Employee e
  • Literal syntax is also similar to SQL (see the “Literals” section).
Operator precedence is as follows:
1. Navigation operator (.)
2. Unary +/–
3. Multiplication (*) and division (/)
4. Addition (+) and subtraction (–)
5. Comparison operators: =, >, >=, <, <=, <>, [NOT] BETWEEN, [NOT] LIKE, [NOT] IN, IS [NOT] NULL, IS [NOT] EMPTY, [NOT] MEMBER [OF] 6. Logical operators (AND, OR, NOT)
  • BETWEEN Expressions
SELECT e FROM Employee e WHERE e.salary BETWEEN 40000 AND 45000
  • LIKE Expressions
SELECT d FROM Department d WHERE d.name LIKE '__Eng%'
  • Subqueries 
SELECT e FROM Employee e WHERE e.salary = (SELECT MAX(emp.salary) FROM Employee emp)
  • IN Expressions
SELECT e FROM Employee e WHERE e.address.state IN ('NY', 'CA')
  • Collection Expressions
SELECT e FROM Employee e WHERE e.directs IS NOT EMPTY
  • EXISTS Expressions
SELECT e FROM Employee e WHERE NOT EXISTS (SELECT p FROM e.phones p WHERE p.type = 'Cell')
  • ANY, ALL, and SOME Expressions
SELECT e FROM Employee e WHERE e.directs IS NOT EMPTY AND e.salary < ALL (SELECT d.salary FROM e.directs d)
  • Scalar Expressions
Một biểu thức vô hướng là một giá trị ký tự, chuỗi số học, biểu hiện chức năng, loại biểu hiện, hoặc trường hợp biểu hiện mà giải quyết đến một giá trị vô hướng duy nhất. Nó có thể được sử dụng trong mệnh đề SELECT để định dạng dự
trường trong truy vấn báo cáo hoặc là một phần của biểu thức điều kiện trong WHERE hoặc HAVING khoản của một truy vấn.

Truy vấn con mà giải quyết cho các giá trị vô hướng cũng được coi là biểu hiện vô hướng, nhưng có thể được sử dụng chỉ
khi soạn các tiêu chí trong mệnh đề WHERE của truy vấn. Truy vấn con không bao giờ có thể được sử dụng trong SELECT
  • Literals
{d ‘yyyy-mm-dd’}                               e.g. {d ‘2009-11-05’}
{t ‘hh-mm-ss’}                                    e.g. {t ’12-45-52′}
{ts ‘yyyy-mm-dd hh-mm-ss.f’}    e.g. {ts ‘2009-11-05 12-45-52.325’}
  • ORDER BY Clause
SELECT e FROM Employee e ORDER BY e.name DESC
Multiple expressions can also be used to refine the sort order:
SELECT e, d FROM Employee e JOIN e.department d ORDER BY d.name, e.name DESC
  • Aggregate Queries
Aggregate Functions Five aggregate functions can be placed in the select clause of a query: AVG, COUNT, MAX, MIN, and SUM.
  • GROUP BY Clause
SELECT d.name, COUNT(e) FROM Department d JOIN d.employees e GROUP BY d.name
  • HAVING Clause
SELECT e, COUNT(p) FROM Employee e JOIN e.projects p GROUP BY e HAVING COUNT(p) >= 2
  • Update Queries
UPDATE Employee e SET e.salary = 60000 WHERE e.salary = 55000
  • Delete Queries
DELETE FROM Employee e WHERE e.department IS NULL
III.Đánh Giá
JPQL là một truy vấn di động ngôn ngữ được thiết kế để kết hợp các cú pháp và ngữ nghĩa truy vấn đơn giản của SQL với các biểu cảm của một hướng đối tượng ngôn ngữ biểu thức. Truy vấn được viết bằng ngôn ngữ này có thể được biên dịch để portably SQL trên tất cả các máy chủ cơ sở dữ liệu lớn.

IV.Kết
Ta đã nhìn vào rất nhiều các loại truy vấn và cú pháp của họ. Lịch sử của các ngôn ngữ, từ gốc rễ của nó trong EJB 2.0 đặc điểm kỹ thuật cho các cải tiến quan trọng được giới thiệu bởi JPA.
Trong phần trên các truy vấn lựa chọn, chúng ta khám phá từng khoản truy vấn và từng bước xây dựng được nhiều hơn truy vấn phức tạp như cú pháp đầy đủ đã được mô tả. Chúng ta thảo luận các biến dạng và đường dẫn biểu thức, được sử dụng để điều hướng thông qua các mô hình miền trong các biểu thức truy vấn. Chúng ta cũng nhìn tại nhiều biểu thức điều kiện và vô hướng được hỗ trợ bởi ngôn ngữ.
Trong cuộc thảo luận của chúng ta về các truy vấn tổng hợp chúng ta giới thiệu các nhóm và lọc bổ sung khoản mở rộng chọn câu truy vấn. Chúng ta cũng đã chứng minh các chức năng tổng hợp khác nhau.
Trong các phần trên cập nhật và xóa các truy vấn, chúng ta mô tả cú pháp đầy đủ để cập nhật hàng loạt và xóabáo cáo, người có hành vi gian chạy được mô tả trong các chương trước.

Không có nhận xét nào:

Đăng nhận xét