Tugas 3
1. Data Definition Language (DDL)
adalah kumpulan perintah SQL yang dapat digunakan untuk membuat dan mengubah struktur dan definisi tipe data dari objek-objek database seperti tabel, index, trigger, view, dan lain-lain.
Contoh perintah DDL :
- Membuat tabel
CREATE TABLE Digunakan untuk membuat tabel. Syntax umumnya sebagai berikut :
CREATE TABLE [schema, ] table
( column datatype [DEFAULT expr][,...]);
- Menghapus tabel
DROP TABLE
Digunakan untuk melakukan penghapusan tabel. Melakukan penghapusan table dengan perintah DROP, berarti mengerjakan hal berikut :
Semua data dan struktur dari table akan dihapus Semua transaksi pending akan di-commit Semua indeks akan dihapus Perintah drop ini tidak bisa di-rollback Sebagai contoh, jika kita ingin menghapus tabel dept, maka yang harus dilakukan adalah :
DROP TABLE dept;
- Menambah /menghapus kolom
- Statemen ALTER TABLE digunakan untuk : ~ Menambahkan kolom baru Untuk menambah kolom baru, syntax umumnya sebagai berikut :
ALTER TABLE table
ADD (column datatype [DEFAULT expr]
[, column datatype]...);
~ Memodifikasi kolom yang sudah ada
Kita dapat memodifikasi kolom dengan mengubah tipe datanya, ukuran dan nilai defaultnya. Sintaks dari perintah ALTER TABLE untuk memodifikasi kolom sebagai berikut :
ALTER TABLE table
MODIFY (column datatype [DEFAULT expr]
[, column datatype] ... );
Contoh :
ALTER TABLE dept
MODIFY (dname VARCHAR2(30));
View adalah tabel bayangan. Tidak menyimpan data secara fisik. Biasanya berupa hasil query dari tabel-tabel dalam sebuah database. Syntax untuk melakuakn VIEW adalah :
CREATE VIEW AS
Trigger adalah sebuah obyek dalam database yang berupa prosedur yang merespon setiap kali terdapat proses modifikasi pada tabel. Proses modifikasi berupa: Insert, Update dan delete. Syntax pembuatan Trigger:
CREATE TRIGGER ON TABLE
FOR [DELETE] [,] [INSERT] [,] [UPDATE]
AS
2. DML atau Data Manipulation Language
adalah kumpulan perintah SQL yang berhubungan dengan pekerjaan mengolah data di dalam table.
Contoh perintah DML :
- Penambahan data pada sebuah tabel
Syntax:
INSERT INTO nama_tabel(field ke-1, ….. field ke-n) VALUES(nilai_field_ke-1, …. nilai_field_ke-n);
- Pembaruan data pada sebuah tabel
Syntax:
UPDATE nama_tabel SET nama_field = data_baru WHERE nama_field = data_lama;
- Penghapusan data pada sebuah tabel
Syntax:
DELETE FROM nama_tabel [ WHERE kondisi];
- Pemilihan data dari satu atau beberapa tabel
Syntax :
SELECT [DISTINCT] select_list FROM table_source [WHERE search_condition] [GROUP BY group_by_expression] [HAVING search_condition] [ORDER BY order_expression [ASC | DESC] ]
3. DCL - Data Control Language
Data Control Language (DCL) merupakan sub bahasa SQL yang digunakan untuk
melakukan pengontrolan data dan server databasenya. Perintah DCL, di antaranya:
GRAND : Perintah ini digunakan untuk memberikan hak/ijin akses oleh administrator (pemilik utama) server kepada user (pengguna biasa). Hak akses tersebut berupa hak membuat (CREATE), mengambil (SELECT), menghapus (DELETE), mengubah (UPDATE), dan hak khusus berkenaan dengan sistem databasenya.
REVOKE : Perintah ini memiliki kegunaan terbalik dengan GRAND, yaitu untuk menghilangkan atau mencabut hak akses yang telah diberikan kepada user oleh administrator.
4. DQL (Data Query Language)
Berikuti ini saya akan berikan contoh Query dalam SQL untuk select sederhana,
$data_user = "SELECT * FROM user";
artinya untuk mengambil semua field data pada table user. Dalam Query Doctrine kita bisa menuliskan seperti berikut ini,
$this->data_user = Doctrine::getTable('User')->findAll();
Perhatikan susunan penulisannya. Ada getTable dan element yang mau dicari adalah semua, findAll. Perubahan mendasar dalam penulisan script SQL adalah menggunakan method dengan penamaan yang lebih “manusiawi”. Kalau di SQL biasa dengan tanda bintang asterik “*“, kalau di Doctrine menggunakan method findAll(). Kalau di SQL memanggil nama table nya (misal. user), kalau di Doctrine memanggil nama Model nya (misal. User). Dalam Doctrine (symfony), penulisan nama Model selalu di awali huruf besar, jadi agak sedikit berbeda dengan nama table di database nya.
· Perhatikan susunan penulisannya, karena kita akan sering menemui hal-hal seperti itu nantinya..
oks, gimana? gampang kan…
Query Select untuk Primary Key tertentu
Percobaan selanjutnya kita akan menggunakan Query select sederhana untuk mengambil data dengan Primary Key tertentu. Misal Table user memiliki primary key pada field id, dan kita akan menampilkan data yang id nya ’1′. maka SQL nya adalah seperti berikut ini,
$data_user = "SELECT * FROM user WHERE (id = '1')";
Maka dalam Query Doctrine kita dapat menuliskan seperti ini,
$this->data_user = Doctrine::getTable('User')->find(1);
Method find() dalam Doctrine digunakan untuk menemukan record berdasarkan primary key nya. Dalam kasus ini, kita tidak perlu memberi tahu Doctrine “siapa yang menjadi primary key“. Pokok nya kalau kita gunakan method find(), maka pasti akan mencari untuk primary key nya saja, yaitu field id.
gimana? makin gampang kan…
Query Select mencari field tertentu
Dan ini yang lebih menarik lagi. Yaitu jika kita ingin mencari data dengan syarat field tertentu. Misal, saya ingin mencari record yang field ‘name’ pada table tersebut berisi ‘sule’. Dalam SQL kita biasa menuliskan seperti ini,
$data_user = "SELECT * FROM user u WHERE (u.name = 'sule')";
pada contoh diatas kita menggunakan alias ‘u‘ untuk table user, dan kemudian menambahkan syarat bahwa field name harus terisi oleh ‘sule‘. Dalam Doctrine, penulisannya semakin mudah.
$this->data_user = Doctrine::getTable('User')->findByName('sule');
Gunakan method findBy… yg penulisannya ditambahkan dengan nama field yang akan kita cari. Dalam contoh diatas field yang akan dicari ada lah field ‘name‘, maka method yang digunakan findByName(). Perhatikan penulisan huruf besar kecil, sebagai penanda kata.
ampiuun pak, kok makin gampang..
Query Select dengan beragam Syarat
Tingkatan lebih lanjut, kita akan mencoba melakukan Query untuk beragam syarat. Seperti yang telah Anda ketahui, syarat dalam Query dapat kita gunakana dengan menambahkan “WHERE&ldqu
tugas 2
TIPE-TIPE DATA PADA DBMS:
1.TIPE DATA PADA MY SQL:
Tipe Data MySQL
Mengenal berbagai Tipe Data
Seringkali pada saat kita membuat sebuah database dan membuat fields yang ada didalamnya, kita kebingungan dalam memilih tipe data apa yang akan digunakan. Pada kesemapatan kali ini saya akan memberitahukan beberapa buah tipe data yang saya baca dari sebuah buku. Tipe data yang akan saya jelaskan berikut ini adalah tipe data yang terdapat pada MySQL.
1. Tipe data untuk bilangan
No |
Tipe Data |
Keterangan |
1. |
TINYINT |
Ukuran 1 byte. Bilangan bulat terkecil, |
2. |
SMALLINT |
Ukuran 2 byte. Bilangan bulat dengan |
3. |
MEDIUMINT |
Ukuran 3 byte. Bilangan bulat dengan |
4. |
INT |
Ukuran 4 byte. Bilangan bulat dengan |
5. |
INTEGER |
Sama dengan INT. |
6. |
BIGINT |
Ukuran 8 byte. Bilangan bulat dengan |
7. |
FLOAT |
Ukuran 4 byte. Biilangan pecahan. |
8. |
DOUBLE |
Ukuran 8 byte. Bilangan pecahan. |
9. |
DOUBLE PRECISION |
Ukuran 8 byte. Bilangan pecahan berpresisi |
10. |
REAL |
Ukuran 8 byte. Sinonim dari DOUBLE. |
11. |
DECIMAL(M,D) |
Ukuran M byte. Bilangan pecahan. Misalnya |
12. |
NUMERIC(M,D) |
Ukuran M byte. Sama dengan Decimal. |
2. Tipe data untuk tanggal dan jam
No |
Tipe |
Keterangan |
1. |
DATETIME |
Ukuran 8 byte. Kombinasi tanggal dan jam |
2. |
DATE |
Ukuran 8 byte. Kombinasi tanggal dan jam |
3. |
TIMESTAMP |
Ukuran 4 byte. Kombinasi tanggal dan jam |
4. |
TIME |
Ukuran 3 byte.waktu dengan jangkauan dari |
5. |
YEAR |
Ukuran 1 byte. Data tahun antara 1901 sampai |
3. Tipe data untuk karakter dan lain-lain
No |
Tipe |
Keterangan |
1. |
CHAR(M) |
Ukuran M byte, 1<=M<=255. Data string |
2. |
VARCHAR(M) |
Ukuran L+1 byte dengan L<=M dan |
3. |
TINYBLOB, TINYTEXT |
L+1 byte, dengan L<28 . Tipe |
4. |
BLOB, TEXT |
L+2 byte, dengan L<216 . Tipe |
5. |
MEDIUMBLOB, MEDIUMTEXT |
L+3 byte, dengan L<224. Tipe |
6. |
LONGBLOB, LONGTEXT |
L+4 byte, dengan L<232. Tipe |
7. |
ENUM(’nilai1’,’nilai2’,..) |
Ukuran 1 atau 2 byte tergantungnilai |
8. |
SET(’nilai1’,’nilai2’,..) |
Ukuran 1,2,3,4 atau 8 byte tergantung jumlah |
2.TIPE DATA PADA ORCLE:
- Varchar2(size) : string yang memiliki panjang karakter vaiable dengan panjang maxial sebesar size. Tipe data ini memperbolehkan penyimpanan semua karakter yang dapat dimasukkan melalui keyboad. Maksimum size yang dapat disimpan sebesar 4000 bytes (karakter). Tipe data ini juga memungkinkan untuk mneyimpan data numerik. Biasanya space akan langsung dieliminasi jika menggunakan tipe ini.
- Char(size): string dengan panjan gkarakter tetap sebesar ukuran size. Tipe data ini mempunyai kemampuan yang hampir sama yakni menyimpan karakter, hanya saja maksimum size yang disimpan hanya sebesar 2000 bytes.
- Number(p,s) : tipe data number memiliki presisi p dan s digit dibelakan koma jika kita abaikan p dan s berarti dianggap sebagai tipe number floating point. Tipe data ini menyimpan bilangan interger sampai maksimum dari digit integer tersebut. misal untuk spesifikasi (5,2) berarti 3 digit sebelum koma dan 2 digit dibelakang koma.
- Long : data karakter dengan ukuran panjang bervariasi, hingga mencapai 2 GB.(tipe data seperti ini tidak dapat digunakan sebagai primary key).
- Raw(size) : tipe data berupa binary data dengan ukuran maksimal 255 bytes
- Long Raw : Tipe data berupa binary data dengan ukuran maksimal 2 GigaBytes tidak dikonversi oleh oracle (data mentah apa adanya, spasi dihitung 1 karakter).
- Date : Tipe data ini menyimpan waktu dan tanggal dari sebuah informasi, dengan komponen waktu yang dibulatkan ke detik terdekat. Untuk menampilkannya dalam teks harus menggunakan fungsi to_char.
- Timestamp : tipe ini mirip dengan date. Di dalam tipe ini terdapat komponen waktu yang dapat langsung ditampilkan tanpa harus mengubahnya terlebih dahulu dengan fungsi to_char.
- Clob : Tipe data ini memperbolehkan penyimpanan objek dengan ukuran yang sangat besar sekitar 4 GB. Clob mirip sekali dengan varchar2 hanya saja tipe data ini mempunyai kapasitas maksimum yang lebih besar.
- Blob : tipe ini memperbolehkan penyimpanan objek bbinary yang besar dan tidak terstruktur. Contoh dari tipe data blob adalah suara dan video.
3.TIPE DATA PADA POSTGRESQL:
Untuk melihat tipe data yang didikung PostgreSQL, maka dapat menulis perintah berikut ini pada console PostgreSQL.
postgres=# \dT
List of data types
————————————————————————-
Schema | Name | Description
————+——————+—————————————–
pg_catalog | “any” |
pg_catalog | “char” | single character
pg_catalog | “trigger” |
pg_catalog | “unknown” |
pg_catalog | abstime | absolute, limited-range date and time
pg_catalog | aclitem | access control list
pg_catalog | anyarray |
pg_catalog | anyelement |
pg_catalog | bigint | ~18 digit integer, 8-byte storage
pg_catalog | bit | fixed-length bit string
pg_catalog | bit varying | variable-length bit string
pg_catalog | boolean | boolean, ‘true’/'false’
pg_catalog | box | geometric box ‘(lower left,upper right)’
pg_catalog | bytea | variable-length string, binary values
pg_catalog | character | char(length), blank-padded string, fixed storage length
pg_catalog | character varying| varchar(length), non-blank-padded string, variable storage length
pg_catalog | cid | command identifier type, sequence intransaction id
pg_catalog | cidr | networkIP address/netmask,networkaddress
pg_catalog | circle | geometric circle ‘(center,radius)’
pg_catalog | cstring |
pg_catalog | date | ANSI SQL date
pg_catalog | double precision | double-precision floating pointnumber, 8-byte storage
pg_catalog | inet | IP address/netmask, host address,netmask optional
pg_catalog | int2vector | array of int2, used in system tables
pg_catalog | integer | -2 billion to 2 billion integer, 4-byte
pg_catalog | internal |
pg_catalog | interval | @ , time interval
pg_catalog | language_handler |
pg_catalog | line | geometric line (not implemented)’
pg_catalog | lseg | geometric line segment ‘(pt1,pt2)’
pg_catalog | macaddr | XX:XX:XX:XX:XX:XX, MAC address
pg_catalog | money | monetary amounts, $d,ddd.cc
pg_catalog | name | 63-character type for storing system id
pg_catalog | numeric | numeric(precision, decimal), arbitrary
pg_catalog | oid | object identifier(oid), maximum 4billion
pg_catalog | oidvector | array of oids, used in system tables
pg_catalog | opaque |
pg_catalog | path | geometric path ‘(pt1,…)’
pg_catalog | point | geometric point ‘(x, y)’
pg_catalog | polygon | geometric polygon ‘(pt1,…)’
pg_catalog | real | single-precision floating point number, 4-byte storage
pg_catalog | record |
pg_catalog | refcursor | reference cursor (portal name)
pg_catalog | regclass | registered class
pg_catalog | regoper | registered operator
pg_catalog | regoperator | registered operator (with args)
pg_catalog | regproc | registered procedure
pg_catalog | regprocedure | registered procedure (with args)
pg_catalog | regtype | registered type
pg_catalog | reltime | relative, limited-range time interval
pg_catalog | smallint | -32 thousand to 32 thousand, 2-byte
pg_catalog | smgr | storage manager
pg_catalog | text | variable-length string, nolimitspecified
pg_catalog | tid | (Block,offset),physical location oftuple
pg_catalog | time with time zone | hh:mm:ss, ANSI SQL time
pg_catalog | time without time zone | hh:mm:ss, ANSI SQL time
pg_catalog | timestamp with time zone | date and time with time zone
pg_catalog | timestamp without time zone | date and time
pg_catalog | tinterval | (abstime,abstime), time interval
pg_catalog | void |
pg_catalog | xid | transaction id
(61 rows)
Terlihat tipe data yang didukung jumlahnya ada 61 buah. Tipe data di atas merupakan tipe data tambahan dari tipe data default yang didukung PostgreSQL berdasarkan Standar ANSI 92. Jadi tidak terlihat tipe data seperti VARCHAR,
VARCHAR(2) atau INT. Karena secara default PostgreSQL sudah mendukung hampir semua tipe data yang digunakan pada DBMS modern pada umumnya.
TIPE DATA PADA DB2:
DB2 Data Types
The following table contains the available data types for DB2 databases supported by CONNX.
CONNX Data Type |
SQL Data Type |
Length |
ODBC Data Type |
Description |
DB2 Binary |
Binary |
1-254 |
SQL_BINARY |
1- to 254-byte fixed-length binary (defined as CHAR FOR BIT DATA) |
DB2 IEEE 4-byte float |
Real |
4 |
SQL_REAL |
4-byte byte-reversed (little endian) IEEE float |
DB2 IEEE 8-byte float |
Double |
8 |
SQL_DOUBLE |
8-byte byte-reversed (little endian) IEEE float |
DB2 IEEE Big E 4-byte float |
Real |
4 |
SQL_REAL |
4-byte big endian IEEE float |
DB2 IEEE Big E 8-byte float |
Double |
8 |
SQL_DOUBLE |
8-byte big endian IEEE float |
DB2 ISO Date (YYYY-MM-DD) |
Date |
10 |
SQL_DATE |
ISO DATE column |
DB2 ISO Time (hh.mm.ss) |
Time |
8 |
SQL_TIME |
ISO TIME column |
DB2 Longword Integer |
Integer |
4 |
SQL_INTEGER |
4-byte signed long integer (-2147483648 thru +2147483647) |
DB2 Mainframe 4-byte float |
Real |
4 |
SQL_REAL |
Mainframe DB2 (MVS or OS/390) 4-byte float |
DB2 Mainframe 8-byte float |
Double |
8 |
SQL_DOUBLE |
Mainframe DB2 (MVS or OS/390) 8-byte float |
DB2 Numeric |
Numeric |
1-31 |
SQL_NUMERIC |
Zoned numeric columns defined as NUMERIC (precision, scale), where precision >= scale; 0 <= precision <=31; 0 <= scale <=31 |
DB2 Numeric Integer |
Numeric |
9 |
SQL_NUMERIC |
Describes an SQL NUMERIC display column with a scale = 0 and precision < = 9, e.g., NUMERIC (9,0). The default conversion from host column to ODBC data type is from SQL_NUMERIC to signed long integer = SQL_C_SLONG. |
DB2 Packed Decimal |
Decimal |
1-16 |
SQL_DECIMAL |
Packed decimal columns defined as DECIMAL (precision, scale), where precision >= scale; 0 <= precision <=31; 0 <= scale <=31 |
DB2 Packed Decimal Integer |
Decimal |
9 |
SQL_DECIMAL |
This data type corresponds to an SQL_DECIMAL column with a scale of 0 and a precision < = 9, e.g., DECIMAL(9,0). The default conversion from host column to ODBC data type is from SQL_DECIMAL to signed long integer = SQL_C_SLONG. |
DB2 Small Integer |
Smallint |
2 |
SQL_SMALLINT |
2-byte signed small integer (-32768 thru +32767) |
DB2 Timestamp |
Timestamp |
26 |
SQL_TIMESTAMP |
ISO Timestamp column (YYYY-MM-DD –HH.MM.SS.123456) |
DB2 Text (Null Terminated) |
Varchar |
255-32767 |
SQL_VARCHAR |
255+ byte variable-length binary (defined as VARCHAR/LONG VARCHAR) |
DB2 Text (Right Space Padded) |
Char |
1-254 |
SQL_CHAR |
1- to 254-byte fixed-length character |
DB2 Varbinary |
Varbinary |
255-32767 |
SQL_VARBINARY |
255+ byte variable-length binary (defined as VARCHAR/LONG VARCHAR FOR BIT DATA) |