33

Click here to load reader

MODUL MySQL - Another Sa'ad's Blog | Tempatku … · Web viewMembuat Database • Menampilkan database cd \xampp\mysql\bin mysql -u root -p --prompt="[\u @\h] [\d]\nmysql> " mysql>

  • Upload
    lambao

  • View
    218

  • Download
    0

Embed Size (px)

Citation preview

Page 1: MODUL MySQL - Another Sa'ad's Blog | Tempatku … · Web viewMembuat Database • Menampilkan database cd \xampp\mysql\bin mysql -u root -p --prompt="[\u @\h] [\d]\nmysql> " mysql>

Modul Pemrograman Basis Data

Membuat Database

• Menampilkan database

cd \xampp\mysql\binmysql -u root -p --prompt="[\u @\h] [\d]\nmysql> "

mysql> show databases;

• Membuat database Setiap ada pjual diganti dengan mi..

mysql>mysql>mysql>

create database pjual;create database barang;create database xpjual;

membuat database dengan nama pjualmembuat database dengan nama barangmembuat database dengan nama xpjual

• Menghapus database

mysql> drop database barang; menghapus database dgn nama barang

• Memilih database

mysql> use pjual; memilih database dengan nama pjual

Membuat Tabel

• Menampilkan tabel

mysql>mysql>

show tables;show tables from xpjual;

pilih database pjualmenampilkan tabel dari database xpjual

• Membuat tabel

mysql> –>

mysql> –> –>

mysql> –> –>

mysql> –> –>

mysql> –> –> –> –>

create table detrans(no_fak varchar(3), ko_brg varchar(3), jlh_brg int(3));

create table barang(kode varchar(3) not null primary key, nama varchar(20), harga decimal(9,0), stok int(3));

create table pelanggan(kode varchar(3) not null primary key, nama varchar(20), alamat varchar(30), telepon varchar(13));

create table transaksi(no_fak varchar(3) not null, tanggal date, ko_plgn varchar(3), primary key(no_fak));

create table pdetrans(no_id int unsigned auto_increment not null, nopel int, no_fak varchar(3), ko_brg varchar(3), jlh_brg int(3) default 0, primary key(no_id), unique nopeluni(nopel), index kobrgdx(ko_brg));

• Membuat tabel pada database non aktif

mysql> –> –>

create table xpjual.detrans(no_fak varchar(3), ko_brg varchar(3), jlh_brg int(3));

xpjual = nama databasexdetrans = nama tabel yang dibuat

1

Page 2: MODUL MySQL - Another Sa'ad's Blog | Tempatku … · Web viewMembuat Database • Menampilkan database cd \xampp\mysql\bin mysql -u root -p --prompt="[\u @\h] [\d]\nmysql> " mysql>

• Menampilkan struktur tabel

mysql> describe detrans; detrans = nama tabel yang ditampilkan strukturnya

Tampilan struktur tabel detrans

Field Type Null Key Default Extra

no_fak varchar(3) YES NULLko_brg varchar(3) YES NULLjlh_brg int(3) YES NULL

3 rows in set (0.00 sec)

mysql> desc barang;

Tampilan struktur tabel barang

Field Type Null Key Default Extra

kode varchar(3) PRInama varchar(20) YES NULLharga decimal(9,0) YES NULLstok int(3) YES NULL

4 rows in set (0.00 sec)

mysql> desc pelanggan;

Tampilan struktur tabel pelanggan

Field Type Null Key Default Extra

kode varchar(3) PRInama varchar(20) YES NULLalamat varchar(30) YES NULLtelepon varchar(13) YES NULL

4 rows in set (0.00 sec)

mysql> desc transaksi;

Tampilan struktur tabel transaksi

Field Type Null Key Default Extra

no_fak varchar(3) PRItanggal date YES NULLko_plgn varchar(3) YES NULL

3 rows in set (0.00 sec)

• Mengcopy tabel

mysql> –>

mysql> –>

mysql> –>

create table xbarang select * from barang;

create table xdetrans select * from detrans;

create table xtransaksi select * from transaksi;

barang = nama tabel yang dicopyxbarang = nama tabel hasil copy

detrans = nama tabel yang dicopyxdetrans = nama tabel hasil copy

• Mengcopy tabel ke database non aktif

2

Page 3: MODUL MySQL - Another Sa'ad's Blog | Tempatku … · Web viewMembuat Database • Menampilkan database cd \xampp\mysql\bin mysql -u root -p --prompt="[\u @\h] [\d]\nmysql> " mysql>

mysql> –>

create table xpjual.barang select * from barang;

barang = nama tabel yang dicopyxbarang = nama tabel hasil copyxpjual = nama database

• Mengcopy tabel dari database non aktif

mysql> –>

create table pbarang select * from xpjual.barang;

xpjual = nama databasexbarang = nama tabel yang dicopypbarang = nama tabel hasil copy

•Merubah nama tabel

mysql> alter table xtransaksi rename jualbrg; pbarang = nama tabel yang diganti namanyajualbrg = nama tabel pengganti

•Menghapus tabel

mysql> drop table jualbrg; jualbrg = nama tabel yang dihapus

•Menambah field (kolom)

mysql>

mysql> –>

mysql> –> –>

alter table xbarang add jenis varchar(20);

alter table xbarang add id varchar(5) not null after kode;

alter table xdetrans add id_no int unsigned auto_increment not null primary key first;

•Merubah nama field (kolom)

mysql> –>

alter table xbarang change jenis kategori varchar(20);

•Menghapus field (kolom)

mysql> alter table xbarang drop kategori;

•Merubah tipe data

mysql> alter table xbarang modify harga int(8);

•Merubah ukuran field (kolom)

mysql> alter table xbarang modify harga int(10);

•Merubah NULL menjadi NOT NULL dan sebaliknya

mysql> –>mysql> –>

alter table xbarang modify nama varchar(20) not null;alter table xbarang modify nama varchar(20);

merubah field nama menjadi not null

merubah field nama menjadi null

•Membuat Primary Key

mysql> –>

alter table xbarang add primary key (kode);

•Menghapus Primary Key

3

Page 4: MODUL MySQL - Another Sa'ad's Blog | Tempatku … · Web viewMembuat Database • Menampilkan database cd \xampp\mysql\bin mysql -u root -p --prompt="[\u @\h] [\d]\nmysql> " mysql>

mysql> alter table xbarang drop primary key;

•Membuat Index

mysql> –>mysql> –>

alter table xdetrans add index kobrg_ndx(ko_brg); ataucreate index kobrg_ndx on xdetrans(ko_brg);

•Menghapus Index

mysql> –>

alter table xdetrans drop index kobrg_ndx;

•Membuat Unique

mysql> –>

alter table xbarang add unique id_uni(id);

buat kode sebagai primary key

•Menghapus Unique

mysql> alter table xbarang drop index id_uni;

•Merubah Default

mysql> –>mysql> –>

alter table xbarang alter nama set default 'KULKAS';alter table xbarang alter harga set default 999;

field yang Not Null dan default tidak ada, bisa tidak diisi dan field tersebut tetap kosong

•Menghapus Default

mysql> –>

alter table xbarang alter nama drop default;

Mengisi Data / Menambah Data

•Menampilkan isi tabel barang

mysql> select * from barang; pilih database pjual

•Mengisi/menambah data ke tabel barang

mysql> –>

mysql> –>

mysql> –>

mysql> –>mysql> –>

insert into barang(kode,nama,harga,stok) values('A11','VIDEO',500000,2);

insert into barang values('A12','RADIO',250000,2);

insert into barang values('B21','SEPATU',300000,2);

insert into barang(kode,nama) values('C21','KEMEJA');insert into transaksi values('001','2005-12-30','101');

•Isilah tabel pelanggan, transaksi dan detrans sesuai dibawah ini.

4

Page 5: MODUL MySQL - Another Sa'ad's Blog | Tempatku … · Web viewMembuat Database • Menampilkan database cd \xampp\mysql\bin mysql -u root -p --prompt="[\u @\h] [\d]\nmysql> " mysql>

PELANGGANKODE NAMA ALAMAT TELEPON101 BUDIMAN KANGKUNG 15, MEDAN 8213344102 ABDULLAH JAHE 20, MEDAN 08153061566103 KARTINI MERAK 12, MEDAN 8455667104 HARTONO SUDIRMAN 20, BINJAI 08123345678

BARANG DETRANS

KODE NAMA HARGA STOK NO_FAK KO_BRG JLH_BRGA11 VIDEO 500000 2 001 A11 2A12 RADIO 250000 2 001 A12 3B21 SEPATU 300000 2 002 A12 2C21 KEMEJA NULL NULL 003 A11 1

003 B21 2TRANSAKSI 004 A11 1

NO_FAK TANGGAL KO_PLGN 004 A12 2001 2005-12-30 101 004 B21 4002 2005-12-30 103 005 B21 1003 2006-01-02 104 006 A12 2004 2006-01-02 102 006 D21 1005 2006-01-03 101006 2006-03-20 102

•Mengcopy tabel

mysql> create table tbarang select * from barang;

•Mengcopy struktur tabel

mysql> –>

create table tdetrans select * from detrans where no_fak=' ';

•Mengcopy data

mysql>

mysql> –>

insert into tdetrans select * from detrans;

insert into tdetrans select * from tdetrans where no_fak='001';

Merubah Data

mysql> –>

mysql> –>

mysql> –> –>

mysql>

mysql> –>

update tbarang set harga=600000where kode='A11';

update tbarang set nama='KULKAS',harga=1500000 where kode='A12';

update tbarang set kode='B22',nama='SANDAL', harga=100000where kode='B21';

update tbarang set harga=harga*2;

update tdetrans set jlh_brg=4 whereno_fak='001' and ko_brg='A11';

5

Page 6: MODUL MySQL - Another Sa'ad's Blog | Tempatku … · Web viewMembuat Database • Menampilkan database cd \xampp\mysql\bin mysql -u root -p --prompt="[\u @\h] [\d]\nmysql> " mysql>

Menghapus Data

mysql> –>

mysql> –>

mysql> –>

mysql> –>

mysql> –> mysql>

delete from tdetranswhere no_fak='002';

delete from tdetranswhere no_fak='001';

delete from tdetrans whereno_fak='003' and ko_brg='A11';

delete from tdetrans whereno_fak='003' or no_fak='005';

delete from tdetrans where (no_fak='004' or no_fak='006') and jlh_brg=2;

delete from tdetrans;

Query Data (Select)

Bentuk umum select :SELECT daftar_selectFROM daftar_tabel[WHERE kondisi_pencarian][GROUP BY daftar_group_by][HAVING kondisi_pencarian][ORDER BY daftar_order [ASC|DESC]][LIMIT daftar_limit]

mysql> mysql>

mysql> –> –>

mysql> –>

mysql>

mysql> –>

mysql>

mysql>

mysql> –>

mysql> –>

select * from detrans;

select no_fak, ko_brg from detrans;

select no_fak as 'No. Faktur',ko_brg as 'Kode Barang',jlh_brg as 'Jumlah' from detrans;

select no_fak as nofak, ko_brg as kobrg,jlh_brg as jumbrg from detrans;

select distinct ko_brg from detrans;

select distinct ko_brg, jlh_brgfrom detrans;

select * from detrans limit 5;

select * from detrans limit 3,5;

select * from detranswhere ko_brg='A11';

select * from detranswhere ko_brg='A11' and jlh_brg=1;

5 record mulai dari record 3

6

Page 7: MODUL MySQL - Another Sa'ad's Blog | Tempatku … · Web viewMembuat Database • Menampilkan database cd \xampp\mysql\bin mysql -u root -p --prompt="[\u @\h] [\d]\nmysql> " mysql>

mysql> –>

mysql> –> –>

mysql> –>

mysql> –>

mysql> –> –>

mysql> –>

mysql> –>

mysql>

mysql> –>

mysql> –> –>

mysql> –> –>

select * from detrans whereko_brg='A11' or ko_brg='B21';

select * from detrans where(ko_brg='A11' or ko_brg='B21')and jlh_brg>1;

select * from transaksiwhere tanggal='2006-01-02';

select * from transaksiwhere tanggal>='2006-01-02';

select * from transaksiwhere tanggal>='2006-01-02'and tanggal<='2006-01-10';

select * from transaksi where tanggalbetween '2006-01-02' and '2006-01-10';

select * from detranswhere ko_brg like '%2%';

select count(*) from detrans;

select ko_brg, sum(jlh_brg)from detrans group by ko_brg;

select ko_brg, sum(jlh_brg)from detrans group by ko_brghaving sum(jlh_brg)>5;

select ko_brg, sum(jlh_brg) as jumlahfrom detrans group by ko_brg havingsum(jlh_brg)>5 order by jumlah;

select no_fak, sum(jlh_brg) as jumlahfrom detrans group by no_fakhaving jumlah>2 order by jumlah desc;

select no_fak, sum(jlh_brg) as jumlahfrom detrans group by no_fakorder by jumlah desc limit 3;

•Left Join dan Right JoinQuery semua data dari sebuah tabel dan membatasi data dari tabel lainnya.

mysql> –> –>

mysql> –> –>

mysql> –> –>

mysql> –> –> –>

select no_fak, nama, harga, jlh_brgfrom barang left join detranson kode=ko_brg order by no_fak;

select no_fak, nama, harga, jlh_brgfrom detrans right join barangon ko_brg=kode order by no_fak;

select no_fak, nama, harga, jlh_brgfrom detrans left join barangon ko_brg=kode order by no_fak;

select kode, nama, sum(jlh_brg) as jumlah from barang left join detranson kode=ko_brg group by ko_brgorder by kode;

select t.no_fak, tanggal, p.nama, b.nama, harga, jlh_brg, harga * jlh_brg as hartotfrom ((barang b left join detrans don b.kode=ko_brg) left join transaksi t on t.no_fak=d.no_fak) left join pelanggan p on p.kode=ko_plgn order by t.no_fak;

7

Page 8: MODUL MySQL - Another Sa'ad's Blog | Tempatku … · Web viewMembuat Database • Menampilkan database cd \xampp\mysql\bin mysql -u root -p --prompt="[\u @\h] [\d]\nmysql> " mysql>

•Equa JoinQuery data yang memiliki pasangan di kedua tabel, bila tidak ada pasangan data tersebut tidak di query.

mysql> –> –>

mysql> –> –> –>

mysql> –> –>

mysql> –> –>

mysql> –> –> –>

mysql> –> –> –>

mysql> –> –> –> –> –>

select no_fak, nama, harga, jlh_brgfrom detrans, barangwhere ko_brg=kode order by no_fak;

select transaksi.no_fak, transaksi.tanggal,detrans.ko_brg, detrans.jlh_brgfrom transaksi, detranswhere transaksi.no_fak=detrans.no_fak;

select t.no_fak, t.tanggal, d.ko_brg, d.jlh_brg from transaksi as t, detrans as d where t.no_fak=d.no_fak;

select t.no_fak, t.tanggal, d.ko_brg,d.jlh_brg from transaksi t, detrans d where t.no_fak=d.no_fak;

select t.no_fak, t.tanggal, b.nama,b.harga, d.jlh_brg from transaksi t, detrans d, barang b where t.no_fak=d.no_fak and d.ko_brg=b.kode;

select d.no_fak, b.nama, b.harga,d.jlh_brg, b.harga*d.jlh_brg as hartotfrom detrans d, barang bwhere ko_brg=kode;

select d.no_fak, b.nama, b.harga,d.jlh_brg, b.harga * d.jlh_brg as hartot,if(b.harga*d.jlh_brg>500000,0.1*b.harga*d.jlh_brg,0) as diskonfrom detrans d, barang bwhere d.ko_brg=b.kode;

•Sub Query

mysql> –>

mysql> –> –>

mysql> –>

mysql> –>

mysql> –>

mysql> –>

select * from transaksi where no_fak >(select count(*) from transaksi)-3;

select * from (select * from detranswhere ko_brg='B21') as dtwhere jlh_brg>1;

select * from detrans where jlh_brg >any (select stok from barang);

select * from detrans where jlh_brg >some (select stok from barang);

select * from detrans where jlh_brg >all (select stok from barang);

select * from detrans where jlh_brg= any (select stok from barang);

select kode from barang union select ko_brg from detrans;select kd.kode, sum(d.jlh_brg) as jumlahfrom (select kode from barang union select ko_brg from detrans) as kd left join detrans d on kd.kode=d.ko_brg group by kd.kode

any adalah memilih stok yang terkecil dari hasil select stok from barang

some sama dengan any

all adalah memilih stok yang terbesar dari hasil select stok from barang

8

Page 9: MODUL MySQL - Another Sa'ad's Blog | Tempatku … · Web viewMembuat Database • Menampilkan database cd \xampp\mysql\bin mysql -u root -p --prompt="[\u @\h] [\d]\nmysql> " mysql>

mysql> –>

mysql> –> –> –> –>

select * from detrans where jlh_brgin (select stok from barang);

select no_fak, sum(jlh_brg) as jumlahfrom detrans group by no_fak havingsum(jlh_brg) > (select sum(jlh_brg) fromdetrans where no_fak='002' group byno_fak);

in sama dgn = any, not in sama dgn <> any

select no_fak, sum(harga*jlh_brg) ashartot from detrans, barang whereko_brg=kode group by no_fak havingsum(harga*jlh_brg) >(select sum(harga*jlh_brg) from detrans,barang where ko_brg=kode and no_fak='002' group by no_fak);

Tipe Tabel MySql

Secara garis besar, tipe-tipe tabel ini dapat digolongkan menjadi dua kelompok, yaitu :o Transaction Safe Tables (yaitu : BDB dan InnoDB)

keuntungannya :1. Jika terjadi crash pada MySQL atau ada masalah dengan hardware, Anda dapat memperoleh

kembali data yang ada dengan recovery otomatis.2. Anda dapat melakukan kombinasi beberapa pernyataan SQL dengan sekali perintah, yaitu

COMMIT.3. Anda dapat membatalkan perubahan dengan perintah ROLLBACK.

o Not Transaction Safe Tables (yaitu : HEAP, ISAM, MERGE dan MyISAM)keuntungannya :

1. Lebih cepat, karena tidak ada transaksi yang over.2. Pemakaian ruang disk lebih sedikit.3. Penggunaan memory lebih sedikit.

•MyISAMMerupakan tipe tabel default pada MySQL. Lebih cepat dibandingkan dengan ISAM. Mendukung index pada kolom bertipe TEXT dan BLOB. Memiliki tiga jenis format tabel yaitu Static, Dinamic, Compressed. Format static digunakan bila tabel tidak memiliki tipe kolom varchar, blob, atau text. Format dinamyc digunakan bila tabel mengandung tipe kolom varchar, blob, atau text. Format compressed bertipe read-only

•MergeSangat efisien dalam pencarian data. Namun tidak dapat melakukan insert, hanya select, delete, dan update.

•ISAMCikal bakal tipe default MySQL. Kurang sesuai untuk setiap sistem operasi. Tidak dapat menam-pung lebih dari 4G tabel serta batas key yang sangat sedikit.

•HEAPMenggunakan index hashed yang terletak didalam memori. Merupakan tabel yang tercepat pada MySQL dalam mengakses data, akan tetapi jika MySQL mengalami crash maka semua data di dalamnya tidak dapat deselamatkan. Index hanya dapat digunakan dengan = dan <=>. Tidak mendukung kolom BLOB/Text, Auto_Increament dan index pada kolom NULL.

•BDBDukungan penuh terhadap transaksi. Mengharuskan adanya primary key, bila tidak dibuat MySQL akan membuat hidden primary key. Jika disk server penuh, transaksi akan dikembalikan tanpa proses.

•InnoDBMerupakan penyempurnaan dari BDB. Mendukung foreign key constraint. Semua tabel index diletakkan pada tablespace, berbeda dengan MyISAM yang meletakkannya pada beberapa file, sehingga tabel InnoDB hanya menggunakan file .FRM saja. Sangat cocok digunakan untuk database skala besar.

9

Page 10: MODUL MySQL - Another Sa'ad's Blog | Tempatku … · Web viewMembuat Database • Menampilkan database cd \xampp\mysql\bin mysql -u root -p --prompt="[\u @\h] [\d]\nmysql> " mysql>

Integritas Referensial (Referential Integrity)

Suatu usaha untuk tetap menjaga validitas, konsistensi, dan akurasi data pada tabel yang saling berhubungan didalam sebuah database.

•Restrict (terbatas) : Sebuah record pada tabel induk tidak akan bisa dihapus/dirubah bila record tersebut memiliki ikatan dengan record pada tabel anak. Kecuali bila record pada tabel anak tersebut dihapus/dirubah terlebih dahulu, baru record pada tabel induk bisa dihapus/dirubah. Ini tidak akan terjadi sebaliknya.

•Cascade (bertingkat) :Jika sebuah record pada tabel induk dihapus/dirubah, maka secara otomatis record pada tabel anak akan dihapus/dirubah juga.

•Memeriksa tipe tabel yang didukung/diaktifkan server

mysql> show variables like 'have%';

•Membuat foreign key pada saat pembuatan tabel

mysql> –> –> –>

create table pelanggan(kode varchar(3)not null primary key, nama varchar(20),alamat varchar(30), telepon varchar(13)) type=innodb;

buat database dengan nama rpjual dan pilih database rpjual

mysql> –>mysql>

show table status from rpjual like 'pelanggan' \Gshow table status from rpjual \G

Untuk pemeriksaan

mysql> –> –> –> –> –>

mysql> –> –> –> –> –> –>

create table transaksi(no_fak varchar(3)not null, tanggal date, ko_plgnvarchar(3), primary key(no_fak), indexkoplgndx (ko_plgn), foreign key(ko_plgn)references pelanggan(kode) on deleterestrict on update restrict) type=innodb;

create table transaksi(no_fak varchar(3)not null, tanggal date, ko_plgnvarchar(3), primary key(no_fak), indexkoplgndx (ko_plgn), constraint koplgfkforeign key (ko_plgn) referencespelanggan(kode) on delete restrict on update restrict) type=innodb;

membuat foreign keytanpa menggunakan clausa constraint

ataudengan menggunakan clausa constraint

mysql> show create table transaksi \G Untuk melihat symbol contraint

mysql> –>mysql> –>mysql> –>mysql> –>mysql> –>mysql> –>

insert into pelanggan(kode, nama)values('101','BUDIMAN');insert into transaksivalues('001','2005-12-30','101');insert into transaksivalues('002','2005-12-30','102');insert into pelanggan(kode, nama)values('102','ABDULLAH');insert into transaksivalues('002','2005-12-30','102');delete from pelangganwhere kode='102';

Untuk pembuktian

error karena kode 102 belum ada pada tabel pelanggan

error karena kode 102 terdapat pada tabel transaksi, sehingga akan kehilangan induk

10

Page 11: MODUL MySQL - Another Sa'ad's Blog | Tempatku … · Web viewMembuat Database • Menampilkan database cd \xampp\mysql\bin mysql -u root -p --prompt="[\u @\h] [\d]\nmysql> " mysql>

mysql> –>mysql>

delete from transaksi where ko_plgn='102';delete from pelanggan where kode='102';

mysql> –> –>

create table barang(kode varchar(3)not null primary key, nama varchar(20),harga decimal(9,0)) type=innodb;

mysql> –> –> –> –> –> –> –> –> –>

create table detrans(no_fak varchar(3),ko_brg varchar(3), jlh_brg int(3),index kobrgndx(ko_brg),constraint kobrgfk foreign key (ko_brg)references barang(kode) on updatecascade on delete cascade,index nofakndx(no_fak),constraint nofakfk foreign key (no_fak)references transaksi(no_fak) on updatecascade on delete cascade) type=innodb;

mysql> –>mysql> –>mysql> –>mysql> –>mysql> –>mysql>mysql>mysql>mysql> –>mysql>mysql>mysql> –>mysql>mysql>mysql>mysql>mysql>mysql>mysql>mysql>

insert into pelanggan(kode, nama) values('102','ABDULLAH');insert into transaksivalues('002','2005-12-30','102');insert into barang values('A11','VIDEO',500000);insert into barang values('A12','RADIO',250000);insert into barang values('B21','SEPATU',300000);insert into detrans values('001','A11',2);insert into detrans values('001','A12',1);insert into detrans values('002','A11',3);update barang set kode='A13' where kode='A11';select * from barang;select * from detrans;update detrans set ko_brg='B21' where ko_brg='A12';select * from detrans;select * from barang;delete from detrans where ko_brg='B21';select * from detrans;select * from barang;delete from barang where kode='A13';select * from barang;select * from detrans;

Untuk pembuktian

•Menghapus foreign key

mysql>

mysql> –>

show create table transaksi \G

alter table transaksi drop foreign key koplgfk;

Menampilkan nama constraint, bila tidak diketahui nama constraint

•Membuat foreign key setelah pembuatan tabel

mysql> –> –>

alter table transaksi add constraintkoplgfk foreign key (ko_plgn) referencespelanggan (kode) on delete restrict;

Bila belum di index, index terlebih dahulu berdasarkan foreign key

11

Page 12: MODUL MySQL - Another Sa'ad's Blog | Tempatku … · Web viewMembuat Database • Menampilkan database cd \xampp\mysql\bin mysql -u root -p --prompt="[\u @\h] [\d]\nmysql> " mysql>

Transaksi pada MySQL

mysql>mysql>mysql> –>mysql>

set autocommit=0;begin;insert into transaksi values('007','2006-12-15','101');select * from transaksi;

pilih database rpjual

no_fak tanggal Ko_plgn

001 2005-12-30 101002 2005-12-30 102007 2006-12-15 101

3 rows in set (0.00 sec)

mysql> \qBye

c:\xampp\mysql\bin>mysql -u root -pEnter password: *********

mysql>mysql>

use rpjual;select * from transaksi;

no_fak tanggal Ko_plgn

001 2005-12-30 101002 2005-12-30 102

2 rows in set (0.00 sec)

mysql>mysql>mysql> –>mysql>mysql>

mysql>

set autocommit=0;begin;insert into transaksi values('007','2006-12-15','101');insert into detrans values('007','B21',2);commit;

\qBye

c:\xampp\mysql\bin>mysql -u root -pEnter password: *********

mysql>mysql>

use rpjual;select * from transaksi;

no_fak tanggal Ko_plgn

001 2005-12-30 101002 2005-12-30 102007 2006-12-15 101

3 rows in set (0.00 sec)

mysql> select * from detrans;

12

Page 13: MODUL MySQL - Another Sa'ad's Blog | Tempatku … · Web viewMembuat Database • Menampilkan database cd \xampp\mysql\bin mysql -u root -p --prompt="[\u @\h] [\d]\nmysql> " mysql>

no_fak ko_brg jlh_brg

007 B21 2

1 rows in set (0.00 sec)

mysql>mysql>mysql> –>mysql>

set autocommit=0;begin;insert into transaksivalues('008','2006-12-15','101');select * from transaksi;

no_fak tanggal Ko_plgn

001 2005-12-30 101002 2005-12-30 102007 2006-12-15 101008 2006-12-15 101

4 rows in set (0.00 sec)

mysql>mysql>

insert into detrans values('008','B21',2);select * from detrans;

no_fak ko_brg jlh_brg

007 B21 2008 B21 2

2 rows in set (0.00 sec)

mysql>mysql>

rollback;select * from transaksi;

no_fak tanggal Ko_plgn

001 2005-12-30 101002 2005-12-30 102007 2006-12-15 101

3 rows in set (0.00 sec)

mysql> select * from detrans;

no_fak ko_brg jlh_brg

007 B21 2

1 rows in set (0.00 sec)

Administrasi User

13

Page 14: MODUL MySQL - Another Sa'ad's Blog | Tempatku … · Web viewMembuat Database • Menampilkan database cd \xampp\mysql\bin mysql -u root -p --prompt="[\u @\h] [\d]\nmysql> " mysql>

•Login melalui username root

c:\xampp\mysql\bin>mysql -u root –p

•Menggunakan database mysql

mysql> use mysql;

•Menampilkan tabel-tabel database mysql

mysql> show tables;

Tables_in_mysql

columns_privDbFuncHosttables_privUser

6 rows in set (0.28 sec)

•Menampilkan struktur tabel user

mysql>

mysql>

describe user;atau

describe user \G

•Menampilkan struktur tabel host

mysql> describe host;

•Menampilkan struktur tabel db

mysql> describe db;

•Menampilkan struktur tabel tables_priv

mysql> describe tables_priv \G;

•Menampilkan struktur tabel columns_priv

mysql> describe columns_priv \G;

•Menampilkan isi tabel user

mysql>mysql>mysql>

select user, host, password from user;select * from user \G;select * from user where user='root' \G

•Mendefinisikan user dan hak ke semua database

mysql> –> –>

mysql>

mysql>

insert into user(host, user, password, select_priv,insert_priv) values('localhost', 'ti..cb1',password('ti..cb1'),’Y’,’Y’);

flush privileges;

quit;

haknya hanya select dan insert ke semua database

menyesuaikan/menerapkan perubahan user name dan privilege(hak) pada server MySQLuntuk pengujian

c:\xampp\mysql\bin >mysql –u ti..cb1 –pEnter password: *******

14

Page 15: MODUL MySQL - Another Sa'ad's Blog | Tempatku … · Web viewMembuat Database • Menampilkan database cd \xampp\mysql\bin mysql -u root -p --prompt="[\u @\h] [\d]\nmysql> " mysql>

•Merubah username dan password

mysql> –>

update user set user='ti..ak1', password= password('ti..ak1') where user='ti..cb1';

login kembali melalui user root dan gunakan database mysql

•Menambah hak (update dan delete)

mysql> –>

update user set update_priv='Y', delete_priv='Y' where user='ti..ak1';

•Menghapus hak (insert dan update)

mysql> –>

update user set insert_priv='N', update_priv='N' where user='ti..ak1';

• Mendefinisikan user dan hak ke database tertentu

mysql> –> –>

mysql> –> –>

insert into user(host, user, password)values('localhost','ti..ak2',password('ti..ak2'));

insert into db(host, db, user, select_priv, delete_priv) values('localhost','pjual', 'ti..ak2','Y',’Y’);

haknya hanya select dan delete ke semua tabel pada database pjual

•Menambah hak (insert dan update)

mysql> –> –>

update db set insert_priv='Y', update_priv=’Y’ where user='ti..ak2' and db='pjual';

haknya insert dan update ke semua tabel pada database pjual

•Menghapus hak (update dan delete)

mysql> –> –>

update db set update_priv='N', delete_priv=’N’ where user='ti..ak2' and db='pjual';

• Mendefinisikan user dan hak ke tabel tertentu

mysql> –> –>

mysql> –> –>

insert into user(host, user, password)values('localhost','ti..ak3',password('ti..ak3'));

insert into tables_priv(host, db, user, table_name, table_priv) values('localhost' ,'pjual','ti..ak3','barang','select,insert');

haknya hanya select dan insert ke tabel barang pada database pjual

•Menambah hak (update)

mysql> –> –>

update tables_priv set table_priv= 'select,insert,update' where user='ti..ak3' and db='pjual' and table_name='barang';

•Menghapus hak (insert)

mysql> –> –>

update tables_priv set table_priv='select, update' where user='ti..ak3' and db='pjual' and table_name='barang';

• Mendefinisikan user dan hak ke kolom tertentu

15

Page 16: MODUL MySQL - Another Sa'ad's Blog | Tempatku … · Web viewMembuat Database • Menampilkan database cd \xampp\mysql\bin mysql -u root -p --prompt="[\u @\h] [\d]\nmysql> " mysql>

mysql> –> –>

mysql> –> –> –>

mysql> –> –> –>

insert into user(host, user, password)values('localhost','ti..ak4',password('ti..ak4'));

insert into tables_priv(host, db, user, table_name,column_priv) values('localhost','pjual','ti..ak4','barang','select,insert');

insert into columns_priv(host, db, user, table_name, column_name, column_priv) values('localhost','pjual','ti..ak4','barang','kode','select,insert');

haknya hanya select dan insert ke kolom kode pada tabel barang database pjual

•Menambah hak (update)

mysql> –> –>

mysql> –> –> –>

update tables_priv set column_priv= 'select,insert,update' where user='ti..ak4' and db='pjual' and table_name='barang';

update columns_priv set column_priv= 'select,insert,update' where user='ti..ak4' and db='pjual' and table_name='barang' and column_name='kode';

•Menghapus hak (insert)

sama seperti menambah diatas tetapi insert tidak disertakan

•Menambah hak (ke kolom yang lain)

Insert ke tabel tables_priv tidak lagi dilakukan karena pada saat memberikan hak akses ke kolom kode sudah dilakukan, tapi bila hak akses yang akan diberikan selain select dan update maka hak tersebut harus ditambah ke tabel tables_priv, kemudian dilakukan insert ke tabel columns_priv seperti diatas.

•Menghapus definisi user

mysql> –>mysql> –>mysql>mysql>

delete from columns_priv where user='ti..ak4';delete from tables_priv where user='ti..ak4';delete from db where user='ti..ak4';delete from user where user='ti..ak4';

Administrasi User dengan Grant dan Revoke

16

Page 17: MODUL MySQL - Another Sa'ad's Blog | Tempatku … · Web viewMembuat Database • Menampilkan database cd \xampp\mysql\bin mysql -u root -p --prompt="[\u @\h] [\d]\nmysql> " mysql>

(catatan : mendefinisikan user dengan grant tidak perlu menggunakan database mysql dan bila username yang kita tuliskan dalam perintah grant sudah ada berarti menambah hak, bila belum ada maka dibuat user baru)

•Mendefinisikan user dengan hak penuh (sama dengan user root)mysql> grant all on *.* to ti..ar1@localhost identified by 'ti..ar1' with grant option;

•Menghapus hak penuhmysql> revoke all on *.* from ti..ar1@localhost identified by 'ti..ar1';mysql> update user set grant_priv='N' where user='ti..ar1';

•Menghapus definisi usermysql> delete from user where user='ti..ar1';

• Mendefinisikan user dan hak ke semua database (select dan insert)mysql> grant select,insert on *.* to ti..ar1@localhost identified by 'ti..ar1';

• Menambah hak (update dan delete)mysql> grant update,delete on *.* to ti..ar1@localhost identified by 'ti..ar1';

• Menghapus hak (insert dan update)mysql> revoke insert,update on *.* from ti..ar1@localhost identified by 'ti..ar1';

• Mendefinisikan user dan hak ke database tertentumysql> grant select,delete on pjual.* to ti..ar2@localhost identified by 'ti..ar2'; (catatan : haknya hanya select dan delete ke semua tabel pada database pjual)

mysql> grant all on xpjual.* to ti..ar2@localhost identified by 'ti..ar2'; (catatan : haknya select, insert, update, dst. ke semua tabel pada database pjual)

•Menghapus hak (select, insert, update, dst. )mysql> revoke all on xpjual.* from ti..ar2@localhost identified by 'ti..ar2';

• Mendefinisikan user dan hak ke tabel tertentumysql> grant all on pjual.barang to ti..ar3@localhost identified by 'ti..ar3'; (catatan : haknya adalah Select,Insert,Update,Delete,Create,Drop,References,Index,Alter)

mysql> grant all on pjual.detrans to ti..ar3@localhost identified by 'ti..ar3';

mysql> grant select, insert on pjual.pelanggan to ti..ar3@localhost identified by 'ti..ar3'; (catatan : haknya hanya select dan insert)

•Menambah hak (update dan delete)mysql> grant update, delete on pjual.pelanggan to ti..ar3@localhost identified by 'ti..ar3';

•Menghapus hak (insert dan update)mysql> revoke insert,update on pjual.pelanggan from ti..ar3@localhost identified by 'ti..ar3';

• Mendefinisikan user dan hak ke kolom (field) tertentumysql> grant select(kode,nama), insert(kode,nama) –> on pjual.barang to ti..ar4@localhost identified by 'ti..ar4';

Untuk pengujian dapat dilakukan dengan : mysql> select * from barang; (error) mysql> select kode,nama from barang;

mysql> insert into barang(kode,nama,harga)

17

Page 18: MODUL MySQL - Another Sa'ad's Blog | Tempatku … · Web viewMembuat Database • Menampilkan database cd \xampp\mysql\bin mysql -u root -p --prompt="[\u @\h] [\d]\nmysql> " mysql>

–> values('C22','CELANA',150000); (error) mysql> insert into barang(kode,nama) –> values('C22','CELANA'); mysql> update barang set nama='T SHIRT' –> where kode='C22'; (error)

•Menambah hak (update)mysql> grant update(kode,nama) on pjual.barang –> to ti..ar4@localhost identified by 'ti..ar4'; Untuk pengujian dapat dilakukan dengan : mysql> update barang set nama='T SHIRT' where kode='C22';

•Menambah hak ke kolom lainmysql> grant select(harga), insert(harga), update(harga) –> on pjual.barang to ti..ar4@localhost identified by 'ti..ar4';

Untuk pngujian dapat dilakukan dengan : mysql> update barang set harga=150000 where kode='C22';

•Menghapus hak dari suatu kolom (update)mysql> revoke update(nama,harga) on pjual.barang –> from ti..ar4@localhost identified by 'ti..ar4';

•Menghapus hak dari suatu kolom (semua hak)mysql> revoke select(harga), insert(harga) on pjual.barang –> from ti..ar4@localhost identified by 'ti..ar4';

Backup dan Restoreo Menyalin dan membaca kembali database ke dalam dan dari file teks.o Menyalin dan membaca kembali database ke dalam dan dari perintah SQL.o Menyalin dan membaca kembali isi database dari satu server ke server lain.

Menyalin dan membaca kembali database ke dalam dan dari file teks

•Menyalin data ke dalam file teksmysql> use pjual;mysql> select * from barang into outfile 'c:\\ti..\\rbarang1.dat';mysql> select * from barang into outfile 'c:\\ti..\\rbarang2.dat';

•Membaca kembali data dari file teksmysql> create table rbarang1 select * from barang where kode='';mysql> load data infile 'c:\\ti..\\rbarang1.dat' into table rbarang1;

•Membaca kembali data dari file teks menggunakan mysqlimportmysql> create table rbarang2 select * from barang where kode='';c:\xampp\mysql\bin >mysqlimport -u root -p pjual "c:\ti..\rbarang2.dat" (catatan : nama file rbarang2.dat harus sama dgn nama tabel yaitu rbarang2)

Menyalin dan membaca kembali database ke dalam dan dari perintah SQL

•Menyalin database (struktur dan data) ke dalam perintah SQLc:\xampp\mysql\bin >mysqldump -u root -p pjual > c:\ti..\bpjual

•Menyalin struktur tabel

18

Page 19: MODUL MySQL - Another Sa'ad's Blog | Tempatku … · Web viewMembuat Database • Menampilkan database cd \xampp\mysql\bin mysql -u root -p --prompt="[\u @\h] [\d]\nmysql> " mysql>

c:\xampp\mysql\bin >mysqldump --no-data -u root -p pjual > c:\ti..\bpjuals

•Menyalin data sajac:\xampp\mysql\bin >mysqldump -t -u root -p pjual > c:\ti..\bpjuald

•Menyalin struktur dan data tabel tertentuc:\xampp\mysql\bin >mysqldump -u root -p pjual barang > c:\ti..\rbarang3

c:\xampp\mysql\bin >mysqldump -c -u root -p pjual barang > c:\ti..\rbarang4 (catatan : -c untuk menghasilkan perintah insert yg lengkap)

•Membaca kembali database dari perintah SQL(dapat dilakukan dengan menggunakan perintah SQL hasil salinan pada server mysql)

mysql> create database rbpjual;c:\xampp\mysql\bin >mysql -u root -p rbpjual < c:\ti..\bpjual (catatan : rbpjual berisi struktur dan data)

mysql> create database rsdpjual;c:\xampp\mysql\bin >mysql -u root -p rsdpjual < c:\ti..\bpjuals (catatan : bpjuals berisi struktur tabel saja)

c:\xampp\mysql\bin >mysql -u root -p rsdpjual < c:\ti..\bpjuald (catatan : bpjuald berisi data saja)

mysql> create database brpjual;c:\xampp\mysql\bin >mysql -u root -p brpjual < c:\ti..\rbarang3 (catatan : rbarang3 berisi tabel barang saja)

Menyalin dan membaca kembali isi database dari satu server ke server lain

•Membuat database pada server localhostc:\xampp\mysql\bin >mysqladmin -u root -p create spjual

•Menyalin database ke server localhostc:\xampp\mysql\bin >mysqldump -u root -p pjual | (sumber/asal) mysql --host=localhost --user=root --password=positronb spjual (tujuan)atauc:\xampp\mysql\bin >mysqldump --user=root --password=positronb pjual | mysql --host=localhost -u root -p spjual

•Membuat database pada server lainc:\xampp\mysql\bin >mysqladmin --host=192.168.0.6 -u positron -p create slpjual

•Menyalin database ke server lainc:\xampp\mysql\bin >mysqldump -u root -p pjual | (sumber/asal) mysql --host=192.168.0.6 --user=positron --password=positron slpjual (tujuan)atauc:\xampp\mysql\bin >mysqldump --user=root --password=positronb pjual | mysql --host=192.168.0.6 -u positron -p slpjual

19