• Convallis consequat

    Lorem ipsum integer tincidunt quisque tristique sollicitudin eros sapien, ultrices primis volutpat tempor curabitur duis mattis dapibus, felis amet faucibus...

  • Augue nullam mauris

    Lorem ipsum integer tincidunt quisque tristique sollicitudin eros sapien, ultrices primis volutpat tempor curabitur duis mattis dapibus, felis amet faucibus...

  • Donec conubia volutpat

    Lorem ipsum integer tincidunt quisque tristique sollicitudin eros sapien, ultrices primis volutpat tempor curabitur duis mattis dapibus, felis amet faucibus...

  • Primis volutpat tempor

    Lorem ipsum integer tincidunt quisque tristique sollicitudin eros sapien, ultrices primis volutpat tempor curabitur duis mattis dapibus, felis amet faucibus...

Tampilkan postingan dengan label Database. Tampilkan semua postingan

Cara Membuat Grade Nilai Database Pada MySQL

Cara Membuat Grade Nilai Database Pada MySQL - Hal pertama yang harus dilakukan dalam membuat grade nilai tentu saja dengan membuat table nilai dengan listing create table nama_table(field1 tipe_data(range),field2 tipe_data(range),dst);


contoh membuat tabel
perintah desc nilai; adalah perintah untuk melihat struktur table.


kemudian adalah memasukan data ke dalam tabel yang telah kita buat menggunakan perintah
insert into(field1,field2,field3,dst) values (isi_data_field1,isi_data_field2,isi_data_field3,dst);
mamasukan record ke dalam tabel
setelah mengisi record hal selanjutnya yang harus kita lakukan adalah menambahkan field/atribut nilai_akhir dan grade nilai. untuk menambahkan field tersebut gunakan perintah alter table nilai add nilai_akhir int(4);
kemudian manambahkan field grade dengan perintah alter table nilai add grade char(1);

menambahkan field baru
langkah selanjutnya adalah mengisi data dari field nilai_akhir kemudian field grade.
untuk mengisi data pada field nilai_akhir kita tidak menggunakan insert into, melainkan menggunakan update, masukan perintah update nilai set nilai_akhir=(uts+uas+tugas)/3;
memasukan data value ke field nilai akhir
kemudian untuk mengisi data pada grade (dalam hal ini saya menggunakan range jika nilai akhir>80 maka nilai grade=A, jika >= 70 maka nilai grade adalah B dibawah itu adalah C) adalah dengan memasukan perintah update nilai set grade=if(nilai_akhir>80,"A",if(nilai_akhir>=70,"B","C"));
memasukan data value ke field grade
untuk melihat tabel yang kita kerjakan silahkan masukan perintah select*from nilai;

demikian tutorial dari ane ,jika ada kekurangan mohon di kritik dan diberikan saran, semoga Cara Membuat Grade Nilai Database Pada MySQL bermanfaat untuk sobat semua. terima kasih.

Beberapa Hal Yang Harus Diketahui Untuk Pemula Tentang MySQL

Beberapa Hal Yang Harus Diketahui Untuk Pemula Tentang MySQL -
  1. Tabel MySQL bukanlah array
  2. Bahasa SQL dan Fungsi-Fungsi MySQL
  3. LIMIT, LIMIT, LIMIT
  4. Tipe Data
  5. Normalisasi dan Pemodelan
  6. Indeks
  7. Konkurensi, Locking, dan Transaksi
  8. Jenis Tabel
  9. Penutup


Time and again I am amazed at how bad the successful software packages out there are. Apache is easily outperformed by fnord, MySQL isn't even a real database, PHP is so slow that Zend actually made a business model out of selling performance enhancing hacks for it.—diary Fefe

PHP+MySQL. Siapa yang tidak tahu bahwa duo sejoli ini adalah pasangan terpopular di dunia open source, bahkan di seluruh Internet. PHP telah menggeser Perl sebagai bahasa pilihan dalam membuat aplikasi Web, terutama bagi pemula. Dan PHP hampir selalu bersanding dengan MySQL; 90–95%+ skrip PHP di www.hotscripts.com mungkin bertuliskan “membutuhkan PHP dan MySQL”. Buku-buku PHP, termasuk untuk pemula, tidak akan dipandang afdol kalau belum membahas MySQL. Dan programer PHP, lambat atau cepat, mau atau tidak mau, pasti akan harus mengakrabi software database yang satu ini.
Sayangnya, banyak programer sudah bermain-main dan memakai MySQL secara live di situs produksi, padahal masih asing sama sekali dengan konsep database relasional. Bahkan sebetulnya MySQL juga banyak memiliki kekurangan dalam hal fitur SQL. Sehingga programer PHP tidak bisa memahami dan memanfaatkan kekuatan penuh database relasional + SQL.
Buat Anda para programer pemula yang memang masih awam dengan MySQL dan konsep database pada umumnya, tidak perlu minder atau khawatir. Di dunia IT yang bergerak serba cepat ini memang ada terlalu banyak hal yang harus dipelajari. Dan kebanyakan jadinya dipelajari sambil jalan, sambil dipraktikkan. Ketika mulai membangun CMS untuk satunet.com tahun 1999 pun, saya hanya punya skill terbatas tentang SQL: hanya tahu SELECT, UPDATE, DELETE, CREATE TABLE, dan DROP TABLE. Apa itu JOIN, bagaimana mengubah skema tabel, bagaimana mendesain database yang baik dan ternormalisasi, semuanya masih blank. Dan semua harus dipelajari sambil jalan. Tapi toh akhirnya semua baik-baik saja.
Lewat artikel ini kita akan membahas hal-hal dasar apa yang perlu diketahui agar bisa memakai MySQL dengan efektif dan efisien. Mari kita mulai dengan hal nomor satu:

1. Tabel MySQL bukanlah array

Programer PHP atau Perl tentu saja familiar dengan array dan hash, yang biasanya dipakai untuk menyimpan sekumpulan data terkait. Sebagian dari mereka yang tidak familiar dengan MySQL akan cenderung menganalogikan tabel database dengan array/hash (tepatnya, array of array atau array 2 dimensi). Tabel dipandang sama seperti sebuah array, hanya saja bisa berukuran besar sekali dan persisten (disimpan di disk).
Cara pandang ini tidak sepenuhnya salah, karena toh dalam mengambil record dari tabel biasanya ditampung ke dalam variabel array/hash. Hanya saja, cara pandang ini kadang-kadang membuat programer PHP melakukan sesuatu seperti:
$res = mysql_query("SELECT * FROM t1");
$rows = array();
while ($row = mysql_fetch_row($res)) $rows[] = $row;
echo "Jumlah record di tabel t1 = ", count($rows);
atau membuat tabel seperti:
CREATE TABLE t2 (
  f0 INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
  f1 INT UNSIGNED,
  f2 VARCHAR(5),
  f3 VARCHAR(200),
  f4 VARCHAR(200),
  f5 BLOB
);
Apa yang salah dengan kode PHP pertama di atas, yang bertujuan mencari jumlah record dalam sebuah tabel? Si programer, yang terlalu terobsesi menganggap tabel MySQL sebagai sebuah array, mencoba membangun dulu arraynya dengan mengisi satu-persatu elemen dari hasil query agar nantinya bisa menggunakan fungsi array count(). Masalahnya, bagaimana kalau jumlah record ada 100 ribu? 1 juta? 10 juta? Bukan itu saja, selesai di-count() variabel $rows langsung dibuang lagi! Padahal, ada cara yang jauh lebih efisien:
SELECT COUNT(*) FROM t1
Hasil querynya hanyalah sebuah record saja, tak peduli berapa pun ukuran tabel t1.
Lalu apa yang salah dengan kode SQL kedua? Si programer Perl, dalam hal ini, terobsesi ingin mengambil tiap record di tabel dengan fungsi DBI $sth->fetchrow_array()
@row = $sth->fetchrow_array();
print $row[0]; # f0
print $row[1]; # f1
print $row[2]; # f2
# ...
Enak bukan? Elemen ke-0 berisi nilai field f0, elemen ke-1 field f1, dst. Masalahnya, kemudahan ini mengorbankan nama field yang menjadi sangat tidak deskriptif. Belum lagi kalau tabel perlu diubah dengan menyisipkan field-field lain di antara field yang sudah ada. Atau field-field lama perlu dihapus. Semuanya akan menjadi mimpi buruk.
Sebagian pembaca mungkin geleng-geleng kepala. Apa benar ada programer PHP dan Perl yang melakukan kedua hal di atas? Percaya deh, ada. Saya pernah harus ketiban getah memaintain tabel dengan nama field kriptik seperti ini.

2. Bahasa SQL dan Fungsi-Fungsi MySQL

MySQL adalah database SQL bukan? Sayangnya, programer PHP pemula kadang terbatas sekali pengetahuan SQL-nya. Padahal, untuk menggunakan database MySQL dengan efektif, ia tidak boleh malas mempelajari bahasa kedua, yaitu SQL. Jika tidak belajar SQL, maka ada kemungkinan Anda akan melakukan hal-hal seperti:
$res = mysql_query("SELECT * FROM bigtable");
while ($row = mysql_fetch_assoc($res)) {
    if ($row['age'] >= 40) {
        echo "Ditemukan kustomer yang berusia lebih dari 40 tahun!\n";
        break;
    }
}
Apa salah kode di atas? Si programer PHP mencoba mensimulasikan klausa WHERE SQL dengan melakukan pengujian kondisi di kode PHP. Padahal, yang seharusnya dilakukan adalah:
SELECT * FROM bigtable WHERE age >= 40
Ini amat mengirit trafik client/server karena tidak semua record harus dikirimkan dari MySQL ke program PHP Anda.
Sebagian pembaca mungkin geleng-geleng kepala. Apa benar ada programer PHP yang seperti ini? Percaya deh, ada.
SQL sudah menyediakan cara untuk menyortir data, memformat tampilan, mengelompokkan dan memfilter record, dsb. MySQL juga terkenal banyak menyediakan fungsi-fungsi, mulai dari manipulasi tanggal, angka, string, dsb. Kenali SQL dan fungsi-fungsi MySQL; jangan duplikasikan ini semua di PHP sebab akan lebih efisien jika dilakukan di level MySQL.
Ini contoh lain programer PHP yang tidak memanfaatkan fasilitas dari MySQL:
$res = mysql_query("SELECT * FROM customers");
while ($row = mysql_fetch_assoc($res)) {
    # format semula yyyy-mm-dd...
    preg_match("/(\d\d\d\d)-(\d\d?)-(\d\d?)/", $row[date], $matches); 
    # ... dan ingin dijadikan dd/mm/yyyy
    $tanggal = "$matches[3]/$matches[2]/$matches[1]"; 
    echo "Nama=$row[name], Tanggal lahir=$tanggal<br>\n";
}
Padahal MySQL sudah menyediakan fungsi pemformatan dan manipulasi tanggal:
$res = mysql_query("SELECT name, DATE_FORMAT(date,'%d-%m-%Y') as tanggal ".
                   "FROM customers");
while ($row = mysql_fetch_assoc($res)) {
    # tidak perlu capek-capek manipulasi string lagi...
    echo "Nama=$row[name], Tanggal lahir=$row[tanggal]<br>\n";
}
Poin no. 2 ini kedengarannya klise, tapi, seperti nasihat Inggris bilang: know thy tools.

3. LIMIT, LIMIT, LIMIT

Salah satu alasan mengapa MySQL sangat cocok untuk aplikasi Web adalah mendukung klausa LIMIT. Dengan klausa ini, mudah sekali membatasi jumlah record hasil yang diinginkan dalam satu perintah SQL. Tidak perlu bermain kursor atau bersusah payah lewat cara lainnya. Belakangan database lain seperti PostgreSQL dan Firebird pun ikut mendukung fungsionalitas LIMIT (dengan sintaks yang tidak persis sama tentunya).
Sayangnya, programer PHP sendiri yang belum mengenal MySQL dengan baik tidak menggunakannya dengan semestinya.
$res = mysql_query("SELECT name FROM users ORDER BY date");
$rows = array();
for ($i=1; $i<=10; $i++) $rows[] = mysql_fetch_row($res);
Si programer hanya berniat mengambil 10 record, tapi menyuruh MySQL mengambil semua record yang ada dulu. Bagaimana kalau ada 100 ribu record? 1 juta record? 10 juta? Seharusnya, setiap kali Anda menginginkan hanya satu, sepuluh, lima belas record, Anda perlu memberitahu MySQL lewat klausa LIMIT.
SELECT name FROM users ORDER BY date LIMIT 10
Sehingga kita bisa mengirit trafik komunikasi client/server dan mengizinkan MySQL melakukan optimisasi terhadap query tersebut.

4. Tipe Data

Berbeda dengan PHP dan bahasa-bahasa skripting yang mengizinkan kita menaruh apa saja dalam sebuah $variable tanpa deklarasi tipe terlebih dahulu, di MySQL kita perlu mendeklarasikan tipe-tipe data semua field yang ada pada saat membuat sebuah tabel. Seorang programer PHP yang tidak kenal MySQL kadang-kadang cenderung memilih jenis data yang salah (umumnya: memilih VARCHAR() padahal ada tipe data yang lebih tepat) dikarenakan tidak mengenal jenis-jenis data yang tersedia.
Berikut beberapa contoh kurang tepatnya pemilihan tipe data: 1) memilih CHAR(8) atau VARCHAR(10) dan bukannya DATE untuk menyimpan tanggal; kerugiannya, lebih boros tempat dan tidak bisa memanfaatkan fungsi-fungsi khusus tanggal; 2) memilih CHAR(3) atau CHAR(6) ketimbang TINYINT UNSIGNED untuk menyimpan data boolean (“YES” dan “NO”; atau “TRUE” dan “FALSE”; padahal jauh lebih irit dinyatakan dengan 1 dan 0 yang hanya menempati 1 byte); 3) memilih FLOAT atau DOUBLE dan bukannya DECIMAL untuk menyimpan jumlah uang; kerugiannya, FLOAT dan DOUBLE adalah berbasis biner dan seringkali tidak eksak dalam menyimpan pecahan desimal.
Nomor 3 sering terjadi karena programer biasanya hanya mengenal single/double floating point number yang tersedia di bahasa pemrograman. Padahal database umumnya menyediakan angka pecahan berbasis desimal yang bisa eksak menyimpan pecahan desimal.
Manual MySQL amat membantu di sini; di subbab tentang Column Types dijelaskan dengan rinci jenis-jenis data yang ada, termasuk rentang nilai yang dapat ditampung, berapa byte yang ditempati tipe data tersebut, dsb.

5. Normalisasi dan Pemodelan

Normalisasi, skema, entiti-atribut, primary key (PK) dan foreign key (FK), tabel entiti, tabel relasi, OLTP & OLAP… semuanya adalah istilah-istilah yang umum dijumpai dalam pemodelan fisik database. Sayangnya, banyak programer pemula tidak memiliki kemampuan modeling. Sehingga jika disuruh mendesain skema database (sekumpulan tabel-tabel beserta nama field dan tipenya) hasilnya tidak optimal bahkan berantakan. Skema yang buruk berakibat terjadinya duplikasi data, tidak scalable, performance yang buruk, tidak memenuhi requirements, dsb.
Modeling tentunya tidak bisa diajarkan dalam 1–2 hari, apalagi dalam artikel yang singkat ini. Anda perlu membaca buku-buku mengenai pemodelan database dan belajar dari pengalaman maupun dari model-model yang sudah ada. Tapi beberapa nasihat yang mungkin bisa saya berikan di sini adalah sbb.
Satu, langkah pertama dalam pemodelan adalah menemukan entiti-entiti. Entiti bisa dibilang “objek” yang akan kita gelluti. Misalnya, customer, produk, dan transaksi. Setiap entiti umumnya ditaruh dalam satu tabel, tabel ini disebut tabel entiti. Langkah kedua adalah mencari atribut-atribut entiti tersebut. Misalnya tabel customers memiliki atribut sapaan, nama, alamat (jalan + kota + kodepos + propinsi + negara), tanggal record ini ditambahkan, dsb. Langkah ketiga adalah mencari relasi di antara entiti-entiti. Umumnya relasi adalah satu dari: 1-1, 1-many, many-many. Misalnya, relasi antara transaksi dan produk adalah many-many, artinya sebuah transaksi pembelian dapat berisi banyak produk dan sebuah produk tentu saja dapat dibeli dalam lebih dari satu transaksi. Setiap relasi juga akan ditempatkan pada tabel, yaitu tabel relasi.
Dua, dalam pemodelan tidak ada istilah model yang benar atau salah. Yang ada adalah model yang tepat dan tidak tepat untuk keperluan tertentu. Misalnya, untuk aplikasi sederhana modelnya sederhana. Semakin kompleks aplikasi, model pun semakin rumit (jumlah entiti, relasi, dan atribut akan bertambah). Pada umumnya, seiring kompleksitas bertambah, yang tadinya atribut akan berubah menjadi entiti dikarenakan adanya kenyataan hubungan 1-many/many-many antara atribut. Contohnya, tabel customers memiliki atribut alamat. Jika kita ingin mendukung banyak alamat untuk satu customers, maka alamat akan menjadi entiti dan menempati tabel sendiri. Lalu kita membuat tabel relasi customers-alamat.

6. Indeks

Indeks adalah sesuatu yang berkaitan erat dengan implementasi, bukan modeling. Kita seringkali perlu menambahkan indeks pada sebuah field atau banyak field dikarenakan jika tidak ditambahkan maka performance database tidak menjadi praktis. Serba-serbi indexing juga mungkin terlalu panjang untuk bisa dijelaskan dalam artikel pendek ini, tapi intinya setiap kolom yang: 1) memiliki rentang nilai cukup banyak; 2) terletak pada tabel yang berisi banyak record; 3) seringkali disebutkan di klausa WHERE dan/atau ORDER BY dan/atau GROUP BY; perlu diberi indeks. Ini dikarenakan indeks membantu mencari secara cepat sebuah nilai dari banyak nilai yang ada. Beberapa contoh:
* Setiap primary key umumnya otomatis diberi indeks oleh database server, meskipun tabelnya masih berisi sedikit record atau bahkan kosong. Ini dikarenakan database perlu selalu mengecek keberadaan sebuah nilai field ini manakala ada sebuah record yang ditambahkan (ingat, PK artinya tak boleh ada dua record yang mengandung nilai field ini yang sama). Tanpa indexing, pengecekan akan linear dan memakan waktu lama.
* Field tanggal lahir dalam tabel customers kemungkinan besar harus diindeks. Bahkan dayofyear() field ini juga mungkin perlu diindeks. Mengapa? Karena: 1) rentang nilai cukup besar (365 hari dalam setahun x +- 60 jumlah tahun); 2) tabel customers potensial ukurannya besar; 3) sering disebutkan di klausa WHERE (misalnya mencari customer yang ultah hari ini).
* Field memo/notes kemungkinan besar tidak perlu diindeks (secara biasa). Mengapa? Karena meskipun 1) rentang nilai cukup besar; dan 2) tabel customers bisa besar; tapi 3) field ini tidak pernah disebutkan di klausa WHERE secara langsung (mis: Anda tidak pernah menyebutkan: … WHERE notes='nilai catatan tertentu' atau WHERE notes > 'nilai tertentu'). [Catatan: ada indeks lain yang “tidak biasa” di MySQL, yaitu FULLTEXT. Tapi ini di luar cakupan artikel kita kali ini.]
* Field jenis kelamin mungkin tidak perlu diindeks, kecuali jika perbandingan pria:wanita amat drastis bedanya. Mengapa? Sebab: 1) rentang nilai yang ada hanyalah dua: L (lelaki) dan P (perempuan). Meskipun Anda beri indeks, tidak akan memperbaiki kinerja.

7. Konkurensi, Locking, dan Transaksi

Programer web pemula kadang-kadang tidak menyadari bahwa program/skrip yang dibuatnya tidaklah seperti program desktop yang dijalankan oleh satu user. Melainkan, dalam satu waktu bisa saja ada 10 atau 100 user yang “menembak” skrip Anda di Web. Karena itu, isu locking dan konkurensi penting sekali. Contohnya adalah seperti ini:
$res = mysql_query("SELECT value FROM counters WHERE name='counter1'");
list ($value) = mysql_fetch_row($res);
$value++;
// do something else first...
$res = mysql_query("UPDATE counter SET value=$value WHERE name='counter1'");
Di antara baris pertama (saat kita mengambil nilai record) dan baris keempat (saat kita menaruh kembali nilai dalam record) mungkin saja telah terjadi beberapa kali perubahan terhadap si record. Misalnya, pada baris pertama klien1 memperoleh nilai $value = 100. Di baris 3 $value di-increment menjadi 101. Tapi apa yang terjadi jika selama selang waktu itu nilai record counter1 telah menjadi 103 (karena misalnya klien2, klien3, dan klien4 telah meng-incrementnya)? Oleh si klien1, counter1 direset kembali menjadi 101 dan akibatnya increment oleh klien2, klien3, dan klien4 hilang. Seharusnya nilai counter1 menjadi 104.
Untuk kasus di atas, pemecahannya cukup gampang. Lakukan increment secara atomik:
// tidak perlu ambil nilai counter dulu...
// do something else first...
$res = mysql_query("UPDATE counter SET value=value+1 WHERE name='counter1'");
Tapi dalam kasus lain, kadang-kadang kita harus melakukan locking terhadap tabel atau record untuk menjamin bahwa selama kita // do something else… klien2, klien3, dan klien4 tidak bisa seenaknya menaikkan nilai counter:
mysql_query("LOCK TABLES cuonters");
$res = mysql_query("SELECT value FROM counters WHERE name='counter1'");
list ($value) = mysql_fetch_row($res);
// do something else first... increase value or something...
$res = mysql_query("UPDATE counter SET value=$value WHERE name='counter1'");
mysql_query("UNLOCK TABLES");
atau (lebih baik karena kita tidak perlu melock keseluruhan tabel):
mysql_query("SELECT GET_LOCK('lock1')");
$res = mysql_query("SELECT value FROM counters WHERE name='counter1'");
list ($value) = mysql_fetch_row($res);
// do something else first... increase value or something...
$res = mysql_query("UPDATE counter SET value=$value WHERE name='counter1'");
mysql_query("SELECT RELEASE_LOCK('lock1')");
Ingat, locking dapat berakibat samping yaitu deadlock.
Transaksi. Transaksi pun sesuatu yang dipergunakan secara meluas di dunia database, tapi hampir tidak pernah kita jumpai di bahasa pemrograman (ini karena data di bahasa pemrograman ditaruh dalam variabel di memori semua; tidak ada isu disk yang crash/lambat/rusak/harus disinkronkan dengan data di memori). Karena itu Anda perlu memahami konsep ini dari buku-buku tentang database.

8. Jenis Tabel

Di MySQL dikenal istilah table handler dan jenis tabel. Saat ini ada 3 jenis tabel utama yang bisa dipakai di MySQL: MyISAM (default), BerkeleyDB, dan InnoDB. Yang perlu diketahui ada tiga hal: 1) tidak semua tabel mendukung transaksi (MyISAM tidak mendukung transaksi, jadi COMMIT dan ROLLBACK tidak melakukan sesuatu yang semestinya jika Anda menerapkan pada tabel MyISAM); 2) tidak semua tabel punya karakteristik performance yang sama (BerkeleyDB misalnya, lambat jika ukuran tabel besar) dan disimpan dengan cara yang sama (tabel MyISAM misalnya disimpan dalam 3 file: .MYI, .MYD, .frm sementara tabel-tabel dan database-database InnoDB disimpan bersama dalam daerah disk yang disebut tablespace; 3) distribusi MySQL yang bukan -Max tidak dikompile dengan dukungan terhadap BerkeleyDB dan InnoDB.
Nomor 3 penting Anda ketahui karena jika kita menginstruksikan MySQL untuk membuat database dengan jenis tertentu:
CREATE TABLE (...) TYPE=BDB;
Dan MySQL tidak dikompile untuk mendukung BerkeleyDB, maka MySQL tidak akan protes dengan error, melainkan membuatkan tabel tersebut untuk kita tapi dengan tipe default yaitu MyISAM. Jadi Anda perlu mengecek dulu menggunakan SHOW TABLE STATUS:
mysql> create table t4 (i int) type=innodb;
Query OK, 0 rows affected (0.00 sec)
 
mysql> show table status from mydb like 't4';
+------+--------+-...
| Name | Type   | ...
+------+--------+-...
| t4   | MyISAM | ...
+------+--------+-...
Ternyata MyISAM!

Penutup

Sebetulnya untuk memakai MySQL dengan baik dan benar diperlukan skill-skill dasar lain seperti membackup, merestore, mengeset parameter-parameter server, memonitor server, dsb. Tapi itu semua lebih merupakan tugas seorang administrator (DBA).

okey mungkin hanya itu dari saya Beberapa Hal Yang Harus Diketahui Untuk Pemula Tentang MySQL.

sebenarnya saya pun masih sangat pemula :ngakak..  :bye

Fungsi Tipe Data Pada MySQL

Fungsi Tipe-Tipe Data Pada MySQL - ini di buat khusus untuk semua sobat-sobat kampus ane yang ingin mengetahui tipe-tipe data pada database.
image
Seperti yang kita ketahui saat membuat field pada tabel di sebuah database, kita akan di minta untuk menentukan tipe data apa yang akan di gunakan sesuai dengan data yang akan di simpan pada database, berikut keterangan daripada Tipe-Tipe Data di MySQL.
No Type Keterangan Panjang Karakter
1. TINYINT Berarti integer dengan range yang sangat kecil yaitu –2 sampai 2 , -1 atau 0 sampai 2. -1 jika UNSIGNED. Atribut yang dibolehkan adalah AUTO_INCREMENT, UNSIGNED, dan ZEROFILL. Harga default adalah NULL jika bisa atau 0 jika NOT NULL dengan peyimpanan 1 byte. 0 hingga 255
2. SMALLINT Berarti integer dengan range yang kecil yaitu –2 sampai 2, -1 atau 0 sampai 2.
-1 jika UNSIGNED. Atribut yang dibolehkan adalah AUTO_INCREMENT, UNSIGNED, dan ZEROFILL. Harga default adalah NULL jika bisa atau 0 jika NOT NULL dengan peyimpanan 2 byte.
0 hinga 65535
3. MEDIUMINT Berarti integer dengan range yang sangat kecil yaitu –2 sampai 2, -1 atau 0 sampai 2. -1 jika UNSIGNED. Atribut yang dibolehkan adalah AUTO_INCREMENT, UNSIGNED, dan ZEROFILL. Harga default adalah NULL jika bisa atau 0 jika NOT NULL dengan peyimpanan 3 byte. 0 hingga 16777215
4. INT Berarti integer dengan range yang normal yaitu –2 sampai 2, -1 atau 0 sampai 2.
-1 jika UNSIGNED. Atribut yang dibolehkan adalah AUTO_INCREMENT, UNSIGNED, dan ZEROFILL. Harga default adalah NULL jika bisa atau 0 jika NOT NULL dengan peyimpanan 4 byte.
0 hingga 4294967295.
5. BIGINT Berarti integer dengan range yang sangat kecil yaitu –2 sampai 2, -1 atau 0 sampai 2. -1 jika UNSIGNED. Atribut yang dibolehkan adalah AUTO_INCREMENT, UNSIGNED, dan ZEROFILL. Harga default adalah NULL jika bisa atau 0 jika NOT NULL dengan peyimpanan 8 byte. 0 hingga 18446744073709551615
6. FLOAT Berarti floating-point dengan range kecil yaitu antara +1.175494351E-38
sampai +3.402823466E+38 serta dengan single presisi. Atribut yang dibolehkan adalah ZEROFILL. Harga default NULL jika bisa atau 0 jika NOT NULL. Tempat penyimpanan 4 byte.
25 dan 53
7. DOUBLE Berarti floating-point dengan range besar yaitu antara +2.22507385072014E-308 sampai +1.7976931348623157E308 serta dengan double presisi. Atribut yang dibolehkan adalah ZEROFILL. Harga default NULL jika bisa atau 0 jika NOT NULL. Tempat penyimpanan 8 byte. 0, dan 2.2250738585072014E-308 hingga 1.7976931348623157E+308 untuk nilai positif
8. DECIMAL Berarti floating-point yang tersimpan sebagai string (1 byte untuk setiap digit, tanda desimal, atau tanda ’-‘). Range harga sama seperti .DOUBLE. Atribut yang dibolehkan adalah ZEROFILL. Tempat penyimpanan sebesar 9Mbyte. Jika D diisi 0 berarti tidak punya nilai desimal. 99,99
9. CHAR(M) Karakter dengan panjang 0 sampai Mbyte. Atribut yang dibolehkan adalah BINARY. Harga default adalah NULL jika bisa atau â€Å“ â€Å“ jika NOT NULL. Tempat pemyimpanan Mbyte 1 hingga 255
10. VARCHAR Variabel karakter dengan panjang 0 sampai Mbyte. Atribut yang dibolehkan adalah BINARY. Harga default adalah NULL jika bisa atau â€Å“ â€Å“ jika NOT NULL. Tempat pemyimpanan M+1 byte. 1 hingga 255
11. TINYTEXT Teks berukuran kecil dengan panjang 0 sampai 2. -1 byte. Harga default adalah NULL jika bisa atau â€Å“ â€Å“ jika NOT NULL. Tempat penyimpanan sebanyak panjang harga plus 1 byte 255
12. TEXT Teks yang normal dengan panjang 0 sampai 2. -1 byte. Harga default adalah NULL jika bisa atau â€Å“ â€Å“ jika NOT NULL. Tempat penyimpanan sebanyak panjang harga plus 2 byte. 65535
13. MEDIUMTEXT Teks berukuran sedang dengan panjang 0 sampai 2. -1 byte. Harga default adalah NULL jika bisa atau â€Å“ â€Å“ jika NOT NULL. Tempat penyimpanan sebanyak panjang harga plus 3 byte. 16777215
14. LONGTEXT Teks berukuran besar dengan panjang 0 sampai 2. -1 byte. Harga default adalah NULL jika bisa atau â€Å“ â€Å“ jika NOT NULL. Tempat penyimpanan sebanyak panjang harga plus 4 byte. 429496729
15. ENUM Berarti kolom hanya boleh diisi dengan salah satu dari harga yang ada. Harga default adalah NULL jika bisa atau harga1 jika NOT NULL. Tempat penyimpanan adalah 1 byte untuk enumerasi dengan anggota 1 sampai 255 dan 2 byte untuk enumerasi dengan anggota 256 sampai 65535. 65535
16. SET Berarti kolom boleh dikosongi atau diisi dengan beberapa harga dari daftar harga yang ada. Harga default adalah NULL jika bisa atau ” â€Å“ jika NOT NULL. Tempat penyimpanan adalah 1 byte untuk set dengan anggota 1 sampai 8, 2 byte untuk set dengan anggota 9 sampai 16, 3 byte untuk set dengan anggota 17 sampai 24, 4 byte untuk set dengan anggota 25 sampai 32, atau 8 byte untuk set dengan anggota 33 sampai 64. 64
17. DATE Untuk kolom tanggal dengan format YYYY-MM-DD dan range antara â€Å“1000- 01-01” sampai â€Å“9999-12-31”. Harga default adalah NULL jika bisa atau â€Å“0000- 00-00” jika NOT NULL. Tempat penyimpanan 3 byte. 1000-01-01 hingga 9999-12-31
18. TIME Untuk kolom jam dengan format hh:mm: ss atau -hh:mm: ss untuk harga negatif. Range harga antara â€Å“-838:59:59” sampai â€Å“838:59:59”. Harga default adalah NULL jika bisa atau â€Å“00:00:00” jika NOT NULL. Tempat penyimpanan 3 byte. 1970-01-01 00:00:0
19. DATETIME Gabungan antar hari dan jam dengan format YYYY-MM-DD hh:mm: ss dan range antar â€Å“1000-01-01 00:00:00” sampai â€Å“9999-12-31 23:59:59”. Harga default adalah NULL jika bisa atau â€Å“0000-00-00 00:00:00” jika NOT NULL. Tempat penyimpanan 8 byte. 1000-01-01 00:00:00 hingga 9999-12-31 23:59:59
20. TIMESTAMP Hampir sama dengan DATETIME tapi dengan format YYYYMMDD hhmmss dan range antara 19700101000000 sampai suatu saat di tahun 2037. Harga default adalah hari dan jam saat itu. Tempat penyimpanan 4 byte. 1970-01-01 00:00:00
21. YEAR Untuk kolom tahun denga format YYYY dan range antara 1900 sampai 2155. Harga default adalah NULL jika bisa atau 0000 jika NOT NULL. Tempat penyimpanan 3 byte. 1901 hingga 2155, 0000
22. Data kosong (NULL) NULL berarti kosong atau tidak diisi data atau bisa juga berarti data yang tidak jelas, data yang hilang ataupun yang lainnya
23. NUMERIC MySQL dapat menerima masukan berupa angka-angka yang dibagi atas integer (angka tanpa pecahan) dan floating-point (angka dengan pecahan). MySQL juga mengerti notasi scientific yaitu integer atau floating-point yang diikuti tanda ‘e’ atau ‘E’, tanda ‘+’ atau ‘-‘. Misalnya angka 1.34E+12 atau 3.23e-5.
Tipe ini untuk harga integer dan floating-point. Untuk integer kolom haruslah PRIMARY KEY atau indeks yang unik jika ia diberi atribut AUTO_INCREMENT (dapat otomatis mengurutkan angka). Jika diberikan atribut UNSIGNED berarti angka tidak boleh negatif. Sedangkan atribut ZEROFILL menandakan bahwa angka diawali dengan angka nol.
99,99
24. TYNYBLOB Sebuah BLOB (semacam catatan) atau TEXT dengan lebar maksimum 255 (2^8 – 1) karakter. 255
25. BLOB Sebuah BLOB atau TEXT dengan lebar maksimum 65535 (2^16 – 1) karakter. 65535
26. MEDIUMBLOB Sebuah BLOB atau TEXT dengan lebar maksimum 16777215 (2^24 – 1) karakter. 16777215
27. LONGBLOB Sebuah BLOB atau TEXT dengan lebar maksimum 4294967295 (2^32 – 1) karakter. 4294967295

Sekian penjelasan singkat dari ane mengenai Fungsi Tipe-Tipe Data Pada MySQL, semoga bermanfaat  :wawa

Merubah Nama dan Memodifikasi Field Tabel Database MySQL

Merubah Nama dan Memodifikasi Field Tabel Database MySQL - Berikut ini akan saya beri sampel bagaimana cara memodifikasi atau lebih tepatnya mengubah nama table beserta mengubah struktur field yang ada dalam suatu table Database MySQL menggunakan Query SQL.
Misalkan anda mempunyai table bernama user dan field-fieldnya (no, username, password, tgl_lahir), lebih jelasnya mempunya struktur seperti di bawah:


1CREATE TABLE user(
2no int(5),
3username varchar(100),
4tgl_lahir varchar(100)
5password varchar(100)
6)

Ketika database sudah jadi, bisa saja suatu saat anda mungkin saja ingin mengubah Nama Tabel-nya atau ingin memodifikasi struktuf field-fieldnya yang ada pada table. Nah pada tutorial ini saya akan coba memberikan contoh cara melakukan modifikasi table dan field-field menggunakan Query SQL yang diantaranya ialah
1. Mengubah Nama Table
2. Mengubah Nama Field
3. Menambah Field Baru
4. Membuat Primary Key
5. Mengubah tipe data Field
6. Mengubah property Field
7. Menghapus Primary Key
Contoh:

1. Mengubah Nama Table
Table user menjadi pengguna
ALTER TABLE user RENAME TO pengguna;

2. Mengubah Nama Field
Field username menjadi namauser
ALTER TABLE user CHANGE username namauser varchar(100);

3. Menambah Field Baru
Field baru bernama alamat dengan tipe data varchar(100)
ALTER TABLE user ADD alamat varchar(100);

4. Membuat Primary Key
Field no di jadikan Primary Key
ALTER TABLE user ADD PRIMARY KEY (no);
Atau kedua Field no dan username akan dijadikan primary key
ALTER TABLE user ADD PRIMARY KEY (no,username);

5. Mengubah tipe data Filed
Field no dengan type data int(5) menjadi varchar(5)
ALTER TABLE user CHANGE no no varchar(5);

6. Mengubah Property Field
Mengubah Property Field no agar tidak boleh kosong (NOT NULL)
ALTER TABLE user CHANGE no no NOT NULL;
Mengubah Property Field no agar boleh kosong (NULL)
ALTER TABLE user CHANGE no no NULL;
Mengubah Property Field tgl_lahir dari tipe data varchar(100) menjadi DATE dan dari NULL (boleh kosong) menjadi NOT NULL (tidak boleh kosong)
ALTER TABLE user CHANGE tgl_lahir tgl_lahir DATE NOT NULL;

7. Menghapus Primary Key
Perlu anda ketahui bahwa untuk menghapus Primary Key pada Table tidak bisa di lakukan satu persatu.
Misalkan dua Field no dan username sebelumnya sudah diset menjadi primary key dan kemudian ingin agar Field username bukan lagi Primary Key.
Maka anda tidak bisa Menghapus Primary Key dari field username saja. tetapi harus menghapus keseluruhan Primary Key no dan username
ALTER TABLE user DROP PRIMARY KEY;

Semoga artikel saya mengenai Merubah Nama dan Memodifikasi Field Tabel Database MySQL berguna bagi sobat semua.
:bye


Mengenal MySQL


200px-mysql
Mengenal MySQLMySQL adalah sebuah perangkat lunak sistem manajemen basis data SQL (bahasa Inggris: database management system) atau DBMS yang multithread, multi-user, dengan sekitar 6 juta instalasi di seluruh dunia. MySQL AB membuat MySQL tersedia sebagai perangkat lunak gratis dibawah lisensi GNU General Public License (GPL), tetapi mereka juga menjual dibawah lisensi komersial untuk kasus-kasus dimana penggunaannya tidak cocok dengan penggunaan GPL.


Tidak sama dengan proyek-proyek seperti Apache, dimana perangkat lunak dikembangkan oleh komunitas umum, dan hak cipta untuk kode sumber dimiliki oleh penulisnya masing-masing, MySQL dimiliki dan disponsori oleh sebuah perusahaan komersial Swedia MySQL AB, dimana memegang hak cipta hampir atas semua kode sumbernya. Kedua orang Swedia dan satu orang Finlandia yang mendirikan MySQL AB adalah: David Axmark, Allan Larsson, dan Michael “Monty” Widenius.

MySQL adalah Relational Database Management System (RDBMS) yang didistribusikan secara gratis dibawah lisensi GPL (General Public License). Dimana setiap orang bebas untuk menggunakan MySQL, namun tidak boleh dijadikan produk turunan yang bersifat closed source atau komersial. MySQL sebenarnya merupakan turunan salah satu konsep utama dalam database sejak lama, yaitu SQL (Structured Query Language). SQL adalah sebuah konsep pengoperasian database, terutama untuk pemilihan atau seleksi dan pemasukan data, yang memungkinkan pengoperasian data dikerjakan dengan mudah secara otomatis. Keandalan suatu sistem database (DBMS) dapat diketahui dari cara kerja optimizer-nya dalam melakukan proses perintah-perintah SQL, yang dibuat oleh user maupun program-program aplikasinya. Sebagai database server, MySQL dapat dikatakan lebih unggul dibandingkan database server lainnya dalam query data. Hal ini terbukti untuk query yang dilakukan oleh single user, kecepatan query MySQL bisa sepuluh kali lebih cepat dari PostgreSQL dan lima kali lebih cepat dibandingkan Interbase. Selain itu MySQL juga memiliki beberapa keistimewaan, antara lain :

1. Portability
MySQL dapat berjalan stabil pada berbagai sistem operasi seperti Windows, Linux, FreeBSD, Mac Os X Server, Solaris, Amiga, dan masih banyak lagi.

2. Open Source
MySQL didistribusikan secara open source (gratis), dibawah lisensi GPL sehingga dapat digunakan secara cuma-cuma.

3. Multiuser
MySQL dapat digunakan oleh beberapa user dalam waktu yang bersamaan tanpa mengalami masalah atau konflik.

4. Performance tuning
MySQL memiliki kecepatan yang menakjubkan dalam menangani query sederhana, dengan kata lain dapat memproses lebih banyak SQL per satuan waktu.

5. Column types
MySQL memiliki tipe kolom yang sangat kompleks, seperti signed / unsigned integer, float, double, char, text, date, timestamp, dan lain-lain.

6. Command dan functions
MySQL memiliki operator dan fungsi secara penuh yang mendukung perintah Select dan Where dalam query.

7. Security
MySQL memiliki beberapa lapisan sekuritas seperti level subnetmask, nama host, dan izin akses user dengan sistem perizinan yang mendetail serta password terenkripsi.

8. Scalability dan limits
MySQL mampu menangani database dalam skala besar, dengan jumlah records lebih dari 50 juta dan 60 ribu tabel serta 5 milyar baris. Selain itu batas indeks yang dapat ditampung mencapai 32 indeks pada tiap tabelnya.

9. Connectivity
MySQL dapat melakukan koneksi dengan client menggunakan protokol TCP/IP, Unix soket (UNIX), atau Named Pipes (NT).

10. Localisation
MySQL dapat mendeteksi pesan kesalahan pada client dengan menggunakan lebih dari dua puluh bahasa. Meskipun demikian, bahasa Indonesia belum termasuk didalamnya.

11. Interface
MySQL memiliki interface (antar muka) terhadap berbagai aplikasi dan bahasa pemrograman dengan menggunakan fungsi API (Application Programming Interface).

12. Clients dan tools
MySQL dilengkapi dengan berbagai tool yang dapat digunakan untuk administrasi database, dan pada setiap tool yang ada disertakan petunjuk online.

13. Struktur tabel
 MySQL memiliki struktur tabel yang lebih fleksibel dalam menangani ALTER TABLE, dibandingkan database lainnya semacam PostgreSQL ataupun Oracle.

Semoga artikel tentang Mengenal MySQL bermanfaat untuk sobat-sobat semua. :bye.

Pembuatan gambar ERD dari Perpustakaan SMART


1. Menentukan entity-entity yang diperlukan

2. Menentukan Relationship antar entity

* Peminjaman
* Pendaftaran
* Sumbangan


Komponen Entity Relationship





Keterangan:

Key adalah atribut yang digunakan untuk menentukan suatu entity secara unik (bergaris bawah).

Atribut Simple adalah atribut yang bernilai tunggal.



3. Menentukan Cardinality Ratio & Participation Constraint

Menjelaskan jumlah keterhubungan 1 entity dengan entity lainnya.
Jenis Cardinality Ratio: 1:1, 1:M, dan M:N


Logical Record Structured (LRS)

LRS adalah representasi dari struktur record-record pada tabel-tabel yang terbentuk dari
hasil relasi antar himpunan entitas.
Menentukan Kardinalitas, Jumlah Tabel, dan Foreign Key (FK)

One to One (1:1)




Gambar di atas menunjukan relasi dengan kardinalitas karena:
1 orang hanya bisa melakukan 1 pendaftaran, dan
1 Pendaftaran hanya bisa dilakukan 1 orang.

Relasi 1:1 akan membentuk 2 tabel:
Tabel Fatimah (Id_fatimah, Nama, Alamat)
Tabel Pendaftaran (No_daftar, Status, Bya_pndftrn)

LRS yang terbentuk sbb:


One to Many(1:M)

Gambar di atas menunjukan relasi dengan kardinalitas karena:
1 Donatur bisa menyumbang banyak Buku, dan
Banyak Buku bisa disumbang 1 Donatur.

Relasi 1:M akan membentuk 2 tabel:
Tabel Donatur (Id_donatur, Nm_donatur, Pekerjaan, Alamat)
Tabel Buku (Id_buku, Judul, Pengarang, Penerbit)

LRS yang terbentuk sbb:




Many to Many(M:N)


Gambar di atas menunjukan relasi dengan kardinalitas karena:
1 Anggota bisa meminjam banyak Buku, dan
Banyak Buku bisa dipinjam 1 Anggota.

Relasi M:N akan membentuk 3 tabel:
Tabel Anggota(Id_Anggota, Nama, Tgl_lhr, Tmp_lhr, Alamat)
Tabel Pinjam(Id_buku, Tgl_pinjam, Tgl_kembali)
Tabel Buku (Id_buku, Judul, Pengarang, Penerbit)

LRS yang terbentuk sbb:



Participation Constraint
Menjelaskan apakah keberadaan suatu entity tergantung pada hubungannya dengan entity
lain.

Terdapat 2 macam yaitu:
1. Total Participation Constraint
Keberadaan suatu entity tergantung pada hubungannya dengan entity lain.


2.Partial Participation Constraint
Keberadaan suatu entity tidak tergantung pada hubungannya dengan entity lain.


Keterangan:
Seseorang lebih umum masuk ke dalam perpustakaan menjadi anggota dibandingkan
menjadi donatur.

PENERTIAN DATABASE

Pengertian Database

  1. Database adalah kumpulan informasi yang disimpan di dalam komputer secara sistematik untuk memperoleh informasi dari basis data tersebut.
  2. Database adalah representasi kumpulan fakta yang saling berhubungan disimpan secara bersama, untuk memenuhi berbagai kebutuhan.
  3. Database merupakan sekumpulan informasi yang saling berkaitan pada suatu subjek tertentu untuk tujuan tertentu pula.
  4. Database adalah susunan record data operasional lengkap dari suatu organisasi atau perusahaan, yang diorganisir dan disimpan secara terintegrasi dengan menggunakan metode tertentu sehingga mampu memenuhi informasi yang optimal yang dibutuhkan olehpara pengguna.