SlideShare une entreprise Scribd logo
1  sur  23
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)]
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
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.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
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
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.
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.
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
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)
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.
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)
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.
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ó)
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.
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).
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
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.
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ệ.
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.
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.
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.
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 ...
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.

Contenu connexe

Tendances

Thuật toán berlekamp và đa thức chia đường tròn modulo p
Thuật toán berlekamp và đa thức chia đường tròn modulo pThuật toán berlekamp và đa thức chia đường tròn modulo p
Thuật toán berlekamp và đa thức chia đường tròn modulo pBui Loi
 
[Math educare] giao trinh toan cao cap a2-giai tich ham nhieu bien_phuong tri...
[Math educare] giao trinh toan cao cap a2-giai tich ham nhieu bien_phuong tri...[Math educare] giao trinh toan cao cap a2-giai tich ham nhieu bien_phuong tri...
[Math educare] giao trinh toan cao cap a2-giai tich ham nhieu bien_phuong tri...Nguyen Vietnam
 
csdl - buoi13-14
csdl - buoi13-14csdl - buoi13-14
csdl - buoi13-14kikihoho
 
08 mat102-bai 5-v1.0
08 mat102-bai 5-v1.008 mat102-bai 5-v1.0
08 mat102-bai 5-v1.0Yen Dang
 
csdl - buoi5-6
csdl - buoi5-6csdl - buoi5-6
csdl - buoi5-6kikihoho
 
Tính toán khoa học - Chương 6: Bài toán giá trị ban đầu với phương trình vi p...
Tính toán khoa học - Chương 6: Bài toán giá trị ban đầu với phương trình vi p...Tính toán khoa học - Chương 6: Bài toán giá trị ban đầu với phương trình vi p...
Tính toán khoa học - Chương 6: Bài toán giá trị ban đầu với phương trình vi p...Chien Dang
 
Chuong1 ontapcoso
Chuong1 ontapcosoChuong1 ontapcoso
Chuong1 ontapcosoTran Van
 
Tính toán khoa học - Chương 4: Giải phương trình phi tuyến
Tính toán khoa học - Chương 4: Giải phương trình phi tuyếnTính toán khoa học - Chương 4: Giải phương trình phi tuyến
Tính toán khoa học - Chương 4: Giải phương trình phi tuyếnChien Dang
 
Đại-số-tuyến-tính.pdf
Đại-số-tuyến-tính.pdfĐại-số-tuyến-tính.pdf
Đại-số-tuyến-tính.pdfUynChiL
 
Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT
Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPTBài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT
Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPTMasterCode.vn
 
Các lệnh-cơ-bản-của-giải-tích-1
Các lệnh-cơ-bản-của-giải-tích-1Các lệnh-cơ-bản-của-giải-tích-1
Các lệnh-cơ-bản-của-giải-tích-1thaicuia
 
Toán cao cấp a2
Toán cao cấp a2Toán cao cấp a2
Toán cao cấp a2bookbooming
 
Lap trinh matlab_co_ban_1731
Lap trinh matlab_co_ban_1731Lap trinh matlab_co_ban_1731
Lap trinh matlab_co_ban_1731Vu Tuan
 

Tendances (20)

Matlab intro
Matlab introMatlab intro
Matlab intro
 
Thuật toán berlekamp và đa thức chia đường tròn modulo p
Thuật toán berlekamp và đa thức chia đường tròn modulo pThuật toán berlekamp và đa thức chia đường tròn modulo p
Thuật toán berlekamp và đa thức chia đường tròn modulo p
 
Tomtat loc
Tomtat locTomtat loc
Tomtat loc
 
[Math educare] giao trinh toan cao cap a2-giai tich ham nhieu bien_phuong tri...
[Math educare] giao trinh toan cao cap a2-giai tich ham nhieu bien_phuong tri...[Math educare] giao trinh toan cao cap a2-giai tich ham nhieu bien_phuong tri...
[Math educare] giao trinh toan cao cap a2-giai tich ham nhieu bien_phuong tri...
 
csdl - buoi13-14
csdl - buoi13-14csdl - buoi13-14
csdl - buoi13-14
 
08 mat102-bai 5-v1.0
08 mat102-bai 5-v1.008 mat102-bai 5-v1.0
08 mat102-bai 5-v1.0
 
Hàm phân hình và sự hội tụ của chuỗi hàm phân hình
Hàm phân hình và sự hội tụ của chuỗi hàm phân hìnhHàm phân hình và sự hội tụ của chuỗi hàm phân hình
Hàm phân hình và sự hội tụ của chuỗi hàm phân hình
 
csdl - buoi5-6
csdl - buoi5-6csdl - buoi5-6
csdl - buoi5-6
 
Chuong4 hambool
Chuong4 hamboolChuong4 hambool
Chuong4 hambool
 
Tính toán khoa học - Chương 6: Bài toán giá trị ban đầu với phương trình vi p...
Tính toán khoa học - Chương 6: Bài toán giá trị ban đầu với phương trình vi p...Tính toán khoa học - Chương 6: Bài toán giá trị ban đầu với phương trình vi p...
Tính toán khoa học - Chương 6: Bài toán giá trị ban đầu với phương trình vi p...
 
Chuong1 ontapcoso
Chuong1 ontapcosoChuong1 ontapcoso
Chuong1 ontapcoso
 
huong dan_su_dung_maple
huong dan_su_dung_maplehuong dan_su_dung_maple
huong dan_su_dung_maple
 
Tính toán khoa học - Chương 4: Giải phương trình phi tuyến
Tính toán khoa học - Chương 4: Giải phương trình phi tuyếnTính toán khoa học - Chương 4: Giải phương trình phi tuyến
Tính toán khoa học - Chương 4: Giải phương trình phi tuyến
 
Đại-số-tuyến-tính.pdf
Đại-số-tuyến-tính.pdfĐại-số-tuyến-tính.pdf
Đại-số-tuyến-tính.pdf
 
Chuong 08 tai dinh nghia
Chuong 08 tai dinh nghiaChuong 08 tai dinh nghia
Chuong 08 tai dinh nghia
 
Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT
Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPTBài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT
Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT
 
Chg4 tham lam
Chg4 tham lamChg4 tham lam
Chg4 tham lam
 
Các lệnh-cơ-bản-của-giải-tích-1
Các lệnh-cơ-bản-của-giải-tích-1Các lệnh-cơ-bản-của-giải-tích-1
Các lệnh-cơ-bản-của-giải-tích-1
 
Toán cao cấp a2
Toán cao cấp a2Toán cao cấp a2
Toán cao cấp a2
 
Lap trinh matlab_co_ban_1731
Lap trinh matlab_co_ban_1731Lap trinh matlab_co_ban_1731
Lap trinh matlab_co_ban_1731
 

En vedette

Learning Bahasa Indonesia-Vowels
Learning Bahasa Indonesia-VowelsLearning Bahasa Indonesia-Vowels
Learning Bahasa Indonesia-VowelsSefty Hanida
 
Alice & Jemma Meer kat project
Alice & Jemma Meer kat projectAlice & Jemma Meer kat project
Alice & Jemma Meer kat projectAlice Gwynne-Evans
 
Coastline Challenges Girls Program _ NEW
Coastline Challenges Girls Program _ NEWCoastline Challenges Girls Program _ NEW
Coastline Challenges Girls Program _ NEWCoastlineChallenges
 

En vedette (6)

Virus informaticos uptc sem 1. jcmr
Virus informaticos uptc sem 1. jcmrVirus informaticos uptc sem 1. jcmr
Virus informaticos uptc sem 1. jcmr
 
Learning Bahasa Indonesia-Vowels
Learning Bahasa Indonesia-VowelsLearning Bahasa Indonesia-Vowels
Learning Bahasa Indonesia-Vowels
 
Alice & Jemma Meer kat project
Alice & Jemma Meer kat projectAlice & Jemma Meer kat project
Alice & Jemma Meer kat project
 
Coastline Challenges Girls Program _ NEW
Coastline Challenges Girls Program _ NEWCoastline Challenges Girls Program _ NEW
Coastline Challenges Girls Program _ NEW
 
Alice & Jemma Meerkat project
Alice & Jemma Meerkat projectAlice & Jemma Meerkat project
Alice & Jemma Meerkat project
 
Alice & Jemma Meerkat
 Alice & Jemma Meerkat  Alice & Jemma Meerkat
Alice & Jemma Meerkat
 

Similaire à New microsoft power point presentation

Bài tập thực hành số 1
Bài tập thực hành số 1Bài tập thực hành số 1
Bài tập thực hành số 1Tran Trung Dung
 
Chuong 1 Matlab co ban.pdf
Chuong 1 Matlab co ban.pdfChuong 1 Matlab co ban.pdf
Chuong 1 Matlab co ban.pdfHngTrn365275
 
Chuong 1 Matlab co ban.pdf
Chuong 1 Matlab co ban.pdfChuong 1 Matlab co ban.pdf
Chuong 1 Matlab co ban.pdfnguyenkaka2
 
Ngon ngu c theo chuan ansi
Ngon ngu c theo chuan ansiNgon ngu c theo chuan ansi
Ngon ngu c theo chuan ansiHuynh MVT
 
10. C - Function And Operator Overload
10. C   - Function And Operator Overload10. C   - Function And Operator Overload
10. C - Function And Operator OverloadDarian Pruitt
 
THCS_W11_BaiDocThem
THCS_W11_BaiDocThemTHCS_W11_BaiDocThem
THCS_W11_BaiDocThemCNTT-DHQG
 
Fortran cơ sở
Fortran cơ sởFortran cơ sở
Fortran cơ sởHajunior9x
 
Mpp04 521-r1501 v
Mpp04 521-r1501 vMpp04 521-r1501 v
Mpp04 521-r1501 vTrí Công
 
Le minh hoang_-_bai_giang_cac_chuyen_de
Le minh hoang_-_bai_giang_cac_chuyen_deLe minh hoang_-_bai_giang_cac_chuyen_de
Le minh hoang_-_bai_giang_cac_chuyen_deDong Pham The
 
Bai giang dklg new 6 (repaired)
Bai giang dklg new 6 (repaired)Bai giang dklg new 6 (repaired)
Bai giang dklg new 6 (repaired)Namzekeng Nzk
 

Similaire à New microsoft power point presentation (20)

Bài tập thực hành số 1
Bài tập thực hành số 1Bài tập thực hành số 1
Bài tập thực hành số 1
 
Luận văn: Giải phương trình tích phân tuyến tính và áp dụng, HAY
Luận văn: Giải phương trình tích phân tuyến tính và áp dụng, HAYLuận văn: Giải phương trình tích phân tuyến tính và áp dụng, HAY
Luận văn: Giải phương trình tích phân tuyến tính và áp dụng, HAY
 
Chuong 1 Matlab co ban.pdf
Chuong 1 Matlab co ban.pdfChuong 1 Matlab co ban.pdf
Chuong 1 Matlab co ban.pdf
 
Chuong 1 Matlab co ban.pdf
Chuong 1 Matlab co ban.pdfChuong 1 Matlab co ban.pdf
Chuong 1 Matlab co ban.pdf
 
Ngon ngu c theo chuan ansi
Ngon ngu c theo chuan ansiNgon ngu c theo chuan ansi
Ngon ngu c theo chuan ansi
 
10. C - Function And Operator Overload
10. C   - Function And Operator Overload10. C   - Function And Operator Overload
10. C - Function And Operator Overload
 
Kế toán Excel
Kế toán ExcelKế toán Excel
Kế toán Excel
 
Cac lenh trong matlab
Cac lenh trong matlabCac lenh trong matlab
Cac lenh trong matlab
 
THCS_W11_BaiDocThem
THCS_W11_BaiDocThemTHCS_W11_BaiDocThem
THCS_W11_BaiDocThem
 
Fortran cơ sở
Fortran cơ sởFortran cơ sở
Fortran cơ sở
 
Mpp04 521-r1501 v
Mpp04 521-r1501 vMpp04 521-r1501 v
Mpp04 521-r1501 v
 
65 csdl
65 csdl65 csdl
65 csdl
 
Ứng Dụng Công Thức Viète Trong Giải Toán Bậc Phổ Thông.doc
Ứng Dụng Công Thức Viète Trong Giải Toán Bậc Phổ Thông.docỨng Dụng Công Thức Viète Trong Giải Toán Bậc Phổ Thông.doc
Ứng Dụng Công Thức Viète Trong Giải Toán Bậc Phổ Thông.doc
 
Chuong 05
Chuong 05Chuong 05
Chuong 05
 
Ltc 6
Ltc 6Ltc 6
Ltc 6
 
Le minh hoang_-_bai_giang_cac_chuyen_de
Le minh hoang_-_bai_giang_cac_chuyen_deLe minh hoang_-_bai_giang_cac_chuyen_de
Le minh hoang_-_bai_giang_cac_chuyen_de
 
Esvect xargs help
Esvect xargs helpEsvect xargs help
Esvect xargs help
 
Baitap ktlt
Baitap ktltBaitap ktlt
Baitap ktlt
 
Bai giang dklg new 6 (repaired)
Bai giang dklg new 6 (repaired)Bai giang dklg new 6 (repaired)
Bai giang dklg new 6 (repaired)
 
Đề tài: Bài toán phương trình đạo hàm riêng dạng elliptic, HAY
Đề tài: Bài toán phương trình đạo hàm riêng dạng elliptic, HAYĐề tài: Bài toán phương trình đạo hàm riêng dạng elliptic, HAY
Đề 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.