query 2 sql
TRANSCRIPT
Soal-soal SQL
1. Membuat database baruCREATE DATABASE `AKADEMIK` ;
2. Membuat table baruCREATE TABLE `MHS` (`NIM` CHAR( 4 ) NOT NULL ,`NAMA` VARCHAR( 12 ) NOT NULL ,`JURUSAN` VARCHAR( 10 ) NOT NULL ,`PRODI` VARCHAR( 10 ) NOT NULL ,`KOTA` VARCHAR( 10 ) NOT NULL ) ENGINE = MYISAM ;
3. Mengubah struktur tableALTER TABLE `mhs` CHANGE `NAMA` `NAMAMHS` VARCHAR( 12 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL
4. Memasukkan / menyisipkan dataINSERT INTO `AKADEMIK`.`mhs` (`NIM` ,`NAMAMHS` ,`JURUSAN` ,`PRODI` ,`KOTA` )VALUES ('3.34.09.1.27', 'YUANITA', 'ELEKTRO', 'INFORMATIKA', 'SEMARANG'), ('3.34.09.1.25', 'REYHAN', 'ELEKTRO', 'INFORMATIKA', 'SEMARANG');
5. Menampilkan semua isi tabelSELECT * FROM `mhs` LIMIT 0 , 30
6. Mengubah record dataUPDATE `AKADEMIK`.`mhs` SET `NAMAMHS` = 'REYHANA',`PRODI` = 'INFORMATIKA' WHERE CONVERT( `mhs`.`NIM` USING utf8 ) = '3.34' AND CONVERT( `mhs`.`NAMAMHS` USING utf8 ) = 'REYHAN' AND CONVERT( `mhs`.`JURUSAN` USING utf8 ) = 'ELEKTRO' AND CONVERT( `mhs`.`PRODI` USING utf8 ) = 'INFORMATIK' AND CONVERT( `mhs`.`KOTA` USING utf8 ) = 'SEMARANG' LIMIT 1 ;
7. MENAMBAHKAN FIELD PADA TABEL
UPDATE `akademik2`.`mhs` SET `ALAMAT` = 'JLN. AMAN' WHERE `mhs`.`nim` = '006' AND `mhs`.`nama` = 'FAISAL' AND `mhs`.`jurusan` = 'ELEKTRO' AND `mhs`.`prodi` = 'INFOKOM' AND CONCAT(`mhs`.`IPK`) = '3.00' AND `mhs`.`KOTA` = 'INDONESIA' AND `mhs`.`ALAMAT` = '18' LIMIT 1; UPDATE `akademik2`.`mhs` SET `ALAMAT` = 'JLN. BUKIT' WHERE `mhs`.`nim` = '007' AND `mhs`.`nama` = 'GANDI' AND `mhs`.`jurusan` = 'ELEKTRO' AND `mhs`.`prodi` = 'INFOKOM' AND CONCAT(`mhs`.`IPK`) = '3.10' AND `mhs`.`KOTA` = 'INDIA' AND `mhs`.`ALAMAT` = '18' LIMIT 1; UPDATE `akademik2`.`mhs` SET `ALAMAT` = 'JLN. KECIL' WHERE `mhs`.`nim` = '008' AND `mhs`.`nama` = 'HARRY' AND `mhs`.`jurusan` = 'ELEKTRO' AND `mhs`.`prodi` = 'INFOKOM' AND CONCAT(`mhs`.`IPK`) = '3.00' AND `mhs`.`KOTA` = 'MAN. CITY' AND `mhs`.`ALAMAT` = '18' LIMIT 1; UPDATE `akademik2`.`mhs` SET `ALAMAT` = 'JLN. GEDHE' WHERE `mhs`.`nim` = '009' AND `mhs`.`nama` = 'IRIN' AND `mhs`.`jurusan` = 'ELEKTRO' AND `mhs`.`prodi` = 'INFOKOM' AND CONCAT(`mhs`.`IPK`) = '3.45' AND[...]
8. Tampilkan seluru data mahasiswa yang memiliki IPK lebih dari 3.00Pencarian SQL: SELECT * FROM `mhs` WHERE `IPK` >= 3.00LIMIT 0 , 30
9. Tampilkan seluru data mahasiswa jurusan elektro yang memiliki IPK lebih dari 3.00SELECT * FROM `mhs` WHERE `JURUSAN` LIKE CONVERT( _utf8 'elektro'USING latin1 ) COLLATE latin1_swedish_ciAND `IPK` >= 3.00LIMIT 0 , 30
10. Carilah seluruh nama mahasiswa beserta tgl lhirnya untuk mhs jrusan elektro yg brasal dr kota semarang.
SELECT * FROM `mhs` WHERE `JURUSAN` LIKE CONVERT( _utf8 'elektro'USING latin1 ) COLLATE latin1_swedish_ciAND `KOTA` LIKE CONVERT( _utf8 'semarang'USING latin1 ) COLLATE latin1_swedish_ciLIMIT 0 , 30
SELECT nama, tglFROM mhsWHERE jurusan = 'elektro'AND kota = 'semarang'LIMIT 0 , 30
11. Carilah seluruh nama mhs bserta jrusan dan prodinya untuk mhs yang brasal dari kota semarang dan memilki ipk lbih dari 2.00
SELECT nama, jurusan, prodiFROM mhsWHERE kota = 'semarang'AND ipk > 2.00LIMIT 0 , 30
12. Carilah seluruh data mahasiswa yang dimulai huruf ’A’ SELECT * FROM `mhs` WHERE nama_mhs like 'a%'
13. Cari data mahasiswa jurusan elektro yang ipk antara 2.00 – 3.00SELECT * FROM `mhs` WHERE jurusan like 'elektro' and ipk between 2 and 3.50
SELECT * FROM `mhs` WHERE jurusan = 'elektro'and ipk > 2 and ipk < 3.50
14. Carilah seluruh data mahasiswa yang berasal dari semarang atau magelangSELECT * FROM `mhs` WHERE kota = 'semarang'or kota = 'magelang'
SELECT * FROM `mhs` WHERE kota in ('semarang','magelang')
15. carilah banyaknya mahasiswa di jurusan elektroSELECT jurusan, count('elektro') FROM mhs group by jurusan
SELECT count(nim) as banyakfrom mhsgroup by jurusan
Fungsi dalam my sql# count() = mencari kuantitas#sum() = mencari jumlah#avg() = Mencari rata-rata
#max() = mencari nilai maks#min() = mencari nilai min
16. carilah jurusan yang banyak nya mahasiswa lebih dari 2SELECT count(nim) as banyakfrom mhsgroup by jurusanhaving count(nim)>2
17. Carilah ipk rata2 mahasiswa jurusan elektroSELECT avg(ipk) as banyakfrom mhswhere jurusan ='elektro'group by jurusan
18. carilah jurusan yg jumlah ipk ny paling besarSELECT jurusan, max(ipk)FROM `mhs`
19. SELECT jurusan,count(nim) FROM `mhs` group by jurusan
20.
21. Cari lah ipk >= 3.75 = magna cumlaudei. Ipk >= 3.50 = summa cumlaude
ii. Ipk >= 3,25 cumlaudeiii. Ipk < 3.25 = biasa
Menggunakan case when
Select …..CaseWhen . . . then . . . Else . . . . End case as predikat From …..
Select nama_mhs,ipk,CaseWhen ipk >= 3.75 then 'magna cumlaude' When ipk >= 3.50 then 'summa cumlaude'When ipk >= 3.25
then 'cumlaude' else 'biasa'End as predikat From mhs
22. Buatlah
NIM NAMA IPK Data_tgl_skr
Select nim,namamhs,ipk,current_date as ‘data_tanggal_sekarang’From mhs
23. buatlah
NIM NAMA Kota_asal keterangan
Select nim,nama_mhs, kota,Case When kota = “ semarang”Then “Dalam kota”Else “ Luar kota”End as keterangan From mhs
RELASI.SELECT mhs.nim, mhs.nama_mhs,nilai.nilaifrom mhs,nilai
25. SELECT mhs.nim, mhs.nama_mhs,nilai.nilai,casewhen nilai >= 60then 'Lulus'else 'tidak lulus'end as keterangan from mhs,nilaiwhere mhs.nim = nilai.nim
nim nama_mhs nilai keterangan
1423 Bodro Jati 45.00 tidak lulus
1423 Bodro Jati 67.00 Lulus
4132 Ronaldo 78.00 Lulus
1523 Higuain 78.00 Lulus
nim nama_mhs nilai keterangan
7126 Tevez 34.00 tidak lulus
5421 Fabregas 87.00 Lulus
6541 John Senna 98.00 Lulus
26. SELECT mhs.nim, mhs.nama_mhs,nilai.nilai,CASEwhen nilai > 80 then 'A' when nilai > 70 then 'B'when nilai > 60 then 'C'when nilai > 50then 'D'ELSE 'E' END AS NILAI_HURUF,
CASEwhen nilai > 60then 'LULUS'ELSE 'TIDAK LULUS' END AS KETERANGAN
from mhs,nilaiwhere mhs.nim = nilai.nim
27. tampilkan seluruh nama mhs beserta jurusan dan nilainya untuk seluruh mahasiwa dari jurusan elektro
SELECT mhs.nama_mhs,mhs.jurusan,nilai.nilaifrom mhs,nilaiwhere mhs.jurusan='elektro'
28. Tampilkan nama mahasiswa berserta jurusan dan nilainya khusus untuk mahasiswa yang nilai nya tertinggi di setiap jurusan
SELECT mhs.nama_mhs,mhs.jurusan,max(nilai.nilai)from mhs,nilaiwhere mhs.nim = nilai.nimgroup by jurusan
29. cari lah nim,nama,jurusan,namamk, msx(nilai)SELECT mhs.nim,mhs.nama_mhs,mhs.jurusan,mk.nama_mk,max(nilai.nilai)
from mhs,nilai,mkwhere mhs.nim = nilai.nim and nilai.kode_mk = mk.kode_mkgroup by jurusan
30. carilah nilai tertinggi dari setiap mahasiswa dari tiap mata kuliahSELECT nilai.nim, nama_mhs,jurusan,nama_mk,max(nilai) as nilai_tertinggifrom mhs,nilai,mkwhere nilai.nim = mhs.nim and nilai.kode_mk = mk.kode_mkgroup by nama_mhs
Table nilai di buat jadi nim, kodemk, nip, nilai
Input data di buat 1 makul dg 2 dosen.
31. tampilkan nama mhs dan nilai dari seluruh mata kuliah yang diambil beserta nama dosen pengampunya.SELECT mhs.nim, mhs.nama_mhs, mhs.jurusan, mk.Nama_mk, dosen.Nama, nilai.NilaiFROM mhs, nilai, mk, dosenWHERE mhs.nim = nilai.nimAND nilai.Kode_MK = mk.Kode_MKAND nilai.NIP = dosen.NIPLIMIT 0 , 30
32. . tampilkan nama mhs dan nilai dari seluruh mata kuliah yang diambil beserta nama dosen pengampunya. Tambah keterangan lulus>= 60 tidak lulus<=60
SELECT mhs.nim, mhs.nama_mhs, mhs.jurusan, mk.Nama_mk, dosen.Nama, nilai.Nilai,caseWhen nilai.nilai >= 60 then "LULUS" else "TIDAK LULUS"end as KeteranganFROM mhs, nilai, mk, dosenWHERE mhs.nim = nilai.nimAND nilai.Kode_MK = mk.Kode_MKAND nilai.NIP = dosen.NIP
33. tambah nilai(max) dr tiap mhs + keterangan lulusSELECT mhs.nim, mhs.nama_mhs, mhs.jurusan, mk.Nama_mk, dosen.Nama, max(nilai.Nilai),caseWhen max(nilai.nilai) >= 60 then "LULUS" end as KeteranganFROM mhs, nilai, mk, dosenWHERE mhs.nim = nilai.nimAND nilai.Kode_MK = mk.Kode_MKAND nilai.NIP = dosen.NIPgroup by mhs.nama_mhs
SELECT mhs.nim, mhs.nama_mhs, mhs.jurusan, mk.Nama_mk, dosen.Nama, max(nilai.Nilai) as nilai,caseWhen max(nilai.nilai) >= 60 then "LULUS" end as KeteranganFROM mhs, nilai, mk, dosenWHERE mhs.nim = nilai.nimAND nilai.Kode_MK = mk.Kode_MKAND nilai.NIP = dosen.NIPAND nilai > 59group by mhs.nama_mhs
34. gabungkan seluruh nim dari mahasiswa yang ipk nya < 2.75 dan nim dari mahasiswa yang jurusan nya elektro. (query1)Union(query2)
SELECT nim, nama_mhsFROM mhsWHERE ipk < 2.75UNION SELECT nim, nama_mhsFROM mhsWHERE jurusan = 'elektro'LIMIT 0 , 30
35. carilah nim yang ada di table mahasiswa dan sekaligus yanga ada di table nilai.SELECT nimFROM mhsWHERE nimIN (
SELECT nimFROM nilai)LIMIT 0 , 30
36. carilah nim yang ada di table mahasiswa tetapi tidak ada di table nilai.SELECT nimFROM mhsWHERE nim NOT IN (
SELECT nimFROM nilai)LIMIT 0 , 30
DATABASE BANK
CREATE TABLE `customer` ( `cust_name` VARCHAR( 15 ) NOT NULL ,`cust_street` VARCHAR( 15 ) NOT NULL ,`cust_city` VARCHAR( 15 ) NOT NULL ) ENGINE = MYISAM ;
CREATE TABLE `deposit` ( `branch_name` VARCHAR( 15 ) NOT NULL ,`acc_numb` CHAR( 4 ) NOT NULL ,`cust_name` VARCHAR( 15 ) NOT NULL ,`balance` INT NOT NULL ) ENGINE = MYISAM ;
INSERT INTO `branch` ( `branch_name` , `assets` , `branch_city` ) VALUES ( 'hunterxhunter', '25000000', 'komae'), ( 'kazao', '16000000', 'york sin');
37. tampilkan seluruh nama customer scr urut naikselect cust_name from customer order by cust_name asc
38. tampilkan seluruh nama customer yang memiliki tabungan scr urut turun.SELECT customer.cust_name from customer, depositwhere customer.cust_name = deposit.cust_nameorder by cust_name desc
39. tampilkan seluruh nama customer scr urut naik dan kota tempat tinggalnya scr urut turun.40. tampilkan seluruh nama customer yang hanya memiliki tabungan tetapi tidak memiliki penjaman.SELECT cust_nameFROM customerWHERE cust_name NOT IN (
SELECT cust_name
FROM borrow)
41. tampilkan seluruh nama customer yang memiliki tabungan atau yang memiliki pinjaman .SELECT cust_nameFROM depositWHERE cust_name not in(select cust_namefrom borrow)UNION select cust_name from borrow where cust_name not in (select cust_namefrom deposit)LIMIT 0 , 30
42. tampilkan seluruh nama customer yang memiliki tabungan sekaligus pinjaman.SELECT cust_nameFROM customerWHERE cust_name IN (
SELECT cust_nameFROM borrow)
carilah alamt dr client jones.SELECT cust_cityfrom customer,clientwhere client.banker_name ='jones' and client.cust_name = customer.cust_name
tampil kan deposit jika <= 500 cust kecil, <1000 cust sedang , >=1000 cust besar
SELECT balance,caseWhen balance <=500 then "customer kecil"when balance < 1000then "customer sedang"else "customer besar" end as KeteranganFROM deposit
Carilah seluru nama customer ,alamat dan jumlah tabungan nya serta status nya untuk customer yang memiliki deposit lebih dari 500SELECT deposit.cust_name,customer.cust_street,balance,caseWhen balance <=500 then "customer kecil"when balance < 1000then "customer sedang"else "customer besar" end as KeteranganFROM deposit,customerwhere deposit.cust_name = customer.cust_name andbalance > 500
Carilah nama customer beserta jumlah tabungan dan status nyaSELECT cust_name,balance,caseWhen balance <=500 then "customer kecil"when balance < 1000then "customer sedang"else "customer besar" end as KeteranganFROM deposit
Operasi “Join”
1. Cross Joina. Select * form deposit cross join customer where deposit.cust_name =
customer.cust_name
branch_name acc_numb cust_name balance cust_name cust_street cust_city downtown 101 johnson 500 johnson pender vancouverlougheed_mall 215 smith 700 johnson pender vancouverSFU 102 hayes 400 johnson pender vancouverSFU 304 adams 1300 johnson pender vancouverrabanas_tree 666 idfanz 6000 johnson pender vancouvernintendo 115 megaman 500 johnson pender vancouverhunterxhunter 667 kilua 600 johnson pender vancouverkazao 155 nohara 300 johnson pender vancouvernene 166 sinoshuke 400 johnson pender vancouverbo 177 jones 500 johnson pender vancouverdowntown 101 johnson 500smith north burnaby
branch_name acc_numb cust_name balance cust_name cust_street cust_city lougheed_mall 215 smith 700smith north burnabySFU 102 hayes 400smith north burnabySFU 304 adams 1300smith north burnabyrabanas_tree 666 idfanz 6000smith north burnabynintendo 115 megaman 500smith north burnabyhunterxhunter 667 kilua 600smith north burnabykazao 155 nohara 300smith north burnabynene 166 sinoshuke 400smith north burnabybo 177 jones 500smith north burnabydowntown 101 johnson 500hayes curtis burnabylougheed_mall 215 smith 700hayes curtis burnabySFU 102 hayes 400hayes curtis burnabySFU 304 adams 1300hayes curtis burnabyrabanas_tree 666 idfanz 6000hayes curtis burnabynintendo 115 megaman 500hayes curtis burnabyhunterxhunter 667 kilua 600hayes curtis burnabykazao 155 nohara 300hayes curtis burnabynene 166 sinoshuke 400hayes curtis burnabybo 177 jones 500hayes curtis burnaby
b. Select * from customer cross join deposit
cust_name cust_street cust_city branch_name acc_numb cust_name balance johnson pender vancouver downtown 101 johnson 500johnson pender vancouver lougheed_mall 215 smith 700johnson pender vancouver SFU 102 hayes 400johnson pender vancouver SFU 304 adams 1300johnson pender vancouver rabanas_tree 666 idfanz 6000johnson pender vancouver nintendo 115 megaman 500johnson pender vancouver hunterxhunter 667 kilua 600johnson pender vancouver kazao 155 nohara 300johnson pender vancouver nene 166 sinoshuke 400johnson pender vancouver bo 177 jones 500smith north burnaby downtown 101 johnson 500smith north burnaby lougheed_mall 215 smith 700smith north burnaby SFU 102 hayes 400smith north burnaby SFU 304 adams 1300smith north burnaby rabanas_tree 666 idfanz 6000smith north burnaby nintendo 115 megaman 500smith north burnaby hunterxhunter 667 kilua 600smith north burnaby kazao 155 nohara 300
cust_name cust_street cust_city branch_name acc_numb cust_name balance smith north burnaby nene 166 sinoshuke 400smith north burnaby bo 177 jones 500hayes curtis burnaby downtown 101 johnson 500hayes curtis burnaby lougheed_mall 215 smith 700hayes curtis burnaby SFU 102 hayes 400hayes curtis burnaby SFU 304 adams 1300hayes curtis burnaby rabanas_tree 666 idfanz 6000hayes curtis burnaby nintendo 115 megaman 500hayes curtis burnaby hunterxhunter 667 kilua 600hayes curtis burnaby kazao 155 nohara 300hayes curtis burnaby nene 166 sinoshuke 400hayes curtis burnaby bo 177 jones 500
c. Select * form deposit cross join customer where deposit.cust_name = customer.cust_name
branch_name acc_numb cust_name balance cust_name cust_street cust_city downtown 101 johnson 500 johnson pender vancouverlougheed_mall 215 smith 700smith north burnabySFU 102 hayes 400hayes curtis burnabySFU 304 adams 1300adams no.3 road richmondbo 177 jones 500 jones oak vancouverrabanas_tree 666 idfanz 6000 idfanz sawungrono komaenintendo 115 megaman 500megaman rockman raretihunterxhunter 667 kilua 600kilua sruwen york sinkazao 155 nohara 300nohara shiojiri kasukabenene 166 sinoshuke 400sinoshuke wadamachi sendai-shi
d. Select * from customer cross join deposit where customer.cust_name =deposit.cust_name
cust_name cust_street cust_city branch_name acc_numb cust_name balance johnson pender vancouver downtown 101 johnson 500smith north burnaby lougheed_mall 215 smith 700hayes curtis burnaby SFU 102 hayes 400adams no.3 road richmond SFU 304 adams 1300jones oak vancouver bo 177 jones 500idfanz sawungrono komae rabanas_tree 666 idfanz 6000megaman rockman rareti nintendo 115 megaman 500kilua sruwen york sin hunterxhunter 667 kilua 600nohara shiojiri kasukabe kazao 155 nohara 300
cust_name cust_street cust_city branch_name acc_numb cust_name balance sinoshuke wadamachi sendai-shi nene 166 sinoshuke 400
select x.cust_name, x.branch_name, y.cust_name, y.branch_namefrom deposit x, deposit ywhere x.cust_name = y.cust_namebuat cust sama branch dg 2 kolom yang kiri kurang dr 1000 yg kanan lebih dari sma dengan 1000select x.cust_name, x.branch_name, y.cust_name, y.branch_namefrom deposit x, deposit ywhere x.balance < 1000 and y.balance >=1000“Natural Join”Select * from deposit natural join customer where deposit.cust_name = customer.cust_name
cust_name branch_name acc_numb balance cust_street cust_city johnson downtown 101 1500pender vancouversmith lougheed_mall 215 1700north burnabyhayes SFU 102 1400curtis burnabyadams SFU 304 1300no.3 road richmondjones bo 177 500oak vancouveridfanz rabanas_tree 666 6000sawungrono komaemegaman nintendo 115 500rockman raretikilua hunterxhunter 667 600sruwen york sinnohara kazao 155 300shiojiri kasukabesinoshuke nene 166 400wadamachi sendai-shi
Hanya terdapat 1 cust_name saja, tidak menggunakan kunci relasi,“Inner Join”Select * from deposit inner join customer on deposit.cust_name = customer.cust_name
branch_name acc_numb cust_name balance cust_name cust_street cust_city downtown 101 johnson 1500 johnson pender vancouverlougheed_mall 215 smith 1700smith north burnabyError! Hyperlink reference not valid.SFU
102 hayes 1400hayes curtis burnaby
SFU 304 adams 1300adams no.3 road richmondbo 177 jones 500 jones oak vancouverrabanas_tree 666 idfanz 6000 idfanz sawungrono komaenintendo 115 megaman 500megaman rockman raretihunterxhunter 667 kilua 600kilua sruwen york sinkazao 155 nohara 300nohara shiojiri kasukabenene 166 sinoshuke 400sinoshuke wadamachi sendai-shi
“Left Join”Select * from deposit left join customer on deposit.cust_name = customer.cust_name“right Join”Select * from deposit right join customer on deposit.cust_name = customer.cust_name
TUGAS Cara membuat relasi untk krdinalitas many to many “Left outer Join”Select * from deposit left join outer customer on deposit.cust_name = customer.cust_name“right outer Join”Select * from deposit right join outer customer on deposit.cust_name = customer.cust_name