Đề tài: Bài toán phương trình đạo hàm riêng dạng elliptic, HAY
New microsoft power point presentation
1. 4.10.9 Biểu thức select:
4.10.9.1 Dạng Select - from- where
Công thức tổng quát:
select [distinct] f(x1, x2,...,xn, xn+1,
xn+2,...,xn+p)
from x1 in e1(xn+1, xn+2,...,xn+p)
x2 in e2(x1, xn+1, xn+2,...,xn+p)
x3 in e3(x1, x2, xn+1, xn+2,...,xn+p)
...
xn in en(x1, x2,...,xn-1, xn+1, xn+2,...,xn+p)
[where p(x1, x2,...,xn, xn+1, xn+2,...,xn+p)]
2. 4.10.9 Biểu thức select:
4.10.9.1 Dạng Select - from- where
Ví dụ 1:
select couple(student: x.name, professor: z.name)
from Students as x, x.takes as y, y.taught_by as z
where z.rank = "full professor“
Kết quả trả về 1 tập hợp 2 thuộc tính: tên sinh viên, tên giáo sư
giảng dạy từ bảng Students với điều kiện những học sinh được
dạy bởi người dạy là "full professor" (giáo sư ).
Ví dụ 2:
select *
from Students as x, x.takes as y, y.taught_by as z
where z.rank = "full professor“
Kết quả trả về tất cả thuộc tính thỏa mãn điều kiện giống ví dụ 1
3. 4.10.9 Biểu thức select:
4.10.9.2 Toán tử Group by:
Cấu trúc 1:
Select- from- where group by thuộc tính của
bảng
Biểu thức group by có thể là biểu thức điều kiện
Ví dụ: select *
from Employees e
group by low: salary < 1000,
medium: salary >= 1000 and salary < 10000,
high:salary >= 10000
4. 4.10.9 Biểu thức select:
4.10.9.2 Toán tử Group by:
Cấu trúc 2:
Select- from- where group by thuộc tính của
bảng having điều kiện
Ví dụ:
select department,
avg_salary:avg(select x.e.salary from
partition x)
from Employees e
group by department: e.deptno
having avg(select x.e.salary from partition x)
> 30000
5. 4.10.9 Biểu thức select:
4.10.9.2 Toán tử Order by:
Cấu trúc:
select_query order by e1, e2,...,en
Trong đó e1, e2,...,en là các biểu thức
(expression) mà câu lệnh sẽ sắp xếp kết quả
của câu lệnh select theo các biểu thức đó
Ví dụ 1:
select p from Persons p order by p.age, p.name
6. 4.10.10 Các biểu thức chỉ mục tập dữ liệu:
4.10.10.1. Lấy chỉ mục của 1 tập
Nếu ta muốn lấy chỉ mục nào trong tập thì ta gọi số
chỉ mục của nó trong cặp dấu [ ].
Ví dụ 1: list(a, b,c,d) [1] thì kết quả sẽ lấy ra phần tử
b.
Ví dụ 2 : element (select x
from Courses x
where x.name = "Math" and x.number
="101").requires[2]
Kết quả trả về những giá trị x thứ 3 trong tập
thỏa mãn tên là Math và number là 101.
7. 4.10.10 Các biểu thức chỉ mục tập dữ liệu:
4.10.10.2. Trích xuất 1 khoảng con của tập chỉ mục
Để lấy 1 khoảng các chỉ mục của 1 tập dữ liệu, ta gọi giới hạn
đầu: giới hạn cuối và đặt trong cặp dấu [ ].
Ví dụ:
list (a,b,c,d) [1:3]
Kết quả trả về các giá trị b,c,d.
Ví dụ 2:
element (select x
from Courses x
where x.name = "Math" and x.number = "101").requires[0:2]
Kết quả trả về những giá trị x từ 0 đến 2 (3 giá trị đầu tiên)
trong tập thỏa mãn tên là Math và number là 101.
8. 4.10.10 Các biểu thức chỉ mục tập dữ liệu:
4.10.10.3. Lấy phần tử đầu và cuối của 1 tập chỉ mục
Để lấy phần tử đầu tiên của tập chỉ mục ta có
thể dùng cú pháp:
First(last) (câu truy vấn)
Ví dụ:
first(element(select x from Courses x
where x.name = "Math" and x.number =
"101").requires)
Câu lệnh thực hiện lấy gía trị x đầu tiên
trong câu select
9. 4.10.10 Các biểu thức chỉ mục tập dữ liệu:
4.10.10.4. Ghép 2 tập chỉ mục:
Nếu e1 là tập chỉ mục thứ nhất, e2 là tập chỉ
mục thứ 2 thì e1+e2 là tổng của 2 tập chỉ
mục.
Ví dụ: list(1,2)+list(2,3) kết quả là
list(1,2,2,3)
10. 4.10.10 Các biểu thức chỉ mục tập dữ liệu:
4.10.10.5. Truy xuất một phần tử trong tập chỉ mục :
Muốn truy xuất 1 phần tử trong tập chỉ mục,
ta gọi tên phần tử đó trong dấu [ " "]
Ví dụ : thedict["foobar"] trả về giá trị
của "foobar" trong bảng thedict.
11. 4.10.11. Các biểu thức tập hợp nhị phân:
4.10.11.1. Hợp nhất, giao nhau và khác biệt:
- Hợp nhất (từ khóa Union): kết hợp 2 tập chỉ mục
Ví dụ list(2,2,3,3,3) union list(2,3,3,3) list
(2,2,3,3,3,2,3,3,3)
- Giao nhau( từ khóa intersect): là phần chung nhỏ
nhất của 2 tập
Ví dụ list(2,2,3,3,3) intersect list(2,3,3,3) list
(2,3,3,3)
- Khác biệt, ngoại trừ (từ khoá except): phần bù của
2 tập
Ví dụ list(2,2,3,3,3) except list(2,3,3,3) list (2)
12. 4.10.11. Các biểu thức tập hợp nhị phân:
4.10.11.2. So Sánh:
Nếu e1 và e2 là 2 tập giá trị và <op> là tập
các toán tử so sánh thì
e1 <op> e2 có kiểu Boolean (đúng sai).
Ví dụ:
set(1,2,3) < set(3,4,2,1) cho kết quả là True.
13. 4.10.12. Biểu thức chuyển đổi:
4.10.12.1. Lấy phần tử của một tập:
Nếu e là 1 biểu thức kiểu dữ liệu t, element(e)
sẽ là 1 biểu thức kiểu dữ liệu t. Nó trả về 1
phần tử thỏa mãn. Nếu ko lấy được phần tử
thỏa mãn, nó sẽ trả về 1 ngoại lệ.
Ví dụ: element(select x from Professors x
where x.name = "Turing")
Kết quả trả về giáo sư có tên là “Turing”
(Nếu có)
14. 4.10.12. Biểu thức chuyển đổi:
4.10.12.2. Chuyển từ một list sang một Set:
Nếu e là 1 list(danh sách), listtoset(e) sẽ
chuyển tất cả phần tử của list sang 1 tập hợp
(set).
Ví dụ: listtoset(list(1,2,3,2)) kết quả là tập
hợp gồm 3 phần tử 1,2,3.
15. 4.10.12. Biểu thức chuyển đổi:
4.10.12.3. Xóa bỏ trùng lấp(bản sao Duplicates):
Để xóa bỏ sự trùng lấp các bộ dữ liệu giống
nhau ta dùng dictinct.
Ví dụ: dictinct(list(1,4,2,3,2,4,1) kết quả là 1
list(1,4,2,3).
16. 4.10.12. Biểu thức chuyển đổi:
4.10.12.4. Đồng bộ hóa các bộ dữ liệu:
Để đồng bộ các tập dữ liệu ta dùng cấu trúc
flatten(e). Nó chuyển đổi các tập dữ liệu sang kiểu
list hoặc kiểu Set.
Giả sử có 2 tập dữ liệu col1 và col2. kết quả
flatten(col1, col2) :
Nếu col1 và col2 kiểu set (tập hợp) kết quả sẽ là 1
tập hợp giao nhau (union) của 2 tập có kiểu set
Ví dụ: flatten(list(set(1,2,3), set(3,4,5,6), set(7)))
kết quả là tập hợp các phần từ 1,2,3,4,5,6,7
17. 4.10.12. Biểu thức chuyển đổi:
4.10.12.4. Đồng bộ hóa các bộ dữ liệu:
Nếu col1 và col2 kiểu list( danh sách) kết quả sẽ là
tập hợp giao nhau (union) của 2 tập có kiểu list
Ví dụ:
flatten(list(list(1,2), list(1,2,3))) kết quả là
list(1,2,1,2,3)
Nếu col1 kiểu list và col2 kiểu set kết quả sẽ là tập
hợp giao nhau (union) của 2 tập có kiểu set
Ví dụ:
flatten(set(list(1,2),list(1,2,3))) kết quả là tập hợp
các phần tử 1,2,3.
18. 4.10.12. Biểu thức chuyển đổi:
4.10.12.5. Cách viết một biểu thức:
Giả sử e là 1 biểu thức kiểu t, t’ cũng là 1 kiểu
và 2 kiểu này có thể so sánh được và (t’)e là
1 biểu thức kiểu t. Có 2 cách viết 1 biểu thức:
1. Ở thời gian biên dịch, trình biên dịch
hiểu hai kiểu t và t’ giống nhau nên không có
vấn đề lỗi xảy ra.
2. Ở thời gian chạy, nó sẽ hiểu hai kiểu t
và t’ khác nhau và sẽ trả về kết quả khác
hoặc trả về 1 ngoại lệ.
19. 4.10.13.Cách gọi hàm và phương thức tĩnh:
-Cho hàm f() và e1, e2, ..., en là các biểu
thức. Hàm f() và f(e1, e2,...,en) hiểu là những
biểu thức mà giá trị trả về 1 giá trị hoặc giá trị
nil (nil=null trong SQL): không trả về giá trị .
Hàm f() không truyền tham số, f(e1, e2,...,en)
truyền vào các tham số, nếu trong cách thứ 2
này có 1 tham số ei nào đó không được xác
định, hàm f không được thực thi và trả về kết
quả không xác định.
20. 4.10.13.Cách gọi hàm và phương thức tĩnh:
- Cho f là 1 phương thức tĩnh loại C với (t1,
t2,...,tn -> t), và e1, e2, ..., en là các biểu
thức. Nếu tất cả e1, e2, ..., en đều xác định,
phương thức C.f(e1, e2, ..., en) trả về 1 giá trị
hoặc giá trị nil(không trả về giá trị). Nếu 1
trong các ei không xác định, C.f(e1, e2, ...,
en) trả về không xác định. Nếu f là phương
thức tĩnh không có tham số, thì các viết C.f và
C.f() là như nhau, đều trả về giá trị. Nhưng ta
nên viết C.f() để rõ ràng trong cách gọi
phương thức không gây nhầm lẫn với thuộc
tính.
21. 4.10.14. Các hàm đặc biệt:
OQL có hai dạng hàm đặc biệt là hàm được
xác định theo biểu thức e và hàm không được
xác định theo biểu thức e.
Hàm xác định trả về false nếu e không
xác định và true nếu ngược lại.
Hàm không xác định trả về true nếu e
không xác định và false nếu ngược lại.
22. 4.10.15. Các quy định về phạm vi:
- Phần From của câu lệnh select- from- where
có thể bao gồm biến rõ ràng và biến tiềm ẩn.
Một ví dụ về biến rõ ràng (tên thay thế cho
bảng)
select ... from Persons p ...
Một ví dụ về biến tiềm ẩn (không đặt tên thay
thế cho Persons)
select ... from Persons ...
23. 4.10.15. Các quy định về phạm vi:
- Phần Group by có thể định nghĩa 1 tên thay
thế cho 1 thuộc tính
Ví dụ: select f(y, partition)
from x in X where p(x) group by y:g(x)
having h(y, partition)
order by o(y, partition)
Ở ví dụ này ở phần group by định nghĩa
1 tên thay thế y cho g(x) và nó được sử dụng
ở phần select, phần having, phần order by dù
rằng nó được khai báo sau ở phần group by.