Slebew
Slebew
desc employees;
SELECT last_name "Nama Belakang", phone_number "Nomor Telepon", salary "Gaji" FROM
employees;
SELECT last_name "Nama Belakang", phone_number "Nomor Telepon", salary "Gaji", (salary+1000)
"Bonus" FROM employees;
--pertumuan3 Tugas
SELECT last_name "Nama Karyawan", salary "Gaji", (salary*15/100) "Tunjangan" FROM employees;
SELECT employee_id "NIK", last_name "Nama Karyawan", job_id "Kode Jabatan" FROM employees;
SELECT first_name ||' '|| last_name "Nama Lengkap",phone_number "Nomor Telepon" FROM
employees WHERE first_name ||' '|| last_name = 'Lisa Ozer';
--Catatan
SELECT first_name ||' '|| last_name "Nama Lengkap", department_id "Bagian Kerja", salary "Gaji"
FROM employees WHERE first_name LIKE 'Al%';
select last_name, department_id, salary from employees where salary >= 1400 and last_name like 'E
%';
select last_name, department_id, salary from employees where salary >= 1400 OR last_name like
'%E';
select last_name, department_id, salary from employees where salary between 1000 and 5000;
select first_name, department_id, salary from employees where salary between 1000 and 5000 and
first_name like 'A%';
--LATIHAN 29NOV
select employee_id, last_name, hire_date, salary from employees where employee_id in (100,120);
select employee_id, last_name, job_id, salary from employees where last_name like '%i' or salary >
10000;
select last_name, job_id, salary from employees where job_id in ('SH_CLERK', 'ST_CLERK');
select last_name, job_id, department_id from employees where department_id between 40 and 80;
select last_name "Nama Karyawan", salary "Gaji Pokok", commission_pct "Komisi", salary +
NVL(commission_pct,1000) "commission dengan NVL" from employees;
--NVL2(commission_pct,100,0) yang 100 itu yang ada nilai, kalo 0 itu yang gak ada nilai untuk nilai
100,0 bisa diganti
select 'Jabatan dari saudara/i '|| upper(last_name)||' adalah '||job_id "Data Karyawan" from
employees;
--*character-manipulation functions
--Instr : mengetahui letak dari suatu karakter tertentu dari suatu record
--Quis
--1.
select last_name, hire_date, salary from employees where hire_date < '21-Jun-1989';
--2.
select last_name, job_id, department_id, salary from employees where department_id between 50
and 80;
--3.
--4.
select last_name, job_id, salary from employees where last_name like'%e%' and salary between
5000 and 10000;
--5.
--6.
--8.
--SUM (Jumlah data), MAX (Nilai tertinggi dari data), MIN (Nilai terendah dari data)
select department_id, avg(salary) from employees group by department_id order by avg(salary) asc;
--HAVING : Menampilkan data yang merupakan hasil dari fungsi group by berdasarkan kondisi
tertentu
select department_id, avg(salary) from employees having avg(salary) > 8000 group by
department_id;
--select department_id, avg(salary) from employees where avg(salary) > 8000 group by
department_id; (error)
select department_id, avg(salary) from employees group by department_id having max(salary) >
1000;
--3 Desember
-- DUAL TABEL
-- KONVERSI
--- To_Date (konversi dari tipe data karakter ke tipe data date)
select last_name "Nama Karyawan", hire_date, to_char(hire_date, 'day, dd month yyyy') "Tanggal
Masuk Kerja" from employees;
select sysdate "Tanggal Sekarang", sysdate+7 "Tanggal Minggu Depan" from dual;
select sysdate "Tanggal Sekarang", sysdate-14 "Tanggal 14hari lalu" from dual;
select sysdate "Tanggal Sekarang",sysdate + 140/24 " Tanggal 140 jam kemudian" from dual;
-- Date fungsi
--UTS
--1
--3
--4
--6
select department_id "Department", salary "Gaji", count(*) "Jumlah Karyawan dgn Gaji Sama" from
employees group by department_id, salary;
show user;
nama_mahasiswa varchar2(25),
jk varchar2(9),
tempat_lahir varchar2(20),
tgl_lahir date,
agama varchar2(20),
alamat varchar2(100),
email varchar2(20),
telp varchar2(20),
ig varchar2(20));
desc datamahasiswa;
values('8020191089','Nanda Ghina','Perempuan','Jambi',
'27-Jan-2000','Islam','Jl. Tarmizi Kadir No 1', '[email protected]','081234567890','@nandaghina');
desc pasien;
--1
values ('A0001', 'Nanda Ghina', 'Jl. Tarmizi Kadir No 1', 'Perempuan', '27-Jan-2000', 'O+',
'081234567890', 'Maag');
--2
values ('A0002', 'Nuryani', 'Jl. Sudirman No 10', 'Perempuan', '20-Jun-1974', 'A+', '081234567891',
'Demam');
--3
values ('A0003', 'Asih', 'Jl. Baduri No 34', 'Perempuan', '16-Dec-2001', 'AB+', '081234567892', 'Flu dan
Batuk');
--4
values ('A0004', 'Diemas', 'Jl. Santoso No 11', 'Laki-Laki', '06-Jul-1989', 'B-', '081234567893', 'Tumor
jinak');
--5
values ('A0002', 'Lutfi', 'Jl. Baduri No 1', 'Laki-Laki', '08-Apr-2002', 'A-', '081234567894', 'DBD');
--update atau mengubah record
--6
values ('B0001', 'Firman', 'Jl. Santoso No 89', 'Laki-Laki', '28-Feb-1956', 'O-', '081234567895', 'Darah
Tinggi');
--7
values ('B0002', 'Nada', 'Jl. Sudirman No 67', 'Perempuan', '24-Apr-1960', 'B+', '081234567896',
'Jantung');
--8
values ('B0003', 'Ilham', 'Jl. Budiman No 9', 'Laki-Laki', '28-Feb-1952', 'O-', '081234567897', 'Flu dan
Batuk');
--9
values ('B0004', 'Karin', 'Jl. Sintapi No 67', 'Perempuan', '28-Sep-1956', 'AB-', '081234567898', 'Darah
Tinggi');
--HAPUS DATA
--10
values ('B0005', 'Juleha', 'Jl. Sintapi No 56', 'Perempuan', '14-Oct-1954', 'A+', '081234567889',
'Maag');
desc buku;
desc anggota;
desc peminjam;
MATERI CONSTRAINT
Buatlah table Buku dengan atribut, Id buku, judul buku, tehun terbit,pengarang dan penerbit
nama varchar(25),
tgl_lahir date,
tgl_pinjam date,
tgl_kembali date);
Input data berikut kedalam tebel buku
'GRAMEDIA');
'GRAMEDIA');
values('11','AG-01','BK-01','11-Jan-2023','13-Jan-2023');
Buatlah query untuk menampilkan judul buku, tanggal pinjam dan tanggal kembali
SELECT JUDUL_BUKU,TGL_PINJAM,TGL_KEMBALI
SELECT B.ID_BUKU,B.JUDUL_BUKU,B.TAHUN_TERBIT,P.KODE_PINJAM,P.TGL_PINJAM
SELECT B.ID_BUKU,B.JUDUL_BUKU,B.TAHUN_TERBIT,P.KODE_PINJAM,P.TGL_PINJAM
SELECT B.PENGARANG,B.JUDUL_BUKU,B.TAHUN_TERBIT,P.TGL_PINJAM,P.TGL_KEMBALI,
M.NAMA,M.ALAMAT,M.HP
CHAR(n)
Mendefenisikan string sepanjang n karakter, Bila N tidak disertakan, panjang karakter adalah 1.
VARCHAR(n)
Mendefenisikan string yang panjangnya bisa berubah-ubah sesuai dengan kebutuhan, namun string
tersebut dibatasi sebanyak n karakter. Oracle merekomendasikan varchar2.
VARCHAR2(n)
Mendefenisikan string yang panjangnya bisa berubah-ubah sesuai dengan kebutuhan, namun string
tersebut dibatasi sebanyak n karakter. Maksimum karakter pada varchar2 adalah 2000 karakter.
LONG
Mendefenisikan tipe data binary, maksimum 2 Gygabyte, disimpan dalam format internal Oracle.
LONG RAW
Sama dengan long yaitu mendefenisikan tipe data binary, maksimum 2 Gigabyte, tidak dikonversi
oleh Oracle (data mentah apa adanya
DATE
Mendefenisikan tanggal, menyimpan tahun, bulan, hari, jam, menit dan detik.
NUMBER(n,p)
Mendefenisikan angka pecahan, fixed decimal atau floating point, Nilai n adalah jumlah bytes total
dan p adalah presisi angka di belakang koma.
Create table
DESC datamahasiswa;
Syntax
Menambah collum/field
ADD fb varchar2(20);
Menghapus collumn
Menghapus table
Create table
Lihat datanya :
SELECT employee_id, last_name, salary, department_id FROM EMPLOYEES WHERE salary > &gaji;
ISI DENGAN A
ISI DENGAN d
SELECT * FROM EMPLOYEES WHERE salary >= &gaji AND FIRST_NAME LIKE '%&hurufnya%' ;
SELECT last_name, &kolom1, &kolom2 FROM employees WHERE salary > 2000;
department_id salary
Specify Expressions with Substitution Variable
Isi dengan
SELECT last_name, salary, job_id FROM EMPLOYEES WHERE salary &operator &nilai;
> 1000
SELECT last_name, salary, job_id FROM EMPLOYEES WHERE salary > 3000 Order by &urutan asc;
Salary
SELECT employee_id, last_name, salary, department_id FROM EMPLOYEES WHERE salary > &&gaji;
SELECT employee_id, last_name, salary, department_id FROM EMPLOYEES WHERE salary < &&gaji;
Untuk menghapus variable yang sudah disimpan dengan &&, digunakan perintah/query:
UNDEFINE variable
Contoh:
UNDEFINE gaji
Ketika query dieksekusi lagi maka akan ditampilkan input (sama seperti ketika pertama kali
dieksekusi)
SELECT employee_id, last_name, salary, department_id FROM EMPLOYEES WHERE salary < &&gaji;
DEFINE and UNDEFINE Commands
Buat Query yang menerima input dari pengguna berupa 1 huruf dan menampilkan ID Karyawan,
Nama Belakang, Gaji, dari karyawan dengan Nama Belakang yang mengandung huruf tersebut.
Select employee_id, last_name, salary from employees where last_name like '%&huruf%';
Buat Query yang menampilkan data LAST_NAME, DEPARTMENT_ID, SALARY dengan kondisi, record
yg ditampilkan adalah record dengan Department_id antara dua buah nilai yang diinputkan
pengguna
Berdasarkan tipe data yang diproses, single-row function dibagi menjadi lima jenis, yaitu:
5. General Function merupakan function yang bisa digunakan untuk memproses semua tipe
data.
Character Function
• NVL,
• NVL2,
• NULLIF,
• COALESECE,
• CASE, dan
• DECODE.
Fungsi karakter
• huruf kecil.
• INITCAP(kolom/ekspresi), untuk mengubah huruf pertama dari setiap kata menjadi huruf
besar.
b. Character-manipulation functions
- CONCAT
- SUBSTR
- LENGTH
- INSTR
- LPAD
- RPAD
- TRIM
- REPLACE
FUNCTION RESULT
SUBSTR(‘HelloWorld’,1,5) Hello
LENGTH(‘HelloWorld’) 10
INSTR(‘HelloWorld’, ‘W’) 6
LPAD(salary,10,’*’) *****24000
Menampilkan hasil dari pembulatan (rounding) suatu nilai atau bilangan sesuai dengan presisi yang
diinginkan.
Menampilkan hasil pemotongan dari suatu nilai (bilangan) sesuai dengan presisi yang diinginkan.
MOD(1600,300) =100
Fungsi MySQL SYSDATE digunakan untuk menghasilkan tanggal dan waktu sekarang.
Contoh Input:
Tanggal juga dapat dilakukan operasi aritmetika dengan pola seperti pada tabel berikut.
Tanggal - tanggal Jumlah hari Mengurangi satu tanggal dari tanggal yang lain
Contoh input:
MONTHS_BETWEEN(tgl1, tgl2), mencari jumlah bulan di antara tgl1 dan tgl2.Hasilnya dapat
berupa positif atau negatif. Jika tgl1 lebih besar dari tgl2 maka hasilnya positif.
ADD_MONTHS(tgl, n), menambahkan sejumlah n bulan ke tgl. n harus berupa integer dan
dapat berupa bilangan negatif.
NEXT_DAY(tgl, “char”), menemukan hari berikut dari sebuah tanggal yang dispesifikasikan.
Nilai dari „char‟ dapat berupa angka yang merepresentasikan hari atau string.
LAST_DAY(tgl), menemukan tanggal hari terakhir dari bulan dimana tgl berada.
ROUND(tgl[, “fmt”]), mengembalikan tgl yang di-round sebanyak unit yang dispesifikaskan
oleh fmt. Jika fmt tidak disebutkan, tgl di-round ke hari yang terdekat.
TRUNC(tgl[, “fmt”]), mengembalikan tgl dengan porsi waktu dari hari yang di-truncate
sebanyak unit yang dispesifikasikan oleh fmt. Jika fmt tidak disebutkan, tgl di-truncate ke
hari yang terdekat.
Contoh input:
Contoh input:
Tipe data konversi terbagi atas dua, yaitu : implicit dan explicit. Implisit berarti dikerjakan secara
otomatis oleh server Oracle, sedangkan eksplisit berarti dilakukan secara manual oleh user
Syntax :
Contoh input:
Contoh input:
TO_DATE(char, [ fmt], [ nslparam]), mengkonversi string yang menunjukkan tanggal ke dalam bentuk
DATE berdasarkan format yang ditentukan pada fmt. Jika fmt tidak disebutkan, maka format yang
digunakan adalah DD-MON-YY.
MM 2 digit bulan
DD 2 digit tanggal
Contoh input:
Contoh input:
Contoh input:
GENERAL FUNCTION
NVL (Null Value) adalah fungsi yang sangat mampu untuk mengatasi tersebut. NVL adalah fungsi
untuk mengembalikan sebuah nilai null menjadi nilai yang kita inginkan.
Contoh input:
Bedakan
Dimana :
Contoh input
NULLIF ini akan membandingkan nilai dari ekspresi1 dan ekspresi2. Jika nilai dari ekspresi1 dan
ekspresi2 bernilai SAMA, maka fungsi NULLIF akan mengembalikan nilai NULL, namun jika nilai dari
ekspresi1 dan ekspresi2 berbeda maka fungsi NULLIF akan mengembalikan nilai ekspresi1.
Contoh input
COALESCE akan mengembalikan ekpresi pertama yang BUKAN null dari beberapa ekspresi yang ada.
Jika ternyata semua ekspresi bernilai null maka fungsi COALESCE akan mengembalikan null. Pada
fungsi COALESCE ini, database akan mengevaluasi setiap nilai dan menentukan apakah dia null atau
tidak, tanpa mengevaluasi semua ekspresi sebelum menentukan apakah salah satu dari semua
ekspresi tersebut adalah null.
Contoh input
Bedakan
Conditional Expressions
CASE ini merupakan alternatif penggunaan IF-THEN-ELSE pada pemrograman. Sehingga dengan
menggunakan fungsi CASE, kita dapat memberikan hasil berdasarkan pemilihan kondisi yang telah
ditetapkan.
Syntax :
Select last_name, department_id, Salary, CASE department_id WHEN 50 THEN 1.10*salary WHEN
80 THEN 1.15*salary WHEN 100 THEN 1.20*salary ELSE salary END "Diperbaiki_SALARY_Nya" FROM
Employees
DECODE Sama seperti penggunaan CASE , DECODE juga merupakan alternative penggunaan
kondisional IF-THEN-ELSE. DECODE bekerja menggunakan nilai, kolom, dan ekspresi dengan semua
jenis data.
Syntax :
Contoh input
Select last_name, department_id, Salary, DECODE (department_id, 50, 1.10*salary, 80, 1.15*salary,
100, 1.20*salary, salary) Diperbaiki_SALARY_Nya FROM Employees
Kemudian diikuti dengan nama untuk tabel baru, dan semua Field.
SYNTAX :
Constraint
Contoh constraints : Untuk membuat tabel acuan (reference) dengan Primary Key
Tabel barang
kode_supplier char(5),
nama_supplier varchar2(30),
alamat_supplier varchar2(30),
kota_supplier varchar2(15),
Tabel Customer
kode_customer char(6),
nama_customer varchar2(30),
alamat_customer varchar2(30),
kota_customer varchar2(15),
Tabel Pasok
kode_pasok char(10),
kode_barang char(6),
kode_supplier char(5),
tanggal_pasok date,
jumlah_pasok number(4),
references barang(kode_barang),
references supplier(kode_supplier));
Tabel Pembelian
kode_pembelian char(10),
kode_barang char(6),
kode_customer char(6),
tanggal_pembelian date,
jumlah_pembelian number(4),
kode_barang, kode_customer),
references barang(kode_barang),
references customer(kode_customer));
Manipulating data
Data Manipulation Language (DML) adalah bahasa yang digunakan untuk mengakses dan
memanipulasi data. Manipulasi data mengacu pada pengambilan, penyisipan, penghapusan dan
modifikasi data atau informasi yang disimpan dalam database.
Tujuan dasarnya adalah untuk mencapai interaksi user yang efisien dengan sistem database.
Pada prinsipnya insert bertujuan untuk mengisikan data/record ke dalam suatu tabel. Pengisian data
ini bisa satu record penuh atau hanya sebagian saja.
Syntax
INSERT INTO nama_tabel (nama field ke-1, ………,nama field ke-n) VALUES (nilai_field ke-1,
……..,nilai_field ke-n)
Syntax
UPDATE nama_table
Penghapusan data bisa dilakukan secara keseluruhan dan bisa juga dilakukan sebagian.
Syntax
[WHERE Kondisi]
values ('PAS-1','BRG-2','SUP-1','12-MAR-18',20);
MATERI multiple row function
Ada berapa orang yang nama depannya (first_name) diawali dengan huruf ‘A’?
Tampilkan Jumlah gaji, gaji tertinggi dan gaji terendah dari karyawan di department_id 20
Contoh: Menampilkan rata-rata dari seluruh data salary dan dikelompokkan berdasarkan field
(kolom) DEPARTMENT_ID
Contoh: Menampilkan rata-rata dari seluruh data salary dan dikelompokkan berdasarkan field
(kolom) DEPARTMENT_ID dan diurutkan berdasarkan rata-rata seluruh data salary
SELECT department_id, AVG(salary) FROM EMPLOYEES WHERE AVG(salary) > 8000 GROUP BY
department_id;
Menampilkan data yang merupakan hasil dari fungsi group by berdasarkan kondisi tertentu
SELECT department_id, AVG(salary) FROM EMPLOYEES HAVING AVG(salary) > 8000 GROUP BY
department_id;
Temukan Gaji Tertinggi, Gaji Terendah, Jumlah Seluruh Gaji, dan Rata-rata Seluruh Gaji. Beri label
(judul) setiap kolomnya Gaji Tertinggi, Gaji Terendah, Jumlah Seluruh Gaji, dan Rata-rata seluruh gaji.
Bulatkan Rata-rata gaji menjadi 2 angka di belakang koma.
SELECT MAX(SALARY) "Gaji Tertinggi", MIN(SALARY) "Gaji Terendah", SUM(SALARY) "Jumlah Seluruh
Gaji", ROUND(AVG(SALARY),2) "Rata-rata Gaji" from employees;
SELECT COUNT(*) FROM EMPLOYEES WHERE SALARY BETWEEN 10000 AND 20000;
Berapa orang karyawan dengan nomor telepon yang diawali dengan 515.
SELECT job_id "Bagian Kerja", COUNT(*) "Jumlah Karyawan" FROM EMPLOYEES GROUP BY job_id;
Berapa orang karyawan yang memiliki gaji (salary) yang sama di setiap department.
SELECT DEPARTMENT_ID "Department", SALARY "Gaji", COUNT(*) "Jumlah Karyawan dgn Gaji Sama"
FROM EMPLOYEES GROUP BY DEPARTMENT_ID, SALARY ;
MATERI SYSDATE
SYSDATE adalah fungsi yang digunakan untuk menampilkan tanggal dan waktu dari sistem.
Date + number
Select SYSDATE "Tanggal Sekarang" , SYSDATE + 7 "Tanggal Minggu Depan" FROM DUAL ;
Date - number
Select SYSDATE "Tanggal Sekarang" , SYSDATE - 14 "Tanggal 14 hari lalu" FROM DUAL ;
Date – Date
Select SYSDATE "Tanggal Sekarang" , SYSDATE + 140/24 "Tanggal 140 jam kemudian" from DUAL ;
Date Functions
MONTHS_BETWEEN
ADD_MONTHS
select sysdate “Tanggal Kini", add_months(sysdate,6) “Tanggal 6 Bulan lagi" from dual;
NEXT_DAY
Membulatkan tanggal :
select
round(to_date('25-MAY-19'),'month'),
round(to_date('25-DEC-19'),'year'),