Wednesday, October 19, 2016

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;




8 rows in set (0.00 sec)

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




















6 rows in set (0.00 sec)
mysql> SELECT * FROM employee_copy;







6 rows in set (0.00 sec)

No comments:

Post a Comment