Senin, 30 September 2013

Soal SQL dan Pembahasannya


Soal SQL

Table  : Customer
KdCustomer
NmCustomer
Kota
C-003
PT.Maju Terus
Jakarta
C-065
Toko Delapan
Bandung
C-034
CV.Komala
Bandung
C-109
PT.Samudra
Garut
Table : Barang
KdBarang
NmBarang
Stok
B-120
NIC D-Link
15
B-121
Monitor 17
15
B-122
Memori 512
20
B-123
Keyboard Ps2
50
B-124
Mouse Ps2
5


Table : Penjualan
NoFaktur
TglFaktur
KdCustomer
P-001
10/5/2006
C-109
P-002
11/5/2006
C-003
P-003
11/5/2006
C-065
P-004
12/5/2006
C-109


1.    Buatlah tabel Customer dan tabel Penjualan di atas, lengkap dengan primary key  serta foreign key nya
2.      Isikan data pada table customer sesuai dengan data di atas
3.     Ubah nama customer menjadi PT. Samudra Jaya dan kota menjadi Cirebon untuk kode customer C-109
4.      Munculkan tanggal transaksi yang dilakukan oleh customer PT. Samudra
5.      Munculkan data barang  yang stoknya di atas 15
6.      Munculkan nama dan kota customer yang sudah melakukan transaksi pembelian barang
7.   Munculkan nama customer yang tinggal di kota Bandung dan nama customer yang tinggal di Jakarta.


PEMBAHASAN SOAL

1.      Untuk menjawab no. 1 , kita gunakan perintah create table untuk membuat table nya, sedangkan untuk primary key ketikkan "primary key" setelah jenis variabel. Dan untuk foreign key ketikkan "foreign key(nama field) lalu referensi nya dari mana(nama field)".

create table Customer(
    KdCustomer varchar(5) primary key not null,
    NmCustomer varchar(20) not null,
    Kota varchar(10) not null)

create table Penjualan(
    NoFaktur varchar(5) not null,
    TglFaktur varchar(10),
    KdCustomer varchar(5),
    foreign key(KdCustomer) references Customer(KdCustomer))

2.      Untuk menjawab pertanyaan no. 2 gunakan perintah insert into untuk mengisi data pada tiap table.
Customer adalah nama tablenya. sedangkan ('C-109', 'PT. Samudra', 'Garut') adalah isi dari setiap field yang ada.

INSERT INTO Customer VALUES ('C-109', 'PT. Samudra', 'Garut')
Lanjutkan sesuai dengan table di atas..

3.  Jika berkaitan dengan mengubah data gunakan perintah update (Nama Table) set (Nama Field)where merupakan optional , artinya perintah update ini akan di eksekusi jika nilai dari KdCustomer = "C-109"

update Customer set NmCustomer='PT. Samudra Jaya',Kota='Cirebon'
           where KdCustomer='C-109'

4.      Untuk menampilkan data gunakan perintah select (NamaField) from (Nama Table) 

select TglFaktur from Penjualan where KdCustomer='C-109'

5.   Untuk menjawab soal no. 5 , seperti halnya langkah penyelesaian pada no. 4 diatas, hanya berbeda field mana yang akan di tampilkan.
pada soal no. 5 ini kita akan menampilkan seluruh field yang ada pada table, jadi kita gunakan perintah select * from (Nama Table) . (*) artinya memilih semua field.

select * from Barang where Stok>15

6.    Untuk soal no. 6 , langkah pertama harus kita tentukan dulu tabel apa saja yang terkait dengan query. Dalam hal ini kita akan menggunakan tabel Customer dan Penjualan. Tabel Customer untuk menampilkan Nama Customer dan Kota. Sedangkan Tabel Penjualan digunakan karena di dalamnya terdapat data-data transaksi yang dilakukan oleh Customer.
select NmCustomer,Kota from Customer,Penjualan 
    where Customer.KdCustomer=Penjualan.KdCustomer

Maksud dari Customer.KdCustomer adalah mengambil data KdCustomer yang berasal dari Table Customer , begitupun dengan Penjualan.KdCusromer

7. Untuk mencari Nama Customer yang beralamat di bandung dan Jakarta kita kembali menggunakan perintah select ditambah dengan optional yang mengacu pada Nama Kota.

select NmCustomer from Customer where Kota='Bandung' or Kota='Jakarta'

Perintah di atas akan menampilkan semua Nama Customer yang beralamat di Bandung dan Jakarta.


SKEMA TABEL-TABEL SEBAGAI BERIKUT

Mahasiswa(NPM,NAMA,LAHIR,AGAMA,ALAMAT,KOTA,KODE_POS,TELEPON)
Matakuliah(KODE_MK,NAMA_MK,SKS,STATUS)
Dosen(KODE_DOSEN,NAMA_DOSEN,ALAMAT,KOTA,KODE_POS,TELEPON)
Prestasi(NPM,KODE_DOSEN,KODE_MK,NIL_MID,NIL_FIN)


1.        Tambahkan atribut agama pada table dosen.
2.       Tampilkan semua field pada semua table mata kuliah yang mempunyai sks sama dengan 3 dan urutkan secara menurun berdasarkan nama mata kuliah.
3.       Tampilkan semua field dari table biodata yang tinggal di Jakarta dan mempunyai kode pos.
4.       Tampilkan NPM, nama dan nama mata kuliah dari mahasiswa yang memiliki nilai final lebih kecil dari 60.
5.       Tampilkan NPM, nama, nama mata kuliah dan nama dosen dari mahasiswa yang mengambil mata kuliah Perancangan Sistem.
6.       Tampilkan NPM, nama, nama mata kuliah dan nilai total dari mahasiswa yang memiliki nilai total lebih besar dari 100 dan urutkan data berdasarkan nama mata kuliah.
7.       Tampilkan nama mahasiswa, nama mata kuliah, nilai mid test dan nilai final test yang mengambil mata kuliah dengan kode ‘TI221’
8.       Tampilkan jumlah dari mata kuliah yang diajarkan pada table prestasi.
9.       Tampilkan kode dan nama dosen yang mengajar lebih dari 1 mata kuliah.
10.   Tampilkan nama dan nilai mid test lebih besar dari 75 (gunakan perintah sub select).


JAWAB

ALTER TABLE Dosen ADD(AGAMA char(16));
1.        SELECT * FROM Matakuliah WHERE SKS=3 ORDER BY NAMA_MK DESC;
2.       SELECT * FROM Biodata WHERE KOTA="Jakarta" AND KODE_POS NOT LIKE "% %";
3.       SELECT NPM, NAMA, NAMA_MK FROM Mahasiswa,Matakuliah,Prestasi WHERE Mahasiswa.NPM=Prestasi.NPM AND Prestasi.KODE_MK=Matakuliah.KODE_MK AND Prestasi.NIL_FIN<60;
4.       SELECT NPM,NAMA,NAMA_MK,NAMA_DOSEN FROM Mahasiswa, Matakuliah, Dosen, Prestasi WHERE Matakuliah.NAMA_MK = "Perancangan Sistem" AND Mahasiswa.NPM = Prestasi.NPM AND Prestasi.KODE_DOSEN = Dosen.KODE_DOSEN AND Prestasi.KODE_MK = Matakuliah.KODE_MK;
5.       SELECT mahasiswa.npm, mahasiswa.nama, matakuliah.nama_mk, prestasi.nil_fin FROM mahasiswa,matakuliah,prestasi WHERE mahasiswa.npm=prestasi.npm AND matakuliah.kode_mk=prestasi.kode_mk AND prestasi.nil_fin > 100 ORDER BY nama_mk ASC;
6.       SELECT mahasiswa.nama, matakuliah.nama_mk, prestasi.nil_mid, prestasi.nil_fin FROM mahasiswa, matakuliah , prestasi, WHERE mahasiswa.npm=prestasi.npm AND matakuliah.kode_mk=prestasi.kode_mk AND prestasi.kode_mk='TI221';
7.       SELECT COUNT(kode_mk) FROM prestasi;
8.       SELECT COUNT(prestasi.kode_dosen) AS jumlah_mk, dosen.kode_dosen, dosen.nama_dosen FROM dosen,prestasi WHERE dosen.kode_dosen = prestasi.kode_dosen GROUP BY dosen.kode_dosen HAVING jumlah_mk > 1;
9.       SELECT mahasiswa.nama, prestasi.nil_mid FROM mahasiswa,prestasi WHERE mahasiswa.npm=prestasi.npm AND (SELECT prestasi.nil_mid > 75);


PERINTAH DASAR-DASAR SQL
Pada saat pengoperasian MySQL, kita perlu menggunakan perintah-perintah SQL atau SQL statement. Perintah atau statement SQL tersebut secara garis besar dibagi dalam 2 kelompok yaitu : Data Manipulation Language (DML) dan Data Definition Language (DDL).
Yang termasuk dalam DML adalah :
• SELECT – untuk mengekstrak atau memilih data dari sebuah database
• UPDATE – untuk mengupdate data dari sebuah database
• DELETE – untuk menghapus data dari sebuah database
• INSERT – untuk memasukkan data baru ke dalam sebuah database
Sedangkan DDL yang paling penting adalah :
• CREATE DATABASE – untuk membuat sebuah database baru
• ALTER TABLE – untuk menambah, menghapus atau memodifikasi kolom dari tabel yang sudah ada
• CREATE TABLE – untuk membuat tabel baru
• DROP TABLE – untuk menghapus sebuah tabel
• CREATE INDEX – untuk membuat index (kunci pencarian)
• DROP INDEX – untuk menghapus index
Perlu kita ingat bahwa perintah atau statement SQL tersebut tidak case sensitive dengan kata lain perintah yang anda tulis dalam huruf kapital maupun huruf kecil akan di terjemahkan sama.
Kemudian di setiap akhir dari perintah tersebut harus diberi tanda semi colon atau ; sehingga perintah akan dijalankan untuk setiap statement atau perintah tersebut.

Tidak ada komentar:

Posting Komentar

Lapisan Session (Session Layer)

  Session Layer Jaringan Komputer OSI Layer Reference Model merupakan sebuah permodelan sistem logic yang digunakan daam  jaringan komputer ...