0% menganggap dokumen ini bermanfaat (0 suara)
12 tayangan20 halaman

02 Table Data

Dokumen ini menjelaskan tentang praktik basis data, termasuk cara membuat tabel, tipe data, primary key, dan unique constraints dalam MySQL. Selain itu, juga dibahas tentang penggunaan parameter IF NOT EXISTS, menyalin tabel menggunakan SELECT, dan membuat temporary table. Contoh sintaksis SQL disertakan untuk memberikan pemahaman yang lebih baik tentang konsep-konsep yang dijelaskan.

Diunggah oleh

Rskaayantii
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
12 tayangan20 halaman

02 Table Data

Dokumen ini menjelaskan tentang praktik basis data, termasuk cara membuat tabel, tipe data, primary key, dan unique constraints dalam MySQL. Selain itu, juga dibahas tentang penggunaan parameter IF NOT EXISTS, menyalin tabel menggunakan SELECT, dan membuat temporary table. Contoh sintaksis SQL disertakan untuk memberikan pemahaman yang lebih baik tentang konsep-konsep yang dijelaskan.

Diunggah oleh

Rskaayantii
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 20

Praktikum Basis Data Pra S2 Ilmu Komputer UGM Arif Nurwidyantoro

Pertemuan 2 Tabel dan Manipulasi Data


1. Membuat tabel
Secara umum, syntax untuk membuat tabel adalah sebagai berikut:
CREATE TABLE nama_tbl (
nama_kolom1 tipe_data(length) [NOT NULL|NULL] [DEFAULT nilai_default] [AUTO_INCREMENT] ,
nama_kolom2 tipe_data(length) [NOT NULL|NULL] [DEFAULT nilai_default] [AUTO_INCREMENT] ,

);
Contoh membuat tabel
mysql> CREATE DATABASE PRAK2;
Query OK, 1 row affected (0.34 sec)

mysql> USE PRAK2;


Database changed

mysql> CREATE TABLE TABLE1(


-> id INT AUTO_INCREMENT PRIMARY_KEY,
-> name VARCHAR(30) NOT NULL,
-> salary FLOAT(10,2) DEFAULT 1000000
-> );

mysql> DESCRIBE TABLE1;


+--------+-------------+------+-----+------------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+------------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(30) | NO | | NULL | |
| salary | float(10,2) | YES | | 1000000.00 | |
+--------+-------------+------+-----+------------+-------+
3 rows in set (0.00 sec)

2. Tipe data
Tipe data dalam MySQL terdiri atas beberapa jenis:
• Tipe data teks
Tipe data teks terdiri atas beberapa tipe sebagai berikut:
CHAR( ) A fixed section from 0 to 255 characters long.

VARCHAR( ) A variable section from 0 to 255 characters long.

TINYTEXT A string with a maximum length of 255 characters.

TEXT A string with a maximum length of 65535 characters.

BLOB A binary string with a maximum length of 65535 bytes.

1
Praktikum Basis Data Pra S2 Ilmu Komputer UGM Arif Nurwidyantoro

MEDIUMTEXT A string with a maximum length of 16777215 characters.

MEDIUMBLOB A string with a maximum length of 16777215 bytes.

LONGTEXT A string with a maximum length of 4294967295 characters.

LONGBLOB A binary string with a maximum length of 4294967295 bytes.

ENUM( value1, value2,...) A string object that can only have one value, chosen from the list of
'value1', 'value2', … An ENUM can have a maximum of 65535 distinct
values

SET (value1, value2, ... ) A string object that can have zero or more values, each of which must be
chosen from the list of values 'value1', 'value2', … SET values can have
a maximum of 64 members.

• Tipe data numerik


Tipe data numerik adalah sebagai berikut:
TINYINT( ) -128 to 127 normal, 0 to 255 UNSIGNED.

SMALLINT( ) -32768 to 32767 normal, 0 to 65535 UNSIGNED.

MEDIUMINT( ) -8388608 to 8388607 normal, 0 to 16777215 UNSIGNED.

INT( ) -2147483648 to 2147483647 normal, 0 to 4294967295 UNSIGNED.

BIGINT( ) -9223372036854775808 to 9223372036854775807 normal, 0 to


18446744073709551615 UNSIGNED.

FLOAT ( M , D) A small number with a floating decimal point.

DOUBLE( M, D) A large number with a floating decimal point.

DECIMAL( M, D) A fixed decimal point.

BIT( ) Bit values (0 or 1)

Tipe data numerik FLOAT, DOUBLE, dan DECIMAL, nilai M menunjukkan jumlah digit keseluruhan,
sedangkan D menunjukkan jumlah digit di belakang koma. Sebagai contoh, jika ada kolom yang didefinisikan
sebagai FLOAT(7,4) maka akan tampak seperti 999.9999.
• Tipe data date
DATE YYYY-MM-DD.

DATETIME YYYY-MM-DD HH:MM:SS.

TIMESTAMP YYYYMMDDHHMMSS.

TIME HH:MM:SS.

3. Membuat tabel dengan primary key


Primary key adalah nilai yang menjadi pembeda antara satu record data dengan record yang lain. Membuat tabel
dengan primary key ditunjukkan sebagai berikut:
mysql> CREATE TABLE TABLE2(
2
Praktikum Basis Data Pra S2 Ilmu Komputer UGM Arif Nurwidyantoro

-> id INT AUTO_INCREMENT PRIMARY KEY,


-> name VARCHAR(30)
-> );
Query OK, 0 rows affected (0.13 sec)

mysql> DESCRIBE TABLE2;


+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(30) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
Pada contoh di atas, kolom 'id' diberikan 'AUTO_INCREMENT', artinya kolom ini akan diberikan nilai increment
secara automatis. Kolom 'id' diset sebagai PRIMARY KEY.
Dalam satu tabel, hanya boleh ada satu kolom yang diberi status 'AUTO_INCREMENT', dan harus menjadi key.
Jika tidak akan muncul pesan error sebagai berikut:
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it
must be defined as a key
Membuat tabel dengan primary key juga dapat dilakukan sebagai berikut:
mysql> CREATE TABLE TABLE3(
-> id INT AUTO_INCREMENT,
-> name VARCHAR(30),
-> PRIMARY KEY (id)
-> );
Query OK, 0 rows affected (0.17 sec)
mysql> DESCRIBE TABLE3;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(30) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

4. Memberikan nilai UNIQUE


UNIQUE memberikan batasan bahwa nilai dalam sebuah kolom harus distinct (atau tidak ada data yang nilainya
sama). Error akan terjadi jika kita menambahkan nilai yang sama dengan data yang sudah ada untuk kolom tersebut.
mysql> CREATE TABLE cars(
-> id INT PRIMARY KEY AUTO_INCREMENT,
-> plate VARCHAR (10),
-> brand VARCHAR (10),
-> UNIQUE (plate)
-> );
Query OK, 0 rows affected (0.16 sec)

mysql> DESC cars;


3
Praktikum Basis Data Pra S2 Ilmu Komputer UGM Arif Nurwidyantoro

+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| plate | varchar(10) | YES | UNI | NULL | |
| brand | varchar(10) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

mysql> INSERT INTO cars VALUES (1, 'AB-1234-CD', 'Toyota');


Query OK, 1 row affected (0.06 sec)

mysql> SELECT * FROM cars;


+----+------------+--------+
| id | plate | brand |
+----+------------+--------+
| 1 | AB-1234-CD | Toyota |
+----+------------+--------+
1 row in set (0.00 sec)

mysql> INSERT INTO cars VALUES (2, 'AB-1234-CD', 'Suzuki');


ERROR 1062 (23000): Duplicate entry 'AB-1234-CD' for key 'plate'

5. Parameter IF NOT EXISTS


Parameter IF NOT EXISTS digunakan untuk mengecek apakah sebuah tabel dengan nama yang sama sudah ada
atau belum sebelum membuat tabel. Penggunaannya dapat dilihat sebagai berikut:
mysql> SHOW TABLES;
+-----------------+
| Tables_in_PRAK2 |
+-----------------+
| TABLE1 |
| TABLE2 |
| TABLE3 |
+-----------------+
3 rows in set (0.00 sec)

mysql> CREATE TABLE IF NOT EXISTS TABLE1(


-> id INT AUTO_INCREMENT,
-> name VARCHAR(30) NOT NULL,
-> salary FLOAT(10,2) DEFAULT 1000000
-> );
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> CREATE TABLE IF NOT EXISTS TABLE4(


-> id INT AUTO_INCREMENT,
-> name VARCHAR(30) NOT NULL,

4
Praktikum Basis Data Pra S2 Ilmu Komputer UGM Arif Nurwidyantoro

-> salary FLOAT(10,2) DEFAULT 1000000


-> );
Query OK, 0 rows affected (0.14 sec)
mysql> SHOW TABLES;
+-----------------+
| Tables_in_PRAK2 |
+-----------------+
| TABLE1 |
| TABLE2 |
| TABLE3 |
| TABLE4 |
+-----------------+
4 rows in set (0.00 sec)
Pada contoh di atas, kita mencoba membuat tabel dengan nama TABEL1 yang sudah ada. Mysql akan memberikan
satu buat warning. Namun ketika, kita membuat tabel yang belum ada, maka tabel tersebut akan terbentuk.

6. Menyalin tabel dengan statement SELECT


Kita juga dapat membuat tabel dari tabel lain menggunakan statement SELECT. Caranya ditunjukkan sebagai
berikut.
Pertama, kita membuat terlebih dahulu tabel sumber dengan nama 'employee' seperti sebagai berikut:
mysql> CREATE TABLE employee(
-> id INT AUTO_INCREMENT PRIMARY KEY,
-> first_name VARCHAR(15),
-> last_name VARCHAR(15),
-> start_date DATE,
-> end_date DATE,
-> salary FLOAT(8,2),
-> city VARCHAR(10),
-> description VARCHAR(15)
-> );
Query OK, 0 rows affected (0.16 sec)

mysql> DESCRIBE employee;


+-------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| first_name | varchar(15) | YES | | NULL | |
| last_name | varchar(15) | YES | | NULL | |
| start_date | date | YES | | NULL | |
| end_date | date | YES | | NULL | |
| salary | float(8,2) | YES | | NULL | |
| city | varchar(10) | YES | | NULL | |
| description | varchar(15) | YES | | NULL | |
+-------------+-------------+------+-----+---------+----------------+
8 rows in set (0.00 sec)

5
Praktikum Basis Data Pra S2 Ilmu Komputer UGM Arif Nurwidyantoro

Kemudian kita isikan dengan data ke tabel 'employee' sebagai berikut:


1 Jason Martin 1996-07-25 2006-07-25 1234.56 Toronto Programmer

2 Alison Mathews 1976-03-21 1986-02-21 6661.78 Vancouver Tester

3 James Smith 1978-12-12 1990-03-15 6544.78 Vancouver Tester

4 Celia Rice 1982-10-24 1999-04-21 2344.78 Vancouver Manager

5 Robert Black 1984-01-15 1998-08-08 2334.78 Vancouver Tester

6 Linda Green 1987-07-30 1996-01-04 4322.78 New York Tester

7 David Larry 1990-12-31 1998-02-12 7897.78 New York Manager

8 James Cat 1996-09-17 2002-04-15 1232.78 Vancouver Tester

Pengisian tabel dapat menggunakan statement LOAD DATA INFILE dengan cara membuat file teks, misalkan
bernama 'employee.txt' dan memisahkan kolom dengan tab. Selanjutnya memasukkan file dapat dilakukan sebagai
berikut:
mysql> LOAD DATA INFILE '/app/mysql/employee.txt' INTO TABLE employee FIELDS TERMI NATED
BY '\t';
Query OK, 8 rows affected (0.08 sec)
Records: 8 Deleted: 0 Skipped: 0 Warnings: 0
Selanjutnya, kita mulai menyalin tabel. Pada contoh di bawah, data yang akan disalin ke tabel yang baru adalah data
employee yang mulai bekerja antara 1 Januari 1970 sampai 31 Desember 1990.
mysql> CREATE TABLE employee_copy AS
-> SELECT *
-> FROM employee
-> WHERE start_date BETWEEN '1970-01-01' AND '1990-12-31';
Query OK, 6 rows affected (0.18 sec)
Records: 6 Duplicates: 0 Warnings: 0

mysql> SHOW TABLES;


+-----------------+
| Tables_in_PRAK2 |
+-----------------+
| TABLE1 |
| TABLE2 |
| TABLE3 |
| TABLE4 |
| employee |
| employee_copy |
+-----------------+
6 rows in set (0.00 sec)

mysql> SELECT * FROM employee_copy;


+----+------------+-----------+------------+------------+---------+-----------+-------------+
| id | first_name | last_name | start_date | end_date | salary | city | description |

6
Praktikum Basis Data Pra S2 Ilmu Komputer UGM Arif Nurwidyantoro

+----+------------+-----------+------------+------------+---------+-----------+-------------+
| 2 | Alison | Mathews | 1976-03-21 | 1986-02-21 | 6661.78 | Vancouver | Tester |
| 3 | James | Smith | 1978-12-12 | 1990-03-15 | 6544.78 | Vancouver | Tester |
| 4 | Celia | Rice | 1982-10-24 | 1999-04-21 | 2344.78 | Vancouver | Manager |
| 5 | Robert | Black | 1984-01-15 | 1998-08-08 | 2334.78 | Vancouver | Tester |
| 6 | Linda | Green | 1987-07-30 | 1996-01-04 | 4322.78 | New York | Tester |
| 7 | David | Larry | 1990-12-31 | 1998-02-12 | 7897.78 | New York | Manager |
+----+------------+-----------+------------+------------+---------+-----------+-------------+
6 rows in set (0.00 sec)

7. Membuat temporary tabel


Temporary tabel adalah tabel yang visible atau terlihat hanya pada koneksi yang sedang aktif dan akan langsung
dihapus ketika koneksi sudah terputus.
mysql> CREATE TEMPORARY TABLE TEMPTBL(
-> id INT PRIMARY KEY AUTO_INCREMENT,
-> name VARCHAR(30)
-> );
Query OK, 0 rows affected (0.08 sec)

mysql> SHOW TABLES;


+-----------------+
| Tables_in_PRAK2 |
+-----------------+
| TABLE1 |
| TABLE2 |
| TABLE3 |
| TABLE4 |
+-----------------+
9 rows in set (0.00 sec)

mysql> SELECT * FROM TEMPTBL;


Empty set (0.00 sec)

mysql> \q
Bye

mysql -h localhost -u root -p


Enter password:
mysql> USE PRAK2
Database changed

mysql> SELECT * FROM TEMPTBL;


ERROR 1146 (42S02): Table 'PRAK2.TEMPTBL' doesn't exist

8. Membuat tabel dengan foreign key


MySQL memiliki beberapa engine database. Salah satunya adalah engine InnoDB yang memiliki dukungan
terhadap ACID. Pembuatan tabel menggunakan engine InnoDB dapat membantu memberikan referential integrity.
7
Praktikum Basis Data Pra S2 Ilmu Komputer UGM Arif Nurwidyantoro

Berikut adalah contoh membuat tabel yang memiliki foreign key dengan engine InnoDB:
mysql> CREATE TABLE models (
-> modelid smallint not null auto_increment,
-> name varchar(40) not null,
-> primary key (modelid)
-> )
-> engine=InnoDB;
Query OK, 0 rows affected (0.13 sec)

mysql> desc models;


+---------+----------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+----------------------+------+-----+---------+----------------+
| modelid | smallint(5) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(40) | NO | | NULL | |
+---------+----------------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

mysql> CREATE TABLE orders (


-> id SMALLINT NOT NULL PRIMARY KEY,
-> modelid SMALLINT NOT NULL,
-> description VARCHAR(40),
-> FOREIGN KEY (modelid) REFERENCES models (modelid) ON UPDATE CASCADE ON DELETE
CASCADE
-> ) engine=InnoDB;
Query OK, 0 rows affected (0.18 sec)

mysql> desc orders;


+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| id | smallint(6) | NO | PRI | NULL | |
| modelid | smallint(6) | NO | MUL | NULL | |
| description | varchar(40) | YES | | NULL | |
+-------------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
Pada perintah sql di atas, kita membuat dua buah tabel dengan nama models dan orders. Tabel orders memiliki
foreign key modelid yang bereferensi dengan primary key tabel models, yaitu modelid.
mysql> INSERT INTO models VALUES (1, 'testsatu');
Query OK, 1 row affected (0.05 sec)

mysql> SELECT * FROM models;


+---------+----------+
| modelid | name |
+---------+----------+
| 1 | testsatu |
+---------+----------+

8
Praktikum Basis Data Pra S2 Ilmu Komputer UGM Arif Nurwidyantoro

1 row in set (0.00 sec)

mysql> insert into orders value (1, 1, 'deskripsisatu');


Query OK, 1 row affected (0.05 sec)

mysql> select * from orders;


+----+---------+---------------+
| id | modelid | description |
+----+---------+---------------+
| 1 | 1 | deskripsisatu |
+----+---------+---------------+
1 row in set (0.00 sec)
Pada perintah sql di atas, kita memasukkan data ke tabel models dan orders. Data yang dimasukkan pada tabel
orders memiliki referensi terhadap primary key pada tabel models, yaitu modelid yang nilainya adalah 1.
mysql> DELETE FROM models WHERE modelid = 1;
Query OK, 1 row affected (0.06 sec)

mysql> SELECT * FROM models;


Empty set (0.00 sec)

mysql> select * from orders;


Empty set (0.00 sec)
Pada perintah sql di atas, kita menghapus data di tabel models yang memiliki modelid = 1. Secara automatis, data
pada tabel orders yang memiliki modelid = 1 juga ikut terhapus untuk memastikan referential integrity.

Catatan terkait ON UPDATE dan ON DELETE:


ON UPDATE RESTRICT (default): jika kita ingin mengupdate model_id dari tabel MODELS, engine akan
menolak operasi tersebut jika ada paling sedikit satu ORDER pada model_id tersebut.
ON UPDATE NO ACTION: sama seperti RESTRICT
ON UPDATE CASCADE: jika kita mengupdate model_id dari tabel MODELS, engine akan mengupdate ke
semua ORDER yang tereferensi ke model_id tersebut (Trigger tidak ikut teraktivasi).
ON UPDATE SET NULL: jika kita mengupdate MODELS, engine akan mengubah ORDER yang terkait dengan
model_id tersebut dengan NULL.
ON DELETE RESTRICT (default): jika kita menghapus model_id dari MODELS, engine akan menolak operasi
tersebut ada paling sedikit satu ORDER untuk model_id tersebut
ON DELETE NO ACTION: sama seperti RESTRICT
ON DELETE CASCADE: jika kita menghapus baris model dalam MODELS, maka engine akan menghapus
semua data pada ORDER yang tereferensi dengan model tersebut
ON DELETE SET NULL: jika kita menghapus sebuah baris model dalam MODELS, maka baris dalam tabel
ORDERS yang terkait akan diset NULL

9. Memodifikasi tabel dengan ALTER TABLE


Tabel yang telah dibuat dapat dimodifikasi menggunakan command ALTER TABLE. Bentuk command untuk
ALTER TABLE adalah:
ALTER [IGNORE] TABLE table_name specification [,specification]
dengan specification sebagai berikut:

9
Praktikum Basis Data Pra S2 Ilmu Komputer UGM Arif Nurwidyantoro

ADD [COLUMN] column name (column definitions) [FIRST or AFTER column_name]


ADD INDEX [index_name] (column_list)
ADD PRIMARY KEY (column_list)
ADD UNIQUE [index_name] (column_list)
ALTER [COLUMN] column_name {SET DEFAULT default_value or DROP DEFAULT}
CHANGE [COLUMN] old_col_name create_definition
DROP [COLUMN] col_name
DROP PRIMARY KEY
DROP INDEX index_name
MODIFY [COLUMN] create_definition
RENAME [AS] new_tbl_name

10.Menambah kolom pada tabel


mysql> CREATE TABLE TABLE5(
-> id int
-> );
Query OK, 0 rows affected (0.16 sec)

mysql> desc TABLE5;


+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)

mysql> ALTER TABLE TABLE5


-> ADD name VARCHAR(5);
Query OK, 0 rows affected (0.24 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc TABLE5;


+-------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(5) | YES | | NULL | |
+-------+------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql> ALTER TABLE TABLE5


-> ADD first_name VARCHAR(30) AFTER id;
Query OK, 0 rows affected (0.84 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc TABLE5;

10
Praktikum Basis Data Pra S2 Ilmu Komputer UGM Arif Nurwidyantoro

+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| first_name | varchar(30) | YES | | NULL | |
| name | varchar(5) | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

11.Memodifikasi nama dan definisi tabel


mysql> ALTER TABLE TABLE5
-> CHANGE name last_name VARCHAR(30);
Query OK, 0 rows affected (0.60 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc TABLE5;


+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| first_name | varchar(30) | YES | | NULL | |
| last_name | varchar(30) | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

12.Memodifikasi definisi tabel


mysql> ALTER TABLE TABLE5
-> MODIFY first_name VARCHAR(15),
-> MODIFY last_name VARCHAR(15);
Query OK, 0 rows affected (0.24 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc TABLE5;+------------+-------------+------+-----+---------+-------+


| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| first_name | varchar(15) | YES | | NULL | |
| last_name | varchar(15) | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

13.Menambahkan primary key


mysql> ALTER TABLE TABLE5 ADD PRIMARY KEY (id);
Query OK, 0 rows affected (0.58 sec)
Records: 0 Duplicates: 0 Warnings: 0

11
Praktikum Basis Data Pra S2 Ilmu Komputer UGM Arif Nurwidyantoro

mysql> desc TABLE5;


+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | 0 | |
| first_name | varchar(15) | YES | | NULL | |
| last_name | varchar(15) | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

14.Menghapus kolom
mysql> ALTER TABLE TABLE5 DROP first_name;
Query OK, 0 rows affected (0.55 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> DESC TABLE5;


+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | 0 | |
| last_name | varchar(15) | YES | | NULL | |
+-----------+-------------+------+-----+---------+-------+
2 rows in set (0.01 sec)

15.Mengganti nama tabel


Mengganti nama tabel yang sudah dibuat dapat dilakukan dengan menggunakan perintah ALTER TABLE …
RENAME. Berikut adalah contoh penggunaannya:
mysql> SHOW TABLES;
+-----------------+
| Tables_in_PRAK2 |
+-----------------+
| TABLE1 |
| TABLE2 |
| TABLE3 |
| TABLE4 |
| employee |
| employee_copy |
+-----------------+
6 rows in set (0.00 sec)

mysql> ALTER TABLE employee_copy RENAME senior_employee;


Query OK, 0 rows affected (0.05 sec)

mysql> SHOW TABLES;


+-----------------+
12
Praktikum Basis Data Pra S2 Ilmu Komputer UGM Arif Nurwidyantoro

| Tables_in_PRAK2 |
+-----------------+
| TABLE1 |
| TABLE2 |
| TABLE3 |
| TABLE4 |
| employee |
| senior_employee |
+-----------------+
6 rows in set (0.00 sec)

16.Menghapus semua data dalam tabel


Untuk menghapus semua data di dalam tabel digunakan command TRUNCATE sebagai berikut:
mysql> CREATE TABLE employee_copy AS
-> SELECT * FROM employee;
Query OK, 8 rows affected (0.16 sec)
Records: 8 Duplicates: 0 Warnings: 0

mysql> SELECT * FROM employee_copy;


+----+------------+-----------+------------+------------+---------+-----------+-------------+
| id | first_name | last_name | start_date | end_date | salary | city | description |
+----+------------+-----------+------------+------------+---------+-----------+-------------+
| 1 | Jason | Martin | 1996-07-25 | 2006-07-25 | 1234.56 | Toronto | Programmer |
| 2 | Alison | Mathews | 1976-03-21 | 1986-02-21 | 6661.78 | Vancouver | Tester |
| 3 | James | Smith | 1978-12-12 | 1990-03-15 | 6544.78 | Vancouver | Tester |
| 4 | Celia | Rice | 1982-10-24 | 1999-04-21 | 2344.78 | Vancouver | Manager |
| 5 | Robert | Black | 1984-01-15 | 1998-08-08 | 2334.78 | Vancouver | Tester |
| 6 | Linda | Green | 1987-07-30 | 1996-01-04 | 4322.78 | New York | Tester |
| 7 | David | Larry | 1990-12-31 | 1998-02-12 | 7897.78 | New York | Manager |
| 8 | James | Cat | 1996-09-17 | 2002-04-15 | 1232.78 | Vancouver | Tester |
+----+------------+-----------+------------+------------+---------+-----------+-------------+
8 rows in set (0.00 sec)

mysql> TRUNCATE TABLE employee_copy;


Query OK, 0 rows affected (0.04 sec)

mysql> SELECT * FROM employee_copy;


Empty set (0.00 sec)

17.Menghapus Tabel
Untuk menghapus tabel dari database, digunakan command DROP TABLE.
mysql> DROP TABLE employee_copy;
Query OK, 0 rows affected (0.06 sec)

mysql> SHOW TABLES;


+-----------------+

13
Praktikum Basis Data Pra S2 Ilmu Komputer UGM Arif Nurwidyantoro

| Tables_in_PRAK2 |
+-----------------+
| TABLE1 |
| TABLE2 |
| TABLE3 |
| TABLE4 |
| TABLE5 |
| employee |
| senior_employee |
+-----------------+
7 rows in set (0.00 sec)

18.Memasukkan data dengan INSERT


Memasukkan data ke dalam tabel dilakukan menggunakan command INSERT. Bentuk command INSERT dasar
adalah sebagai berikut:
INSERT INTO <table_name>
VALUES (
value1,
value2,
etc......
);
Bentuk INSERT di atas bisa digunakan ketika jumlah value sudah sama dengan jumlah kolom yang akan diberikan
data.
mysql> DESC employee;
+-------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| first_name | varchar(15) | YES | | NULL | |
| last_name | varchar(15) | YES | | NULL | |
| start_date | date | YES | | NULL | |
| end_date | date | YES | | NULL | |
| salary | float(8,2) | YES | | NULL | |
| city | varchar(10) | YES | | NULL | |
| description | varchar(15) | YES | | NULL | |
+-------------+-------------+------+-----+---------+----------------+
8 rows in set (0.01 sec)

mysql> INSERT INTO EMPLOYEE VALUES (


-> 9,
-> 'James',
-> 'Bond',
-> '1982-04-21',
-> '2002-09-23',
-> 1234.56,
-> 'London',

14
Praktikum Basis Data Pra S2 Ilmu Komputer UGM Arif Nurwidyantoro

-> 'Spy'
-> );
Query OK, 1 row affected (0.05 sec)
Tabel employee memiliki 8 kolom. Kita memasukkan 8 nilai menggunakan command INSERT. Satu buah nilai diisi
ke kolom sesuai dengan urutan penulisan nilai.
Selain menggunakan INSERT seperti di atas, kita juga dapat menggunakan command INSERT sebagai berikut:
mysql> INSERT INTO employee
-> (first_name, last_name, start_date, end_date, salary, city, description)
-> VALUES
-> ('Hercule',
-> 'Poirot',
-> '1973-05-23',
-> '2001-08-09',
-> 4312.98,
-> 'Brussels',
-> 'Detective'
-> );
Query OK, 1 row affected (0.05 sec)

mysql> SELECT * FROM employee;


+----+------------+-----------+------------+------------+---------+-----------+-------------+
| id | first_name | last_name | start_date | end_date | salary | city | description |
+----+------------+-----------+------------+------------+---------+-----------+-------------+
| 1 | Jason | Martin | 1996-07-25 | 2006-07-25 | 1234.56 | Toronto | Programmer |
| 2 | Alison | Mathews | 1976-03-21 | 1986-02-21 | 6661.78 | Vancouver | Tester |
| 3 | James | Smith | 1978-12-12 | 1990-03-15 | 6544.78 | Vancouver | Tester |
| 4 | Celia | Rice | 1982-10-24 | 1999-04-21 | 2344.78 | Vancouver | Manager |
| 5 | Robert | Black | 1984-01-15 | 1998-08-08 | 2334.78 | Vancouver | Tester |
| 6 | Linda | Green | 1987-07-30 | 1996-01-04 | 4322.78 | New York | Tester |
| 7 | David | Larry | 1990-12-31 | 1998-02-12 | 7897.78 | New York | Manager |
| 8 | James | Cat | 1996-09-17 | 2002-04-15 | 1232.78 | Vancouver | Tester |
| 9 | James | Bond | 1982-04-21 | 2002-09-23 | 1234.56 | London | Spy |
| 10 | Hercule | Poirot | 1973-05-23 | 2001-08-09 | 4312.98 | Brussels | Detective |
+----+------------+-----------+------------+------------+---------+-----------+-------------+
10 rows in set (0.00 sec)
Menggunakan command INSERT di atas, kita memberikan spesifikasi kolom mana saja yang akan kita isi. Kolom
yang tidak kita isi (dalam contoh ini adalah 'id') secara automatis akan diisi dengan nilai DEFAULT yang telah
dispesifikasikan saat pembuatan tabel. Kolom 'id' kita spesifikasikan AUTO_INCREMENT sehingga kolom
tersebut akan diisi dengan increment dari nilai sebelumnya.

19.Memasukkan lebih dari satu baris dalam satu INSERT


Memasukkan lebih dari satu baris dapat dilakukan menggunakan satu buah command INSERT. Hal ini dilakukan
dengan memisahkan input tiap baris dengan koma (','). Berikut adalah contohnya:
mysql> INSERT INTO employee (first_name, last_name, start_date, end_date, salary, city,
description) VALUES
-> ('Lincoln', 'Rhyme', '1999-05-25', '2011-07-13', 3212.98, 'New York',
'Forensics' ),
-> ('Sherlock','Holmes', '1923-08-12','1945-07-21',4123.21, 'London',
'Detective' ) ;
15
Praktikum Basis Data Pra S2 Ilmu Komputer UGM Arif Nurwidyantoro

Query OK, 2 rows affected (0.35 sec)


Records: 2 Duplicates: 0 Warnings: 0

mysql> SELECT * FROM employee;


+----+------------+-----------+------------+------------+---------+-----------+-------------+
| id | first_name | last_name | start_date | end_date | salary | city | description |
+----+------------+-----------+------------+------------+---------+-----------+-------------+
| 1 | Jason | Martin | 1996-07-25 | 2006-07-25 | 1234.56 | Toronto | Programmer |
| 2 | Alison | Mathews | 1976-03-21 | 1986-02-21 | 6661.78 | Vancouver | Tester |
| 3 | James | Smith | 1978-12-12 | 1990-03-15 | 6544.78 | Vancouver | Tester |
| 4 | Celia | Rice | 1982-10-24 | 1999-04-21 | 2344.78 | Vancouver | Manager |
| 5 | Robert | Black | 1984-01-15 | 1998-08-08 | 2334.78 | Vancouver | Tester |
| 6 | Linda | Green | 1987-07-30 | 1996-01-04 | 4322.78 | New York | Tester |
| 7 | David | Larry | 1990-12-31 | 1998-02-12 | 7897.78 | New York | Manager |
| 8 | James | Cat | 1996-09-17 | 2002-04-15 | 1232.78 | Vancouver | Tester |
| 9 | James | Bond | 1982-04-21 | 2002-09-23 | 1234.56 | London | Spy |
| 10 | Hercule | Poirot | 1973-05-23 | 2001-08-09 | 4312.98 | Brussels | Detective |
| 11 | Lincoln | Rhyme | 1999-05-25 | 2011-07-13 | 3212.98 | New York | Forensics |
| 12 | Sherlock | Holmes | 1923-08-12 | 1945-07-21 | 4123.21 | London | Detective |
+----+------------+-----------+------------+------------+---------+-----------+-------------+
12 rows in set (0.00 sec)

20.INSERT menggunakan data dari tabel lain


Kita juga dapat memasukkan data dari tabel yang lain menggunakan command INSERT … INTO … SELECT.
mysql> CREATE TABLE employee2 (
-> id INT AUTO_INCREMENT PRIMARY KEY,
-> name VARCHAR(15),
-> city VARCHAR(20)
-> );
Query OK, 0 rows affected (0.16 sec)

mysql> DESC employee2;


+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(15) | YES | | NULL | |
| city | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

mysql> INSERT INTO employee2


-> (id, name, city)
-> SELECT id, CONCAT(first_name,' ',last_name), city
-> FROM employee;
Query OK, 12 rows affected (0.05 sec)

16
Praktikum Basis Data Pra S2 Ilmu Komputer UGM Arif Nurwidyantoro

mysql> SELECT * FROM employee2;


+----+-----------------+-----------+
| id | name | city |
+----+-----------------+-----------+
| 1 | Jason Martin | Toronto |
| 2 | Alison Mathews | Vancouver |
| 3 | James Smith | Vancouver |
| 4 | Celia Rice | Vancouver |
| 5 | Robert Black | Vancouver |
| 6 | Linda Green | New York |
| 7 | David Larry | New York |
| 8 | James Cat | Vancouver |
| 9 | James Bond | London |
| 10 | Hercule Poirot | Brussels |
| 11 | Lincoln Rhyme | New York |
| 12 | Sherlock Holmes | London |
+----+-----------------+-----------+
12 rows in set (0.00 sec)
Pada command di atas, kita hanya memilih id, nama, dan kota dari tabel employee untuk dimasukkan ke dalam tabel
employee2.

21.Mengubah data menggunakan UPDATE


Data yang telah kita masukkan ke dalam tabel dapat kita ubah menggunakan command UPDATE. Bentuk umum
command UPDATE adalah sebagai berikut:
UPDATE <table_name>
SET <column_name> = 'new_value'
WHERE (<column_name> = 'some_value');
Berikut adalah contoh menggunakan UPDATE:
mysql> UPDATE employee2
-> SET city = 'Ottawa'
-> WHERE city = 'Vancouver';
Query OK, 5 rows affected (0.08 sec)
Rows matched: 5 Changed: 5 Warnings: 0

mysql> SELECT * FROM employee2;


+----+-----------------+----------+
| id | name | city |
+----+-----------------+----------+
| 1 | Jason Martin | Toronto |
| 2 | Alison Mathews | Ottawa |
| 3 | James Smith | Ottawa |
| 4 | Celia Rice | Ottawa |
| 5 | Robert Black | Ottawa |
| 6 | Linda Green | New York |
| 7 | David Larry | New York |
| 8 | James Cat | Ottawa |

17
Praktikum Basis Data Pra S2 Ilmu Komputer UGM Arif Nurwidyantoro

| 9 | James Bond | London |


| 10 | Hercule Poirot | Brussels |
| 11 | Lincoln Rhyme | New York |
| 12 | Sherlock Holmes | London |
+----+-----------------+----------+
12 rows in set (0.00 sec)

22.Mengubah nilai berdasarkan nilai yang dimiliki sekarang


mysql> SELECT salary FROM employee;
+---------+
| salary |
+---------+
| 1234.56 |
| 6661.78 |
| 6544.78 |
| 2344.78 |
| 2334.78 |
| 4322.78 |
| 7897.78 |
| 1232.78 |
| 1234.56 |
| 4312.98 |
| 3212.98 |
| 4123.21 |
+---------+
12 rows in set (0.00 sec)

mysql> UPDATE employee SET salary = salary + 1;


Query OK, 12 rows affected (0.06 sec)
Rows matched: 12 Changed: 12 Warnings: 0

mysql> SELECT salary FROM employee;


+---------+
| salary |
+---------+
| 1235.56 |
| 6662.78 |
| 6545.78 |
| 2345.78 |
| 2335.78 |
| 4323.78 |
| 7898.78 |
| 1233.78 |
| 1235.56 |
| 4313.98 |
| 3213.98 |

18
Praktikum Basis Data Pra S2 Ilmu Komputer UGM Arif Nurwidyantoro

| 4124.21 |
+---------+
12 rows in set (0.00 sec)

23.Mengganti data dari tabel


Data yang kita sudah masukkan dalam tabel dapat kita ganti dengan menggunakan command REPLACE.
Format penggunaan command REPLACE sama dengan INSERT, namun ia menggantikan data yang memiliki nilai
sama di indeks PRIMARY KEY atau UNIQUE.
mysql> SELECT * FROM employee2;
+----+-----------------+----------+
| id | name | city |
+----+-----------------+----------+
| 1 | Jason Martin | Toronto |
| 2 | Alison Mathews | Ottawa |
| 3 | James Smith | Ottawa |
| 4 | Celia Rice | Ottawa |
| 5 | Robert Black | Ottawa |
| 8 | James Cat | Ottawa |
| 9 | James Bond | London |
| 10 | Hercule Poirot | Brussels |
| 12 | Sherlock Holmes | London |
+----+-----------------+----------+
9 rows in set (0.00 sec)

mysql> REPLACE INTO employee2 (id,name, city) VALUES (12,'Sherlock Holmes','Manchester');


Query OK, 2 rows affected (0.05 sec)

mysql> SELECT * FROM employee2;


+----+-----------------+------------+
| id | name | city |
+----+-----------------+------------+
| 1 | Jason Martin | Toronto |
| 2 | Alison Mathews | Ottawa |
| 3 | James Smith | Ottawa |
| 4 | Celia Rice | Ottawa |
| 5 | Robert Black | Ottawa |
| 8 | James Cat | Ottawa |
| 9 | James Bond | London |
| 10 | Hercule Poirot | Brussels |
| 12 | Sherlock Holmes | Manchester |
+----+-----------------+------------+
9 rows in set (0.00 sec)

24.Menghapus data dari tabel


Menghapus data tertentu dari sebuah tabel dalam database dapat dilakukan menggunakan command DELETE.
Berikut adalah bentuk dasar dari command DELETE:
19
Praktikum Basis Data Pra S2 Ilmu Komputer UGM Arif Nurwidyantoro

DELETE FROM <table_name>


WHERE (<column_name> = 'some_value');
Berikut adalah contoh menghapus data menggunakan DELETE:
mysql> SELECT * FROM employee2;
+----+-----------------+----------+
| id | name | city |
+----+-----------------+----------+
| 1 | Jason Martin | Toronto |
| 2 | Alison Mathews | Ottawa |
| 3 | James Smith | Ottawa |
| 4 | Celia Rice | Ottawa |
| 5 | Robert Black | Ottawa |
| 6 | Linda Green | New York |
| 7 | David Larry | New York |
| 8 | James Cat | Ottawa |
| 9 | James Bond | London |
| 10 | Hercule Poirot | Brussels |
| 11 | Lincoln Rhyme | New York |
| 12 | Sherlock Holmes | London |
+----+-----------------+----------+
12 rows in set (0.00 sec)

mysql> DELETE FROM employee2 WHERE city = 'New York';


Query OK, 3 rows affected (0.39 sec)

mysql> SELECT * FROM employee2;


+----+-----------------+----------+
| id | name | city |
+----+-----------------+----------+
| 1 | Jason Martin | Toronto |
| 2 | Alison Mathews | Ottawa |
| 3 | James Smith | Ottawa |
| 4 | Celia Rice | Ottawa |
| 5 | Robert Black | Ottawa |
| 8 | James Cat | Ottawa |
| 9 | James Bond | London |
| 10 | Hercule Poirot | Brussels |
| 12 | Sherlock Holmes | London |
+----+-----------------+----------+
9 rows in set (0.00 sec)

20

Anda mungkin juga menyukai