Saturday

Mengelola tabel pada mysql


Berikut inin adalah cara - cara mengelola tabel pada mySQL:

1. Menambah Data

Bagaimana kita menambah data dalam tabel ?

Sebagai latihan kita, bangunlah sebuah database yang baru dengan nama 'akademikdb'

    mysql> CREATE database akademikdb;
Kemudian aktifkan database tersebut

    mysql> USE akademikdb;

Kemudian bangun sebuah tabel dengan nama 'mahasiswa'

    mysql> CREATE TABLE mahasiswa (nim varchar(8), nama varchar(20), tglhr date,
        -> almt varchar(25), agama varchar(15), jk char(1), primary key(nim));

tampilkanlah tabel dan strukturnya untuk memastikan tabel sudah ada

    mysql> SHOW TABLES;
    +----------------------+
    | Tables_in_akademikdb |
    +----------------------+
    | mahasiswa            |
    +----------------------+
    1 row in set (0.00 sec)


    mysql> DESC MAHASISWA;

    +-------+-------------+------+-----+---------+-------+
    | Field | Type        | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | nim   | varchar(8)  |      | PRI |         |       |
    | nama  | varchar(20) | YES  |     | NULL    |       |
    | tglhr | date        | YES  |     | NULL    |       |
    | almt  | varchar(25) | YES  |     | NULL    |       |
    | agama | varchar(15) | YES  |     | NULL    |       |
    | jk    | char(1)     | YES  |     | NULL    |       |
    +-------+-------------+------+-----+---------+-------+
    6 rows in set (0.01 sec)


Untuk menambahkan data kedalam tabel mahasiswa diatas lakukan perintah query berikut ini:    mysql> INSERT INTO mahasiswa VALUES
           -> ('07310001', 'ALI OPAN', '1980-03-21', 'JL. LUKU 20', 'KATOLIK', 'L'),
            -> ('07310002', 'SANUSI', '1981-05-11', 'JL. SAWO 21', 'ISLAM', 'L'),
           -> ('07310003', 'ISPANI', '1980-02-13', 'JL. SAMPUNA 23', 'ISLAM', 'L'),
            -> ('07310004', 'SANTI', '1985-09-19', 'JL. BROMO 22', 'KRISTEN', 'P'),
            -> ('07310005', 'TITIN', '1988-11-29', 'JL. BROMO 342', 'KRISTEN', 'P');
    Query OK, 5 rows affected (0.06 sec)
    Records: 5  Duplicates: 0  Warnings: 0

Untuk melihat data dalam tabel lakukan perintah query berikut ini:

    mysql> SELECT * FROM mahasiswa;

    +----------+----------+------------+----------------+---------+------+
    | nim      | nama     | tglhr      | almt           | agama   | jk   |
    +----------+----------+------------+----------------+---------+------+
    | 07310001 | ALI OPAN | 1980-03-21 | JL. LUKU 20    | KATOLIK | L    |
    | 07310002 | SANUSI   | 1981-05-11 | JL. SAWO 21    | ISLAM   | L    |
    | 07310003 | ISPANI   | 1980-02-13 | JL. SAMPUNA 23 | ISLAM   | L    |
    | 07310004 | SANTI    | 1985-09-19 | JL. BROMO 22   | KRISTEN | P    |
    | 07310005 | TITIN    | 1988-11-29 | JL. BROMO 342  | KRISTEN | P    |
    +----------+----------+------------+----------------+---------+------+
    5 rows in set (0.00 sec)



menambah data kedalam tabel dapat juga dilakukan per satu record seperti berikut ini:

    mysql>INSERT INTO mahasiswa VALUES
           -> ('07310006', 'BERNAD ', '1985-01-29', 'JL. TUKUL 20', 'BUDHA', 'L');


    mysql>INSERT INTO mahasiswa VALUES
           -> ('07310007', 'CHEN SYI', '1985-01-31', 'JL. ASIA 21', 'BUDHA', 'P');


Untuk melihat data yang diinputkan ke dalam tabel lakukan perintah query berikut

    mysql> SELECT * FROM mahasiswa;

    +----------+----------+------------+----------------+---------+------+
    | nim      | nama     | tglhr      | almt           | agama   | jk   |
    +----------+----------+------------+----------------+---------+------+
    | 07310001 | ALI OPAN | 1980-03-21 | JL. LUKU 20    | KATOLIK | L    |
    | 07310002 | SANUSI   | 1981-05-11 | JL. SAWO 21    | ISLAM   | L    |
    | 07310003 | ISPANI   | 1980-02-13 | JL. SAMPUNA 23 | ISLAM   | L    |
    | 07310004 | SANTI    | 1985-09-19 | JL. BROMO 22   | KRISTEN | P    |
    | 07310005 | TITIN    | 1988-11-29 | JL. BROMO 342  | KRISTEN | P    |
    | 07310006 | BERNAD   | 1985-01-29 | JL. TUKUL 20   | BUDHA   | L    |
    | 07310007 | CHEN SYI | 1985-01-31 | JL. ASIA 21    | BUDHA   | P    |
    +----------+----------+------------+----------------+---------+------+
    5 rows in set (0.00 sec)



menampilkan data secara parsial juga dapat dilakukan seperti berikut ini:

    mysql> SELECT nim, nama, jk FROM mahasiswa;

    +----------+----------+------+
    | nim      | nama     | jk   |
    +----------+----------+------+
    | 07310001 | ALI OPAN | L    |
    | 07310002 | SANUSI   | L    |
    | 07310003 | ISPANI   | L    |
    | 07310004 | SANTI    | P    |
    | 07310005 | TITIN    | P    |
    | 07310006 | BERNAD   | L    |
    | 07310007 | CHEN SYI | P    |
    +----------+----------+------+
    5 rows in set (0.00 sec)


menampilkan data mahasiswa dan diurutkan berdasarkan nama;

    mysql> SELECT * FROM mahasiswa ORDER BY nama;

    +----------+-----------+------------+----------------+-----------+------+
    | nim      | nama      | tglhr      | almt           | agama     | jk   |
    +----------+-----------+------------+----------------+-----------+------+
    | 07310001 | ALI OPAN  | 1980-03-21 | JL. LUKU 20    | KATOLIK   | L    |
    | 07310006 | BERNAD    | 1985-01-29 | JL. TUKUL 20   | BUDHA     | L    |
    | 07310007 | CHEN SYI  | 1985-01-31 | JL. ASIA 21    | BUDHA     | P    |
    | 07310003 | ISPANI    | 1980-02-13 | JL. SAMPUNA 23 | ISLAM     | L    |
    | 07310004 | SANTI     | 1985-09-19 | JL. BROMO 22   | KRISTEN   | P    |
    | 07310002 | SANUSI    | 1981-05-11 | JL. SAWO 21    | ISLAM     | L    |
    | 07310005 | TITIN     | 1988-11-29 | JL. BROMO 342  | KRISTEN   | P    |
    +----------+-----------+------------+----------------+-----------+------+
    7 rows in set (0.38 sec)



menmpilkan data mahasiswa khusus untuk yang berjenis kelamin jk = P dan diurutkan
berdasarkan nama

    mysql> SELECT * FROM mahasiswa WHERE jk='P' ORDER BY nama;

    +----------+----------+------------+---------------+-----------+------+
    | nim      | nama     | tglhr      | almt          | agama     | jk   |
    +----------+----------+------------+---------------+-----------+------+
    | 07310007 | CHEN SYI | 1985-01-31 | JL. ASIA 21   | BUDHA     | P    |
    | 07310004 | SANTI    | 1985-09-19 | JL. BROMO 22  | KRISTEN   | P    |
    | 07310005 | TITIN    | 1988-11-29 | JL. BROMO 342 | KRISTEN   | P    |
    +----------+----------+------------+---------------+-----------+------+
    3 rows in set (0.00 sec)


menampilkan data mahasiswa dengan nama ALI OPAN dan SANTI

    mysql> SELECT * FROM mahasiswa WHERE nim='07310001' OR nim='07310004';

    +----------+-----------+------------+--------------+-----------+------+
    | nim      | nama      | tglhr      | almt         | agama     | jk   |
    +----------+-----------+------------+--------------+-----------+------+
    | 07310001 | ALI  OPAN | 1980-03-21 | JL. LUKU 20  | KATOLIK   | L    |
    | 07310004 | SANTI     | 1985-09-19 | JL. BROMO 22 | KRISTEN   | P    |
    +----------+-----------+------------+--------------+-----------+------+
    2 rows in set (0.00 sec)


Menampilkan data mahasiswa yang beragama KRISTEN dan yang jenis kelamin jk = P

    mysql> SELECT * FROM mahasiswa WHERE agama='KRISTEN' AND  jk='P';

    +----------+-------+------------+---------------+---------+------+
    | nim      | nama  | tglhr      | almt          | agama   | jk   |
    +----------+-------+------------+---------------+---------+------+
    | 07310005 | TITIN | 1988-11-29 | JL. BROMO 342 | KRISTEN | P    |
    +----------+-------+------------+---------------+---------+------+
    1 row in set (0.00 sec)


menampilkan data jumlah mahasiswa berdasarkan kelompok agama

    mysql> SELECT agama, COUNT(*) AS jumlah FROM mahasiswa GROUP BY agama;
    +-----------+--------+
    | agama     | jumlah |
    +-----------+--------+
    | BUDHA     |      2 |
    | ISLAM     |      2 |
    | KATOLIK   |      1 |
    | KRISTEN   |      1 |
    | PROTESTAN |      1 |
    +-----------+--------+
    5 rows in set (0.38 sec)



menampilkan data jumlah mahasiswa berdasarkan kelompok jenis kelamin jk

    mysql> SELECT jk AS 'Jenis Kelamin', COUNT(*) AS jumlah FROM mahasiswa GROUP BY jk;

    +---------------+--------+
    | Jenis Kelamin | jumlah |
    +---------------+--------+
    | L             |      4 |
    | P             |      3 |
    +---------------+--------+
    2 rows in set (0.00 sec)


menampilkan data jumlah mahasiswa berdasarkan kelompok jenis kelamin jk

    mysql> SELECT IF(jk='L','LAKI-LAKI','PEREMPUAN') AS 'jenis kelamin',
            -> COUNT(*) AS 'jumlah' FROM mahasiswa GROUP BY jk;

    +---------------+--------+
    | jenis kelamin | jumlah |
    +---------------+--------+
    | LAKI-LAKI     |      4 |
    | PEREMPUAN     |      3 |
    +---------------+--------+
    2 rows in set (0.00 sec)


menampilkan data nama mahasiswa dan menentukan jumlah karakternya

    mysql> SELECT nama, length(nama) AS 'panjag karakter' FROM mahasiswa;

    +-----------+-----------------+
    | nama      | panjang karakter|
    +-----------+-----------------+
    | ALI OPAN  |               8 |
    | SANUSI    |               6 |
    | ISPANI    |               6 |
    | SANTI     |               5 |
    | TITIN     |               5 |
    | CHEN SYI  |               8 |
    | BERNAD    |               6 |
    +-----------+-----------------+
    7 rows in set (0.36 sec)



2. Merubah Data

Jika ada terjadi kesalahan data yang dientri kedalam tabel dan akan dilakukan perubahan
terhadap isi tabel dapat dilakukan perintah query berikut ini:

    mysql> UPDATE nama_tabel SET nama_field_yg_dirubah='isikan data yang sebenarnya'

sebagai contoh pada tabel mahasiswa terdapat kesalahan nama untuk nim = 07310001 maka
untuk merubahnya dapat dilakukan query berikut ini:

    mysql> UPDATE mahasiswa SET nama='ALI TOPAN' WHERE nim='07310001';
    Query OK, 1 row affected (0.09 sec)
    Rows matched: 1  Changed: 1  Warnings: 0

kemudian cek kembali data dalam tabel lihat perubahan nama pada data nim='07310001'

    mysql> SELECT * FROM mahasiswa;

    +----------+-----------+------------+----------------+---------+------+
    | nim      | nama      | tglhr      | almt           | agama   | jk   |
    +----------+-----------+------------+----------------+---------+------+
    | 07310001 | ALI TOPAN | 1980-03-21 | JL. LUKU 20    | KATOLIK | L    |
    | 07310002 | SANUSI    | 1981-05-11 | JL. SAWO 21    | ISLAM   | L    |
    | 07310003 | ISPANI    | 1980-02-13 | JL. SAMPUNA 23 | ISLAM   | L    |
    | 07310004 | SANTI     | 1985-09-19 | JL. BROMO 22   | KRISTEN | P    |
    | 07310005 | TITIN     | 1988-11-29 | JL. BROMO 342  | KRISTEN | P    |
    | 07310006 | BERNAD    | 1985-01-29 | JL. TUKUL 20   | BUDHA   | L    |
    | 07310007 | CHEN SYI  | 1985-01-31 | JL. ASIA 21    | BUDHA   | P    |
    +----------+-----------+------------+----------------+---------+------+
    7 rows in set (0.00 sec)

sebagai latihan rubahlah data untuk field agama dari KRISTEN menjadi PROTESTAN. Dapat di
lakukan query berikut ini:

    mysql> UPDATE mahasiswa SET agama='PROTESTAN' WHERE agama='KRISTEN';
    Query OK, 2 rows affected (0.00 sec)
    Rows matched: 2  Changed: 2  Warnings: 0

kemudian cek kemabli data mahasiswa

    mysql> SELECT * FROM mahasiswa;

    +----------+-----------+------------+----------------+-----------+------+
    | nim      | nama      | tglhr      | almt           | agama     | jk   |
    +----------+-----------+------------+----------------+-----------+------+
    | 07310001 | ALI TOPAN | 1980-03-21 | JL. LUKU 20    | KATOLIK   | L    |
    | 07310002 | SANUSI    | 1981-05-11 | JL. SAWO 21    | ISLAM     | L    |
    | 07310003 | ISPANI    | 1980-02-13 | JL. SAMPUNA 23 | ISLAM     | L    |
    | 07310004 | SANTI     | 1985-09-19 | JL. BROMO 22   | PROTESTAN | P    |
    | 07310005 | TITIN     | 1988-11-29 | JL. BROMO 342  | PROTESTAN | P    |
    | 07310006 | BERNAD    | 1985-01-29 | JL. TUKUL 20   | BUDHA     | L    |
    | 07310007 | CHEN SYI  | 1985-01-31 | JL. ASIA 21    | BUDHA     | P    |
    +----------+-----------+------------+----------------+-----------+------+
    7 rows in set (0.00 sec)



3. Menghapus Data

Jika hehdak melakukan penghapusan data dari dalam tabel maka dapat dilakukan sebagai berikut:

    mysql> DELETE FROM nama_tabel WHERE kriteria

lakukanlah penghapusan data untuk data TITIN

    mysql> DELETE FROM mahasiswa WHERE nim='07310005';
    Query OK, 1 row affected (0.00 sec)

    mysql> SELECT * FROM mahasiswa;

    +----------+-----------+------------+----------------+-----------+------+
    | nim      | nama      | tglhr      | almt           | agama     | jk   |
    +----------+-----------+------------+----------------+-----------+------+
    | 07310001 | ALI TOPAN | 1980-03-21 | JL. LUKU 20    | KATOLIK   | L    |
    | 07310002 | SANUSI    | 1981-05-11 | JL. SAWO 21    | ISLAM     | L    |
    | 07310003 | ISPANI    | 1980-02-13 | JL. SAMPUNA 23 | ISLAM     | L    |
    | 07310004 | SANTI     | 1985-09-19 | JL. BROMO 22   | PROTESTAN | P    |
    | 07310006 | BERNAD    | 1985-01-29 | JL. TUKUL 20   | BUDHA     | L    |
    | 07310007 | CHEN SYI  | 1985-01-31 | JL. ASIA 21    | BUDHA     | P    |
    +----------+-----------+------------+----------------+-----------+------+
    6 rows in set (0.00 sec)

Jika akan menghapus data secara per group dapat dilakukan seprti berikut ini:

    mysql> DELETE FROM mahasiswa WHERE agama='BUDHA';
    Query OK, 2 rows affected (0.00 sec)

    mysql> SELECT * FROM mahasiswa;

    +----------+-----------+------------+----------------+-----------+------+
    | nim      | nama      | tglhr      | almt           | agama     | jk   |
    +----------+-----------+------------+----------------+-----------+------+
    | 07310001 | ALI TOPAN | 1980-03-21 | JL. LUKU 20    | KATOLIK   | L    |
    | 07310002 | SANUSI    | 1981-05-11 | JL. SAWO 21    | ISLAM     | L    |
    | 07310003 | ISPANI    | 1980-02-13 | JL. SAMPUNA 23 | ISLAM     | L    |
    | 07310004 | SANTI     | 1985-09-19 | JL. BROMO 22   | PROTESTAN | P    |
    +----------+-----------+------------+----------------+-----------+------+
    4 rows in set (0.00 sec)

semoga bermanfaat...!!!!