Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

SQL Server :: Transact– SQL #1 Laboratorium Perancangan/Pemrograman Basis Data Komposisi oleh Budi Prayitno Februari 2012 Batam.

Presentasi serupa


Presentasi berjudul: "SQL Server :: Transact– SQL #1 Laboratorium Perancangan/Pemrograman Basis Data Komposisi oleh Budi Prayitno Februari 2012 Batam."— Transcript presentasi:

1 SQL Server :: Transact– SQL #1 Laboratorium Perancangan/Pemrograman Basis Data Komposisi oleh Budi Prayitno Februari 2012 Batam

2 Daftar SQL Statement SELECT Data Manipulation Language [DML] INSERT UPDATE DELETE CREATE Data Definition Language [DDL] ALTER DROP TRUNCATE GRANT Data Control Language [DCL] REVOKE COMMIT Transaction Control ROLLBACK BEGIN TRANSACTION END TRANSACTION

3 SELECT Statement Dasar SELECT * | {[DISTINCT] column | expression [alias],...} FROM table;  SELECT berisi column yang ditampilkan  FROM berisi table dari mana column terkait dipilih

4 Memilih Semua Column SELECT * FROM departments; DEPARTMENT_IDDEPARTMENT_NAMEMANAGER_IDLOCATION_ID 10Administration2001700 20Marketing2011800 30Purchasing1141700 40Human Resources2032400 50Shipping1211500 60IT1031400...

5 Memilih Column Tertentu SELECT department_id, location_id FROM departments; DEPARTMENT_IDLOCATION_ID 101700 201800 301700 402400 501500 601400...

6 Kaidah Penulisan SQL  Tidak case–sensitive kecuali diapit tanda petik tunggal “’”atau petik ganda “””  Dapat dituliskan dalam satu atau lebih baris  Kata kunci tidak dapat disingkat atau dipisah  Clause biasanya ditulis dalam baris terpisah  Indentasi digunakan untuk mempermudah pembacaan  SQL statement dapat diakhiri dengan “;”

7 Ekspresi Aritmatika  +Penambahan  –Pengurangan  *Perkalian  /Pembagian Presedensi: [* /] [+ –]

8 Penggunaan Operator Aritmatika SELECT first_name, last_name, salary, salary + 300 FROM employees; FIRST_NAMELAST_NAMESALARYSALARY+300 DonaldOConnell26002900 DouglasGrant26002900 JenniferWhalen44004700 MichaelHartstein1300013300 PatFay60006300 SusanMavris65006800...

9 Pendefinisian Column Alias  Mengubah tampilan header  Dapat digunakan terhadap ekspresi/kalkulasi  Digunakan menggunakan kata kunci “AS” atau langsung mengikuti nama column  Memerlukan tanda petik ganda “”” jika alias mengandung spasi, karakter khusus atau ketika dimaksudkan sebagai case– sensitive

10 Penggunaan Column Alias SELECT first_name nama, comission_pct AS komisi FROM employees; SELECT first_name AS “Nama”, salary * 12 “Gaji Tahunan” FROM employees;

11 Operator Konkatenasi  Menghubungkan column atau string dengan column atau string lain  Direpresentasikan dengan “+”  Menghasilkan string SELECT first_name + ‘adalah seorang’ + job_id FROM employees;

12 Duplikasi Row SELECT department_id FROM employees; SELECT DISTINCT department_id FROM employees; DEPARTMENT_ID 50 10 20 40 DEPARTMENT_ID 50 10 20 40

13 WHERE Clause  Membatasi pemilihan row pada SELECT menggunakan WHERE clause SELECT * | {[DISTINCT]} column | expression [alias],...} FROM table [WHERE condition(s)];  WHERE clause diposisikan tepat setelah FROM clause

14 Penggunaan WHERE SELECT employee_id, first_name, job_id, department_id FROM employees WHERE department_id = 90;

15 Operator Perbandingan =Sama dengan >Lebih besar >=Lebih besar atau sama dengan !>Tidak lebih besar <Lebih kecil <=Lebih kecil atau sama dengan !<Tidak lebih kecil !=<>Tidak sama dengan BETWEEN … AND …Berada di antara dua nilai INSama dengan nilai dalam daftar LIKECocok dengan pola tertentu IS NULLMerupakan nilai NULL

16 Penggunaan Operator Perbandingan SELECT first_name, salary FROM empoyees WHERE salary = 2500; memberikan hasil yang sama dengan: SELECT first_name, salary FROM empoyees WHERE salary BETWEEN 2500 AND 3500;

17 Operator IN SELECT employee_id, first_name || last_name emp_name, salary, manager_id FROM employees WHERE manager_id IN (100, 101, 201);

18 Operator LIKE SELECT first_name, last_name FROM employees WHERE first_name LIKE ‘S%’ AND last_name NOT LIKE ‘_a%’;

19 Operator IS NULL SELECT employee_id, manager_id FROM employees WHERE manager_id IS NULL;

20 Operator Logika ANDMengembalikan TRUE jika kedua operand bernilai TRUE ORMengembalikan TRUE jika salah satu atau kedua operand bernilai TRUE NOTNegasi, mengembalikan TRUE jika operand bernilai FALSE, dan sebaliknya Digunakan bersama operator lain tidak berdiri sendiri

21 Penggunaan Operator Logika SELECT employee_id, FROM employees WHERE salary >= 10000 AND (job_id LIKE ‘%MGR%’ OR job_id LIKE ‘%MAN%’) AND departement_id NOT IN (50, 80);

22 ORDER BY Clause  Berguna untuk mengurutkan row yang dipilih berdasarkan column yang ditentukan pada ORDER BY clause  ASC: membesar, merupakan nilai default DESC: mengecil  Diposisikan paling akhir pada SELECT statement

23 ORDER BY Clause SELECT * | {[DISTINCT] column | expression [alias],...} FROM table; [WHERE condition(s)] [ORDER BY {column, expression, alias} [ASC | DESC]];

24 Penggunaan ORDER BY Clause SELECT first_name, job_id, department_id, hire_date, salary * 12 annual_salary FROM employees WHERE 1 = 1 ORDER BY hire_date DESC, annual_salary;

25 Character Function LOWER Case–Manipulation Function UPPER SUBSTRING Character–Manipulation Function LEN PATINDEX LTRIM | RTRIM STUFF

26 Character Function LOWER (‘SQL Query’)sql query UPPER (‘SQL Query’)SQL QUERY SUBSTRING (‘HelloWorld’, 1, 5)Hello LEN (‘HelloWorld’)10 PATINDEX (‘%loWo%’, ‘HelloWorld’)4 STUFF (‘abcdef’, 2, 3, ‘ijklm’)aijklmnef LTRIM ( ‘ HelloWorld’)HelloWorld

27 Penggunaan Character Function SELECT employee_id, first_name + last_name AS name, job_id, LEN (last_name), PATINDEX (‘%a%’, last_name) FROM employees WHERE SUBSTRING (job_id, 4, 3) = ‘REP’;

28 Number Function ROUND (123.4545, 2)123.45

29 Date Function DATEDIFFSelisih di antara 2 tanggal DATEADDMenambahkan hari kalender ke tanggal CONVERTFormat tanggal

30 Nested Function  Fungsi dapat bersarang hingga kedalaman tidak terhingga  Fungsi bersarang dievaluasi mulai hingga yang terdalam hingga terluar F3 ({F2 ({F1 ({arg1,...}),...}),...}) LOWER (CONCAT (SUBSTR (first_name, 1, 1), last_name))

31 Group Function  AVG  COUNT  MAX  MIN  STDEV  SUM  VAR

32 Group Function EMPLOYEE_IDSALARY... 2068300 10024000 10117000 10217000 1039000 1046000... MAX (SALARY) 24000

33 Penggunaan Group Function SELECT AVG (salary), MAX (salary), MIN (salary), SUM (salary) FROM employees WHERE job_id LIKE ‘%REP%’  MIN dan MAX dapat digunakan untuk tipe data numeric, string dan date

34 COUNT Function SELECT COUNT (*) FROM employees WHERE department_id = 50; SELECT COUNT (comission_pct) FROM employees WHERE department_id = 80; SELECT COUNT (DISTINCT department_id) FROM employees;

35 NULL pada Group Function  Group function mengabaikan nilai NULL pada column SELECT AVG (comission_pct) FROM employees;  Untuk menyertakan column bernilai NULL, gunakan NVL SELECT AVG (NVL (comission_pct, 0)) FROM employees;

36 GROUP BY Clause  Mengakomodasi keberadaan group function, namun tidak mandatory SELECT [column,] group_function (column),... FROM table [WHERE condition] [GROUP BY column] [ORDER BY column];

37 Penggunaan GROUP BY Clause SELECT department_id, AVG (salary)... column pada GROUP BY clause tidak mandatory pada SELECT clause SELECT AVG (salary) FROM employees GROUP BY department_id ORDER BY department_id;

38 Penggunaan GROUP BY Clause  Menggunakan lebih dari satu column pada GROUP BY clause: SELECT department_id dept_id, job_id, SUM (salary) FROM employees GROUP BY department_id, job_id;

39 Penggunaan GROUP BY Clause  Column yang bukan group function pada SELECT clause mandatory didefinisikan pada GROUP BY clause: SELECT department_id, COUNT (employee_id) FROM employees; ERROR at line 1: ORA-00937: not a single–group group function

40 Penggunaan GROUP BY Clause  Group function tidak dapat digunakan pada WHERE clause: SELECT department_id, AVG (salary) FROM employees WHERE AVG (salary) > 8000 GROUP BY department_id; ERROR at line 3: ORA-00934: group function is not allowed here

41 HAVING Clause SELECT [column,] group_function (column),... FROM table [WHERE condition] [GROUP BY column] [HAVING group_condition] [ORDER BY column];

42 HAVING Clause SELECT department_id, MAX (salary) FROM employees GROUP BY department_id HAVING MAX (salary) > 10000; SELECT job_id, SUM (salary) payroll FROM employees WHERE job_id NOT LIKE ‘%REP%’ GROUP BY job_id HAVING SUM (salary) > 13000 ORDER BY job_id;

43 Nested Group Function SELECT MAX (AVG (salary)) FROM employees GROUP BY department_id;

44 Pengambilan Data dari Beberapa Table EMPLOYEE_IDFIRST_NAMEDEPARTMENT_ID 198Donald50 199Douglas50... 201Michael20 202Pat20 203Susan40 DEPARTMENT_IDDEPARTMENT_NAMEMANAGER_ID 10Administration200 20Marketing201... 40Human Resources203 50Shipping121 60IT103 EMPLOYEE_IDFIRST_NAMEDEPARTMENT_IDDEPARTMENT_NAME 198Donald50Shipping 199Douglas50Shipping... 201Michael20Marketing 202Pat20Marketing 203Susan40Human Resources

45 Jenis JOIN  INNER JOIN sama dengan JOIN  LEFT OUTER JOIN sama dengan LEFT JOIN  RIGHT OUTER JOIN sama dengan RIGHT JOIN  FULL OUTER JOIN sama dengan FULL JOIN  CROSS JOIN

46 JOIN Clause SELECT table1.column, table2.column FROM table1 [JOIN table2 USING (column_name)] | [JOIN table2 ON (table1.column_name = table2.column_name)] | [LEFT | RIGHT | FULL OUTER JOIN table2 ON (table1.column_name = table2.column_name)] | [CROSS JOIN table2];

47 NATURAL JOIN  Didasarkan pada semua column pada kedua table yang memiliki nama yang sama  Menampilkan row dari kedua table yang memiliki nilai yang sama pada column yang didefinisikan  Jika terdapat column dengan nama yang sama namun tipe data yang berbeda, maka terjadi error

48 NATURAL JOIN SELECT department_id, department_name, location_id, city FROM departments NATURAL JOIN locations;

49 USING Clause  Digunakan untuk memodifikasi NATURAL JOIN untuk mendefinisikan column yang digunakan untuk equijoin seandainya terdapat column dengan nama yang sama namun tidak digunakan

50 USING dan ON Clause SELECT d.department_id, d.department_name, d.location_id, l.city FROM departments d JOIN locations l USING (location_id); memberikan hasil yang sama dengan: ON (d.location_id = l.location_id);

51 JOIN Lebih Lanjut SELECT e.first_name + e.last_name, d.department_name FROM employees e JOIN departments d ON (e.department_id = d.department_id)... JOIN locations l ON (d.location_id = l.location_id)... AND e.manager_id = 149;

52 Non-Equijoin SELECT e.first_name + e.last_name AS name, e.salary, j.grade_level FROM employees e JOIN job_grades g ON e.salary BETWEEN j.lowest_sal AND j.highest_sal;

53 OUTER JOIN  JOIN yang mengembalikan tidak hanya baris yang memenuhi, namun juga yang tidak memenuhi, persyaratan JOIN  Diterapkan pada sisi kiri [LEFT], sisi kanan [RIGHT] atau kedua sisi [FULL] persyaratan JOIN

54 Penggunaan OUTER JOIN SELECT e.first_name, d.department_name FROM employees e LEFT OUTER JOIN departments d... RIGHT OUTER JOIN departments d... FULL OUTER JOIN departments d ON e.department_id = d.department_id;

55 LEFT OUTER JOIN EMPLOYEE_IDFIRST_NAMEDEPARTMENT_ID 198Donald50 199Douglas50 200Andreas70 201Michael20 202Pat20 203Susan40 DEPARTMENT_IDDEPARTMENT_NAMEMANAGER_ID 10Administration200 20Marketing201 30Finance202 40Human Resources203 50Shipping121 60IT103 EMPLOYEE_IDFIRST_NAMEDEPARTMENT_IDDEPARTMENT_NAME 198Donald50Shipping 199Douglas50Shipping 200Andreas70 201Michael20Marketing 202Pat20Marketing 203Susan40Human Resources

56 EMPLOYEE_IDFIRST_NAMEDEPARTMENT_IDDEPARTMENT_NAME 10Administration 198Donald50Shipping 199Douglas50Shipping 201Michael20Marketing 202Pat20Marketing 30Finance 203Susan40Human Resources 60IT RIGHT OUTER JOIN EMPLOYEE_IDFIRST_NAMEDEPARTMENT_ID 198Donald50 199Douglas50 200Andreas70 201Michael20 202Pat20 203Susan40 DEPARTMENT_IDDEPARTMENT_NAMEMANAGER_ID 10Administration200 20Marketing201 30Finance202 40Human Resources203 50Shipping121 60IT103

57 FULL OUTER JOIN EMPLOYEE_IDFIRST_NAMEDEPARTMENT_ID 198Donald50 199Douglas50 200Andreas70 201Michael20 202Pat20 203Susan40 DEPARTMENT_IDDEPARTMENT_NAMEMANAGER_ID 10Administration200 20Marketing201 30Finance202 40Human Resources203 50Shipping121 60IT103 EMPLOYEE_IDFIRST_NAMEDEPARTMENT_IDDEPARTMENT_NAME 10Administration 198Donald50Shipping 199Douglas50Shipping 200Andreas 201Michael20Marketing 202Pat20Marketing 30Finance 203Susan40Human Resources 60IT

58 CROSS JOIN SELECT e.first_name, d.department_name FROM employees e CROSS JOIN departments d memberikan hasil yang sama dengan: SELECT e.first_name, d.department_name FROM employees e, departments d * perhatikan statement kedua tanpa WHERE clause

59 CROSS JOIN EMPLOYEE_IDFIRST_NAMEDEPARTMENT_ID 198Donald50 199Douglas50 200Andreas70 DEPARTMENT_IDDEPARTMENT_NAMEMANAGER_ID 10Administration200 20Marketing201 30Finance202 EMPLOYEE_IDFIRST_NAMEDEPARTMENT_IDDEPARTMENT_NAME 198Donald10Administration 198Donald20Marketing 198Donald30Finance 199Douglas10Administration 199Douglas20Marketing 199Douglas30Finance … 200Andreas30Finance

60 INSERT Statement Dasar INSERT INTO table (column1, column2,..., columnN) VALUES (value1, value2, …, valuesN);  Jika column tidak disebutkan, maka semua column diisi terurut dari pertama hingga terakhir  VALUES berisi nilai yang dimasukkan ke column

61 INSERT … SELECT … INSERT INTO tableX (column1, column2,..., columnN) SELECT columnA, columnB, …, columnM FROM tableY WHERE condition(s);  Table sumber tableY dapat berbeda dari table tujuan tableX  Faktor penentu keberhasilan eksekusi hanya kesamaan tipe data dan ukuran data

62 Penggunaan INSERT INSERT INTO employees (employee_id, last_name, salary) VALUES (999, Duke, 15000); INSERT INTO employees (employee_id, last_name, salary) SELECT 999, Duke, salary FROM employees WHERE employee_id = 198;

63 UPDATE Statement Dasar UPDATE table SET column1 = value1[, …, columnN = valueM] WHERE condition(s);  Jika WHERE clause tidak dispesifikasikan, maka column yang disebutkan pada semua row dalam table akan diubah nilainya  SET clause dapat mengubah satu atau lebih column dalam satu UPDATE statement  Satu UPDATE statement dapat mengubah hanya satu row data

64 Penggunaan UPDATE UPDATE employees SET first_name = ‘Duke’, last_name = ‘Hazard’, email = ‘duke.hazard@database.org’ WHERE employee_id = 198;

65 DELETE Statement Dasar DELETE table WHERE condition(s);  Jika WHERE clause tidak dispesifikasikan, maka semua row dalam table akan dihapus  DELETE statement digunakan untuk menghapus satu atau lebih row dalam satu table saja

66 Penggunaan DELETE DELETE employees WHERE employee_id = 198;


Download ppt "SQL Server :: Transact– SQL #1 Laboratorium Perancangan/Pemrograman Basis Data Komposisi oleh Budi Prayitno Februari 2012 Batam."

Presentasi serupa


Iklan oleh Google