DBMS Acces

Membangkitkan Bilangan Acak Menggunakan Matlab

Pertemuan ke-3

Tanggal 6-10-2004

DBMS DI MYSQL


1. Mengaktifkan < explore\c:\mysql\Bin>
• Jalankan file <mysqld.exe >
• Jalankan file <mysql manager.exe >
2. Dari menu <Tool_sql query >

STRUCTURE QUERY LANGUANGE

  1. Data definition languange (DDL) terdiri dari create,alter,drop.objek basis datanya yaitu tabel, prosedure,view
  2. Data manipulasi languange (DML) terdiri dari insert, update, delete, select. Objek basis datanya bertipe tabel dan view.


OPERASI-OPERASI PADA MYSQL

1) Buat database dengan cara create nama database

Create nama_database

CREATE DATABASE AKADEMIK

2) Mengaktifan basis data yang sudah dibuat dengan use nama_database

Use nama_database

USE  AKADEMIK

Perintah-perintah lain yang berkaitan dengan

  • · Untuk mendaftar semua database yang ada di server

SHOW DATABASES

Database

--------

AKADEMIK

mysql

nokia

test

(4 row(s) affected)

Membuat tabel di database aktif

CREATE TABLE MAHASISWA

(NIM INT UNSIGNED NOT NULL PRIMARY KEY,

NAMA VARCHAR(20) NOT NULL,

JNS_KEL ENUM('W','L') NOT NULL)

DESCRIBE MAHASISWA

Field       Type     Null      Key       Default            Extra

-----         ----       ----       ---        -------   -----

NIM        int(10) unsigned                        PRI       0

NAMA     varchar(20)

JNS_KEL            enum('W','L')                           W

(3 row(s) affected)

  • · CREATE TABLE UJIAN

(NO_UJIAN INT UNSIGNED NOT NULL PRIMARY KEY,

TGL DATE NOT NULL,

TIPE ENUM('Q','T') NOT NULL)

3) Melihat struktur tabel yang sudah dibuat dengan describe nama tabeL
Contoh

  • · DESCRIBE UJIAN Q

Field               Type       Null        Key         Default   Extra

----- ----           ----           ---            -------       -----

NO_UJIAN    int(10) unsigned                   PRI          0

TGL                date                                        0000-00-00

TIPE                enum('Q','T')                                         Q

(3 row(s) affected)

4) perintah-perintah yang berkaitan dengan tabel.

  • · SHOW TABLES

Tables_in_AKADEMIK

------------------

mahasiswa

ujian

(2 row(s) affected)

  • · mendaftar tabel-tabel dari database yang lain dengan show tables from  nama_database

SHOW TABLES FROM TEST

Tables_in_TEST

--------------

(0 row(s) affected)

  • · Perintah untuk merubah struktur tabel

ü Alter table nama_tabel lama rename as nama   table_baru

ALTER TABLE MAHASISWA RENAME AS SISWA

ü alter  nama_tabel change nama _field baru type size dll

untuk merubah size, tipe, nama field/kolom.

ALTER TABLE SISWA

CHANGE NIM NPM INT UNSIGNED NOT NULL

DESCRIBE SISWA

Field          Type     Null     Key      Default            Extra

-----            ----       ----       ---        -------   -----

NPM           int(10) unsigned                      PRI       0

NAMA        varchar(20)

JNS_KEL   enum('W','L')                            W

(3 row(s) affected)

ü  Alter table nama_tabel
modify namafield tipe size dll

ini untuk merubah kolom dan size saja

ALTER TABLE SISWA

CHANGE NAMA VARCHAR(30) NOT NULL

You have an error in your SQL syntax near 'VARCHAR(30) NOT NULL' at line 2

5) Perintah untuk menghapus tabel di database aktif dengan

Drop nama_table
Contoh

  • · DROP TABLE UJIAN

Terus

SHOW TABLES

Tables_in_AKADEMIK

------------------

siswa

(1 row(s) affected)

6)      Perintah untuk menghapus database dengan
drop nama_database

DROP DATABASE AKADEMIK

SHOW DATABASES

Database

--------

mysql

nokia

test

(3 row(s) affected)

Pertemuan ke-4
Tanggal 7-10-2004

1) Hapus database akademik
DROP DATABASE AKADEMIK

2) Buat database baru dengan nama sisakademik
CREATE DATABASE SISAKADEMIK

SHOW DATABASES

Database

--------

SISAKADEMIK

mysql

nokia

test

(4 row(s) affected)

3) Aktifkan database sisakademik
USE SISAKADEMIK

4) Buat tabel-tabel berikut

  • Ø CREATE TABLE MAHASISWA

(NAMA VARCHAR(20) NOT NULL,

JNS_KEL ENUM('W','L') NOT NULL,

NIM INT UNSIGNED NOT NULL PRIMARY KEY)

DESCRIBE MAHASISWA

Field    Type     Null      Key       Default            Extra

-----      ----       ----       ---        -------   -----

NAMA  varchar(20)

JNS_KEL         enum('W','L')                           W

NIM     int(10) unsigned                        PRI       0

(3 row(s) affected)

  • Ø CREATE TABLE UJIAN

(NO_UJIAN INT UNSIGNED NOT NULL PRIMARY KEY,

TGL DATE NOT NULL,

TIPE ENUM('Q','T') NOT NULL

  • Ø CREATE TABLE NILAI

(NIM INT UNSIGNED NOT NULL,

NO_UJIAN INT UNSIGNED NOT NULL,

NILAI INT NOT NULL,

PRIMARY KEY(NIM,NO_UJIAN))

DESCRIBE NILAI

Field    Type     Null      Key       Default            Extra

-----      ----       ----       ---        -------   -----

NIM     int(10) unsigned                        PRI       0

NO_UJIAN      int(10) unsigned                        PRI       0

NILAI  int(11)                          0

(3 row(s) affected)

(DML) DATA MANIPULATION LANGUANGE


1. INSERT
sintak
insert into nama_table

values

(nilai_field_1, nilai_field_2,..., nilai field-n)

keterangan:mengisi record pada semua folder. Dalam     memasukkan data (numerik,int, smallint,...) tanpa tanda kutip,tapi jika tipe data text atau date atau date time maka harus memakai tanda kutip (‘)

  • Ø contohnya:

INSERT INTO MAHASISWA

VALUES('BILLY','L',1)

insert into nilai values(1,5,15)

atau

insert into nama_table(nama_field_x, nama_field_Y,..., nama_field_Z) values

(nilai_field_x,nilai_field_y,..., nilai_field_z)

keterangan: mengisi record pada kolom-kolom tertentu dan kolom yang didefinisikan dengan not null wajib diisi

ü INSERT INTO MAHASISWA(NAMA,JNS_KEL,NIM)

VALUES('MISSY','W',2),('JOHNY','L',3),('JENNY','W',4)

ü INSERT INTO UJIAN(NO_UJIAN,TGL,TIPE)

VALUES(1,'1999/08/03','Q'),(2,'1999/08/06','Q'),(3,'1999/09/09','T'),

(4,'1999/09/16','T'),(5,'1999/10/02','Q'),(6,'2000/01/03','T')

ü INSERT INTO NILAI(NIM,NO_UJIAN,NILAI)

VALUES(1,5,15),(2,5,14),(3,5,17),(4,5,19),(1,6,67),(2,6,73),(3,6,82),(4,6,79)


2. SELECT

syntak:

SELECT * FROM NAMA TABLE

  • Ø contoh

ü SELECT * FROM MAHASISWA

NAMA              JNS_KEL             NIM

----       -------       ---

BILLY                L              1

MISSY                W            2

JOHNY              L              3

JENNY              W            4

(4 row(s) affected)

ü SELECT * FROM UJIAN

NO_UJIAN       TGL        TIPE

-------- ---            ----

1          1999-08-03             Q

2          1999-08-06             Q

3          1999-09-09             T

4          1999-09-16             T

5          1999-10-02             Q

6          2000-01-03             T

(6 row(s) affected)

ü SELECT * FROM NILAI

NIM NO_UJIAN     NILAI

---     --------  -----

1       5          15

2       5          14

3       5          17

4       5          19

1       6          67

2       6          73

3       6          82

4       6          79

(8 row(s) affected)

3. UPDATE

syntak:

update nama_table

set nama_field_x=nama_field_x yang baru,

nama_field_ y= nama_field_y yang baru,

where kondisi yang menyatakan record yang     diupdate

  • Ø contoh:
  • Ø UPDATE MAHASISWA SET NAMA='JONI' WHERE NIM=3

SELECT * FROM MAHASISWA

NAMA  JNS_KEL         NIM

----       -------   ---

BILLY   L          1

MISSY W         2

JONI   L          3

JENNY W         4

(4 row(s) affected)

  • Ø UPDATE UJIAN SET TGL='1999-08-10', TIPE='T' WHERE NO_UJIAN=1

SELECT * FROM UJIAN

NO_UJIAN      TGL      TIPE

--------  ---        ----

1           1999-08-10       T

2          1999-08-06      Q

3          1999-09-09      T

4          1999-09-16       T

5          1999-10-02       Q

6          2000-01-03      T

(6 row(s) affected)

  • Ø UPDATE NILAI SET NILAI=35 WHERE NIM=1 AND NO_UJIAN=5

SELECT * FROM NILAI

NIM     NO_UJIAN      NILAI

---        --------  -----

1           5          35

2          5          14

3          5          17

4          5          19

1           6          67

2          6          73

3          6          82

4          6          79

(8 row(s) affected)

  • Ø Peserta no_ujian 5 nilainya ditambah

UPDATE NILAI SET NILAI=NILAI+30 WHERE NO_UJIAN=5

SELECT * FROM NILAI

NIM       NO_UJIAN           NILAI

---            --------     -----

1              5              65

2              5              44

3              5              47

4              5              49

1              6              67

2              6              73

3              6              82

4              6              79

(8 row(s) affected)

4. DELETE
Syntak:

delete from nama_table

where kondisi yang menyatakan record yang didelete

  • Ø Contohnya
    Hapus data ujian dengan tipe ‘T’

DELETE FROM UJIAN WHERE TIPE='T'

SELECT * FROM UJIAN

NO_UJIAN       TGL        TIPE

-------- ---            ----

2          1999-08-06             Q

5          1999-10-02             Q

(2 row(s) affected)

Hapus data nilai untuk yang kurang dari 50

DELETE FROM NILAI WHERE NILAI<50

SELECT * FROM NILAI

NIM   NO_UJIAN           NILAI

---        --------     -----

1          5              65

1          6              67

2          6              73

3          6              82

4          6              79

(5 row(s) affected)

Hapus data mahasiswa dengan nim=2 atau nim=4

DELETE FROM MAHASISWA WHERE NIM=2 OR NIM=4

SELECT * FROM MAHASISWA

NAMA               JNS_KEL              NIM

----       -------       ---

BILLY                L              1

JONI  L              3

(2 row(s) affected)

Pertemuan ke-5

Tanggal 13 oktober 2004

SINTAK QUERY

Bisa ditambahkan distinct artinya yang berbeda

Select nama_kolom_x, nama kolom_y,…,

From nama_tabel

[where kondisi]

[order by nama_kolom asc|desc,…]

keterangan:

ü asc default nya dari a…z (semakin besar)

ü desc defaultnya dariz…a (semakin mengecil)

[group by nama_kolom]

[having kondisi]

keterangan:kedua hal di atas kaitannya dengan pemakaian fungsi agregasi

Dalam kondisi di klausa where dapat menggunakan

  1. OPERATOR PEMBANDING
= > > >= < <= < > Operator pembanding untuk data numerik
Between…and… Antara dua nilai
In (list) Sama dengan salah satu elemen nilai yang ada di list
Is null Nilai kolomnya null
Like Menyamakan karakter dengan menggunakan karakter wildcard
  1. OPERATOR LOGIKA

Untuk kondisi yang lebih dari satu di klausa where

And Jika semua kondisi terpenuhi, data ditampilkan
Or Jika salah satu kondisi terpenuhi, data ditampilkan
Not Jika kondisi tidak terpenuhi, data ditampilkan

Soal-soal dan pemecahannya

  1. Tampilkan mahasiswa-mahasiswa yang berjenis kelamin ‘L’

SELECT NAMA,NIM FROM MAHASISWA WHERE JNS_KEL=’L’

NAMA   NIM

—-           —

BILLY    1

JONI      3

(2 row(s) affected)

  1. Tampilkan data-data nilai ujian yang dinilainya antara 15 dan 75

SELECT * FROM NILAI WHERE NILAI BETWEEN 15 AND 75

NIM       NO_UJIAN           NILAI

—            ——–     —–

1              5              65

1              6              67

2              6              73

(3 row(s) affected)

  1. Tampilkan ujian yang diikuti oleh mahasiswa ber nim 2,1,4 dan nilainya di atas 70

SELECT * FROM NILAI WHERE NIM IN(1,2,4) AND NILAI>70

NIM       NO_UJIAN           NILAI

—            ——–     —–

2              6              73

4              6              79

(2 row(s) affected)

  1. Tampilkan mahasiswa yang namanya diawali huruf ‘J’(INGAT NIM 2 DAN 4 DI DELETE)

SELECT NIM,NAMA FROM MAHASISWA WHERE NAMA LIKE ‘J%’

NIM       NAMA

—            —-

3              JONI

(1 row(s) affected)

  1. Tampilkan ujian-ujian yang diadakan pada bulan september(INGAT TIPE UJIAN TIPE YG PELAKSANAANNYA PADA BULAN SEPTEMBER TELAH DI DELETE)

SELECT * FROM UJIAN WHERE  MONTH(TGL)=9

NO_UJIAN           TGL        TIPE

——–     —            —-

(0 row(s) affected)

  1. Tampilkan ujian-ujian yang pernah diikuti oleh mahasiswa

SELECT DISTINCT NO_UJIAN FROM NILAI

NO_UJIAN

——–

5

6

(2 row(s) affected)

  1. Tampilkan ujian bertipe ‘T’ dan diadakan pada tahun 1999(INGAT SEMUA TIPE UJIAN TIPE TELAH DI DELETE)

SELECT * FROM UJIAN WHERE TIPE=’T’ AND YEAR(TGL)=1999

NO_UJIAN           TGL        TIPE

——–     —            —-

(0 row(s) affected)

  1. Pemakaian klausa, tampilkan mahasiswa terurut berdasarkan namanya secara membesar  /ascending

SELECT NAMA,JNS_KEL FROM MAHASISWA ORDER BY NAMA ASC

NAMA   JNS_KEL

—-           ——-

BILLY    L

JONI      L

(2 row(s) affected)

Keterangan:Asc boleh ditulis dan boleh tidak

  1. Tampilkan data nilai ujian per no_ujian secara membesar dan setiap no_ujian diurut berdasarkan nilai secara mengecil (z…a)

SELECT * FROM NILAI ORDER BY NO_UJIAN,NILAI DESC

NIM       NO_UJIAN           NILAI

—            ——–     —–

1              5              65

3              6              82

4              6              79

2              6              73

1              6              67

(5 row(s) affected)

Keterangan:Desc boleh ditulis ataupun tidak

PEMBAHASAN IS NULL

NO_UJIAN TGL TIPE
….
9 2000-08-7

ü Tampilkan ujian yang tidak ada tipenya

SELECT NO_UJIAN FROM UJIAN WHERE TIPE IS NULL

NO_UJIAN

——–

(0 row(s) affected)

FUNGSI AGRERASI DAN PENGELOMPOKKAN

  1. FUNGSI AGRERASI

Digunakan untuk mencari data-data agrerasi

Min(nama_kolom)mencari nilai min dalam satu kolom

Max(nama_kolom)mencari nilai max dalam satu kolom

Avg (nama_kolom)mencari nilai rata-rata dalam satu kolom

Sum(nama_kolom)mencari nilai total (Σ) dalam satu kolom

count(nama_kolom)mencari nilai jumlah record/baris dalam satu kolom

keterangan:

ü  Min, max, avg dan sum kolomnya harus bertipe numerik

ü  Count kolomya bisa bertip numerik atau apa saja

Contohnya:

1)     Tampilkan nilai ujian maximum, minimum, dan rata-rata untuk semua ujian

SELECT MAX(NILAI), MIN(NILAI), AVG (NILAI) FROM NILAI

MAX(NILAI)        MIN(NILAI)         AVG (NILAI)

———-   ———-   ———–

82            65            73.2000

(1 row(s) affected)

2)     Tampilkan jumlah mahasiswa berjenis kelamin ‘L’

SELECT COUNT(JNS_KEL) FROM MAHASISWA WHERE JNS_KEL=’L’

COUNT(JNS_KEL)

————–

2

(1 row(s) affected)

atau

SELECT COUNT(*) FROM MAHASISWA WHERE JNS_KEL=’L’

COUNT(*)

——–

2

(1 row(s) affected)

3)     Tampilkan jumlah ujian yang dilakukan  pada bulan agustus 1999

SELECT COUNT(*) FROM UJIAN WHERE MONTH(TGL)=8 AND YEAR(TGL)=1999

COUNT(*)

——–

1

(1 row(s) affected)

a) Fungsi Agregasi Kaitannya Dengan

  1. untuk mengelompokkan data berdasarkan suatu kelompokkan tertentu digunakan klausa GROUP BY
  2. nama kolom yang muncul di klausa GROUP BY yang dipakai untuk mengelompokkan data harus muncul juga di klausa select
  3. kolom-kolom di klausa select yang tidak muncul di klausa GROUP BY wajib menggunakan fungsi agregsi(min,max,avg,count)

contohnya adalah :

  • Untuk setiap no_ujian tampilkan nilai max. Min dan rata-rata

SELECT NO_UJIAN, MAX(NILAI) AS ‘NILAI MAX’, MIN(NILAI) AS ‘NILAI MIN’, AVG(NILAI) AS ‘NILAI RATA’ FROM NILAI GROUP BY NO_UJIAN

NO_UJIAN           NILAI MAX         NILAI MIN          NILAI RATA

——–     ———    ———    ———-

5              65            65            65.0000

6              82            67            75.2500

(2 row(s) affected)

  • Ø Tampilkan nilai max,nilai min, dan nilai rata-rata untuk setiap mahasiswa dari nilai-nilai ujian yang diikutinya

SELECT NIM, MAX(NILAI) AS ‘NILAI MAX’, MIN(NILAI)  AS ‘NILAI MIN’, AVG(NILAI)  AS ‘NILAI RATA’ FROM NILAI GROUP BY NIM

NIM       NILAI MAX         NILAI MIN          NILAI RATA

—            ———    ———    ———-

1              67            65            66.0000

2              73            73            73.0000

3              82            82            82.0000

4              79            79            79.0000

(4 row(s) affected)

  • Tampilkan jumlah mahasiswa per jenis kelamin

SELECT JNS_KEL, COUNT(*) ‘JML MHS’ FROM MAHASISWA GROUP BY JNS_KEL

JNS_KEL              JML MHS

——-       ——-

L              2

(1 row(s) affected)

  • Ø Untuk setiap tipe ujian (‘q’atau’t’) tampilkan berapa kali dilaksanakan

SELECT TIPE, COUNT(*) AS ‘JML PELAKSANAAN’ FROM UJIAN GROUP BY TIPE

TIPE      JML PELAKSANAAN

—-           —————

Q             2

(1 row(s) affected)

Keterangan:Klausa having digunakan untuk membatasi kelompok-kelompok yang ditampilkan  yang memenuhi kondisi yang dinyatakan yang di klausa having

  • Tampilkan tipe ujian yang dilaksanakan lebih dari2 kali

SELECT TIPE, COUNT(*) AS ‘JML PELAKSANAAN’ FROM UJIAN GROUP BY TIPE HAVING COUNT(*)>2

TIPE      JML PELAKSANAAN

—-           —————

(0 row(s) affected)

Pertemuan ke-6

Tanggal 14 oktober 2004

JOIN TABEL

Untuk menampilkan informasi lebih dari 1 tabel dengan cara merelasikan  tabel-tabel tersebut:

ü  CROSSING PRODUCT

A lXl B adalah relasi yang bersisi pasangan dari setiap record yang ada di tabel A dengan setiap record yang ada di tabel B

Mahasiswa

Nama Jns_kel Nim
Billy L 1
Missy W 2
Johny L 3
Jenny W 4

Nilai

Nim No_ujian Nilai
1 5 15
2 5 14
3 5 17
4 5 19
∑ Kolom hasil cp= ∑ kolom tabel A + ∑ kolom tabel B
∑ record hasil cp= ∑ record tabel A + ∑ record tabel B

Mahasiswa lXl nilai

Nama Jns_kel Nim Nim No_ujian Nilai
Billy L 1 1 5 15
Missy L 2 2 5 14
. . . . . .
Jenny W 4 4 5 19

Sintak SQL:

  • Select* from mahasiswa, nilai
  • Select* from mahasiswa, ujian

ü  INNER JOIN (A JOIN B)

  • Adalah relasi dari 2 tabel yang keduanya memiliki field persekutuan (yang tipe dan sizenya biasanya sama)
  • Yang direlasikan hanya record- record dari 2 tabel yang nilai field persekutuannya sama
∑ Kolom hasil join= ∑ kolom di A + ∑ kolom di B
∑ Kolom record hasil join C (pake _dibawah C) ≤ ∑ record hasil cp
nama Jns_kel Nim nim No_ujian Nilai
Billy L 1 1 5 15
Missy W 2 2 5 14
Johny L 3 3 5 17
Jenny W 4 4 5 19

Sintak:

SEMUA TABLE DIKEMBALIKAN SEPERTI SEMULA

ü  SELECT * FROM MAHASISWA,NILAI WHERE MAHASISWA.NIM=NILAI.NIM

NAMA            JNS_KEL          NIM      NIM      NO_UJIAN        NILAI

—-     ——-     —         —         ——–    —–

BILLY            L          1          1          5          15

BILLY            L          1          1          6          67

JENNY          W         4          4          5          19

JENNY          W         4          4          6          79

JONI  L          3          3          5          17

JONI  L          3          3          6          82

MISSY           W         2          2          5          14

MISSY           W         2          2          6          73

(8 row(s) affected)

(pada bagian setelah where disebut kondisi join)

ATAU

ü  SELECT * FROM MAHASISWA A, NILAI B WHERE A.NIM=B.NIM

NAMA              JNS_KEL              NIM       NIM       NO_UJIAN          NILAI

—-       ——-       —            —            ——–     —–

BILLY                L             1              1              5              15

BILLY                L             1              1              6              67

JENNY              W            4              4              5              19

JENNY              W            4              4              6              79

JONI  L             3              3              5              17

JONI  L             3              3              6              82

MISSY               W            2              2              5              14

MISSY               W            2              2              6              73

(8 row(s) affected)

keterangan: A dan B adalah nama alias tabel untuk menyederhanakan penulisan query dan pada bagian setelah where disebut kondisi join

SOAL DAN JAWABAN

  1. Tampilkan data ujian beserta data mahasiswa pesertanya

SELECT MAHASISWA.NIM, MAHASISWA.NAMA, NILAI.NO_UJIAN, NILAI.NILAI FROM MAHASISWA, NILAI WHERE MAHASISWA.NIM=NILAI.NIM

NIM           NAMA   NO_UJIAN           NILAI

—                —-           ——–     —–

1  BILLY    5              15

1  BILLY    6              67

4  JENNY  5              19

4  JENNY  6              79

3  JONI      5              17

3  JONI      6              82

2  MISSY    5              14

2  MISSY    6              73

(8 row(s) affected)

atau

SELECT M.NIM, M.NAMA, N.NO_UJIAN, N.NILAI FROM MAHASISWA M, NILAI N WHERE M.NIM=N.NIM

NIM         NAMA   NO_UJIAN        NILAI

—            —-        ——–    —–

1 BILLY   5          15

1 BILLY   6          67

4 JENNY 5          19

4 JENNY 6          79

3 JONI     5          17

3 JONI     6          82

2 MISSY  5          14

2 MISSY  6          73

(8 row(s) affected)

Keterangan:Ini dari tabel mahasiswa dan nilai, joinnya ada pada nim

  1. Tampilkan peserta, ujian,bertipe ‘T’

SELECT UJIAN.NO_UJIAN, UJIAN.TGL, NILAI.NIM, NILAI.NILAI FROM UJIAN, NILAI WHERE UJIAN.NO_UJIAN=NILAI.NO_UJIAN AND UJIAN.TIPE=’T’

NO_UJIAN               TGL        NIM       NILAI

——–         —            —            —–

6  2000-01-03             1              67

6  2000-01-03             2              73

6  2000-01-03             3              82

6  2000-01-03             4              79

(4 row(s) affected)

Keterangan:Ujian dan nilai, join pada no_ujian

  1. Tampilkan data ujian dan peserta ujian yang dilakukan tahun 1999

SELECT A.NO_UJIAN, A.TGL, A.TIPE, B.NIM, B.NAMA, C.NILAI FROM UJIAN A, MAHASISWA B, NILAI C WHERE B.NIM=C.NILAI AND A.NO_UJIAN=C.NO_UJIAN AND YEAR(A.TGL)=1999

NO_UJIAN               TGL        TIPE      NIM       NAMA   NILAI

——–         —            —-           —            —-           —–

(0 row(s) affected)

Keterangan:Ujian dan nilai join pada no_ujian,mahasiswa dan nilai relasi pada nim

  • Ø LEFT JOIN (A LEFT JOIN B)

Adalah :

v  Join dari tabel A dan join B ditambah dengan

v  Record-record pada tabel A yang tidak berhasil direlasikan dengan record-record pada tabel B karena nilai di field persekutuannya tidak ada yang matching

ditulis juga sebagai hasil join dengan kolom-kolom pada tabel B di null kan

Ujian

No_ujian tgl tipe
1
2
3
4
5
6

Keterangan: 5 dengan no_ujian 5 di tabel B  6 dengan no_ujian 6 di tabel B

Nilai

Nim No_ujian Nilai
1 5 5
2 5 14
3 5 17
4 5 19
1 6 67
2 2 73
3 6 82
4 6 79

NO_UJIAN   TGL        TIPE        NIM        NO_UJIAN            NILAI

——–             —            —-           —            ——–     —–

1      1999-08-03             Q             NULL     NULL     NULL

2      1999-08-06             Q             NULL     NULL     NULL

3      1999-09-09             T              NULL     NULL     NULL

4      1999-09-16             Q             NULL     NULL     NULL

5      1999-10-02             Q             1              5              15

5      1999-10-02             Q             2              5              14

5      1999-10-02             Q             3              5              17

5      1999-10-02             Q             4              5              19

6      2000-01-03             T              1              6              67

6      2000-01-03             T              2              6              73

6      2000-01-03             T              3              6              82

6      2000-01-03             T              4              6              79

(12 row(s) affected)

Keterangan :dari 1-4 pada no_ujian=record-record di tabel yang tidak punya nilai sama di field persekutuannya di tabel nilai dan dari 5-6 pada no_ujian =sama dengan hasil join untuk yang nilainya sama dengan di field persekutuan

CONTOH-CONTOH

SELECT * FROM UJIAN LEFT JOIN NILAI ON UJIAN.NO_UJIAN=NILAI.NO_UJIAN

NO_UJIAN            TGL      TIPE    NIM     NO_UJIAN      NILAI

——–        —        —-       —        ——–  —–

6    2000-01-03      T          1           6          67

6    2000-01-03      T          2          6          73

6    2000-01-03      T          3          6          82

6    2000-01-03      T          4          6          79

2    1999-08-06      Q         NULL    NULL    NULL

4    1999-09-16       T          NULL    NULL    NULL

3    1999-09-09      T          NULL    NULL    NULL

5    1999-10-02       Q         1           5          15

5    1999-10-02       Q         4          5          19

5    1999-10-02       Q         3          5          17

5    1999-10-02       Q         2          5          14

1     1999-08-03      Q         NULL    NULL    NULL

(12 row(s) affected)

Atau

SELECT * FROM UJIAN U LEFT JOIN NILAI N ON U.NO_UJIAN=N.NO_UJIAN

  1. I.      Tampilkan yang pesertanya kosong

SELECT U.NO_UJIAN, U.TGL, U.TIPE FROM UJIAN U LEFT JOIN NILAI N ON U.NO_UJIAN=N.NO_UJIAN WHERE N.NO_UJIAN IS NULL

NO_UJIAN           TGL        TIPE

——–     —            —-

2              1999-08-06             Q

4              1999-09-16             T

3              1999-09-09             T

1              1999-08-03             Q

(4 row(s) affected)

Atau LAINNYA

SELECT U.NO_UJIAN, U.TGL, U.TIPE FROM UJIAN U LEFT JOIN NILAI N ON U.NO_UJIAN=NIM IS NULL WHERE N.NILAI IS NULL

NO_UJIAN            TGL        TIPE

——–     —            —-

6              2000-01-03             T

2              1999-08-06             Q

4              1999-09-16             T

3              1999-09-09             T

5              1999-10-02             Q

1              1999-08-03             Q

(6 row(s) affected)

SAMA DENGAN YG KE DUA

SELECT U.NO_UJIAN, U.TGL, U.TIPE FROM UJIAN U LEFT JOIN NILAI N ON U.NO_UJIAN=NIM IS NULL WHERE N.NIM IS NULL

Buat tabel absensi berikut

CREATE TABLE ABSENSI

(NIM INT UNSIGNED NOT NULL,

TGL DATE NOT NULL)

INSERT INTO ABSENSI (2,’1999-9-2′),(4,’1999-9-8′),(2,’1999-10-3′)

  1. II.      Tampilkan mahasiswa yang pernah absen

SELECT A.NIM, A.NAMA, B.TGL AS ‘TGL ABSEN’ FROM MAHASISWA A, ABSENSI B WHERE A.NIM=B.NIM

NIM       NAMA   TGL ABSEN

—            —-           ———

2              MISSY    1999-09-02

4              JENNY  1999-09-08

2              MISSY    1999-10-03

(3 row(s) affected)

  1. III.      Tampilkan mahasiswa yang tidak pernah absen

SELECT A.NIM, A.NAMA FROM MAHASISWA A LEFT JOIN ABSENSI ON A.NIM=ABSENSI.NIM WHERE ABSENSI.NIM IS NULL

NIM       NAMA

—            —-

1              BILLY

3              JONI

(2 row(s) affected)

Tampilkan data berikut pada tabel mahasiswa

INSERT INTO MAHASISWA VALUES(‘ANITA’,’W’,5)

  1. IV.      lalu tampilkan mahasiswa yang tidak pernah ikut ujian

SELECT A.NIM, A.NAMA FROM MAHASISWA A LEFT JOIN NILAI ON A.NIM=NILAI.NIM WHERE NILAI.NILAI IS NULL

NIM       NAMA

—            —-

5              ANITA

(1 row(s) affected)

jawaban quiz 1

ü CREATE DATABASE TOKO_BNG

ü  USE TOKO_BNG

ü  CREATE TABLE PELANGGAN (KODE_PLNG VARCHAR(5) NOT NULL PRIMARY KEY, NAMA_PLNG VARCHAR(20) NOT NULL, ALAMAT VARCHAR(25)NULL)

ü  CREATE TABLE PESANAN (KODE_PLNG VARCHAR(5) NOT NULL , KODE_BNG VARCHAR(6) NOT NULL NOT NULL ,VOL INT UNSIGNED NOT NULL,TANGGAL DATE NOT NULL,PRIMARY KEY(KODE_PLNG,KODE_BNG))

ü  CREATE TABLE BUNGA (KODE_BNG VARCHAR(6) NOT NULL PRIMARY KEY, NAMA_BNG VARCHAR(15) NOT NULL, ASAL_BNG VARCHAR(15) NULL, HARGA_SAT INT UNSIGNED NOT NULL)

ü  INSERT INTO PELANGGAN (KODE_PLNG,NAMA_PLNG,ALAMAT) VALUES (‘CE111’,’Ronald’,’Jl. A. Yani 112’), (‘CA102’,’Fani’,’Jl. Asia Afrika 432’), (‘CC205’,’Ana’,’Jl. Pajajaran 32’), (‘CA564’,’Serly’,’Jl. Pahlawan 65’), (‘CD102’,’Indra’,’Jl. Pajajaran 100’)

ü  INSERT INTO PESANAN (KODE_PLNG,KODE_BNG,VOL,TANGGAL) VALUES(‘CE111’,’B55005’,20,’1999-10-03’) , (‘CA705’,’B33003’,15,’1999-10-08’), (‘CC205’,’B44004’,30,’1999-10-14’), (‘CA102’,’B55005’,45,’1999-10-20’), (‘CD102’,’B22002’,20,’1999-10-30’), (‘CE111’,’B44004’,10,’1999-11-04’), (‘CA102’,’B22002’,35,’1999-11-12’), (‘CC205’,’B33003’,40,’1999-12-20’)

ü  INSERT INTO BUNGA (KODE_BNG, NAMA_BNG, ASAL_BNG, HARGA_SAT) VALUES(‘B11001′,’ Sun Glare’,’Afrika’,50000) , (‘B22002′,’ Anggrek’,’Indonesia’,30000), (‘B33003′,’ Teratai’,’Indonesia’,45000), (‘B44004′,’ Tulip’,’Belanda’,35000), (‘B55005′,’ Sakura’,’Jepang’,28000)

ü  SELECT * FROM PELANGGAN

KODE_PLNG    NAMA_PLNG      ALAMAT

———                ———    ——

CE111 Ronald   Jl. A. Yani 112

CA102                Fani        Jl. Asia Afrika 432

CC205                Ana         Jl. Pajajaran 32

CA564                Serly       Jl. Pahlawan 65

CD102                Indra      Jl. Pajajaran 100

(5 row(s) affected)

ü  SELECT * FROM PESANAN

KODE_PLNG    KODE_BNG          VOL        TANGGAL

———                ——–     —            ——-

CE111 B55005    20            1999-10-03

CA705                B33003    15            1999-10-08

CC205                B44004    30            1999-10-14

CA102                B55005    45            1999-10-20

CD102                B22002    20            1999-10-30

CE111 B44004    10            1999-11-04

CA102                B22002    35            1999-11-12

CC205                B33003    40            1999-12-20

(8 row(s) affected)

ü  SELECT * FROM BUNGA

KODE_BNG      NAMA_BNG        ASAL_BNG           HARGA_SAT

——– ——–     ——–     ———

B11001                Sun Glare             Afrika    50000

B22002                Anggrek               Indonesia              30000

B33003                Teratai  Indonesia              45000

B44004                Tulip     Belanda  35000

B55005                Sakura   Jepang    28000

(5 row(s) affected)

BAGIAN DUA

  1. i.            SELECT * FROM BUNGA  WHERE ASAL_BNG=’Indonesia’

KODE_BNG          NAMA_BNG        ASAL_BNG           HARGA_SAT

——–     ——–     ——–     ———

B22002    Anggrek               Indonesia              30000

B33003    Teratai  Indonesia              45000

(2 row(s) affected)

  1. ii. SELECT * FROM PELANGGAN WHERE ALAMAT LIKE ‘Jl. Pajajaran%’

KODE_PLNG        NAMA_PLNG      ALAMAT

———    ———    ——

CC205    Ana         Jl. Pajajaran 32

CD102    Indra      Jl. Pajajaran 100

(2 row(s) affected)

  1. iii.            UPDATE PELANGGAN SET ALAMAT=’Jl. Sukarno Hatta 234′  WHERE KODE_PLNG=’CE111′

KODE_PLNG        NAMA_PLNG      ALAMAT

———    ———    ——

CE111     Ronald   Jl. Sukarno Hatta 234

CA102    Fani        Jl. Asia Afrika 432

CC205    Ana         Jl. Pajajaran 32

CA564    Serly       Jl. Pahlawan 65

CD102    Indra      Jl. Pajajaran 100

(5 row(s) affected)

  1. iv. SELECT A.KODE_PLNG,A.NAMA_PLNG, B.KODE_BNG, C.NAMA_BNG, B.VOL, C.HARGA_SAT, B.VOL*C.HARGA_SAT AS TOTAL, B.TANGGAL FROM PELANGGAN A, PESANAN B, BUNGA C WHERE A.KODE_PLNG=B.KODE_PLNG AND B.KODE_BNG=C.KODE_BNG

KODE_PLNG        NAMA_PLNG      KODE_BNG          NAMA_BNG        VOL        HARGA_SAT        TOTAL   TANGGAL

———    ———    ——–     ——–     —            ———    —–         ——-

CE111     Ronald   B44004    Tulip     10            35000      350000    1999-11-04

CE111     Ronald   B55005    Sakura   20            28000      560000    1999-10-03

CA102    Fani        B22002    Anggrek               35            30000      1050000  1999-11-12

CA102    Fani        B55005    Sakura   45            28000      1260000  1999-10-20

CC205    Ana         B33003    Teratai  40            45000      1800000  1999-12-20

CC205    Ana         B44004    Tulip     30            35000      1050000  1999-10-14

CD102    Indra      B22002    Anggrek               20            30000      600000    1999-10-30

(7 row(s) affected)

pada klausa where tidak boleh pake alias

  1. v. SELECT A.KODE_PLNG, B.KODE_BNG, B.VOL, C.HARGA_SAT, B.VOL*C.HARGA_SAT AS TOTAL,B.TANGGAL FROM PELANGGAN A, PESANAN B, BUNGA C  WHERE B.KODE_BNG=C.KODE_BNG AND B.VOL*C.HARGA_SAT>60000

KODE_PLNG     KODE_BNG       VOL       HARGA_SAT       TOTAL  TANGGAL

———    ——–     —            ———    —–         ——-

CA102    B55005   20            28000      560000    1999-10-03

CA564    B55005   20            28000      560000    1999-10-03

CC205     B55005   20            28000      560000    1999-10-03

CD102    B55005   20            28000      560000    1999-10-03

CE111    B55005   20            28000      560000    1999-10-03

CA102    B33003   15            45000      675000    1999-10-08

CA564    B33003   15            45000      675000    1999-10-08

CC205     B33003   15            45000      675000    1999-10-08

CD102    B33003   15            45000      675000    1999-10-08

CE111    B33003   15            45000      675000    1999-10-08

CA102    B44004   30            35000      1050000  1999-10-14

CA564    B44004   30            35000      1050000  1999-10-14

CC205     B44004   30            35000      1050000  1999-10-14

CD102    B44004   30            35000      1050000  1999-10-14

CE111    B44004   30            35000      1050000  1999-10-14

CA102    B55005   45            28000      1260000  1999-10-20

CA564    B55005   45            28000      1260000  1999-10-20

CC205     B55005   45            28000      1260000  1999-10-20

CD102    B55005   45            28000      1260000  1999-10-20

CE111    B55005   45            28000      1260000  1999-10-20

CA102    B22002   20            30000      600000    1999-10-30

CA564    B22002   20            30000      600000    1999-10-30

CC205     B22002   20            30000      600000    1999-10-30

CD102    B22002   20            30000      600000    1999-10-30

CE111    B22002   20            30000      600000    1999-10-30

CA102    B44004   10            35000      350000    1999-11-04

CA564    B44004   10            35000      350000    1999-11-04

CC205     B44004   10            35000      350000    1999-11-04

CD102    B44004   10            35000      350000    1999-11-04

CE111    B44004   10            35000      350000    1999-11-04

CA102    B22002   35            30000      1050000  1999-11-12

CA564    B22002   35            30000      1050000  1999-11-12

CC205     B22002   35            30000      1050000  1999-11-12

CD102    B22002   35            30000      1050000  1999-11-12

CE111    B22002   35            30000      1050000  1999-11-12

CA102    B33003   40            45000      1800000  1999-12-20

CA564    B33003   40            45000      1800000  1999-12-20

CC205     B33003   40            45000      1800000  1999-12-20

CD102    B33003   40            45000      1800000  1999-12-20

CE111    B33003   40            45000      1800000  1999-12-20

(40 row(s) affected)

  1. vi. SELECT * FROM PESANAN WHERE VOL>20

KODE_PLNG     KODE_BNG       VOL       TANGGAL

———    ——–     —            ——-

CC205     B44004   30            1999-10-14

CA102    B55005   45            1999-10-20

CA102    B22002   35            1999-11-12

CC205     B33003   40            1999-12-20

(4 row(s) affected)

  1. vii. SELECT A.KODE_PLNG, B.KODE_BNG, B.NAMA_BNG, A.VOL, TANGGAL FROM BUNGA B, PESANAN A WHERE A.KODE_BNG=B.KODE_BNG AND ASAL_BNG=’Indonesia’  AND MONTH(TANGGAL)=10

KODE_PLNG     KODE_BNG       NAMA_BNG       VOL       TANGGAL

———    ——–     ——–     —            ——-

CA705    B33003   Teratai    15            1999-10-08

CD102    B22002   Anggrek 20            1999-10-30

(2 row(s) affected)

  1. viii. SELECT A.KODE_BNG, A.NAMA_BNG FROM BUNGA A LEFT JOIN PESANAN ON A.KODE_BNG=PESANAN.KODE_BNG WHERE PESANAN.VOL IS NULL

KODE_BNG       NAMA_BNG

——–     ——–

B11001   Sun Glare

(1 row(s) affected)

  1. ix. SELECT A.KODE_PLNG,A.KODE_BNG, A.VOL, A.TANGGAL FROM PESANAN A LEFT JOIN PELANGGAN ON PELANGGAN.KODE_PLNG=A.KODE_PLNG WHERE PELANGGAN.NAMA_PLNG IS NULL

KODE_PLNG     KODE_BNG       VOL       TANGGAL

———    ——–     —            ——-

CA705    B33003   15            1999-10-08

(1 row(s) affected)

  1. x. SELECT KODE_BNG, COUNT(*) AS ‘JUMLAH TRANSAKSI’ FROM PESANAN GROUP BY KODE_BNG

KODE_BNG       JUMLAH TRANSAKSI

——–     —————-

B22002   2

B33003   2

B44004   2

B55005   2

(4 row(s) affected)

  1. xi. SELECT KODE_PLNG, COUNT(*) AS ‘JUMLAH TRANSAKSI’ FROM PESANAN GROUP BY KODE_PLNG

KODE_PLNG     JUMLAH TRANSAKSI

———    —————-

CA102    2

CA705    1

CC205     2

CD102    1

CE111    2

(5 row(s) affected)

  1. xii. DELETE FROM PESANAN KODE_PLNG=’B440044’
  2. xiii. DROP TABLE PELANGGAN

DROP TABLE BUNGA

DROP TABLE PESANAN

  1. xiv. DROP DATABASE TOKO_BNG

2004-10-27

FUNGSI-FUNGSI DI MYSQL

  1. Fungsi String

Untuk menangani data bertipe string (char,varchar, dll)

ASCII (str)

Untuk mengembalikan nilai kode ASCII dari karakter paling  kiri suatu string  jika string kosong atau null akan mengembalikan

Ex:

ü  SELECT ASCII(“a”)

ASCII(“a”)

———-

97

(1 row(s) affected)

ü  SELECT ASCII(“A”)

ASCII(“A”)

———-

65

(1 row(s) affected)

ü  SELECT ASCII(“”)

ASCII(“”)

———

0

(1 row(s) affected)

Char (n1,n2,..)

Untuk menerjemahkan serangkaian kode ASC ke karakter /string

Ex:

ü  SELECT CHAR(89)

CHAR(89)

——–

Y

(1 row(s) affected)

ü  SELECT CHAR(89,105,107,101,115,37)

CHAR(89,105,107,101,115,37)

—————————

Yikes%

(1 row(s) affected)

LCASE(str) atau LOWER(str)

Untuk mengembalikan string yang berhuruf kecil semua

Ex:

ü  SELECT LCASE(NAMA_PLNG)  FROM PELANGGAN

LCASE(NAMA_PLNG)

—————-

ronald

fani

ana

serly

indra

(5 row(s) affected)

ü  SELECT * FROM PELANGGAN WHERE LCASE(ALAMAT) LIKE’%Pajajaran%’

KODE_PLNG         NAMA_PLNG     ALAMAT

———        ———    ——

CC205         Ana         Jl. Pajajaran 32

CD102        Indra       Jl. Pajajaran 100

(2 row(s) affected)

UCASE(str) atau UPPER(str)

Untuk mengembalikan string yang berhuruf besar semua

Ex:

ü  SELECT UCASE(NAMA_PLNG) FROM PELANGGAN

UCASE(NAMA_PLNG)

—————-

RONALD

FANI

ANA

SERLY

INDRA

(5 row(s) affected)

ü  SELECT * FROM PELANGGAN WHERE UCASE(ALAMAT) LIKE ‘%Pajajaran%’

KODE_PLNG         NAMA_PLNG     ALAMAT

———        ———    ——

CC205         Ana         Jl. Pajajaran 32

CD102        Indra       Jl. Pajajaran 100

(2 row(s) affected)

SUBSTRING (str,pos,len)

Untuk mengembalikan substring dari string str dimulai posisi pos sebanyak len karakter

Ex:

ü  SELECT SUBSTRING(KODE_PLNG,1,2) FROM PELANGGAN

SUBSTRING(KODE_PLNG,1,2)

————————

CA

CA

CC

CD

CE

(5 row(s) affected)

ü  SELECT SUBSTRING(‘ABCDEF’,3,2)

SUBSTRING(‘ABCDEF’,3,2)

———————–

CD

(1 row(s) affected)

ü  SELECT SUBSTRING(‘ABCDEF’,3)

SUBSTRING(‘ABCDEF’,3)

———————

CDEF

(1 row(s) affected)

LENGTH (str) atau CHAR_LENGTH (str)

Untuk mengembalikan jumlah karakter pada string str

Ex:

SELECT LENGTH(NAMA_PLNG) FROM PELANGGAN

LENGTH(NAMA_PLNG)

—————–

6

4

3

5

5

(5 row(s) affected)

ü  SELECT LENGTH(‘ABCA’)

LENGTH(‘ABCA’)

————–

4

(1 row(s) affected)

CONCAT (str1,str2,…)

Untuk menggabungkan string-string masukan menjadi 1 string

Ex:

ü  SELECT CONCAT(“ABC”,”DEF”)

CONCAT(“ABC”,”DEF”)

——————-

ABCDEF

(1 row(s) affected)

Fungsi-fungsi string yang lain

Left(str);right(str);reverse(str);rtrim(str);ltrim(str);repeat(str,n);locate(str,substr,pos) ; dll

  1. FUNGSI TANGGAL DAN WAKTU

Adalah fungsi yang berkaitan dengan data tanggal dan waktu

Curdate()

Untuk mengembalikan tanggal sekarang dalam format “YYYY-mm-dd”

Ex:

ü  SELECT CURDATE()

CURDATE()

———

2004-12-03

(1 row(s) affected)

Curtime()

Untuk mengembalikan waktu sekarang dalam “hh-mm-ss”

Ex:

ü  SELECT CURTIME()

CURTIME()

———

23:00:36

(1 row(s) affected)

Date_format(date,format)

Untuk memformat tampilan tanggal sesuai dengan format yang diinginkan

ü  SELECT DATE_FORMAT(TANGGAL,”%M%E%Y”) FROM PESANAN

DATE_FORMAT(TANGGAL,”%M%E%Y”)

—————————–

OctoberE1999

OctoberE1999

OctoberE1999

OctoberE1999

OctoberE1999

NovemberE1999

NovemberE1999

DecemberE1999

(8 row(s) affected)

Dayname(date)

Untuk mengembalikan nama hari dari tanggal yang diberikan

Ex:

ü  SELECT DAYNAME(“2004-12-6”)

DAYNAME(“2004-12-6”)

——————–

Monday

(1 row(s) affected)

Dayotmonth(date); dayofweek(date); dayofyear(date)

Masing-masing mengembalikan

  • Tanggal ke berapa dalam sebulan
  • Hari ke berapa dalam seminggu
  • Hari ke berapa dalam setahun

Ex:

ü  SELECT DAYOFMONTH(‘2004-12-06’)

DAYOFMONTH(‘2004-12-06’)

————————

6

(1 row(s) affected)

ü  SELECT DAYOFWEEK(‘2004-12-06’)

DAYOFWEEK(‘2004-12-06’)

———————–

2

(1 row(s) affected)

ü  SELECT DAYOFYEAR(‘2004-12-06’)

DAYOFYEAR(‘2004-12-06’)

———————–

341

(1 row(s) affected)

Monthname(date)

Untuk mengembalikan nama bulan dari tanggal yang diberikan

Ex:

ü  SELECT MONTHNAME(CURDATE())

MONTHNAME(CURDATE())

——————–

December

(1 row(s) affected)

From_days(n)

Untuk mengembalikan tanggal berapa dari jumlah hari yang diberikan dihitung dari tanggal 1-1-0

Ex:

ü  SELECT FROM_DAYS(732247)

FROM_DAYS(732247)

—————–

2004-10-28

(1 row(s) affected)

To_days(date)

Untuk mengembalikan jumlah dari tanggal 1-1-0 s/d tanggal yang diberikan

Ex:

ü  Select to_days(curdate())

Jawabannya:2004-10-27 14-46-20

ü  SELECT TO_DAYS(CURDATE())

TO_DAYS(CURDATE())

——————

732283

(1 row(s) affected)

ü  SELECT TO_DAYS(‘2004-10-27’)-TO_DAYS(‘1986-12-6’)

TO_DAYS(‘2004-10-27’)-TO_DAYS(‘1986-12-6’)

——————————————

6535

(1 row(s) affected)

Hour(time); minute(time); second(time)

Masing-masing mengembalikan

  1. Jam dari waktu yang diberikan
  2. Menit waktu yang diberikan
  3. Detik waktu yang diberikan

Ex:

ü  Select hour(’15,20’)

Jawabannya:15

ü  SELECT hour(‘15,20’)

hour(‘15,20’)

————-

0

(1 row(s) affected)

Period_add(perios,n)

Menambah n bulan pada period yang diberikan kembalikan dalam format YYYYMM

Ex:

ü  Select period_add()200410,2)

Jawabannya:200412

Period_diff(period1,perid2)

Mengembalikan jumlah bulan antara period1 dan period2

Ex:

ü  SELECT PERIOD_DIFF(200410,200401)

PERIOD_DIFF(200410,200401)

————————–

9

(1 row(s) affected)

Sec_to_time(second)

Untuk mengetahui dari detik ke jam

ü  SELECT SEC_TO_TIME(7200)

SEC_TO_TIME(7200)

—————–

02:00:00

(1 row(s) affected)

Time_to-sec(time)

Untul mengetahui dari jam ke detik

Ex:

ü  SELECT TIME_TO_SEC(“14:00:00”)

TIME_TO_SEC(“14:00:00”)

———————–

50400

(1 row(s) affected)

Month(date); year(date)

Untuk mengembalikan :

  • Bulan dari tanggal yang diberikan (1,2,3,…,12)
  • Tahun dari tanggal yang diberikan

Week(date); weekday(date)

Untuk mengembalikkan:

  • Minggu ke berapa dalam setahun
  • Hari ke barapa dalam seminggu

Dari tabel yang diberikan

Ex:

ü  SELECT WEEK(CURDATE())

WEEK(CURDATE())

—————

48

(1 row(s) affected)

ü  SELECT WEEKDAY(CURDATE())

WEEKDAY(CURDATE())

——————

4

(1 row(s) affected)

  1. FUNGSI NUMERIK

Adalah fungsi yang berkaitan dengan data numerik (int,smallint,bigint,long,double,..)

Round(x,d)

Untuk mengembalikan bil x sebanyak d digit di belakang koma

Ex:

ü  Select round(33,278811,2)

Jawabannya:33,28

Rand() atau rand(n)

Untuk mengembalikan bilangan random amtara 0.0 s/d 1.0, n menyatakan seed

Ex:

ü  SELECT RAND()

RAND()

——

0.48747066081266

(1 row(s) affected)

ü  SELECT RAND()

RAND()

——

0.95666147950726

(1 row(s) affected)

ü  SELECT RAND(10)

RAND(10)

——–

0.18109053110805

(1 row(s) affected)

ü  SELECT RAND(10)

RAND(10)

——–

0.18109053110805

(1 row(s) affected)

Sin(x)

ü  Select sin(50)

Cos(x)

ü  Select cos(0)

Abs(x)

ü  Select abs(-10)

Power(x,y) =x

Ex:

ü  Select power(2,3)

Jawabannya=8

Sqrt(x)=

ü  Select sqrt(25)

Mod(x,y) sisa x%y

Ex:

ü  Select mod(8,8)

Jawabannya=2

  1. FUNGSI PEMBANDING

Untuk melakukan perbandingan  nama data-data numerik atau string

Greatest(n1,n2,n3,…)

Untuk mengisi bilangan terbesar dari bilangan-bilangan masukan

Ex:

ü  SELECT GREATEST(10,15,8,17,6)

GREATEST(10,15,8,17,6)

———————-

17

(1 row(s) affected)

Least(n1,n2,n3,…)

Ex:

ü  SELECT LEAST(10,15,8,17,6)

LEAST(10,15,8,17,6)

——————-

6

(1 row(s) affected)

Strcmp(str1,str2)

Untuk membandingkan dua buah string

  • 0 jika sama
  • <1 jika tak sama

Ex:

ü  SELECT(‘abc'<‘def’)

(‘abc'<‘def’)

————-

1

(1 row(s) affected)

ü  SELECT(‘abc’=’def’)

(‘abc’=’def’)

————-

0

(1 row(s) affected)

  1. FUNGSI LAIN

Encrypt(str)

Untuk mengacak atau menyadi str menjadi string lain

Ex:

ü  SELECT ENCRYPT(‘SECRET’)

ENCRYPT(‘SECRET’)

—————–

NULL

(1 row(s) affected)

Mds(str)

Untuk menyandi dengan berdasar pada rsa data security

Ex:

ü  Select mds(‘secret’)

Password(str)

Untuk menyandi str menjadi string lain

Ex:

ü  SELECT PASSWORD(‘SECRET’)

PASSWORD(‘SECRET’)

——————

48477c740087f604

(1 row(s) affected)

Decode

Encode

Soal-soal tambahan dari tugas

ü  SELECT MAHASISWA.NIM, MAHASISWA.NAMA, MATAKULIAH.KD_MK, MATAKULIAH.NAMA_MK FROM MATAKULIAH INNER JOIN (MAHASISWA INNER JOIN AMBILKULIAH ON MAHASISWA.NIM=AMBILKULIAH.NIM) ON MATAKULIAH.KD_MK=AMBILKULIAH.KD_MK WHERE (((MATAKULIAH.KD_MK)=”IF-101″)) ORDER BY MAHASISWA.NIM

Query15
NIM NAMA KD_MK NAMA_MK
100 Anita IF-101 Algoritma Pemrograman
103 Cintia IF-101 Algoritma Pemrograman
  1. SELECT DOSEN.KD_DOSEN, DOSEN.NAMA_DOS, MATAKULIAH.KD_MK, MATAKULIAH.NAMA_MK, MATAKULIAH.SKS, MENGAJAR.RUANG, MENGAJAR.WAKTU FROM MATAKULIAH INNER JOIN (DOSEN INNER JOIN MENGAJAR ON DOSEN.KD_DOSEN=MENGAJAR.KD_DOSEN) ON MATAKULIAH.KD_MK=MENGAJAR.KD_MK WHERE (((DOSEN.NAMA_DOS)=”Dewi Sundari”)) ORDER BY MATAKULIAH.KD_MK DESC
Query15
KD_DOSEN NAMA_DOS KD_MK NAMA_MK SKS RUANG WAKTU
DEW-02 Dewi Sundari KU-230 Bahasa Inggris 2 2004 09:00
DEW-02 Dewi Sundari IF-110 Struktur Data 3 3010 10:00
  1. SELECT MAHASISWA.NIM, MAHASISWA.NAMA, MATAKULIAH.KD_MK, MATAKULIAH.NAMA_MK, MATAKULIAH.SKS, DOSEN.NAMA_DOS

FROM DOSEN INNER JOIN ((MATAKULIAH INNER JOIN (MAHASISWA INNER JOIN AMBILKULIAH ON MAHASISWA.NIM=AMBILKULIAH.NIM) ON MATAKULIAH.KD_MK=AMBILKULIAH.KD_MK) INNER JOIN MENGAJAR ON MATAKULIAH.KD_MK=MENGAJAR.KD_MK) ON DOSEN.KD_DOSEN=MENGAJAR.KD_DOSEN WHERE (((MAHASISWA.NAMA)=”Bambang”)) ORDER BY MATAKULIAH.KD_MK

  1. SELECT MAHASISWA.NIM, MAHASISWA.NAMA, MATAKULIAH.KD_MK, MATAKULIAH.NAMA_MK, MATAKULIAH.SKS, DOSEN.NAMA_DOS FROM DOSEN INNER JOIN ((MATAKULIAH INNER JOIN (MAHASISWA INNER JOIN AMBILKULIAH ON MAHASISWA.NIM = AMBILKULIAH.NIM) ON MATAKULIAH.KD_MK = AMBILKULIAH.KD_MK) INNER JOIN MENGAJAR ON MATAKULIAH.KD_MK =MENGAJAR.KD_MK) ON DOSEN.KD_DOSEN = MENGAJAR.KD_DOSEN

WHERE (((MATAKULIAH.KD_MK)=”IF-110″))

Query15
NIM NAMA KD_MK NAMA_MK SKS NAMA_DOS
100 Anita IF-110 Struktur Data 3 Dewi Sundari
102 Wahyudi IF-110 Struktur Data 3 Dewi Sundari
  1. SELECT MAHASISWA.NIM, MAHASISWA.NAMA, MATAKULIAH.KD_MK, MATAKULIAH.NAMA_MK, AMBILKULIAH.Nilai FROM MATAKULIAH INNER JOIN (MAHASISWA INNER JOIN AMBILKULIAH ON MAHASISWA.NIM=AMBILKULIAH.NIM) ON MATAKULIAH.KD_MK=AMBILKULIAH.KD_MK WHERE (((MATAKULIAH.NAMA_MK)=”Kalkulus 2″) AND ((AMBILKULIAH.Nilai)>60))
Query15
NIM NAMA KD_MK NAMA_MK Nilai
100 Anita MA-422 Kalkulus 2 87
  1. SELECT MAHASISWA.NIM, MAHASISWA.NAMA, MATAKULIAH.KD_MK, MATAKULIAH.NAMA_MK, DOSEN.NAMA_DOS, MATAKULIAH.Semester FROM MAHASISWA AS MAHASISWA_1, (MATAKULIAH INNER JOIN (MAHASISWA INNER JOIN AMBILKULIAH ON MAHASISWA.NIM=AMBILKULIAH.NIM) ON MATAKULIAH.KD_MK=AMBILKULIAH.KD_MK) INNER JOIN (DOSEN INNER JOIN MENGAJAR ON DOSEN.KD_DOSEN=MENGAJAR.KD_DOSEN) ON MATAKULIAH.KD_MK=MENGAJAR.KD_MK WHERE (((MATAKULIAH.Semester)=3))
Query15
NIM NAMA KD_MK NAMA_MK NAMA_DOS Semester
102 Wahyudi MA-321 Kalkulus 1 Adi Budiman 3
103 Cintia MA-321 Kalkulus 1 Adi Budiman 3
102 Wahyudi IF-302 Basis Data Adi Budiman 3
102 Wahyudi MA-321 Kalkulus 1 Adi Budiman 3
103 Cintia MA-321 Kalkulus 1 Adi Budiman 3
102 Wahyudi IF-302 Basis Data Adi Budiman 3
102 Wahyudi MA-321 Kalkulus 1 Adi Budiman 3
103 Cintia MA-321 Kalkulus 1 Adi Budiman 3
102 Wahyudi IF-302 Basis Data Adi Budiman 3
102 Wahyudi MA-321 Kalkulus 1 Adi Budiman 3
103 Cintia MA-321 Kalkulus 1 Adi Budiman 3
102 Wahyudi IF-302 Basis Data Adi Budiman 3
  1. SELECT MAHASISWA.NIM, MAHASISWA.NAMA, MAHASISWA.TGL_LAHIR FROM MAHASISWA WHERE (((Year([MAHASISWA].[TGL_LAHIR]))=1978)
Query15
NIM NAMA TGL_LAHIR
101 Bambang 06/06/1978
102 Wahyudi 10/12/1978
  1. SELECT MATAKULIAH.KD_MK, MATAKULIAH.NAMA_MK, MATAKULIAH.Semester FROM MATAKULIAH WHERE (((MATAKULIAH.Semester)=3 Or (MATAKULIAH.Semester)=4))
Query15
KD_MK NAMA_MK Semester
MA-321 Kalkulus 1 3
MA-422 Kalkulus 2 4
IF-302 Basis Data 3
  1. SELECT MAHASISWA.NIM, MAHASISWA.NAMA, AMBILKULIAH.KD_MK, AMBILKULIAH.Nilai, MATAKULIAH.NAMA_MK FROM MATAKULIAH INNER JOIN (MAHASISWA INNER JOIN AMBILKULIAH ON MAHASISWA.NIM=AMBILKULIAH.NIM) ON MATAKULIAH.KD_MK=AMBILKULIAH.KD_MK WHERE (((AMBILKULIAH.Nilai) Between 70 And 100))
Query15
NIM NAMA KD_MK Nilai NAMA_MK
100 Anita IF-110 76 Struktur Data
100 Anita MA-422 87 Kalkulus 2
102 Wahyudi IF-110 97 Struktur Data
103 Cintia IF-101 80 Algoritma Pemrograman
103 Cintia KU-133 86 Agama
103 Cintia MA-321 91 Kalkulus 1
  1. Tampilkan jml peserta setiap matakuliah

SELECT MATAKULIAH.KD_MK, MATAKULIAH.NAMA_MK FROM MATAKULIAH INNER JOIN AMBILKULIAH ON MATAKULIAH.KD_MK=AMBILKULIAH.KD_MK

Query15
KD_MK NAMA_MK
IF-101 Algoritma Pemrograman
IF-101 Algoritma Pemrograman
IF-110 Struktur Data
IF-110 Struktur Data
IF-302 Basis Data
KU-133 Agama
KU-230 Bahasa Inggris
KU-230 Bahasa Inggris
MA-321 Kalkulus 1
MA-321 Kalkulus 1
MA-422 Kalkulus 2
MA-422 Kalkulus 2
  1. Tampilkan matakuliah yang nilai rata-ratanya di atas 73

SELECT MATAKULIAH.KD_MK, MATAKULIAH.NAMA_MK, AMBILKULIAH.Nilai FROM MATAKULIAH INNER JOIN AMBILKULIAH ON MATAKULIAH.KD_MK=AMBILKULIAH.KD_MK

Query15
KD_MK NAMA_MK Nilai
IF-101 Algoritma Pemrograman 63
IF-101 Algoritma Pemrograman 80
IF-110 Struktur Data 76
IF-110 Struktur Data 97
IF-302 Basis Data 55
KU-133 Agama 86
KU-230 Bahasa Inggris 54
KU-230 Bahasa Inggris 40
MA-321 Kalkulus 1 68
MA-321 Kalkulus 1 91
MA-422 Kalkulus 2 87
MA-422 Kalkulus 2 30
  1. Tampilkan matakuliah yang pesertanya lebih dari satu

SELECT MATAKULIAH.KD_MK, MATAKULIAH.NAMA_MK FROM MATAKULIAH INNER JOIN AMBILKULIAH ON MATAKULIAH.KD_MK=AMBILKULIAH.KD_MK

Query15
KD_MK NAMA_MK
IF-101 Algoritma Pemrograman
IF-101 Algoritma Pemrograman
IF-110 Struktur Data
IF-110 Struktur Data
IF-302 Basis Data
KU-133 Agama
KU-230 Bahasa Inggris
KU-230 Bahasa Inggris
MA-321 Kalkulus 1
MA-321 Kalkulus 1
MA-422 Kalkulus 2
MA-422 Kalkulus 2

  1. Tampilkan jml peserta setiap matakuliah
KD_MK NAMA_MK JML_PESERTA
  1. Tampilkan matakuliah yang nilai rata-ratanya di atas 73
KD_MK NAMA_MK
  1. Tampilkan matakuliah yang pesertanya lebih dari satu
KD_MK NAMA_MK JML_PESERTA

Sql=ddl,dml

Tanggal 1-12-2004

ü ALTER TABLE MAHASISWA2 ADD COLUMN JENIS_KELAMIN TEXT(1) NOT NULL

ü ALTER TABLE MAHASISWA2 ALTER COLUMN NAMA TEXT(15) NOT NULL

ü DROP COLUMN JENIS_KELAMIN

ü DROP TABLE MAHASISWA2

ü CREATE TABLE MAHASISWA2 (NIM INTEGER PRIMARY KEY NOT NULL, NAMA text(20) NOT NULL, ALAMAT text(30), TGL_LAHIR date)

ü CREATE TABLE MATAKULIAH2 (KD_MK text(6) PRIMARY KEY NOT NULL , NAMA_MK text(25) NOT NULL, SKS INTEGER, SEMESTER INTEGER)

ü CREATE TABLE  AMBILKULIAH2(NIM INTEGER NOT NULL CONSTRAINT  NIM_FK  REFERENCES MAHASISWA2 (NIM), KD_MK TEXT(6) NOT NULL CONSTRAINT KD_MK_FK  REFERENCES MATAKULIAH2 (KD_MK), NILAI INTEGER)

Tanggal 2-12-2004

KONEKSI ODBC KE PHP

  1. MEMBUAT DATABASE BUKUTAMU
    1. Buat directory bukutamu di C:\
    2. Buat database bukutamu di MS.ACCESS
    3. Buat tabel tbukutamu
Coloumn name type length N/NN Pk/fk
ID Int autonumber NN Pk
Nama Text 30 NN
Email Text 20 N
Pesan Text 40 N
  1. MEMBUAT DATA SOURCE NAME (DSN)

Start –setting-CONTROL PANEL-ODBC data source(32 bit)

  • Pilih system DSN
  • Tekan tombol ADD
  • Pilih microsoft access driver (*.MDB)
  • Isi data source name : DSN_BUKUTAMU

Lalu klik tombol select

Pilih database BUKUTAMU.MDB di

C:\BUKUTAMU\BUKUTAMU.MDB

Tekan tombol ok

  • Tekan tombol ok lagi
  • Ok lagi

odbc_pconnect  MEMBUKA KONEKSI

$rs=odbc_exec  MELAKUKAN QUERY SELECT,DELETE,UPDATE,INSERT

odbc_fetch_row  UNTUK MENGAMBIL RECORD SATU PERSATU

odbc_result  UNTUK MENAMPILKAN ISI FIELD DI RECORD YANG DIAMBIL

odbc_close($conn); UNTUK MENUTUP KONEKSI

‘$NAMA’,’$EMAIL’,’$PESAN’  untuk data bertipe text dan date pake kutip(‘…’) dan untuk data bertipe numerik tanpa kutip

MICROSOFT SQL SERVER

START-PROGRAM-DATABASE TOOLS-MICROSOFT SQL SERVER 7

SERVICE MANAGER PILIH START (MEMULAI/MENJALANKAN)

DARI MSS7 –ENTERPRISE MANAGER-CONSOLE ROOT-MS SQL SERVER GROUP-Q0X-DATABASES

MEMBUAT DATABASES DAN TABEL

KLIK KANAN PADA DATABASES

PILIH NEW DATABASE –NAMA

(KD_MK,NAMA_MK,SKS,SEMESTER)

VALUES('IF-110','Struktur data',3,1),('IF-101','Algoritma pemrograman',4,1),

('KU-230','Bahasa Inggris',2,2),('KU-133','Agama',1,1),('MA-321','Kalkulus 1',4,3),

('MA-422','Kalkulus 2',4,4),('IF-302','Basis data',3,3),('IF-503','Kompilasi',4,5)

CREATE TABLE AMBILKULIAH

(NIM INT NOT NULL,

KD_MK CHAR(6)NOT NULL,

NILAI INT,

FOREIGN KEY(NIM)REFERENCES MAHASISWA,

FOREIGN KEY(KD_MK)REFERENCES MATAKULIAH)

MICROSOFT SQL SERVER

1. START>> PROGRAMS>> DATABASE TOOLS>> MICROSOFT SQL SERVER 7>>

SERVICE MANAGER>> PILIH START : MEMULAI MENJALANKAN SERVICE.

ENTERPRISE MANAGER>> CONSOLE ROOT>> MS SQL SERVER GROUP>> QOX>>

DATABASES.

2. MEMBUAT DATABASE DAN TABEL>>

*KLIK KANAN PADA DATABASES

*PILIH NEW DATABASE

KETIK NAMA : AKADEMIK

INITIAL SIZE : 1 MB

*KLIK KANAN DI TABLES

*PILIH NEW TABLE

A. TABEL MAHASISWA

COLUMN NAME DATA TYPE LENGTH ALLOW NULLS
NIM INT 4 PK
NAMA VARCHAR 20
ALAMAT VARCHAR 30 CHECKLIST
TGL_LAHIR DATETIME 8

ISI DATA MAHASISWA>> TOOLS>> SQL SERVER QUERY QNALYZER>> DB : AKADEMIK

ISIKAN DI QUERY>> INSERT INTO MAHASISWA

VALUES (100,’Anita’,’Jl. Merdeka 100, Jakarta’,’2-19-1979’)

MODUL PAKET 5 HAL. 6

B. TABEL MATAKULIAH>> DIBUAT DARI QUERY ANALYZER.

COLUMN NAME DATA TYPE LENGTH ALLOW NULLS
KD_MK CHAR 6 PK
NAMA_MK VARCHAR 25
SKS INT CHECKLIST
SEMESTER INT CHECKLIST

ISIKAN DI QUERY>> CREATE TABLE MATAKULIAH

(KD_MK VARCHAR(25) NOT NULL,

SKS INT,

SEMESTER INT)

MODUL PAKET 5 HAL. 8

C. TABEL AMBILKULIAH>> DIBUAT DARI QUERY QNALYZER

COLUMN NAME DATA TYPE LENGTH ALLOW NULLS TABLE REF.
NIM INT MAHASISWA
KD_MK CHAR 6 MATAKULIAH
NILAI INT CHECKLIST

ISIKAN DI QUERY>> CREATE TABLE AMBILKULIAH

(NIM INT NOT NULL,

KD_MK CHAR(6) NOT NULL,

NILAI INT,

FOREIGN KEY (NIM) REFERENCES MAHASISWA,

FOREIGN KEY (KD_MK) REFERENCES MATAKULIAH)

MODUL PAKET 6 HAL. 1

D. UNTUK TABEL DOSEN DAN TABEL MENGAJAR DI IMPORT DARI DATABASE

AKADEMIK DI MS. ACCESS

CARANYA : TOOLS>> DATA TRANSFORMATION SERVICES>> IMPORT DATA>> SOURCE : MS. ACCESS>> FILE NAME : SISAKADEMIK.mdb (CARI LOKASINYA YANG BENAR).

DESTINATION : MS. OLE DB PROVIDER FOR SQL SERVER. SERVER>> QOX. USE SQL SERVER AUTHENTIFICATION. USERNAME : sa. PASSWORD : KOSONGKAN. DB : AKADEMIK>> NEXT >> FINISH

Kalo di acsess bintang(*) kalo di sql server persen(%),kalo di sql server left/right join pake outer contohnya left outer join ada lagi kalo rata-rata mesti pake [rata-rata].

Soal pada halaman 8-7

1SELECT * FROM MAHASISWA WHERE ALAMAT LIKE ‘%Bandung%’

NIM    NAMA                 ALAMAT                         TGL_LAHIR

—— ——————– —————————— —————————

102    Wahyudi              Jl. Pahlawan 100, Bandung      1978-12-10 00:00:00

103    Cintia               Jl. Melati 23, Bandung         1979-06-07 00:00:00

(2 row(s) affected)

2SELECT * FROM MAHASISWA WHERE YEAR(TGL_LAHIR)=1978

NIM    NAMA                 ALAMAT                         TGL_LAHIR

—— ——————– —————————— —————————

101    Bambang              Jl. Gajah Mada 25, Jakarta     1978-06-06 00:00:00

102    Wahyudi              Jl. Pahlawan 100, Bandung      1978-12-10 00:00:00

(2 row(s) affected)

3SELECT MAHASISWA.NIM, MAHASISWA.NAMA, MATAKULIAH.KD_MK, MATAKULIAH.NAMA_MK, AMBILKULIAH.Nilai

FROM MATAKULIAH INNER  JOIN (MAHASISWA INNER JOIN AMBILKULIAH ON MAHASISWA.NIM=AMBILKULIAH.NIM)

ON MATAKULIAH.KD_MK=AMBILKULIAH.KD_MK WHERE MATAKULIAH.NAMA_MK=’Kalkulus 2′ AND

AMBILKULIAH.Nilai>60

NIM    NAMA                 KD_MK  NAMA_MK                   Nilai

—— ——————– —— ————————- ——

100    Anita                MA-422 Kalkulus 2                87

(1 row(s) affected)

4SELECT MAHASISWA.NIM, MAHASISWA.NAMA

FROM MAHASISWA LEFT OUTER JOIN  AMBILKULIAH ON MAHASISWA.NIM=AMBILKULIAH.NIM

WHERE AMBILKULIAH.NILAI IS NULL

NIM    NAMA

—— ——————–

101    Bambang

(1 row(s) affected)

5

6SELECT MATAKULIAH.KD_MK, MATAKULIAH.NAMA_MK,MATAKULIAH.SEMESTER, DOSEN.NAMA_DOS FROM MATAKULIAH INNER JOIN(DOSEN INNER JOIN MENGAJAR ON DOSEN.KD_DOSEN=MENGAJAR.KD_DOSEN)ON  MATAKULIAH.KD_MK=MENGAJAR.KD_MK WHERE MATAKULIAH.SEMESTER=2 OR MATAKULIAH.SEMESTER=3

KD_MK  NAMA_MK                   SEMESTER NAMA_DOS

—— ————————- ——– ——————–

KU-230 Bahasa Inggris            2        Dewi Sundari

IF-302 Basis Data                3        Adi Budiman

MA-321 Kalkulus 1                3        Adi Budiman

(3 row(s) affected)

7SELECT MAHASISWA.NIM,MAHASISWA.NAMA,COUNT(AMBILKULIAH.KD_MK) AS JML_KULIAH FROM MAHASISWA INNER JOIN AMBILKULIAH ON MAHASISWA.NIM=AMBILKULIAH.NIM GROUP BY  MAHASISWA.NIM,MAHASISWA.NAMA

NIM    NAMA                 JML_KULIAH

—— ——————– ———–

100    Anita                4

103    Cintia               4

102    Wahyudi              4

(3 row(s) affected)

8 SELECT DOSEN.KD_DOSEN, DOSEN.NAMA_DOS,

COUNT(MENGAJAR.KD_DOSEN)AS JML_KULIAH

FROM DOSEN INNER JOIN MENGAJAR

ON DOSEN.KD_DOSEN=MENGAJAR.KD_DOSEN

GROUP BY DOSEN.KD_DOSEN, DOSEN.NAMA_DOS HAVING COUNT(MENGAJAR.KD_DOSEN)>2

KD_DOSEN NAMA_DOS             JML_KULIAH

——– ——————– ———–

ADI-23   Adi Budiman          3

(1 row(s) affected)

9SELECT MATAKULIAH.KD_MK, MATAKULIAH.NAMA_MK,

MIN(AMBILKULIAH.NILAI) AS MINIMUM, MAX(AMBILKULIAH.NILAI)

AS MAKSIMUM, AVG(AMBILKULIAH.NILAI) AS [RATA-RATA]  FROM

MATAKULIAH INNER JOIN AMBILKULIAH ON MATAKULIAH.KD_MK=AMBILKULIAH.KD_MK

GROUP BY MATAKULIAH.KD_MK,MATAKULIAH.NAMA_MK

KD_MK  NAMA_MK                   MINIMUM MAKSIMUM RATA-RATA

—— ————————- ——- ——– ———–

KU-133 Agama                     86      86       86

IF-101 Algoritma Pemrograman     63      80       71

KU-230 Bahasa Inggris            40      54       47

IF-302 Basis Data                55      55       55

MA-321 Kalkulus 1                68      91       79

MA-422 Kalkulus 2                30      87       58

IF-110 Struktur Data             76      97       86

10TAMPILKAN DATA DOSEN DAN MATAKULIAH YANG DIAJARNYA UNTUK DOSEN YANG MENGAJAR MATAKULIAH SEMESTER 1,2,3

SELECT DOSEN.KD_DOSEN, DOSEN.NAMA_DOS, MATAKULIAH.KD_MK,

MATAKULIAH.NAMA_MK,MATAKULIAH.SEMESTER

FROM MATAKULIAH INNER JOIN(DOSEN INNER JOIN MENGAJAR ON DOSEN.KD_DOSEN=MENGAJAR.KD_DOSEN)

ON MATAKULIAH.KD_MK=MENGAJAR.KD_MK

WHERE MATAKULIAH.SEMESTER=1 OR MATAKULIAH.SEMESTER=2 OR MATAKULIAH.SEMESTER=3

KD_DOSEN NAMA_DOS             KD_MK  NAMA_MK                   SEMESTER

——– ——————– —— ————————- ——–

BUD-10   Budiono              IF-101 Algoritma Pemrograman     1

DEW-02   Dewi Sundari         IF-110 Struktur Data             1

DEW-02   Dewi Sundari         KU-230 Bahasa Inggris            2

ADI-23   Adi Budiman          IF-302 Basis Data                3

ADI-23   Adi Budiman          MA-321 Kalkulus 1                3

(5 row(s) affected)

11TAMPILKAN MAHASISWA YANG NILAI RATA-RATA SEMUA MATAKULIAH YANG DIAMBILNYA DI ATAS 75

SELECT MAHASISWA.NIM, MAHASISWA.NAMA,

COUNT(AMBILKULIAH.NILAI) AS [RATA-RATA]

FROM MAHASISWA INNER JOIN AMBILKULIAH ON MAHASISWA.NIM=AMBILKULIAH.NIM

GROUP BY MAHASISWA.NIM, MAHASISWA.NAMA HAVING  AVG(AMBILKULIAH.NILAI)>75

NIM    NAMA                 RATA-RATA

—— ——————– ———–

(0 row(s) affected)

12TAMPILKAN MATAKULIAH YANG PESERTANYA LEBIH DARI 2 ORANG

SELECT MATAKULIAH.KD_MK,MATAKULIAH.NAMA_MK, COUNT(AMBILKULIAH.KD_MK) AS JUMLAH FROM MATAKULIAH INNER JOIN AMBILKULIAH ON MATAKULIAH.KD_MK=AMBILKULIAH.KD_Mk GROUP BY MATAKULIAH.KD_MK, MATAKULIAH.NAMA_MK HAVING COUNT(AMBILKULIAH.KD_MK)>2

KD_MK  NAMA_MK                   JUMLAH

—— ————————- ———–

(0 row(s) affected)

SUB QUERY

Adalah statement select yang berada pada klausa where dari statement select utama

SELECT…,…,…

FROM …

WHERE kolom_x=(select… from…where….)

Yang di blok adalah inner query atau sub query sedangkan yg tidak adalah outer query atau query utama

Tujuan pemakaian sub query

@penyederhanaan  penullisan query

@Mempersingkat waktu eksekusi query

Ciri-ciri

@Terletak di sebelah kanan atau kiri suatu operator dalam kondisi di klausa where, lazimnya di sebelah kanan

@Diawali dan diakhiri dengan kurung buka dan tutup

Operator yang dapat digunakan dalam klausa where dengan pemakaian sub query

>,<,>=,<=,!=
In, not in
=any,=all,!any,!=all
Exists, not exists

Penulisan (untuk baris ke1-3)1operand,2operator,3operand di baris in yg dieksekusi pertama adalah subquery dulu baru query utamnya dan (yang baris terakhir) 1operator,2operand pada baris ini yang akan di eksekusi pertama adalah query utamanya dulu baru sub query

  1. Tampilkan data mahasiswa yang nilai ujian nya di atas rata-rata semua niai ujian >>nim,nama

@Cara konfensional

@select avg(nilai)from ambilkuliah

———–

68

(1 row(s) affected)

select distinct m.nim,m.nama from mahasiswa m, ambilkuliah a where m.nim=a.nim and a.nilai>68

nim    nama

—— ——————–

100    Anita

103    Cintia

102    Wahyudi

(3 row(s) affected)

@Cara sub query

select distinct m.nim,m.nama from mahasiswa m, ambilkuliah a where m.nim=a.nim and

a.nilai>(select avg(nilai) from ambilkuliah)

  1. Tampilkan mahasiswa yang tidak mengambil matakuliah >>nim,nama

@Carakonvensional

Select m.nim,m.nama from mahasiswa m left outer join ambilkuliah a on m.nim=a.nim where a.kd_mk is null

nim    nama

—— ——————–

101    Bambang

(1 row(s) affected)

@Cara sub query

-select nim,nama from mahasiswa where nim not in(select nim from ambilkuliah)

-select nim,nama from mahasiswa where nim !=all(select nim from ambilkuliah)

-select nim,nama from mahasiswa m where not exists(select * from ambilkuliah a where m.nim=a.nim )

  1. Tampilkan mahasiswa yang mengambil matakuliah

@Cara konvensional

select distinct m.nim,m.nama from mahasiswa m, ambilkuliah a where m.nim=a.nim

nim    nama

—— ——————–

100    Anita

103    Cintia

102    Wahyudi

(3 row(s) affected)

@Cara sub query

-select nim,nama from mahasiswa where nim in(select nim from ambilkuliah)

-select nim,nama from mahasiswa where nim = any(select nim from ambilkuliah)

-select nim,nama from mahasiswa m where exists (select* from ambilkuliah a where m.nim=a.nim)

SUB QUERY PARALEL

Jika dalam klausa where di query utama terdapat lebih dari satu sub query ,disebut sub query paralel

1)    Tampilkan data mahasiswa nilai ujiannya di atas rata-rata dari semua ujian dan untuk mahasiswa yang mengambil matakuiah yang diajar oleh Dewi Sundari>>nim,nama

@cara konvensional

tahap1:select avg(nilai) from ambilkuliah

tahap2:select kd_dosen from dosen where nama_dos=’Dewi Sundari’

tahap3: select distinct m.nim, m.nama from mahasiswa m, ambilkuliah a, mengajar j where m.nim=a.nim and j.kd_mk=a.kd_mk and a.nilai>68 and j.kd_dosen=’Dew-02′

nim    nama

—— ——————–

100    Anita

102    Wahyudi

(2 row(s) affected)

@cara sub query

select m.nim,m.nama from mahasiswa m,ambilkuliah a, mengajar j  where m.nim=a.nim and a.kd_mk=j.kd_mk and a.nilai >(select avg(nilai) from ambilkuliah) and j.kd_dosen=(select kd_dosen from dosen where nama_dos=’Dewi Sundari’)

SUB QUERY BERTINGKAT

Adalah sub query yang didalamnya mengandung sub query lain

  1. I.    Tampilkan matakuliah yang nilai rata-ratanya di atas nilai rata-rata dari semua matakuliah>>kd_mk,nama_mk

Cara sub query

Select kd_mk ,nama_Mk from matakuliah where kd_mk = any (select kd_mk from ambilkuliah group by kd_mk having avg(nilai)>(select avg(nilai) from ambilkuliah))

kd_mk  nama_Mk

—— ————————-

IF-110 Struktur Data

IF-101 Algoritma Pemrograman

KU-133 Agama

MA-321 Kalkulus 1

(4 row(s) affected)

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s


%d blogger menyukai ini: