sql 1

19
1 Modul Pemrograman Basis Data Membuat Database • Menampilkan database cd \xampp\mysql\bin mysql -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 pjual membuat database dengan nama barang membuat 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 pjual menampilkan 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 database xdetrans = nama tabel yang dibuat

Upload: ferdinan-hutagalung

Post on 01-Nov-2014

14 views

Category:

Documents


0 download

DESCRIPTION

sql 1

TRANSCRIPT

Page 1: sql 1

1

Modul Pemrograman Basis Data Membuat Database • Menampilkan database

cd \xampp\mysql\bin mysql -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 pjual membuat database dengan nama barang membuat 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 pjual menampilkan 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 database xdetrans = nama tabel yang dibuat

Page 2: sql 1

2

• 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 NULL ko_brg varchar(3) YES NULL jlh_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) PRI nama varchar(20) YES NULL harga decimal(9,0) YES NULL stok 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) PRI nama varchar(20) YES NULL alamat varchar(30) YES NULL telepon 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) PRI tanggal date YES NULL ko_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 dicopy xbarang = nama tabel hasil copy detrans = nama tabel yang dicopy xdetrans = nama tabel hasil copy

Page 3: sql 1

3

• Mengcopy tabel ke database non aktif

mysql> –>

create table xpjual.barang select * from barang;

barang = nama tabel yang dicopy xbarang = nama tabel hasil copy xpjual = nama database

• Mengcopy tabel dari database non aktif

mysql> –>

create table pbarang select * from xpjual.barang;

xpjual = nama database xbarang = nama tabel yang dicopy pbarang = nama tabel hasil copy

•Merubah nama tabel

mysql> alter table xtransaksi rename jualbrg; pbarang = nama tabel yang diganti namanya jualbrg = 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);

Page 4: sql 1

4

•Menghapus Primary Key

mysql> alter table xbarang drop primary key;

•Membuat Index

mysql> –> mysql> –>

alter table xdetrans add index kobrg_ndx(ko_brg); atau create 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');

Page 5: sql 1

5

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

PELANGGAN KODE NAMA ALAMAT TELEPON 101 BUDIMAN KANGKUNG 15, MEDAN 8213344 102 ABDULLAH JAHE 20, MEDAN 08153061566 103 KARTINI MERAK 12, MEDAN 8455667 104 HARTONO SUDIRMAN 20, BINJAI 08123345678

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

TRANSAKSI 004 A11 1 NO_FAK TANGGAL KO_PLGN 004 A12 2 001 2005-12-30 101 004 B21 4 002 2005-12-30 103 005 B21 1 003 2006-01-02 104 006 A12 2 004 2006-01-02 102 006 D21 1 005 2006-01-03 101 006 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=600000 where kode='A11'; update tbarang set nama='KULKAS', harga=1500000 where kode='A12'; update tbarang set kode='B22', nama='SANDAL', harga=100000 where kode='B21'; update tbarang set harga=harga*2; update tdetrans set jlh_brg=4 where no_fak='001' and ko_brg='A11';

Page 6: sql 1

6

Menghapus Data

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

delete from tdetrans where no_fak='002'; delete from tdetrans where no_fak='001'; delete from tdetrans where no_fak='003' and ko_brg='A11'; delete from tdetrans where no_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_select FROM 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_brg from detrans; select * from detrans limit 5; select * from detrans limit 3,5; select * from detrans where ko_brg='A11'; select * from detrans where ko_brg='A11' and jlh_brg=1;

5 record mulai dari record 3

Page 7: sql 1

7

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

select * from detrans where ko_brg='A11' or ko_brg='B21'; select * from detrans where (ko_brg='A11' or ko_brg='B21') and jlh_brg>1; select * from transaksi where tanggal='2006-01-02'; select * from transaksi where tanggal>='2006-01-02'; select * from transaksi where tanggal>='2006-01-02' and tanggal<='2006-01-10'; select * from transaksi where tanggal between '2006-01-02' and '2006-01-10'; select * from detrans where 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_brg having sum(jlh_brg)>5; select ko_brg, sum(jlh_brg) as jumlah from detrans group by ko_brg having sum(jlh_brg)>5 order by jumlah;

select no_fak, sum(jlh_brg) as jumlah from detrans group by no_fak having jumlah>2 order by jumlah desc; select no_fak, sum(jlh_brg) as jumlah from detrans group by no_fak order by jumlah desc limit 3;

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

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

select no_fak, nama, harga, jlh_brg from barang left join detrans on kode=ko_brg order by no_fak; select no_fak, nama, harga, jlh_brg from detrans right join barang on ko_brg=kode order by no_fak; select no_fak, nama, harga, jlh_brg from detrans left join barang on ko_brg=kode order by no_fak; select kode, nama, sum(jlh_brg) as jumlah from barang left join detrans on kode=ko_brg group by ko_brg order by kode;

select t.no_fak, tanggal, p.nama, b.nama, harga, jlh_brg, harga * jlh_brg as hartot from ((barang b left join detrans d on 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;

Page 8: sql 1

8

•Equa Join Query 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_brg from detrans, barang where ko_brg=kode order by no_fak; select transaksi.no_fak, transaksi.tanggal, detrans.ko_brg, detrans.jlh_brg from transaksi, detrans where 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 hartot from detrans d, barang b where 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 diskon from detrans d, barang b where 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 detrans where ko_brg='B21') as dt where 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 jumlah from (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

Page 9: sql 1

9

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

select * from detrans where jlh_brg in (select stok from barang); select no_fak, sum(jlh_brg) as jumlah from detrans group by no_fak having sum(jlh_brg) > (select sum(jlh_brg) from detrans where no_fak='002' group by no_fak);

in sama dgn = any, not in sama dgn <> any select no_fak, sum(harga*jlh_brg) as hartot from detrans, barang where ko_brg=kode group by no_fak having sum(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.

•MyISAM Merupakan 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

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

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

•HEAP Menggunakan 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.

•BDB Dukungan 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.

•InnoDB Merupakan 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.

Page 10: sql 1

10

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' \G show table status from rpjual \G

Untuk pemeriksaan

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

create table transaksi(no_fak varchar(3) not null, tanggal date, ko_plgn varchar(3), primary key(no_fak), index koplgndx (ko_plgn), foreign key(ko_plgn) references pelanggan(kode) on delete restrict on update restrict) type=innodb; create table transaksi(no_fak varchar(3) not null, tanggal date, ko_plgn varchar(3), primary key(no_fak), index koplgndx (ko_plgn), constraint koplgfk foreign key (ko_plgn) references pelanggan(kode) on delete restrict on update restrict) type=innodb;

membuat foreign key tanpa menggunakan clausa constraint atau dengan 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 transaksi values('001','2005-12-30','101'); insert into transaksi values('002','2005-12-30','102'); insert into pelanggan(kode, nama) values('102','ABDULLAH'); insert into transaksi values('002','2005-12-30','102'); delete from pelanggan where 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

Page 11: sql 1

11

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 update cascade on delete cascade, index nofakndx(no_fak), constraint nofakfk foreign key (no_fak) references transaksi(no_fak) on update cascade 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 transaksi values('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 constraint koplgfk foreign key (ko_plgn) references pelanggan (kode) on delete restrict;

Bila belum di index, index terlebih dahulu berdasarkan foreign key

Page 12: sql 1

12

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 101 002 2005-12-30 102 007 2006-12-15 101

3 rows in set (0.00 sec) mysql> \q Bye c:\xampp\mysql\bin>mysql -u root -p Enter password: ********* mysql> mysql>

use rpjual; select * from transaksi;

no_fak tanggal Ko_plgn

001 2005-12-30 101 002 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; \q

Bye c:\xampp\mysql\bin>mysql -u root -p Enter password: ********* mysql> mysql>

use rpjual; select * from transaksi;

no_fak tanggal Ko_plgn

001 2005-12-30 101 002 2005-12-30 102 007 2006-12-15 101

3 rows in set (0.00 sec)

Page 13: sql 1

13

mysql> select * from detrans;

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 transaksi values('008','2006-12-15','101'); select * from transaksi;

no_fak tanggal Ko_plgn

001 2005-12-30 101 002 2005-12-30 102 007 2006-12-15 101 008 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 2 008 B21 2

2 rows in set (0.00 sec) mysql> mysql>

rollback; select * from transaksi;

no_fak tanggal Ko_plgn

001 2005-12-30 101 002 2005-12-30 102 007 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)

Page 14: sql 1

14

Administrasi User •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_priv Db Func Host tables_priv User

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 MySQL untuk pengujian

Page 15: sql 1

15

c:\xampp\mysql\bin >mysql –u ti..cb1 –p Enter password: ******* •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';

Page 16: sql 1

16

• Mendefinisikan user dan hak ke kolom tertentu

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';

Page 17: sql 1

17

Administrasi User dengan Grant dan Revoke (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 penuh mysql> revoke all on *.* from ti..ar1@localhost identified by 'ti..ar1'; mysql> update user set grant_priv='N' where user='ti..ar1'; •Menghapus definisi user mysql> 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 tertentu mysql> 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 tertentu mysql> 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) tertentu mysql> 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;

Page 18: sql 1

18

mysql> insert into barang(kode,nama,harga) –> 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 lain mysql> 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 Restore o 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 teks mysql> 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 teks mysql> 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 mysqlimport mysql> 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 SQL c:\xampp\mysql\bin >mysqldump -u root -p pjual > c:\ti..\bpjual

Page 19: sql 1

19

•Menyalin struktur tabel c:\xampp\mysql\bin >mysqldump --no-data -u root -p pjual > c:\ti..\bpjuals •Menyalin data saja c:\xampp\mysql\bin >mysqldump -t -u root -p pjual > c:\ti..\bpjuald •Menyalin struktur dan data tabel tertentu c:\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 localhost c:\xampp\mysql\bin >mysqladmin -u root -p create spjual •Menyalin database ke server localhost c:\xampp\mysql\bin >mysqldump -u root -p pjual | (sumber/asal) mysql --host=localhost --user=root --password=positronb spjual (tujuan) atau c:\xampp\mysql\bin >mysqldump --user=root --password=positronb pjual | mysql --host=localhost -u root -p spjual •Membuat database pada server lain c:\xampp\mysql\bin >mysqladmin --host=192.168.0.6 -u positron -p create slpjual •Menyalin database ke server lain c:\xampp\mysql\bin >mysqldump -u root -p pjual | (sumber/asal) mysql --host=192.168.0.6 --user=positron --password=positron slpjual (tujuan) atau c:\xampp\mysql\bin >mysqldump --user=root --password=positronb pjual | mysql --host=192.168.0.6 -u positron -p slpjual