Showing posts with label SQL. Show all posts
Showing posts with label SQL. Show all posts

Wednesday, May 6, 2015

Sintaks Dasar SQL dalam MySQL

Disini hanya akan diberikan pengenalan tentang sintaks SQL dalam MySQL yang sederhana dan paling sering digunakan baik untuk penggunaan biasa ataupun untuk administratif.




Berikut adalah beberapa sintaks dasar SQL dalam MySQL
  1. Level Database
    • Membuat databaseUntuk membuat database baru, sehingga tidak berlaku jika database sudah ada atau anda tidak memiliki  privilege.
      Sintaksnya :

      CREATE DATABASE
       nama_db
    • Menghapus databaseUntuk menghapus database beserta seluruh table di dalamnya. Perintah ini tidak berlaku jika database tidak ada atau anda tidak memiliki  privilege.

      Sintaksnya :

      DROP DATABASE nama_db
    • Menggunakan databaseUntuk menjadikan database menjadi default dan referensi dari table yang nantinya anda gunakan. Perintah ini tidak berlaku jika database tidak ada atau anda tidak memiliki  privilege. 

      Sintaksnya :

      USE nama_db
    • Menampilkan database
      Untuk menampilkan daftar yang ada dalam system saat itu. 

      Sintaksnya :


      SHOW DATABASES

    1. Level Tabel

      • Membuat tableUntuk membuat table minimal anda harus menentukan namanya dan tipe kolom yang anda inginkan.
        Sintaks yang paling sederhana (tanpa ada definisi lain) adalah :

        CREATE TABLE nama_tbl
        (kolom1 tipekolom1(),kolom2 tipekolom2(), …)
        Contoh :
        Anda ingin membuat table dengan nama
        profil yang memiliki kolom nama (bertipe char, lebar 20), kolom umur (bertipe integer), kolom jenis_kelamin (bertipe enum, berisi M dan F). 

        CREATE TABLE profil ( nama CHAR(20),
         umur INT NOT NULL,

         jenis_kelamin ENUM(‘F’,’M’)
         )


        Sedangkan perintah yang agak lengkap dalam membuat sebuah table adalah dengan menyertakan definisi tertentu. Misalnya perintah seperti ini :


        CREATE TABLE peserta (
         No SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
         Nama CHAR(30) NOT NULL,
         BidangStudi ENUM(‘TS’,’WD’) NOT NULL,               
         PRIMARY KEY (No),
                       
         INDEX (Nama, BidangStudi) 
        )


        Perintah di atas berarti membuat table peserta dengan kolom
        No sebagai PRIMARY KEY yaitu indeks table yang unik yang tidak bisa diduplikat dengan atribut AUTO_INCREMENT yaitu kolom yang otomatis dapat mengurutkan angka yang diisikan padanya. Sedangkan kolom Nama dan BidangStudi dijadikan indeks biasa.
      • Membuat indeks pada tableMenambahkan indeks pada table yang sudah ada baik yang unik ataupun yang biasa.
        S
        intaksnya :

               CREATE INDEX nama_index ON nama_tbl (nama_kolom)
      • Menghapus tableUntuk menghapus table dalam database tertentu. Jika dilakukan maka semua isi, indeks dan atribut lain akan terhapus.
        Sintaksnya :


                    
        DROP TABLE nama_tbl
      • Menghapus indeksUntuk menghapus indeks pada suatu table.
        Sintaksnya :

               DROP INDEX nama-index ON nama_tbl
      • Melihat informasi tableUntuk melihat table apa saja yang ada di database tertentu.
        Sintaksnya :

        SHOW TABLES FROM nama_db


        Sedangkan untuk melihat deskripsi table atau informasi tentang kolom gunakan sintaks :        


        DESC nama_tbl nama_kolom

        atau


        SHOW COLUMNS FROM nama_tbl FROM nama_db
      • Mendapatkan atau menampilkan informasi dari tableUntuk menampilkan isi table dengan option-option tertentu. Misalnya untuk menampilkan seluruh isi table digunakan :
        SELECT * FROM nama_tbl

        Untuk menampilkan kolom-kolom tertentu saja :

        SELECT kolom1,kolom2,... FROM nama_tbl

        Untuk menampilkan isi suatu kolom dengan kondisi tertentu

        SELECT kolom1 FROM nama_tbl WHERE kolom2=isikolom
      • Modifikasi struktur tableDapat digunakan untuk mengganti nama table atau mengubah strukturnya seperti manambah kolom atau indeks, menghapus kolom atau indeks, mengubah tipe kolom dsb. Sintaks umum :

        ALTER TABLE nama_tbl action
        Untuk menambah kolom baru di tempat tertentu dapat menggunakan :
        ALTER TABLE nama_tbl
        ADD kolom_baru type() definisi
        Untuk menambah
        kolom_baru bertipe integer setelah kolom1 digunakan :

        ALTER TABLE nama_tbl
        ADD kolom_baru INT NOT NULL AFTER kolom1
        Untuk menambah indeks baru pada table tertentu baik yang unik ataupun yang biasa:

        ALTER TABLE nama_tbl ADD INDEX nama_index (nama_kolom)

        ALTER TABLE nama_tbl ADD UNIQUE nama_indeks (nama_kolom)

        ALTER TABLE nama_tbl ADD PRIMARY KEY nama_indeks (nama_kolom)

        Untuk mengubah nama kolom dan definisinya, misalnya mengubah nama kolom_baru dengan tipe integer menjadi new_kolom dengan tipe char dengan lebar 30 digunakan:

        ALTER TABLE nama_tbl
        CHANGE kolom_baru new_kolom CHAR(30) NOT NULL


        Untuk menghapus suatu kolom dan seluruh atributnya, misal menghapus
        kolom1 :
        ALTER TABLE nama_tbl DROP kolom1

        Untuk menghapus indeks baik yang unik ataupun yang biasa digunakan :

        ALTER TABLE nama_tbl DROP nama_index
        ALTER TABLE nama_tbl DROP PRIMARY KEY
      • Modifikasi informasi dalam table.
        Untuk menambah record atau baris baru dalam table, sintaksnya :
        INSERT INTO nama_tbl (nama_kolom) VALUES (isi_kolom)
        atau INSERT INTO nama_tbl SET nama_kolom=isi_kolom
        Misalnya untuk menambah dua baris pada table 
        profil dengan isi  nama = deden & ujang  dan isi umur = 17 & 18 adalah :
        INSERT INTO profil (nama,umur) VALUES (deden,17), (ujang,18)

        atau
         
        INSERT INTO profil SET nama=deden, umur=17
        INSERT INTO profil SET nama=ujang, umur=18

        Untuk memodifikasi record atau baris yang sudah ada yang bersesuaian dengan suatu kolom. Misalnya untuk mengubah umur deden menjadi 18 pada contoh di atas dapat digunakan sintaks :

        UPDATE profil SET umur=18 WHERE nama=deden

        Untuk menghapus record atau baris tertentu dalam suatu table. Misalnya untuk menghapus baris yang ada nama ujang digunakan sintaks :

        DELETE FROM profil WHERE nama=ujang

        Jika WHERE tidak disertakan maka semua isi dalam table profil akan terhapus.
    2. Tipe-tipe data MySQL
      MySQL dapat mengetahui beberapa tipe data antara lain :
      • Data Numerik 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.
      • Data Karakter/StringMerupakan deretan huruf yang membentuk kata yang diapit oleh tanda petik (‘’) atau tanda petik ganda (“”).
      • Data WaktuMerupakan data yang berisi tanggal (date) dan jam (time) misalnya “2001-10-15” untuk tanggal dengan format YYYY-MM-DD dan “12:45:15” untuk jam dengan format hh:mm:ss.
      • Data kosong (NULL)NULL berarti kosong atau tidak diisi data atau bisa juga berarti data yang tidak jelas, data yang hilang ataupun yang lainnya.

    3. Tipe-tipe kolom MySQL
    4. Setiap table yang dibuat dalam database selalu terdiri atas kolom-kolom. Katika anda membuatnya dengan perintah CREATE TABLE, anda harus menentukan tipe masing-masing kolom. Tiap tipe kolom memiliki karakteristik berikut :
      • Jenis harga apa yang dapat diisikan
      • Berapa banyak ruang yang dapat menampung harga tersebut
      • Bagaimana harga dari tipe tersebut dibandingkan dan disaring
      • Apakah tipe tersebut boleh mengisi dengan NULL atau tidak
      • Apakah tipe tersebut boleh diindeks atau tidak
      Secara garis besar kolom MySQL terbagi menjadi tiga tipe yaitu :
      • Tipe kolom Numerik
      • Tipe kolom Karakter/String
      • Tipe kolom Waktu
      Selanjutnya akan dijelaskan dengan singkat anggota-anggotanya.

    5. Tipe Numerik
    6. 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.
      • TINYINTBerarti integer dengan range yang sangat kecil yaitu –27 sampai 27-1 atau 0 sampai 28-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.
      • SMALLINT
        Berarti integer dengan range yang kecil yaitu –215 sampai 215-1 atau 0 sampai 216-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.
      • MEDIUMINTBerarti integer dengan range yang sangat kecil yaitu –223 sampai 223-1 atau 0 sampai 224-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.
      • INTBerarti integer dengan range yang normal yaitu –231 sampai 231-1 atau 0 sampai 232-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.
      • BIGINTBerarti integer dengan range yang sangat kecil yaitu –263 sampai 263-1 atau 0 sampai 264-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.
      • 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.
      • 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.
      • DECIMAL(M,D) atau NUMERIC(M,D)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 M byte. Jika D diisi 0 berarti tidak punya nilai desimal.

    7. Tipe String
       CHAR(M)
    8. Karakter dengan panjang 0 sampai M byte. Atribut yang dibolehkan adalah BINARY. Harga default adalah NULL jika bisa atau “ “ jika NOT NULL. Tempat pemyimpanan M byte.

      VARCHAR
      Variabel karakter dengan panjang 0 sampai M byte. Atribut yang dibolehkan adalah BINARY. Harga default adalah NULL jika bisa atau “ “ jika NOT NULL. Tempat pemyimpanan M+1 byte.

      TINYTEXT
      Teks berukuran kecil dengan panjang 0 sampai 28-1 byte. Harga default adalah NULL jika bisa atau “ “ jika NOT NULL. Tempat penyimpanan sebanyak panjang harga plus 1 byte.

      TEXT
      Teks yang normal dengan panjang 0 sampai 216-1 byte. Harga default adalah NULL jika bisa atau “ “ jika NOT NULL. Tempat penyimpanan sebanyak panjang harga plus 2 byte.

      MEDIUMTEXT
      Teks berukuran sedang dengan panjang 0 sampai 224-1 byte. Harga default adalah NULL jika bisa atau “ “ jika NOT NULL. Tempat penyimpanan sebanyak panjang harga plus 3 byte.

      LONGTEXT
      Teks berukuran besar dengan panjang 0 sampai 232-1 byte. Harga default adalah NULL jika bisa atau “ “ jika NOT NULL. Tempat penyimpanan sebanyak panjang harga plus 4 byte.

      ENUM(“harga1”,”harga2”,…)
      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.

      SET(“harga1”,”harga2”,…)
      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.

    9. Tipe WaktuDATE
    10. 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.

      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.
      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.

      TIMESTAMP
      Hampir sama dengan DATETIME tapi dengan format YYYYMMDDhhmmss dan range antara 19700101000000 sampai suatu saat di tahun 2037. Harga default adalah hari dan jam saat itu. Tempat penyimpanan 4 byte.

      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.

    Tuesday, May 5, 2015

    SQL (STRUCTURE QUERY LANGUAGE)


    Structured Query Language (SQL) merupakan komponen bahasa relational database system. SQL merupakan bahasa baku (ANSI/SQL), non procedural, dan berorientasi pada himpunan. SQL dapat digunakan baik secara interaktifatau ditempelkan pada sebuahprogram aplikasi.

    Komponen-Komponen SQL
    • Data Definition Language (DDL):digunakan untuk mendefinisikan  data dengan menggunakan perintah :  create, drop, alter.
    • DataManipulation Language (DML): Digunakan untuk memanipulasi data dengan menggunakan perintah: select, insert, update, delete. Data Manipulation Language merupakan bagian terpadu bahasa SQL. Perintah-perintahnya dapat dibuat secara interaktif atau ditempelkan pada sebuah program aplikasi. Pemakai  hanya  perlu  menentukan 'APA' yang  ia  inginkan, DBMS menentukan 'BAGAIMANA' cara mendapatkannya.
    • Data ControlLanguage (DCL): Digunakan untuk mengontrol hak para  pemakai data dengan perintah:  grant,   revoke

    DDL
    Perintah-perintah pada DDL dapat dijabarkan sebagai berikut:
    1. CREATE TABLE Perintah CREATE TABLE berfungsi untuk membuat tabel.
      Sintaks :

      CREATE TABLE tbname
          (col 1 data type data spec,
           c
      ol 2  data type  data spec,     PRIMARY KEY (col1,……)
          )

      Contoh :

      C
      REATE TABLE MAHASISWA  (
      NPM  CHAR(8)  NOT NULL,
         
      NAMA   CHAR(45)  NOT NULL,
         
      ALAMAT   CHAR(45),
        
      TGL-LAHIR  DATE   NOT NULL WITH DEFAULT,
         
      PRIMARY KEY (NPM)
        )


      Pernyataan NULL yang digunakan dapat dispesifikasikan sebagai berikut:

      NULL
      NULL dapat diinterpretasikan sebagai nilai yang tidak diketahui atau tidak tersedianya suatu nilai. NULL bukan berarti kosong (blank) atau 0 (Nol).
      NOT NULL

      NOT NULL dimana pemakai atau program harus memberikan nilai-nilai pada saat memasukkan record

      NOT NULL WITH DEFAULT

      Nilai default disimpan pada saat record dimasukkan tanpa nilai yang ditentukan untuk kolom ini

      Nilai default-nya :
      Nol, untuk tipe field NUMERIC Blank, untuk tipe field CHARACTER
      CURRENT
      DATE, untuk tipe field DATE
      CURRENT
       TIME, untuk tipe field TIME
      P
      ada saat membuat tabel, salah satu atribut tersebut di atas dispesifikasikan pada sebuah kolom.
    2. CREATE VIEWPerintah CREATE VIEW berfungsi untuk membuat tabel view. View merupakan bentuk alternatif penyajian data dari satu atau lebih tabel. View dapat berisi semua atau sebagian kolom yang terdapat pada tabel dimana kolom tersebut didefinisikan.

      Tujuan membuat view:

      - Meningkatkan keamanan data- Meningkatkan kemandirian data- Penyederhanaan  bagi end  user (data   yang  sedikit,  nama-nama kolom yang baru dan dapat dibaca dengan lebih baik)

      Properti :

      § Tidak terdapatnya data tambahan§ View mencakup subset kolom dan / atau baris§ View dapat berisikan data dari beberapa tabel dan / atau tabel-tabel view lainnya§ View dapat berisikan perolehan data, misal : nilai rata-rata§ Manipulasi data melalui view terbatas

      Sintaks:

               CREATE VIEW  viewname (column1, column2, ……..)
                                          AS SELECT statement FROM tbname
                                          [WITH CHECK OPTION]

      Keterangan :
         -        View-name     : nama view yang akan dibuat.
         -        Column          : nama atribut untuk view
         -        Statement       : atribut yang dipilih dari tabel basis data.
         -        Tbname          : nama tabel basis data.

      Contoh :
                  CREATE VIEW VMHS (NPM, NAMA)
                  AS SELECT  NPM, NAMA FROM MAHASISWA
    3. CREATE INDEX Perintah CREATE INDEX berfungsi untuk  membuat tabel index.

      Sintaks :
               CREATE [UNIQUE] INDEX indexname
                                          ON nama_table (nama_kolom)

      Contoh :

                CREATE UNIQUE INDEX MHSIDX ON MAHASISWA(NPM)

      Dengan indeks memungkinkan suatu tabel diakses dengan urutan tertentu tanpa harus merubah urutan fisik dari datanya dan dapat pula diakses secara cepat melalui indeks yang dibuat berdasar nilai field tertentu. Spesifikasi  UNIQUE akan menolak key yang sama dalam file.

    4. DROP TABLEPerintah DROP TABLE berfungsi untuk menghapus tabel.

      Sintaks:
          DROP TABLE tbname

      Contoh:
          DROP TABLE MAHASISWA

      Dengan perintah itu obyek lain yang berhubungan dengan tabel tersebut otomatis akan dihapus atau tidak akan berfungsi seperti :
          -       semua record dalam tabel akan terhapus
          -       index dan view pada tabel akan hilang
          -       deskripsi tabel akan hilang

    5. DROP VIEW Perintah DROP VIEW berfungsi untuk menghapus view.

      Sintaks :
         DROP VIEW viewname

      Contoh :
         DROP VIEW VMHS
    6. DROP INDEX Perintah DROP INDEX berfungsi untuk menghapus index.
      Sintaks :
          DROP INDEX indexname

      Contoh :  
                  DROP INDEX MHSIDX
    7. ALTER Perintah ALTER berfungsi untuk merubah atribut pada suatu tabel.
      Sintaks :
               ALTER TABLE  tbname
                             MODIFY (nama_kolom  tipe_kolom)
                             ADD  (nama_kolom   tipe_kolom [[before, nama_kolom]])
                             DROP (nama_kolom  tipe_kolom)

      Contoh :
          merubah Tabel TABX dengan menambah Field D.
         
          ALTER TABLE TABX ADD D CHAR(3)


    DML Perintah-perintah pada DML dapat dijabarkan sebagai berikut:

    1. INSERT Perintah INSERT berfungsi untuk menambah baris (record) baru.
      Sintaks :
               INSERT INTO tbname
                              (col1, ...) VALUES (value1, ...)

      Catatan :
      Sintaks tersebut dapat digunakan jika jumlah kolom = jumlah nilai, tetapi jika dalam tabel semua kolom akan diisi dapat digunakan sintaks berikut ini :

      Sintaks :
               INSERT INTO tbname
                              VALUES (value1, value2, ...)

      Nilai-nilai diisikan sebanyak kolom yang terdapat di tabel tersebut.

      Contoh :
      pada tabel MAHASISWA akan ditambahkan record mahasiswa baru.

      INSERT INTO MAHASISWA
      VALUES (‘00105543’,’MUHAMMAD ADI’,JL. MERUYA NO.100, JAKARTA’,02-02-1990)

    2. UPDATEPerintah UPDATE berfungsi untuk merubah record.
      Sintaks :
               UPDATE tbname
                              SET field = ekspresi
                              WHERE kondisi
      Contoh :
      akan diubah nama mahasiswa dari MUHAMMAD ADI dengan NPM 00105432 menjadi MUHAMMAD ALI

      UPDATE MAHASISWA
      SET nama =’MUHAMMAD ALI’
      WHERE NPM=’00105432’

    3. DELETEPerintah DELETE berfungsi untuk menghapus record.
      Sintaks :
               DELETE FROM tbname
                              WHERE kondisi
      Contoh :
      akan dihapus data mahasiswa dengan NPM 0010500

      DELETE FROM MAHASISWA
      WHERE NPM=’00105004

    4. SELECTPerintah SELECT berfungsi untuk menampilkan record.
      Sintaks :
               SELECT [DISTINCT] colname FROM  tbname
                              [WHERE kondisi]
                              [GROUP BY kondisi]
                              [HAVING kondisi]
                              [ORDER BY kondisi]
    DCL
    Berikut ini adalah perintah-perintah pada DCL :
    1. GRANTPerintah GRANT berfungsi untuk memberikan izin akses kepada pemakai.Sintaks :
          GRANT privileges ON tbname TO user

      Contoh :

      GRANT SELECT ON CLUB TO PUBLIC
      GRANT SELECT, INSERT, UPDATE, DELETE ON CLUB TO USER01
    2. REVOKEPerintah REVOKE berfungsi untuk mencabut izin akses kepada pemakai.
      Sintaks :
          REVOKE privileges ON tbname FROM user

      Contoh :

      REVOKE INSERT, UPDATE, DELETE ON CLUB FROM USER01
      REVOKE ALL ON CLUB FROM PUBLIC

    Tag :