Anda di halaman 1dari 32

Basic Structure of SQL Query

INF2033 Basis Data 1


Pertemuan 07

R. Kristoforus JB
Fakultas Sains & Teknologi
Universitas Katolik Musi Charitas
Sub Capaian Mata Kuliah
• Mahasiswa dapat membuat query SQL dengan menggunakan struktur
dasar klausa Select, From, dan Where
• Mahasiswa dapat menggunakan klausa Order by untuk mengurutkan
hasil query
• Mahasiswa dapat menggunakan klausa Limit untuk membatasi jumlah
hasil query
• Mahasiswa dapat menggunakan klausa as untuk mengubah nama
atribut dan nama tabel
• Mahasiswa dapat menggunakan operasi-operasi string pada sebuah
query SQL

2
Outline
• SQL
– Basic structure of SQL query:
• Select clause
• From clause
• Where clause
• Order by clause
• Limit clause
• Offset clause
– Rename operation
• Rename Attribute
• Rename Table
– String operation
• Like clause
• Concatenation
• Upper & Lower
• Length & substring

3
Yang perlu dipersiapkan
• aplikasi DB4S
• Schema diagram for university database
• File latihan:
– university.db
– university_ddl.sql
– university_dml.sql
• Kunjungi laman:
– https://www.sqlitetutorial.net/
– https://www.w3resource.com/sqlite/index.php

4
Schema Diagram for University Database

5
Basic query structure
• Secara umum bentuk sebuah query SQL sebagai berukut:

select A1, A2, ..., An


from r1, r2, ..., rm
where P

– Ai merepresentasikan attribute
– Ri merepresentasikan a relation
– P adalah predicate.
• Hasil sebuah SQL adalah sebuah relation.

6
Basic query structure
• Struktur lengkap sebuah query SQL:
SELECT [ALL|DISTINCT] select_heading
FROM source_tables
WHERE filter_expression
GROUP BY grouping_expressions
HAVING filter_expression
ORDER BY ordering_expressions
LIMIT count
OFFSET count

7
Select Parameters

Clause Operation perform Input Value


WHERE Used to restrict Expression or condition
DISTINCT Used to restrict List of columns
FROM Joins List of tables
GROUP BY Used to restrict List of columns
ORDER BY List of columns
HAVING Used to restrict Expression or condition
LIMIT Used to restrict Integer value
OFFSET Used to restrict Integer value

8
Select clause
• Klausa select menghasilkan daftar atribut yang diinginkan dari sebuah
query
– Berkorespondensi dengan operasi project dalam relational algebra
• Contoh 1: tampilkan nama semua instructor:
select name
from instructor;
• Catatan: sintak SQL adalah case insensitive
– Misal, Name ≡ NAME ≡ name
– Bisa menggunakan UPPER CASE atau BOLD.

9
Select clause
• SQL mengijinkan duplikasi dalam relation hasil query.
• Contoh 2: Tampilkan dept_name dari seluruh instructor:
select dept_name
from instructor;
• Untuk mengeliminasi duplikasi, gunakan keyword: distinct setelah
select.
• Contoh 3: Tampilkan dept_name dari seluruh instructor dan hilangkan
duplikasi:
select distinct dept_name
from instructor;
• Dengan keyword all menyatakan bahwa duplikasi tidak dihapus.
Contoh 4:
select all dept_name
from instructor;

10
Select clause
• Penggunaan sebuah asterisk (tanda bintang) dalam klausa select menyatakan
“seluruh atribut”. Contoh 5:
select *
from instructor;
• Sebuah atribut bisa berbentuk literal tanpa klausa from. Contho 6:
select '437„;
– Hasilnya: sebuah tabel dengan satu kolom satu baris dengan nilai “437”
– Kolom (atribut) hasil query dapat diberi nama. Contoh 7:
select '437' as FOO;
• Sebuah atribut dapat berbentuk literal dengan klausa from. Contoh 8:
select 'A'
from instructor;
– Hasilnya: sebuah tabel satu kolom dengan N baris (N: jumlah baris dalam
tabel), setiap baris bernilai “A”

11
Select clause
• Klausa select dapat berisi ekspresi aritmatika termasuk operasi, +, –, ,
and /, and yang dikenakan pada konstanta atau atribut.
– Contoh 9:
select ID, name, salary/12
from instructor;
hasilnya: tabel berisi instructor, dan nilai salary yang ditampilkan
adalah hasil ari nilai salary dibagi 12.
– Aribut “salary/12” dapat diganti menggunakan klausa as. Contoh 10 :
select ID, name, salary/12 as monthly_salary
from instructor;

12
Where clause
• Klausa where mencirikan kondisi yang harus terpenuhi pada hasil query.
– Berkorespondensi dengan selection predicate pada relational algebra.
• Contoh 11: Tampilkan semua isntructor dari departemen „Comp. Sci.‟:
select name
from instructor
where dept_name = 'Comp. Sci.‟;
• SQL mengijinkan penggunaan konektor logika: and, or, not
• Operand pada konektor logika dapat diekspresikan dengan operator
perbandingan: <, <=, >, >=, =, dan <>.
• Perbandingan dapat diterapkan untuk menghasilkan ekspresi aritmatika.
• Contoh 12: Tampilkan semua instructor dari „Comp. Sci.‟ dengan salary >
80000:
select name
from instructor
where dept_name = 'Comp. Sci.' and salary > 80000;

13
From Clause
• Klausa from digunakan untuk menyertakan daftar relation yang
dibutuhkan dalam query
– Berkorespondensi dengan operasi Cartesian product pada relational
algebra.
• Contoh 13: Tampilkan hasil cartesian product dari instructor X teaches
select 
from instructor, teaches;
– Menghasilkan setiap kemungkinan pasangan instructor – teaches,
dengan seluruh atribut dari kedua relasi.
– Untuk atribut yang sama (misal: ID) atribut pada hasil query akan
diganti namanya (misal: instructor.ID)

14
Example
• Contoh 14: Tampilkan name dan course_id dari semua instructor yang
mengajar beberapa course:
– select name, course_id
from instructor , teaches
where instructor.ID = teaches.ID;

• Contoh 15: Tampilkan name dan course_id dari semua instructor dalam
departemen „English‟ yang mengajar beberapa course:
– select name, course_id
from instructor , teaches
where instructor.ID = teaches.ID and instructor. dept_name =
„English„;

15
Where Clause Predicates
• SQL mengijinkan operator perbandingan: between
• Contoh 15: Tampilkan nama instructor dengan salary antara $90,000 dan
$100,000 (artinya,  $90,000 and  $100,000)
select name
from instructor
where salary between 90000 and 100000;
• Tuple comparison. Contoh 16:
select name, course_id
from instructor, teaches
where (instructor.ID, dept_name) = (teaches.ID, 'Biology');
– Bandingkan dengan Contoh 17:
select name, course_id
from instructor, teaches
where instructor.ID= teaches.ID and dept_name='Biology';

16
Order by Clause
• Klausa order by digunakan untuk mengurutkan sebuah daftar secara alfabetik
• Contoh 18: Tampilkan dalam urutan alfabetik nama semua instructor:
select distinct name
from instructor
order by name;
• Urutan bisa secara descending: desc. Contoh 19:
select distinct name
from instructor
order by name desc;
• Atau ascending: asc. Contoh 20:
select distinct name
from instructor
order by name asc;

17
Limit Clause
• Klausa limit digunakan untuk membatasi jumlah baris yang akan
dihasilkan dari sebuah query.
• Contoh 21: Tampilkan nama seluruh instructor:
select name
from instructor;
• Hasilnya menampilkan 50 baris nama instructor
• Jika kita membatasi 5 instructor saja yang akan ditampilkan. Contoh 22:
select name
from instructor
limit 5;
• Lihatlah perbedaannya jika kita memberikan sintaks berikut. Contoh
23:
select name
from instructor
limit 5,10;

18
Offset Clause
• Klausa Offset digunakan untuk menentukan jumlah baris yang akan
dilewati atau diabaikan dari sebuah hasil query
• Contoh 24: tampilkan sebanyak 10 baris nama mata kuliah dimulai dari
urutan ke-6.
select title
from course
limit 10
offset 6;

19
The Rename Operation
• SQL mengijinkan penggantian nama relasi dan atribut dengan
menggunakan klausa as:
old-name as new-name

• Contoh 25: Find the names of all instructors who have a higher salary
than some instructor in 'Comp. Sci'.
– select distinct T.name
from instructor as T, instructor as S
where T.salary > S.salary and S.dept_name = 'Comp. Sci.’;

• Keyword as is optional and may be omitted


instructor as T ≡ instructor T

20
The Rename Operatoin
• Perhatikan hasil query • Contoh 29:
• Contoh 26: select I.name
select instructor.name from instructor I
form instructor where I.salary>100000;
where instructor.salary>100000;
• Contoh 30:
select I.name nama_dosen
• Contoh 27: from instructor I
select I.name
where I.salary>100000;
from instructor as I
where I.salary>100000;

• Contoh 28:
select I.name as nama_dosen
from instructor as I
where I.salary>100000;

21
String Operations
• SQL menyediakan operator pembanding karakter pada sebuah string. Operator
yang digunakan adalah: like
• Operator like digunakan dengan karakter berikut:
– percent ( % ). The % character matches any substring.
– underscore ( _ ). The _ character matches any character.
• Contoh 31: Tampilkan nama instructor yang mengandung substring „mor‟.
select name
from instructor
where name like '%mor%'

• Jika string mengandung karakter simbol. Misal: “100%”


like '100 \%' escape '\'
in that above we use backslash (\) as the escape character.

22
String Operations
• Pola bersifat case sensitive.
• Contoh pencocokan pola:
– „comp%' mencocokan sebarang string yang diawali dengan „comp‟.
– '%comp%' mencocokan sebarang string matches yang memuat
substring „comp‟.
– „%sic‟ mencocokan sebarang string yang diakhiri dengan „sic‟
– '_ _ _' mencocokan sebarang string tepat tiga karakter.
– '_ _ _ %' mencocokan sebarang string paling sedikit tiga karakter.

• SQL juga mendukung operasi string:


– concatenation (using “||”)
– converting from upper to lower case (and vice versa)
– finding string length, extracting substrings, etc.

23
String Operations
Cobalah contoh berikut dan perhatikan • Contoh 35:
hasil query: select title
• Contoh 32: from course
select title where title like 'ting%';
from course
where title like 'comp%'; • Contoh 36 (5 karakter):
select title
• Contoh 33: from course
select title where title like '_____';
from course
where title like '%comp%'; • Contoh 37 (10 karakter):
select name
• Contoh 34: from instructor
select title where name like '__________%';
from course
where title like '%ting%';

24
String Operations
• Contoh 38: • Contoh 41:
select 'nama departemen: select title, substr(title,1,4)
'||dept_name||' nama gedung: from course
'||building as namagedung where dept_name = 'English';
from department;
• Contoh 42:
• Contoh 39: select title, upper(substr(title,4,3))
select title, upper(title) from course
from course where dept_name = 'English';
where dept_name = 'English';

• Contoh 40:
select title, lower(title)
from course
where dept_name = 'English';

25
Exercises 7
1. Tampilkan nama seluruh building yang ada. Pastikan nama building tidak
berulang. Batasi hasil query pada lima baris pertama.
2. Jika salary setiap instructor dikenai pajak 10% dan gaji bersihnya adalah 90%
dari salary, Tampilkan lima nama instructor pertama beserta pajak dan gaji
bersihnya. Pastikan nama atribut yang ditampilkan: nama, pajak, gaji_bersih.
3. Jika satu tahun dianggap 250 hari kerja, tampilkan nama lima instructor
pertama dari seluruh instructor dan gaji hariannya.
4. Tampilkan lima teratas nama mata kuliah (title) yang memiliki sks (credits) = 4.
5. Tampilkan lima teratas nama mata kuliah dan sks dari mata kuliah yang
ditawarkan departemen „Comp. Sci.‟
6. Tampilkan nama mata kuliah dan sks dari mata kuliah yang ditawarkan
departemen „Physics‟ dan sks = 4. Urutkan secara descending.
7. Tampilkan nama mata kuliah, sks, dan departemen dari mata kuliah yang
ditawarkan oleh departemen „Physics‟ atau departemen „Math‟
8. Tampilkan nama student yang total sks nya > 125 dan berasal dari departemen
„History‟

26
Exercises 7
9. Tampilkan nama mata kuliah, sks, dan departemen dari mata kuliah yang
ditawarkan oleh departemen „Physics‟ atau departemen „Math‟ namun yang sksnya
3.
10. Tampilkan nama departemen yang budgetnya < 300000
11. Tampilkan nama departemen yang budgetnya antara 300000 dan 500000
12. Tampilkan nama instructor, nama building dari instructor yang berkantor di
building „Taylor‟
13. Tampilkan ID mata kuliah prasyarat „Game Programming‟ dan ubahlah nama
atributnya menjadi: mk_prasyarat
14. Tampilkan nama instructor, nama mahasiswa (student) secara terurut dari
mahasiswa yang dibimbing (pembimbing akademik = advisor) oleh „Luo‟. Batasi
pada lima mahasiswa teratas.
15. Tampilkan nama mata kuliah yang pernah diampu oleh „Mahmoud‟
16. Tampilkan nama mata kuliah yang pernah diampu oleh „Mahmoud‟ pada tahun
2010
17. Tampilkan nama mahasiswa dari departemen „Comp. Sci.‟ yang mengambil mata
kuliah „Corporate Law‟ pada semester „Fall‟. Batasi pada lima mahasiswa pertama.

27
Exercises 7
18. Tampilkan nama mahasiswa (student) yang berawalan „Ca‟ dari mahasiswa
yang dibimbing (pembimbing akademik = advisor) oleh „Luo‟.
19. Tampilkan nama mata kuliah yang mengandung string „tra‟ yang pernah
diampu oleh „Mahmoud‟
20. Tampilkan 10 teratas nama mahasiswa yang dibimbing oleh instructor yang
namanya berawalan „ba‟
21. Tampilkan seluruh nama departemen, building dan kode departemen. Kode
departemen terdiri dari 6 digit huruf kapital, dimana kode departemen
merupakan gabungan 3 digit pertama nama departemen dan 3 digit pertama
building

28
Jadwal
Prt Tgl T P
1 05/09 Pengantar Kuliah Basis Data 1 V
2 05/09 Intro to Database System, DB System Environment V
3 12/09 Into to Relational Model V
4 12/09 Intro to SQLite & DB4S V
5 19/09 Query Language: Overview, Data Definition V
6 19/09 SQLite: Data Definition V
7 26/09 Query Language: Basic Structure V
8 26/09 SQLite: Basic Structure V

29
Jadwal
Prt Tgl Teori T P
9 03/10 Relational Database: Relational Algebra V
10 03/10 Relational Database: Relational Algebra V
11 10/10 Query Language: Set Operation, Null Values V
12 10/10 SQLite: Set Operation, Null Values V
13 17/10 Relational Database: Calculus Relational V
14 17/10 Relational Database: Calculus Relational V
15 24/10 UTS V
16 24/10 Project 1 V

30
Jadwal
Prt Tgl Teori T P
17 31/10 Data Modeling: ER Model V
18 31/10 Data Modeling: ER Model V
19 07/11 Query language: Aggregate func., Join Expr V
20 07/11 SQLite V
21 14/11 Data Modeling: ER Model V
22 14/11 Data Modeling: ER Model V
23 21/11 Query language: Views V
24 21/11 SQLite V

31
Jadwal
Prt Tgl Teori T P
25 28/11 Data Modeling Integrity Rules & Normalization V
26 28/11 Data Modeling Integrity Rules & Normalization V
27 05/12 Query Language: Integrity Constraints V
28 05/12 SQLite V
29 12/12 Data Modeling Integrity Rules & Normalization V
30 12/12 Data Modeling Integrity Rules & Normalization V
31 UAS V
32 Project 2 V

32

Anda mungkin juga menyukai

  • Inf0733 06P
    Inf0733 06P
    Dokumen30 halaman
    Inf0733 06P
    Renaldi Fernando
    Belum ada peringkat
  • Inf0733 11
    Inf0733 11
    Dokumen37 halaman
    Inf0733 11
    Renaldi Fernando
    Belum ada peringkat
  • Inf0733 01P
    Inf0733 01P
    Dokumen19 halaman
    Inf0733 01P
    Renaldi Fernando
    Belum ada peringkat
  • Inf0733 06
    Inf0733 06
    Dokumen18 halaman
    Inf0733 06
    Renaldi Fernando
    Belum ada peringkat
  • Inf0733 05
    Inf0733 05
    Dokumen50 halaman
    Inf0733 05
    Renaldi Fernando
    Belum ada peringkat
  • Inf0733 04
    Inf0733 04
    Dokumen20 halaman
    Inf0733 04
    Renaldi Fernando
    Belum ada peringkat
  • Inf0733 03
    Inf0733 03
    Dokumen43 halaman
    Inf0733 03
    Renaldi Fernando
    Belum ada peringkat
  • Inf2033 23
    Inf2033 23
    Dokumen71 halaman
    Inf2033 23
    Renaldi Fernando
    Belum ada peringkat
  • Inf0733 02
    Inf0733 02
    Dokumen59 halaman
    Inf0733 02
    Renaldi Fernando
    Belum ada peringkat