MySQLi - Panduan Cepat

Apa itu Database?

Database adalah aplikasi terpisah yang menyimpan kumpulan data. Setiap database memiliki satu atau lebih API berbeda untuk membuat, mengakses, mengelola, mencari, dan mereplikasi data yang dimilikinya.

Jenis penyimpanan data lain dapat digunakan, seperti file pada sistem file atau tabel hash yang besar dalam memori tetapi pengambilan dan penulisan data tidak akan secepat dan mudah dengan jenis sistem tersebut.

Jadi saat ini, kami menggunakan sistem manajemen basis data relasional (RDBMS) untuk menyimpan dan mengelola data dalam jumlah besar. Ini disebut database relasional karena semua data disimpan ke dalam tabel yang berbeda dan relasi dibuat menggunakan kunci primer atau kunci lain yang disebut kunci asing.

SEBUAH Relational DataBase Management System (RDBMS) adalah perangkat lunak yang -

  • Memungkinkan Anda untuk mengimplementasikan database dengan tabel, kolom, dan indeks.

  • Menjamin Integritas Referensial antara baris berbagai tabel.

  • Memperbarui indeks secara otomatis.

  • Menafsirkan kueri SQL dan menggabungkan informasi dari berbagai tabel.

Terminologi RDBMS

Sebelum kita melanjutkan untuk menjelaskan sistem database MySQLi, mari kita revisi beberapa definisi yang terkait dengan database.

  • Database - Database adalah kumpulan tabel, dengan data terkait.

  • Table- Tabel adalah matriks dengan data. Tabel dalam database terlihat seperti spreadsheet sederhana.

  • Column - Satu kolom (elemen data) berisi data yang satu jenis, misalnya kode pos kolom.

  • Row - Baris (= tuple, entry atau record) adalah sekelompok data terkait, misalnya data satu langganan.

  • Redundancy - Menyimpan data dua kali, secara berlebihan untuk membuat sistem lebih cepat.

  • Primary Key- Kunci utama itu unik. Nilai kunci tidak dapat muncul dua kali dalam satu tabel. Dengan kunci, Anda dapat menemukan paling banyak satu baris.

  • Foreign Key - Kunci asing adalah pin penghubung antara dua tabel.

  • Compound Key - Kunci majemuk (kunci komposit) adalah kunci yang terdiri dari beberapa kolom, karena satu kolom tidak cukup unik.

  • Index - Indeks dalam database menyerupai indeks di bagian belakang buku.

  • Referential Integrity - Integritas Referensial memastikan bahwa nilai kunci asing selalu mengarah ke baris yang ada.

Database MySQLi

MySQLi adalah RDBMS yang cepat dan mudah digunakan yang digunakan untuk banyak bisnis kecil dan besar. Ekstensi MySQLi dikembangkan, dipasarkan, dan didukung oleh MySQL. MySQL menjadi sangat populer karena banyak alasan bagus -

  • MySQLi dirilis di bawah lisensi sumber terbuka. Jadi, Anda tidak perlu membayar untuk menggunakannya.

  • MySQLi adalah program yang sangat kuat dengan sendirinya. Ini menangani sebagian besar fungsionalitas dari paket database yang paling mahal dan kuat.

  • MySQLi menggunakan bentuk standar dari bahasa data SQL yang terkenal.

  • MySQLi bekerja pada banyak sistem operasi dan dengan banyak bahasa termasuk PHP, PERL, C, C ++, JAVA, dll.

  • MySQLi bekerja dengan sangat cepat dan bekerja dengan baik bahkan dengan kumpulan data yang besar.

  • MySQLi sangat bersahabat dengan PHP, bahasa yang paling dihargai untuk pengembangan web.

  • MySQLi mendukung database besar, hingga 50 juta baris atau lebih dalam satu tabel. Batas ukuran file default untuk tabel adalah 4GB, tetapi Anda dapat meningkatkannya (jika sistem operasi Anda dapat menanganinya) hingga batas teoritis 8 juta terabyte (TB).

  • MySQLi dapat disesuaikan. Lisensi GPL open-source memungkinkan pemrogram untuk memodifikasi perangkat lunak MySQL agar sesuai dengan lingkungan spesifik mereka sendiri.

Sebelum kamu memulai

Sebelum Anda memulai tutorial ini, Anda harus memiliki pengetahuan dasar tentang informasi yang tercakup dalam tutorial PHP dan HTML kami.

Tutorial ini sangat berfokus pada penggunaan MySQLi di lingkungan PHP. Banyak contoh yang diberikan dalam tutorial ini akan berguna bagi Pemrogram PHP.

Kami menyarankan Anda memeriksa Tutorial PHP kami untuk referensi Anda.

Mendownload MySQL

Ekstensi MySQLi dirancang untuk bekerja dengan MySQL versi 4.1.13 atau yang lebih baru, Jadi harus mengunduh MySQL. Semua unduhan untuk MySQL berada di Unduhan MySQL . Pilih nomor versi terbaru untuk MySQL Community Server yang Anda inginkan dan, sedapat mungkin, platform yang Anda inginkan.

Menginstal MySQL di Linux / UNIX

Cara yang disarankan untuk menginstal MySQL di sistem Linux adalah melalui RPM. MySQL AB membuat RPM berikut tersedia untuk diunduh di situs webnya -

  • MySQL - Server database MySQL, yang mengelola database dan tabel, mengontrol akses pengguna, dan memproses kueri SQL.

  • MySQL-client - Program klien MySQL, yang memungkinkan untuk terhubung dan berinteraksi dengan server.

  • MySQL-devel - Pustaka dan file header yang berguna saat menyusun program lain yang menggunakan MySQL.

  • MySQL-shared - Perpustakaan bersama untuk klien MySQL.

  • MySQL-bench - Tolok ukur dan alat pengujian kinerja untuk server database MySQL.

RPM MySQL yang tercantum di sini semuanya dibangun di atas sistem Linux SuSE, tetapi biasanya akan berfungsi pada varian Linux lainnya tanpa kesulitan.

Sekarang, ikuti langkah-langkah berikut untuk melanjutkan instalasi -

  • Masuk ke sistem menggunakan root pengguna.

  • Beralih ke direktori yang berisi RPM -

  • Instal server database MySQL dengan menjalankan perintah berikut. Ingatlah untuk mengganti nama file yang dicetak miring dengan nama file RPM Anda.

[root@host]# rpm -i MySQL-5.0.9-0.i386.rpm

    Perintah di atas menangani instalasi server MySQL, membuat pengguna MySQL, membuat konfigurasi yang diperlukan, dan memulai server MySQL secara otomatis.

    Anda dapat menemukan semua binari terkait MySQL di / usr / bin dan / usr / sbin. Semua tabel dan database akan dibuat di direktori / var / lib / mysql.

  • Ini opsional tetapi langkah yang disarankan untuk menginstal RPM yang tersisa dengan cara yang sama -

[root@host]# rpm -i MySQL-client-5.0.9-0.i386.rpm
[root@host]# rpm -i MySQL-devel-5.0.9-0.i386.rpm
[root@host]# rpm -i MySQL-shared-5.0.9-0.i386.rpm
[root@host]# rpm -i MySQL-bench-5.0.9-0.i386.rpm

Menginstal MySQL di Windows

Instalasi default pada versi Windows apa pun sekarang jauh lebih mudah daripada sebelumnya, karena MySQL sekarang dikemas rapi dengan penginstal. Cukup unduh paket penginstal, unzip di mana saja, dan jalankan setup.exe.

Setup.exe penginstal default akan memandu Anda melalui proses sepele dan secara default akan menginstal semuanya di bawah C: \ mysql.

Uji server dengan mengaktifkannya dari prompt perintah untuk pertama kali. Pergi ke lokasi server mysqld yang mungkin C: \ mysql \ bin, dan ketik -

mysqld.exe --console

NOTE - Jika Anda menggunakan NT, maka Anda harus menggunakan mysqld-nt.exe daripada mysqld.exe

Jika semua berjalan lancar, Anda akan melihat beberapa pesan tentang startup dan InnoDB. Jika tidak, Anda mungkin mengalami masalah izin. Pastikan bahwa direktori yang menyimpan data Anda dapat diakses oleh pengguna mana pun (mungkin mysql) yang menjalankan proses database.

MySQL tidak akan menambahkan dirinya sendiri ke menu mulai, dan tidak ada cara GUI yang bagus untuk menghentikan server. Oleh karena itu, jika Anda cenderung memulai server dengan mengklik ganda mysqld yang dapat dieksekusi, Anda harus ingat untuk menghentikan proses secara manual dengan menggunakan mysqladmin, Daftar Tugas, Pengelola Tugas, atau cara khusus Windows lainnya.

Memverifikasi Instalasi MySQL

Setelah MySQL berhasil diinstal, tabel dasar telah diinisialisasi, dan server telah dimulai, Anda dapat memverifikasi bahwa semuanya berfungsi sebagaimana mestinya melalui beberapa tes sederhana.

Gunakan Utilitas mysqladmin untuk Mendapatkan Status Server

Menggunakan mysqladminbiner untuk memeriksa versi server. Biner ini akan tersedia di / usr / bin di linux dan di C: \ mysql \ bin di windows.

[root@host]# mysqladmin --version

Ini akan menghasilkan hasil berikut di Linux. Ini mungkin berbeda tergantung pada instalasi Anda -

mysqladmin  Ver 8.23 Distrib 5.0.9-0, for redhat-linux-gnu on i386

Jika Anda tidak mendapatkan pesan seperti itu, mungkin ada masalah dalam instalasi Anda dan Anda memerlukan bantuan untuk memperbaikinya.

Jalankan perintah SQL sederhana menggunakan Klien MySQL

Anda dapat terhubung ke server MySQL Anda dengan menggunakan klien MySQL menggunakan mysqlperintah. Saat ini, Anda tidak perlu memberikan kata sandi apa pun karena secara default akan dikosongkan.

Jadi gunakan saja perintah berikut

[root@host]# mysql

Itu harus dihargai dengan prompt mysql>. Sekarang, Anda terhubung ke server MySQL dan Anda dapat menjalankan semua perintah SQL di mysql> prompt sebagai berikut -

mysql> SHOW DATABASES;
+----------+
| Database |
+----------+
| mysql    |
| test     |
+----------+
2 rows in set (0.13 sec)

Langkah-langkah Pasca-instalasi

MySQL dikirimkan dengan kata sandi kosong untuk pengguna root MySQL. Segera setelah Anda berhasil menginstal database dan klien, Anda perlu mengatur kata sandi root sebagai berikut -

[root@host]# mysqladmin -u root password "new_password";

Sekarang untuk membuat koneksi ke server MySQL Anda, Anda harus menggunakan perintah berikut -

[root@host]# mysql -u root -p
Enter password:*******

Pengguna UNIX juga ingin meletakkan direktori MySQL Anda di PATH Anda, jadi Anda tidak perlu terus mengetikkan jalur lengkap setiap kali Anda ingin menggunakan klien baris perintah. Untuk pesta, itu akan menjadi seperti -

export PATH = $PATH:/usr/bin:/usr/sbin

Menjalankan MySQL saat boot

Jika Anda ingin menjalankan server MySQL saat boot, pastikan Anda telah mengikuti entri di file /etc/rc.local.

/etc/init.d/mysqld start

Juga, Anda harus memiliki biner mysqld di direktori /etc/init.d/.

Menjalankan dan Mematikan Server MySQLi

MySQLi adalah perpanjangan dari MySQL jadi periksa dulu apakah server MySQL Anda berjalan atau tidak. Anda dapat menggunakan perintah berikut untuk memeriksa ini -

ps -ef | grep mysqld

Jika MySql Anda aktif, Anda akan melihat mysqldproses yang tercantum dalam hasil Anda. Jika server tidak berjalan, Anda dapat memulainya dengan menggunakan perintah berikut−

root@host# cd /usr/bin
./safe_mysqld &

Sekarang, jika Anda ingin mematikan server MySQL yang sudah berjalan, Anda dapat melakukannya dengan menggunakan perintah berikut -

root@host# cd /usr/bin
./mysqladmin -u root -p shutdown
Enter password: ******

Menyiapkan Akun Pengguna MySQLi

Untuk menambahkan pengguna baru ke MySQLi Yang merupakan versi perbaikan dari MySQL, Anda hanya perlu menambahkan entri baru ke user tabel dalam database mysql.

Di bawah ini adalah contoh menambahkan pengguna baru guest dengan hak istimewa SELECT, INSERT dan UPDATE dengan password guest123; kueri SQL adalah -

root@host# mysql -u root -p
Enter password:*******
mysql> use mysql;
Database changed

mysql> INSERT INTO user (
   host, user, password, select_priv, insert_priv, update_priv) 
   VALUES ('localhost', 'guest', PASSWORD('guest123'), 'Y', 'Y', 'Y');

Query OK, 1 row affected (0.20 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 1 row affected (0.01 sec)

mysql> SELECT host, user, password FROM user WHERE user = 'guest';
+-----------+---------+------------------+
| host      | user    | password         |
+-----------+---------+------------------+
| localhost | guest | 6f8c114b58f2ce9e |
+-----------+---------+------------------+
1 row in set (0.00 sec)

Saat menambahkan pengguna baru, ingatlah untuk mengenkripsi kata sandi baru menggunakan fungsi PASSWORD () yang disediakan oleh MySQL. Seperti yang Anda lihat pada contoh di atas, sandi mypass dienkripsi ke 6f8c114b58f2ce9e.

Perhatikan pernyataan FLUSH PRIVILEGES. Ini memberitahu server untuk memuat ulang tabel hibah. Jika Anda tidak menggunakannya, maka Anda tidak akan dapat terhubung ke mysql menggunakan akun pengguna baru setidaknya sampai server di-boot ulang.

Anda juga dapat menentukan hak istimewa lain untuk pengguna baru dengan menyetel nilai kolom berikut di tabel pengguna ke 'Y' saat menjalankan kueri INSERT atau Anda dapat memperbaruinya nanti menggunakan kueri UPDATE.

  • Select_priv
  • Insert_priv
  • Update_priv
  • Delete_priv
  • Create_priv
  • Drop_priv
  • Reload_priv
  • Shutdown_priv
  • Process_priv
  • File_priv
  • Grant_priv
  • References_priv
  • Index_priv
  • Alter_priv

Cara lain untuk menambahkan akun pengguna adalah dengan menggunakan perintah GRANT SQL; contoh berikut akan menambah penggunazara dengan kata sandi zara123 untuk database tertentu yang disebut TUTORIALS.

root@host# mysql -u root -p password;
Enter password:*******
mysql> use mysql;
Database changed

mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
   -> ON TUTORIALS.*
   -> TO 'zara'@'localhost'
   -> IDENTIFIED BY 'zara123';

Ini juga akan membuat entri dalam tabel database mysql yang disebut user.

NOTE - MySQL tidak menghentikan perintah sampai Anda memberikan titik koma (;) di akhir perintah SQL.

Konfigurasi File /etc/my.cnf

Sebagian besar kasus, Anda tidak boleh menyentuh file ini. Secara default, ini akan memiliki entri berikut -

[mysqld]
datadir = /var/lib/mysql
socket = /var/lib/mysql/mysql.sock

[mysql.server]
user = mysql
basedir = /var/lib

[safe_mysqld]
err-log = /var/log/mysqld.log
pid-file = /var/run/mysqld/mysqld.pid

Di sini, Anda dapat menentukan direktori lain untuk log kesalahan, jika tidak, Anda tidak boleh mengubah entri apa pun dalam tabel ini.

Perintah MySQLi Administratif

Berikut adalah daftar perintah penting MySQLi, yang akan Anda gunakan dari waktu ke waktu untuk bekerja dengan database MySQL -

  • USE Databasename - Ini akan digunakan untuk memilih database tertentu di area kerja MySQLi.

  • SHOW DATABASES - Mencantumkan database yang dapat diakses oleh DBMS MySQLi.

  • SHOW TABLES - Menampilkan tabel dalam database setelah database dipilih dengan perintah penggunaan.

  • SHOW COLUMNS FROM tablename - Menunjukkan atribut, jenis atribut, informasi kunci, apakah NULL diizinkan, default, dan informasi lain untuk tabel.

  • SHOW INDEX FROM tablename - Menyajikan detail semua indeks di atas tabel, termasuk KUNCI UTAMA.

  • SHOW TABLE STATUS LIKE tablename\G - Laporan detail kinerja dan statistik MySQLi DBMS.

MySQLi bekerja dengan sangat baik dalam kombinasi berbagai bahasa pemrograman seperti PERL, C, C ++, JAVA dan PHP. Dari bahasa-bahasa ini, PHP adalah yang paling populer karena kemampuan pengembangan aplikasi webnya.

Tutorial ini sangat berfokus pada penggunaan MySQLi di lingkungan PHP. PHP menyediakan berbagai fungsi untuk mengakses database MySQLi dan untuk memanipulasi catatan data di dalam database MySQLi. Anda perlu memanggil fungsi PHP dengan cara yang sama seperti Anda memanggil fungsi PHP lainnya.

Fungsi PHP untuk digunakan dengan MySQLi memiliki format umum berikut -

mysqli_function(value,value,...);

Bagian kedua dari nama fungsi dikhususkan untuk fungsi tersebut, biasanya sebuah kata yang menjelaskan fungsi dari fungsi tersebut. Berikut ini adalah dua fungsi, yang akan kita gunakan dalam tutorial kita -

mysqli_connect($connect);
mysqli_query($connect,"SQL statement");

Contoh berikut menunjukkan sintaks umum PHP untuk memanggil fungsi MySQLi apa pun.

<html>
   <head>
      <title>PHP with MySQLi</title>
   </head>
   
   <body>
      <?php
         $retval = mysqli_function(value, [value,...]);
         if( !$retval ){
            die ( "Error: a related error message" );
         }
         // Otherwise MySQLi  or PHP Statements
      ?>
   </body>
</html>

Mulai dari bab selanjutnya, kita akan melihat semua fungsionalitas MySQLi yang penting bersama dengan PHP.

Koneksi MySQLi menggunakan biner mysql

Anda dapat membuat database MySQLi menggunakan mysql biner pada prompt perintah.

Contoh

Berikut adalah contoh sederhana untuk terhubung ke server MySQL untuk membuat database mysqli dari command prompt -

[root@host]# mysql -u root -p
Enter password:******

Ini akan memberi Anda mysql> command prompt di mana Anda akan dapat menjalankan perintah SQL apa pun. Berikut adalah hasil dari perintah di atas -

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2854760 to server version: 5.0.9

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

Dalam contoh di atas, kami telah menggunakan rootsebagai pengguna tetapi Anda dapat menggunakan pengguna lain. Setiap pengguna akan dapat melakukan semua operasi SQL, yang diizinkan untuk pengguna tersebut.

Anda dapat memutuskan koneksi dari database MySQL kapan saja menggunakan exit perintah di mysql> prompt.

mysql> exit
Bye

Koneksi MySQLi menggunakan Script PHP

PHP menyediakan mysqli_connect()berfungsi untuk membuka koneksi database. Fungsi ini mengambil lima parameter dan mengembalikan pengenal tautan MySQLi jika berhasil atau SALAH saat gagal.

Sintaksis

connection mysqli_connect(server,user,passwd,new_link,client_flag);

Sr.No. Parameter & Deskripsi
1

server

Opsional - Nama host yang menjalankan server database. Jika tidak ditentukan, maka nilai defaultnya adalahlocalhost:3306.

2

user

Opsional - Nama pengguna mengakses database. Jika tidak ditentukan, maka defaultnya adalah nama pengguna yang memiliki proses server.

3

passwd

Opsional - Kata sandi pengguna yang mengakses database. Jika tidak ditentukan, maka defaultnya adalah kata sandi kosong.

4

new_link

Opsional - Jika panggilan kedua dilakukan ke mysqli_connect () dengan argumen yang sama, tidak ada koneksi baru yang akan dibuat; sebagai gantinya, pengenal dari koneksi yang sudah dibuka akan dikembalikan.

5

client_flags

Opsional - Kombinasi dari konstanta berikut -

  • MYSQLI_CLIENT_SSL - Gunakan enkripsi SSL
  • MYSQLI_CLIENT_COMPRESS - Gunakan protokol kompresi
  • MYSQLI_CLIENT_IGNORE_SPACE - Beri spasi setelah nama fungsi
  • MYSQLI_CLIENT_INTERACTIVE - Izinkan detik timeout interaktif tidak aktif sebelum menutup koneksi

Anda dapat memutuskan koneksi dari database MySQLi kapan saja menggunakan fungsi PHP lainnya mysqli_close(). Fungsi ini mengambil satu parameter, yaitu koneksi yang dikembalikan olehmysqli_connect() fungsi.

Sintaksis

bool mysqli_close ( resource $link_identifier );

Jika sumber daya tidak ditentukan maka database yang terakhir dibuka ditutup. Fungsi ini mengembalikan nilai true jika menutup koneksi dengan sukses jika tidak maka mengembalikan nilai salah.

Contoh

Coba contoh berikut untuk terhubung ke server MySQL -

<html>
   <head>
      <title>Connecting MySQLi Server</title>
   </head>
   
   <body>
      <?php
         $dbhost = 'localhost:3306'; $dbuser = 'guest';
         $dbpass = 'guest123'; $conn = mysqli_connect($dbhost, $dbuser, $dbpass); if(! $conn ){
            die('Could not connect: ' . mysqli_error());
         }
         echo 'Connected successfully';
         mysqli_close($conn);
      ?>
   </body>
</html>

Jika contoh di atas terhubung dengan MySQLi, maka outputnya akan seperti ini di browser Anda -

Connected successfully

Buat Database menggunakan mysqladmin

Anda memerlukan hak khusus untuk membuat atau menghapus database MySQLi. Jadi dengan asumsi Anda memiliki akses ke pengguna root, Anda dapat membuat database apa pun menggunakan mysqlmysqladmin biner.

Contoh

Berikut adalah contoh sederhana untuk membuat database bernama TUTORIALS -

[root@host]# mysqladmin -u root -p create TUTORIALS
Enter password:******

Ini akan membuat TUTORIAL database MySQLi.

Buat Database menggunakan PHP Script

PHP menggunakan mysqli_queryberfungsi untuk membuat atau menghapus database MySQLi. Fungsi ini mengambil dua parameter dan mengembalikan TRUE pada kesuksesan atau FALSE pada kegagalan.

Contoh

Coba contoh berikut untuk membuat database -

<html>
   <head>
      <title>Connecting MySQLi Server</title>
   </head>
   
   <body>
      <?php
         $dbhost = 'localhost:3306';
         $dbuser = 'root'; $dbpass = '<password here>';
         $conn = mysqli_connect($dbhost, $dbuser, $dbpass);
   
         if(! $conn ){ echo 'Connected failure<br>'; } echo 'Connected successfully<br>'; $sql = "CREATE DATABASE TUTORIALS";
         
         if (mysqli_query($conn, $sql)) {
            echo "Database created successfully";
         } else {
            echo "Error creating database: " . mysqli_error($conn); } mysqli_close($conn);
      ?>
   </body>
</html>

Jika database terhubung dan dibuat dengan sukses, maka output sampelnya harus seperti ini -

Connected successfully
Database created successfully

Jatuhkan Database menggunakan mysqladmin

Anda memerlukan hak khusus untuk membuat atau menghapus database MySQLi. Jadi dengan asumsi Anda memiliki akses ke pengguna root, Anda dapat membuat database apa pun menggunakan mysqlmysqladmin biner.

Berhati-hatilah saat menghapus database karena Anda akan kehilangan semua data yang tersedia di database Anda.

Berikut adalah contoh untuk menghapus database yang dibuat di bab sebelumnya -

[root@host]# mysqladmin -u root -p drop TUTORIALS
Enter password:******

Ini akan memberi Anda peringatan dan akan mengkonfirmasi apakah Anda benar-benar ingin menghapus database ini atau tidak.

Dropping the database is potentially a very bad thing to do.
Any data stored in the database will be destroyed.

Do you really want to drop the 'TUTORIALS' database [y/N] y
Database "TUTORIALS" dropped

Jatuhkan Database menggunakan Script PHP

PHP menggunakan queryberfungsi untuk membuat atau menghapus database MySQLi. Fungsi ini mengambil dua parameter dan mengembalikan TRUE pada kesuksesan atau FALSE pada kegagalan.

Contoh

Coba contoh berikut untuk menghapus database -

<html>
   <head>
      <title>Connecting MySQLi Server>/title>
   </head>
   
   <body>
      <?php
         $dbhost = 'localhost:3306'; $dbuser = 'root';
         $dbpass = '<Password Here>'; $conn = mysqli_connect($dbhost, $dbuser, $dbpass); if(! $conn ){
            echo 'Connected failure<br>';
         }
         echo 'Connected successfully<br>';
         $sql = "DROP DATABASE TUTORIALS"; if (mysqli_query($conn, $sql)) { echo "Record deleted successfully"; } else { echo "Error deleting record: " . mysqli_error($conn);
         }
         mysqli_close($conn);
      ?>
   </body>
</html>

WARNING- Saat menghapus database menggunakan skrip PHP, itu tidak meminta Anda untuk konfirmasi apa pun. Jadi berhati-hatilah saat menghapus database MySQLi.

Jika database yang terhubung dan dihapus berhasil, maka output sampelnya harus seperti ini -

Connected successfully
Database deleted successfully

Setelah Anda mendapatkan koneksi dengan server MySQLi, Anda harus memilih database tertentu untuk digunakan. Ini karena mungkin ada lebih dari satu database yang tersedia dengan MySQLi Server.

Sintaksis

bool mysqli_select_db( db_name, connection );

Sr.No. Parameter & Deskripsi
1

db_name

Diperlukan - Nama MySQLi Database yang akan dipilih

2

connection

Opsional - jika tidak ditentukan, koneksi yang terakhir dibuka oleh mysqli_connect akan digunakan.

Contoh

Berikut adalah contoh yang menunjukkan cara memilih database.

<html>
   <head>
      <title>Connecting MySQLi Server</title>
   </head>

   <body>
      <?php
         $dbhost = 'localhost:3306';
         $dbuser = 'root'; $dbpass = '<Password Here>';
         $conn = mysqli_connect($dbhost, $dbuser, $dbpass);
   
         if(! $conn ) { echo 'Connected failure<br>'; } echo 'Connected successfully<br>'; mysqli_select_db( 'TUTORIALS' ); //Write some code here mysqli_close($conn);
      ?>
   </body>
</html>

Jika terhubung dan database yang dipilih berhasil, maka output sampel harus seperti ini -

Connected successfully

Mendefinisikan bidang dengan benar dalam tabel penting untuk pengoptimalan keseluruhan database Anda. Anda harus menggunakan hanya jenis dan ukuran bidang yang benar-benar perlu Anda gunakan; jangan tentukan bidang dengan lebar 10 karakter jika Anda tahu Anda hanya akan menggunakan 2 karakter. Tipe bidang (atau kolom) ini juga disebut sebagai tipe data, setelahtype of data Anda akan menyimpan di bidang itu.

MySQLi menggunakan banyak tipe data berbeda yang dibagi menjadi tiga kategori: numerik, tanggal dan waktu, dan tipe string.

Tipe Data Numerik

MySQLi menggunakan semua tipe data numerik ANSI SQL standar, jadi jika Anda menggunakan MySQLi dari sistem database yang berbeda, definisi ini akan terlihat familier bagi Anda. Daftar berikut memperlihatkan tipe data numerik umum dan deskripsinya -

  • INT- Integer berukuran normal yang dapat ditandatangani atau tidak. Jika ditandatangani, kisaran yang diizinkan adalah dari -2147483648 hingga 2147483647. Jika tidak ditandatangani, kisaran yang diizinkan adalah dari 0 hingga 4294967295. Anda dapat menentukan lebar hingga 11 digit.

  • TINYINT- Bilangan bulat sangat kecil yang dapat ditandatangani atau tidak ditandatangani. Jika ditandatangani, kisaran yang diizinkan adalah dari -128 hingga 127. Jika tidak ditandatangani, kisaran yang diizinkan adalah dari 0 hingga 255. Anda dapat menentukan lebar hingga 4 digit.

  • SMALLINT- Bilangan bulat kecil yang dapat ditandatangani atau tidak ditandatangani. Jika ditandatangani, kisaran yang diizinkan adalah dari -32768 hingga 32767. Jika tidak ditandatangani, kisaran yang diizinkan adalah dari 0 hingga 65535. Anda dapat menentukan lebar hingga 5 digit.

  • MEDIUMINT- Integer berukuran sedang yang dapat ditandatangani atau tidak. Jika ditandatangani, kisaran yang diizinkan adalah dari -8388608 hingga 8388607. Jika tidak ditandatangani, kisaran yang diizinkan adalah dari 0 hingga 16777215. Anda dapat menentukan lebar hingga 9 digit.

  • BIGINT- Bilangan bulat besar yang dapat ditandatangani atau tidak ditandatangani. Jika ditandatangani, kisaran yang diizinkan adalah dari -9223372036854775808 hingga 9223372036854775807. Jika tidak ditandatangani, kisaran yang diizinkan adalah dari 0 hingga 18446744073709551615. Anda dapat menentukan lebar hingga 20 digit.

  • FLOAT(M,D)- Bilangan floating-point yang tidak dapat dipisahkan. Anda dapat menentukan panjang tampilan (M) dan jumlah desimal (D). Ini tidak diperlukan dan akan default ke 10,2, di mana 2 adalah jumlah desimal dan 10 adalah jumlah digit (termasuk desimal). Ketepatan desimal bisa mencapai 24 tempat untuk FLOAT.

  • DOUBLE(M,D)- Angka floating-point presisi ganda yang tidak dapat dilepas. Anda dapat menentukan panjang tampilan (M) dan jumlah desimal (D). Ini tidak diperlukan dan akan default ke 16,4, di mana 4 adalah jumlah desimal. Ketepatan desimal bisa mencapai 53 tempat untuk DOUBLE. REAL adalah sinonim dari DOUBLE.

  • DECIMAL(M,D) - Nomor floating-point yang tidak dapat dilepas yang tidak dapat dilepas. Dalam desimal yang tidak dikemas, setiap desimal sesuai dengan satu byte. Menentukan panjang tampilan (M) dan jumlah desimal (D) diperlukan. NUMERIC adalah sinonim dari DECIMAL.

Jenis Tanggal dan Waktu

Jenis data tanggal dan waktu MySQL adalah -

  • DATE- Tanggal dalam format YYYY-MM-DD, antara 1000-01-01 dan 9999-12-31. Misalnya, 30 Desember 1973 akan disimpan pada 1973-12-30.

  • DATETIME- Kombinasi tanggal dan waktu dalam YYYY-MM-DD HH: MM: SS format, antara 1000-01-01 00:00:00 dan 9999-12-31 23:59:59. Misalnya, jam 3:30 sore tanggal 30 Desember 1973 akan disimpan sebagai 1973-12-30 15:30:00.

  • TIMESTAMP - Stempel waktu antara tengah malam, 1 Januari 1970 dan sekitar tahun 2037. Ini terlihat seperti format DATETIME sebelumnya, hanya tanpa tanda hubung di antara angka; 3:30 sore tanggal 30 Desember 1973 akan disimpan sebagai 19731230153000 (YYYYMMDDHHMMSS).

  • TIME - Menyimpan waktu dalam format HH: MM: SS.

  • YEAR(M)- Menyimpan satu tahun dalam format 2 digit atau 4 digit. Jika panjang ditentukan sebagai 2 (misalnya TAHUN (2)), TAHUN dapat dari 1970 hingga 2069 (70 hingga 69). Jika panjang ditentukan sebagai 4, TAHUN dapat berupa 1901 hingga 2155. Panjang default adalah 4.

Jenis String

Meskipun tipe numerik dan tanggal menyenangkan, sebagian besar data yang akan Anda simpan dalam format string. Daftar ini menjelaskan tipe data string umum di MySQLi.

  • CHAR(M)- String dengan panjang tetap antara 1 dan 255 karakter dengan panjang (misalnya CHAR (5)), dilapisi kanan dengan spasi dengan panjang yang ditentukan saat disimpan. Menentukan panjang tidak diperlukan, tetapi defaultnya adalah 1.

  • VARCHAR(M)- String panjang variabel antara 1 dan 255 karakter; misalnya VARCHAR (25). Anda harus menentukan panjang saat membuat bidang VARCHAR.

  • BLOB or TEXT- Bidang dengan panjang maksimum 65535 karakter. BLOB adalah "Objek Besar Biner" dan digunakan untuk menyimpan data biner dalam jumlah besar, seperti gambar atau jenis file lainnya. Bidang yang didefinisikan sebagai TEXT juga menyimpan data dalam jumlah besar; perbedaan antara keduanya adalah pengurutan dan perbandingan pada data yang disimpan peka huruf besar kecil di BLOB dan tidak peka huruf besar kecil di bidang TEXT. Anda tidak menentukan panjang dengan BLOB atau TEXT.

  • TINYBLOB or TINYTEXT- Kolom BLOB atau TEXT dengan panjang maksimal 255 karakter. Anda tidak menentukan panjang dengan TINYBLOB atau TINYTEXT.

  • MEDIUMBLOB or MEDIUMTEXT- Kolom BLOB atau TEXT dengan panjang maksimum 16777215 karakter. Anda tidak menentukan panjang dengan MEDIUMBLOB atau MEDIUMTEXT.

  • LONGBLOB or LONGTEXT- Kolom BLOB atau TEXT dengan panjang maksimum 4294967295 karakter. Anda tidak menentukan panjang dengan LONGBLOB atau LONGTEXT.

  • ENUM - Enumeration, yang merupakan istilah keren untuk daftar. Saat menentukan ENUM, Anda membuat daftar item yang nilainya harus dipilih (atau bisa juga NULL). Misalnya, jika Anda ingin bidang Anda berisi "A" atau "B" atau "C", Anda harus menetapkan ENUM sebagai ENUM ('A', 'B', 'C') dan hanya nilai tersebut (atau NULL) bisa mengisi bidang itu.

Perintah pembuatan tabel membutuhkan -

  • Nama tabel
  • Nama bidang
  • Definisi untuk setiap bidang

Sintaksis

Berikut adalah sintaks SQL umum untuk membuat tabel MySQLi -

CREATE TABLE table_name (column_name column_type);

Sekarang, kita akan membuat tabel berikut di TUTORIALS database.

CREATE TABLE tutorials_inf(
   id INT AUTO_INCREMENT,
   name VARCHAR(20) NOT NULL,
   primary key (id),
);

Di sini beberapa item perlu penjelasan -

  • Atribut Bidang NOT NULLsedang digunakan karena kami tidak ingin bidang ini menjadi NULL. Jadi jika user akan mencoba membuat record dengan nilai NULL, maka MySQLi akan memunculkan error.

  • Atribut Bidang AUTO_INCREMENT memberitahu MySQLi untuk melanjutkan dan menambahkan nomor yang tersedia berikutnya ke bidang id.

  • Kata kunci PRIMARY KEYdigunakan untuk mendefinisikan kolom sebagai kunci utama. Anda dapat menggunakan beberapa kolom yang dipisahkan dengan koma untuk menentukan kunci utama.

Membuat Tabel dari Command Prompt

Ini mudah untuk membuat tabel MySQLi dari mysql> prompt. Anda akan menggunakan perintah SQLCREATE TABLE untuk membuat tabel.

Contoh

Berikut adalah contoh, yang menciptakan tutorials_tbl -

root@host# mysql -u root -p
Enter password:*******

mysql> use TUTORIALS;
Database changed

mysql> CREATE TABLE tutorials_inf(
   id INT AUTO_INCREMENT,name VARCHAR(20) NOT NULL,primary key (id));
Query OK, 0 rows affected (0.16 sec)

mysql>

NOTE - MySQLi tidak menghentikan perintah sampai Anda memberikan titik koma (;) di akhir perintah SQL.

Membuat Tabel Menggunakan Script PHP

Untuk membuat tabel baru di database yang sudah ada, Anda perlu menggunakan fungsi PHP mysqli_query(). Anda akan melewatkan argumen kedua dengan perintah SQL yang tepat untuk membuat tabel.

Contoh

Berikut adalah contoh membuat tabel menggunakan script PHP -

<html>
   <head>
      <title>Creating MySQLi Tables</title>
   </head>
   
   <body>
      <?php  
         $host = 'localhost:3306'; $user = 'root';  
         $pass = '<Password Here>'; $dbname = 'TUTORIALS';  
         $conn = mysqli_connect($host, $user, $pass,$dbname); if(!$conn){  
            die('Could not connect: '.mysqli_connect_error());  
         }  
         echo 'Connected successfully<br/>';  
  
         $sql = "create table tutorials_inf( id INT AUTO_INCREMENT,name VARCHAR(20) NOT NULL,primary key (id))"; if(mysqli_query($conn, $sql)){ echo "Table created successfully"; } else { echo "Table is not created successfully "; } mysqli_close($conn);  
      ?>  
   </body>
</html>

Output sampel harus seperti ini -

Connected successfully
Table created successfully

Sangat mudah untuk menjatuhkan tabel MySQLi yang sudah ada, tetapi Anda harus sangat berhati-hati saat menghapus tabel yang ada karena data yang hilang tidak akan dipulihkan setelah tabel dihapus.

Sintaksis

Berikut adalah sintaks SQL generik untuk menjatuhkan tabel MySQLi -

DROP TABLE table_name ;

Menjatuhkan Tabel dari Command Prompt

Ini hanya perlu dieksekusi DROP TABLE Perintah SQL pada prompt mysql>.

Contoh

Berikut adalah contoh yang menghapus tutorials_inf -

root@host# mysql -u root -p
Enter password:*******

mysql> use TUTORIALS;
Database changed

mysql> DROP TABLE tutorials_inf
Query OK, 0 rows affected (0.8 sec)

mysql>

Menjatuhkan Tabel Menggunakan Script PHP

Untuk menjatuhkan tabel yang ada di database apa pun, Anda perlu menggunakan fungsi PHP mysqli_query(). Anda akan melewatkan argumen kedua dengan perintah SQL yang tepat untuk menjatuhkan tabel.

Contoh

<html>
   <head>
      <title>Dropping MySQLi Tables</title>
   </head>
   
   <body>
      <?php  
         $host = 'localhost:3306'; $user = 'root';  
         $pass = ''; $dbname = 'TUTORIALS';  
         $conn = mysqli_connect($host, $user, $pass,$dbname); if(!$conn) {  
            die('Could not connect: '.mysqli_connect_error());  
         }  
         echo 'Connected successfully<br/>';  
         $sql = "DROP TABLE tutorials_inf"; if(mysqli_query($conn, $sql)) { echo "Table is deleted successfully"; } else { echo "Table is not deleted successfully\n"; } mysqli_close($conn);  
      ?>  
   </body>
</html>

Output sampel harus seperti ini -

Connected successfully
Table is deleted successfully

Untuk memasukkan data ke dalam tabel MySQLi, Anda perlu menggunakan SQL INSERT INTOperintah. Anda dapat memasukkan data ke dalam tabel MySQLi dengan menggunakan mysql> prompt atau dengan menggunakan script seperti PHP.

Sintaksis

Berikut adalah sintaks SQL generik dari perintah INSERT INTO untuk memasukkan data ke dalam tabel MySQLi:

INSERT INTO table_name 
   ( field1, field2,...fieldN )
   VALUES
   ( value1, value2,...valueN );

Untuk memasukkan tipe data string, diperlukan untuk menyimpan semua nilai menjadi tanda kutip ganda atau tunggal, misalnya: - "value".

Memasukkan Data dari Command Prompt

Ini akan menggunakan perintah SQL INSERT INTO untuk memasukkan data ke dalam tabel MySQLi tutorials_inf.

Contoh

Contoh berikut akan membuat 3 record menjadi tutorials_tbl tabel -

root@host# mysql -u root -p password;
Enter password:*******

mysql> use TUTORIALS;
Database changed

mysql> INSERT INTO tutorials_inf 
   ->(id, name)
   ->VALUES
   ->(10, "John Poul");
Query OK, 1 row affected (0.01 sec)

NOTE- Harap dicatat bahwa semua tanda panah (->) bukan bagian dari perintah SQL; mereka menunjukkan baris baru dan mereka dibuat secara otomatis oleh MySQL prompt sambil menekan tombol enter tanpa memberikan titik koma di akhir setiap baris perintah.

Memasukkan Data Menggunakan Script PHP

Anda dapat menggunakan perintah SQL INSERT INTO yang sama ke dalam fungsi PHP mysqli_query() untuk memasukkan data ke dalam tabel MySQLi.

Contoh

Contoh ini akan mengambil tiga parameter dari pengguna dan akan memasukkannya ke dalam tabel MySQLi -

<html>
   <head>
      <title>Add New Record in MySQLi Database</title>
      <link rel = "stylesheet" type = "text/css" href = "style.css">
   </head>
   
   <body>
      <div id = "main">
         <form action = "" method = "post">
            <label>Name :</label>
            <input type = "text" name = "name" id = "name" />
            <br />
            <br />
            <input type = "submit" value ="Submit" name = "submit"/>
            <br />
         </form>
      </div>
      
      <?php
         if(isset($_POST["submit"])){ $servername = "localhost:3306";
            $username = "root"; $password = "<Password here>";
            $dbname = "TUTORIALS"; // Create connection $conn = new mysqli($servername, $username, $password, $dbname);

            // Check connection
            if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error);
            } 
            $sql = "INSERT INTO tutorials_inf(name)VALUES ('".$_POST["name"]."')";

            if (mysqli_query($conn, $sql)) {
               echo "New record created successfully";
            } else {
               echo "Error: " . $sql . "" . mysqli_error($conn);
            }
            $conn->close();
         }
      ?>
   </body>
</html>

Output sampel harus seperti ini -

New record created successfully

SQL SELECTperintah digunakan untuk mengambil data dari database MySQLi. Anda dapat menggunakan perintah ini di mysql> prompt serta di skrip seperti PHP.

Sintaksis

Berikut adalah sintaks SQL generik dari perintah SELECT untuk mengambil data dari tabel MySQLi -

SELECT field1, field2,...fieldN table_name1, table_name2...
[WHERE Clause]
[OFFSET M ][LIMIT N]
  • Anda dapat menggunakan satu atau lebih tabel yang dipisahkan dengan koma untuk memasukkan berbagai kondisi menggunakan klausa WHERE, tetapi klausa WHERE adalah bagian opsional dari perintah SELECT.

  • Anda dapat mengambil satu atau lebih bidang dalam satu perintah PILIH.

  • Anda dapat menentukan bintang (*) di tempat bidang. Dalam kasus ini, PILIH akan mengembalikan semua bidang.

  • Anda dapat menentukan kondisi apapun menggunakan klausa WHERE.

  • Anda dapat menentukan offset menggunakan OFFSETdari mana SELECT akan mulai mengembalikan record. Secara default, offset adalah nol.

  • Anda dapat membatasi jumlah pengembalian menggunakan LIMIT atribut.

Mengambil Data dari Command Prompt -

Ini akan menggunakan perintah SQL SELECT untuk mengambil data dari tabel MySQLi tutorials_tbl

Contoh

Contoh berikut akan mengembalikan semua catatan dari tutorials_inf tabel -

root@host# mysql -u root -p password;
Enter password:*******

mysql> use TUTORIALS;
Database changed

mysql> SELECT * from tutorials_inf;
+----+------+
| id | name |
+----+------+
|  1 | sai  |
|  2 | kit  |
|  3 | ram  |
+----+------+
3 rows in set (0.00 sec)

mysql>

Mengambil Data Menggunakan Script PHP

Anda dapat menggunakan perintah SQL SELECT yang sama ke dalam fungsi PHP mysqli_query(). Fungsi ini digunakan untuk menjalankan perintah SQL dan kemudian fungsi PHP lainnyamysqli_fetch_assoc()dapat digunakan untuk mengambil semua data yang dipilih. Fungsi ini mengembalikan baris sebagai array asosiatif, array numerik, atau keduanya. Fungsi ini mengembalikan FALSE jika tidak ada baris lagi.

Di bawah ini adalah contoh sederhana untuk mengambil record tutorials_inf meja.

Contoh

Cobalah contoh berikut untuk menampilkan semua record dari tabel tutorials_inf.

<html>
   <head>
      <title>Selecting Table in MySQLi Server</title>
   </head>

   <body>
      <?php
         $dbhost = 'localhost:3306';
         $dbuser = 'root'; $dbpass = '';
         $dbname = 'TUTORIALS'; $conn = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname);
   
         if(! $conn ) { die('Could not connect: ' . mysqli_error()); } echo 'Connected successfully<br>'; $sql = 'SELECT name FROM tutorials_inf';
         $result = mysqli_query($conn, $sql); if (mysqli_num_rows($result) > 0) {
            while($row = mysqli_fetch_assoc($result)) {
               echo "Name: " . $row["name"]. "<br>"; } } else { echo "0 results"; } mysqli_close($conn);
      ?>
   </body>
</html>

Isi baris ditetapkan ke variabel $ row dan nilai dalam baris kemudian dicetak.

NOTE - Selalu ingat untuk meletakkan tanda kurung kurawal saat Anda ingin memasukkan nilai array langsung ke dalam string.

Output sampel harus seperti ini -

Connected successfully
Name: ram
Name: kit
Name: abc

Kami telah melihat SQL SELECTperintah untuk mengambil data dari tabel MySQLi. Kita dapat menggunakan klausa bersyarat yang disebutWHEREklausa untuk menyaring hasil. Menggunakan klausa WHERE, kita dapat menentukan kriteria pemilihan untuk memilih rekaman yang diperlukan dari tabel.

Sintaksis

Berikut adalah sintaks SQL generik dari perintah SELECT dengan klausa WHERE untuk mengambil data dari tabel MySQLi -

SELECT field1, field2,...fieldN table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....
  • Anda dapat menggunakan satu atau lebih tabel yang dipisahkan dengan koma untuk memasukkan berbagai kondisi menggunakan klausa WHERE, tetapi klausa WHERE adalah bagian opsional dari perintah SELECT.

  • Anda dapat menentukan kondisi apapun menggunakan klausa WHERE.

  • Anda dapat menentukan lebih dari satu ketentuan menggunakan AND atau OR operator.

  • Klausa WHERE dapat digunakan bersama dengan perintah DELETE atau UPDATE SQL juga untuk menentukan kondisi.

Itu WHEREklausa berfungsi seperti kondisi if dalam bahasa pemrograman apa pun. Klausa ini digunakan untuk membandingkan nilai yang diberikan dengan nilai bidang yang tersedia di tabel MySQLi. Jika nilai yang diberikan dari luar sama dengan nilai bidang yang tersedia di tabel MySQLi, maka baris tersebut akan dikembalikan.

Berikut adalah daftar operator yang dapat digunakan dengan WHERE ayat.

Asumsikan bidang A menampung 10 dan bidang B menampung 20, lalu -

Operator Deskripsi Contoh
= Memeriksa apakah nilai dari dua operan sama atau tidak, jika ya maka kondisinya menjadi benar. (A = B) tidak benar.
! = Memeriksa apakah nilai dari dua operan sama atau tidak, jika nilai tidak sama maka kondisi menjadi benar. (A! = B) benar.
> Memeriksa apakah nilai operan kiri lebih besar dari nilai operan kanan, jika ya maka kondisi menjadi benar. (A> B) tidak benar.
< Memeriksa apakah nilai operan kiri kurang dari nilai operan kanan, jika ya maka kondisinya menjadi benar. (A <B) benar.
> = Memeriksa apakah nilai operan kiri lebih besar dari atau sama dengan nilai operan kanan, jika ya maka kondisi menjadi benar. (A> = B) tidak benar.
<= Memeriksa apakah nilai operan kiri kurang dari atau sama dengan nilai operan kanan, jika ya maka kondisi menjadi benar. (A <= B) benar.

Klausa WHERE sangat berguna saat Anda ingin mengambil baris yang dipilih dari tabel, terutama saat Anda menggunakannya MySQLi Join. Gabungan dibahas di bab lain.

Mencari record menggunakan Primary Key untuk melakukan pencarian dengan cepat.

Jika kondisi yang diberikan tidak cocok dengan rekaman apa pun dalam tabel, maka kueri tidak akan mengembalikan baris apa pun.

Mengambil Data dari Command Prompt

Ini akan menggunakan perintah SQL SELECT dengan klausa WHERE untuk mengambil data yang dipilih dari tabel MySQLi tutorials_inf.

Contoh

Contoh berikut akan mengembalikan semua catatan dari tutorials_inf tabel yang namanya sai -

root@host# mysql -u root -p password;
Enter password:*******

mysql> use TUTORIALS;
Database changed

mysql>SELECT * from tutorials_inf where name = 'sai';
+----+------+
| id | name |
+----+------+
|  1 | SAI  |
+----+------+
1 row in set (0.00 sec)

mysql>

Kecuali melakukan a LIKEperbandingan pada sebuah string, perbandingan tersebut tidak case sensitive. Anda dapat membuat penelusuran peka huruf besar kecil menggunakanBINARY kata kunci sebagai berikut -

root@host# mysql -u root -p password;
Enter password:*******

mysql> use TUTORIALS;
Database changed

mysql> SELECT * from tutorials_inf \WHERE BINARY name = 'sai';
Empty set (0.02 sec)

mysql>

Mengambil Data Menggunakan Script PHP:

Anda dapat menggunakan perintah SQL SELECT yang sama dengan WHERE CLAUSE ke dalam fungsi PHP mysqli_query().

Contoh

Contoh berikut akan mengembalikan semua catatan dari tutorials_inf tabel yang namanya sai -

<?php
   $dbhost = 'localhost:3306';
   $dbuser = 'root'; $dbpass = '';
   $dbname = 'TUTORIALS'; $conn = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname);
   
   if(! $conn ) { die('Could not connect: ' . mysqli_error()); } echo 'Connected successfully<br>'; $sql = 'SELECT * from tutorials_inf where name="sai"';
   $result = mysqli_query($conn, $sql); if (mysqli_num_rows($result) > 0) {
      while($row = mysqli_fetch_assoc($result)) {
         echo "Name: " . $row["name"]. "<br>"; } } else { echo "0 results"; } mysqli_close($conn);
?>

Output sampel harus seperti ini -

Connected successfully
Name: SAI

Mungkin ada persyaratan di mana data yang ada di tabel MySQLi perlu dimodifikasi. Anda dapat melakukannya dengan menggunakan SQLUPDATEperintah. Ini akan mengubah nilai field apapun dari tabel MySQLi manapun.

Sintaksis

Berikut adalah sintaks SQL generik dari perintah UPDATE untuk mengubah data menjadi tabel MySQLi -

UPDATE table_name SET field1 = new-value1, field2 = new-value2 [WHERE Clause]
  • Anda dapat memperbarui satu atau lebih bidang sekaligus.

  • Anda dapat menentukan kondisi apapun menggunakan klausa WHERE.

  • Anda dapat memperbarui nilai dalam satu tabel dalam satu waktu.

Klausa WHERE sangat berguna saat Anda ingin memperbarui baris yang dipilih dalam tabel.

Memperbarui Data dari Command Prompt

Ini akan menggunakan perintah SQL UPDATE dengan klausa WHERE untuk memperbarui data yang dipilih ke dalam tabel MySQLi tutorials_inf.

Contoh

Contoh berikut akan diperbarui name bidang untuk catatan yang memiliki tutorial_inf.

root@host# mysql -u root -p password;
Enter password:*******

mysql> use TUTORIALS;
Database changed

mysql> UPDATE tutorials_inf 
   -> SET name = 'johar' 
   -> WHERE name = 'sai';
Query OK, 1 row affected (0.04 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql>

Memperbarui Data Menggunakan Script PHP

Anda dapat menggunakan perintah SQL UPDATE dengan atau tanpa WHERE CLAUSE ke dalam fungsi PHP mysqli_query(). Fungsi ini akan menjalankan perintah SQL dengan cara yang sama seperti dijalankan pada prompt mysql>.

Contoh

Coba contoh berikut untuk memperbarui name lapangan untuk rekor.

<?php
   $dbhost = 'localhost:3306'; $dbuser = 'root';
   $dbpass = ''; $dbname = 'TUTORIALS';
   $conn = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname); if(! $conn ) {
      die('Could not connect: ' . mysqli_error());
   }
   echo 'Connected successfully<br>';
   $sql = ' UPDATE tutorials_inf SET name="althamas" WHERE name="ram"'; if (mysqli_query($conn, $sql)) { echo "Record updated successfully"; } else { echo "Error updating record: " . mysqli_error($conn);
   }
   mysqli_close($conn);
?>

Output sampel harus seperti ini -

Connected successfully
Record updated successfully

Jika Anda ingin menghapus record dari tabel MySQLi mana pun, Anda dapat menggunakan perintah SQL DELETE FROM. Anda dapat menggunakan perintah ini di mysql> prompt serta di skrip seperti PHP.

Sintaksis

Berikut adalah sintaks SQL generik dari perintah DELETE untuk menghapus data dari tabel MySQLi -

DELETE FROM table_name [WHERE Clause]
  • Jika klausa WHERE tidak ditentukan, maka semua record akan dihapus dari tabel MySQLi yang diberikan.

  • Anda dapat menentukan kondisi apapun menggunakan klausa WHERE.

  • Anda dapat menghapus rekaman dalam satu tabel dalam satu waktu.

Klausa WHERE sangat berguna saat Anda ingin menghapus baris yang dipilih dalam tabel.

Menghapus Data dari Command Prompt

Ini akan menggunakan perintah SQL DELETE dengan klausa WHERE untuk menghapus data yang dipilih ke dalam tabel MySQLi tutorials_inf.

Contoh

Contoh berikut akan menghapus record menjadi tutorial_inf yang namanya johar.

root@host# mysql -u root -p password;
Enter password:*******

mysql> use TUTORIALS;
Database changed

mysql> DELETE FROM tutorials_inf where name = 'johar';
Query OK, 1 row affected (0.23 sec)

mysql>

Menghapus Data Menggunakan Script PHP

Anda dapat menggunakan perintah SQL DELETE dengan atau tanpa WHERE CLAUSE ke dalam fungsi PHP mysqli_query(). Fungsi ini akan menjalankan perintah SQL dengan cara yang sama seperti dijalankan pada prompt mysql>.

Contoh

Cobalah contoh berikut untuk menghapus record dari tutorial_inf yang namanya althamas.

<?php
   $dbhost = 'localhost:3306';
   $dbuser = 'root'; $dbpass = '';
   $dbname = 'TUTORIALS'; $conn = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname);
   
   if(! $conn ) { die('Could not connect: ' . mysqli_error()); } echo 'Connected successfully<br>'; $sql = ' DELETE FROM tutorials_inf WHERE name = "althamas"';
   
   if (mysqli_query($conn, $sql)) {
      echo "Record deleted successfully";
   } else {
      echo "Error deleting record: " . mysqli_error($conn); } mysqli_close($conn);
?>

Output sampel harus seperti ini-

Connected successfully
Record deleted successfully

Kami telah melihat SQL SELECTperintah untuk mengambil data dari tabel MySQLi. Kita juga bisa menggunakan klausa bersyarat yang disebutWHERE klausa untuk memilih catatan yang diperlukan.

Klausa WHERE dengan tanda sama dengan (=) berfungsi dengan baik jika kita ingin melakukan pencocokan tepat. Seperti jika "name = 'sai'". Tapi mungkin ada persyaratan di mana kita ingin menyaring semua hasil di mana nama harus mengandung "johar". Ini bisa ditangani menggunakan SQLLIKE klausa bersama dengan klausa WHERE.

Jika klausa SQL LIKE digunakan bersama dengan% karakter, maka itu akan bekerja seperti karakter meta (*) di UNIX sambil mencantumkan semua file atau direktori pada command prompt.

Tanpa karakter%, klausa LIKE sangat mirip dengan tanda sama dengan dengan klausa WHERE.

Sintaksis

Berikut adalah sintaks SQL generik dari perintah SELECT bersama dengan klausa LIKE untuk mengambil data dari tabel MySQLi -

SELECT field1, field2,...fieldN table_name1, table_name2...
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
  • Anda dapat menentukan kondisi apapun menggunakan klausa WHERE.

  • Anda dapat menggunakan klausa LIKE bersama dengan klausa WHERE.

  • Anda dapat menggunakan klausa LIKE sebagai pengganti tanda sama dengan.

  • Ketika LIKE digunakan bersama dengan tanda% maka itu akan bekerja seperti pencarian karakter meta.

  • Anda dapat menentukan lebih dari satu ketentuan menggunakan AND atau OR operator.

  • Klausa WHERE ... LIKE dapat digunakan bersama dengan perintah DELETE atau UPDATE SQL juga untuk menentukan kondisi.

Menggunakan klausa LIKE di Command Prompt

Ini akan menggunakan perintah SQL SELECT dengan klausa WHERE ... LIKE untuk mengambil data yang dipilih dari tabel MySQLi tutorials_inf.

Contoh

Contoh berikut akan mengembalikan semua catatan dari tutorials_inf tabel yang diakhiri dengan nama penulis johar -

root@host# mysql -u root -p password;
Enter password:*******

mysql> use TUTORIALS;
Database changed

mysql> SELECT * from tutorials_inf 
   -> WHERE name LIKE '%johar';
+----+-------+
| id | name  |
+----+-------+
|  2 | johar |
+----+-------+
1 row in set (0.00 sec)

mysql>

Menggunakan klausa LIKE di dalam Script PHP

Anda dapat menggunakan sintaks serupa klausa WHERE ... LIKE ke dalam fungsi PHP mysqli_query(). Fungsi ini digunakan untuk menjalankan perintah SQL dan kemudian fungsi PHP lainnyamysqli_fetch_array() dapat digunakan untuk mengambil semua data yang dipilih jika klausa WHERE ... LIKE digunakan bersama dengan perintah SELECT.

Tetapi jika WHERE ... LIKE clause digunakan dengan perintah DELETE atau UPDATE, maka tidak diperlukan lagi pemanggilan fungsi PHP.

Contoh

Cobalah contoh berikut untuk mengembalikan semua catatan tutorials_inf tabel yang berisi nama johar -

<?php
   $dbhost = 'localhost:3306'; $dbuser = 'root';
   $dbpass = ''; $dbname = 'TUTORIALS';
   $conn = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname); if(! $conn ) {
      die('Could not connect: ' . mysqli_error());
   }
   echo 'Connected successfully<br>';
   $sql = 'SELECT * FROM tutorials_inf WHERE name LIKE "%johar%"'; $result = mysqli_query($conn, $sql);
   $row = mysqli_fetch_array($result,MYSQLI_ASSOC);
   
   printf ("%s \n",$row["name"]); mysqli_free_result($result);
   mysqli_close($conn);
?>

Output sampel harus seperti ini -

Connected successfully
johar

Kami telah melihat SQL SELECTperintah untuk mengambil data dari tabel MySQLi. Saat Anda memilih baris, server MySQLi bebas mengembalikannya dalam urutan apa pun, kecuali Anda menginstruksikan sebaliknya dengan menyebutkan cara mengurutkan hasilnya. Tapi Anda mengurutkan hasil dengan menambahkan klausa ORDER BY yang memberi nama kolom atau kolom yang ingin Anda urutkan.

Sintaksis

Berikut adalah sintaks SQL generik dari perintah SELECT bersama dengan klausa ORDER BY untuk mengurutkan data dari tabel MySQL -

SELECT field1, field2,...fieldN table_name1, table_name2...
ORDER BY field1, [field2...] [ASC [DESC]]
  • Anda dapat mengurutkan hasil yang dikembalikan di bidang apa pun asalkan bidang itu dicantumkan.

  • Anda dapat mengurutkan hasil di lebih dari satu bidang.

  • Anda dapat menggunakan kata kunci ASC atau DESC untuk mendapatkan hasil dalam urutan naik atau turun. Secara default, ini urutan menaik.

  • Anda dapat menggunakan klausa WHERE ... LIKE dengan cara biasa untuk meletakkan condition.

Menggunakan klausa ORDER BY di Command Prompt

Ini akan menggunakan perintah SQL SELECT dengan klausa ORDER BY untuk mengambil data dari tabel MySQLi tutorials_inf.

Contoh

Coba contoh berikut, yang mengembalikan hasil dalam urutan menurun.

root@host# mysql -u root -p password;
Enter password:*******

mysql> use TUTORIALS;
Database changed

mysql> SELECT * from tutorials_inf ORDER BY id desc;
+----+-------+
| id | name  |
+----+-------+
|  4 | ram   |
|  3 | raghu |
|  2 | johar |
|  1 | sai   |
+----+-------+
4 rows in set (0.00 sec)

mysql>

Verifikasi bahwa semua id terdaftar dalam urutan menurun.

Menggunakan klausa ORDER BY di dalam Script PHP

Anda dapat menggunakan sintaks yang serupa dari klausa ORDER BY ke dalam fungsi PHP mysqli_query(). Fungsi ini digunakan untuk menjalankan perintah SQL dan kemudian fungsi PHP lainnyamysqli_fetch_array() dapat digunakan untuk mengambil semua data yang dipilih.

Contoh

Cobalah contoh berikut, yang mengembalikan hasil dalam urutan menurun dari penulis tutorial.

<?php
   $dbhost = 'localhost:3306';
   $dbuser = 'root'; $dbpass = '';
   $dbname = 'TUTORIALS'; $conn = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname);
   
   if(! $conn ) { die('Could not connect: ' . mysqli_error()); } echo 'Connected successfully</br>'; $sql = 'SELECT * from tutorials_inf ORDER BY id desc';
   
   if($result = mysqli_query($conn, $sql)){ if(mysqli_num_rows($result) > 0){
         echo "<table>";
         echo "<tr>";
         echo "<th>id</th>";
         echo "<th>name</th>";
         echo "</tr>";
         
         while($row = mysqli_fetch_array($result)){
            echo "<tr>";
            echo "<td>" . $row['id'] . "</td>"; echo "<td>" . $row['name'] . "</td>";
            echo "</tr>";
         }
         echo "</table>";
         mysqli_free_result($result); } else { echo "No records matching your query were found."; } } else { echo "ERROR: Could not able to execute $sql. " . mysqli_error($conn); } mysqli_close($conn);
?>

Output sampel harus seperti ini -

Connected successfully
id	name
4	ram
3	raghu
2	johar
1	sai

Sejauh ini, kami hanya mendapatkan data dari satu tabel pada satu waktu. Ini bagus untuk pengambilan sederhana, tetapi di sebagian besar penggunaan MySQL dunia nyata, Anda akan sering perlu mendapatkan data dari beberapa tabel dalam satu kueri.

Anda dapat menggunakan beberapa tabel dalam satu kueri SQL Anda. Tindakan bergabung di MySQLi mengacu pada penghancuran dua atau lebih tabel menjadi satu tabel.

Anda dapat menggunakan JOINS dalam pernyataan SELECT, UPDATE dan DELETE untuk menggabungkan tabel MySQLi. Kita akan melihat contoh LEFT JOIN juga yang berbeda dari MySQLi JOIN sederhana.

Menggunakan Bergabung di Command Prompt

Misalkan kita memiliki dua tabel tutorials_bks dan tutorials_inf, di TUTORIALS. Daftar lengkap diberikan di bawah ini -

Contoh

Coba contoh berikut -

root@host# mysql -u root -p password;
Enter password:*******

mysql> use TUTORIALS;
Database changed

mysql> SELECT * FROM tcount_bks;
+----+---------+
| id | book    |
+----+---------+
|  1 | java    |
|  2 | java    |
|  3 | html    |
|  4 | c++     |
|  5 | Android |
+----+---------+
5 rows in set (0.00 sec)

mysql> SELECT * from tutorials_inf;
+----+-------+
| id | name  |
+----+-------+
|  1 | sai   |
|  2 | johar |
|  3 | raghu |
|  4 | ram   |
+----+-------+
4 rows in set (0.00 sec)

mysql>

Sekarang kita dapat menulis kueri SQL untuk menggabungkan dua tabel ini. Kueri ini akan memilih semua nama dari tabeltutorials_inf dan akan mengambil sejumlah tutorial yang sesuai daritutorials_bks.

mysql> SELECT a.id, a.name,b.id FROM tutorials_inf a,tutorials_bks b WHERE a.id = b.id;
+----+-------+----+
| id | name  | id |
+----+-------+----+
|  1 | sai   |  1 |
|  2 | johar |  2 |
|  3 | raghu |  3 |
|  4 | ram   |  4 |
+----+-------+----+
4 rows in set (0.00 sec)
mysql>

Dalam tabel tutorials_bks, kami memiliki 5 catatan tetapi dalam contoh di atas itu memfilter dan hanya memberikan 4 catatan id sesuai permintaan

Menggunakan Bergabung dalam Script PHP

Anda dapat menggunakan salah satu kueri SQL yang disebutkan di atas dalam skrip PHP. Anda hanya perlu meneruskan kueri SQL ke dalam fungsi PHPmysqli_query() dan kemudian Anda akan mengambil hasil dengan cara biasa.

Contoh

Coba contoh berikut -

<?php
   $dbhost = 'localhost:3306'; $dbuser = 'root';
   $dbpass = ''; $dbname = 'TUTORIALS';
   $conn = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname); if(! $conn ) {
      die('Could not connect: ' . mysqli_error());
   }
   echo 'Connected successfully</br>';
   $sql = 'SELECT a.id, a.name,b.id FROM tutorials_inf a,tutorials_bks b WHERE a.id = b.id'; if($result = mysqli_query($conn, $sql)) {
      if(mysqli_num_rows($result) > 0) { echo "<table>"; echo "<tr>"; echo "<th>id</th>"; echo "<th>name</th>"; echo "<th>id</th>"; echo "</tr>"; while($row = mysqli_fetch_array($result)){ echo "<tr>"; echo "<td>" . $row['id'] . "</td>";
            echo "<td>" . $row['name'] . "</td>"; echo "<td>" . $row['id'] . "</td>";
            echo "</tr>";
         }
         echo "</table>";
         mysqli_free_result($result); } else { echo "No records matching your query were found."; } } else { echo "ERROR: Could not able to execute $sql. " . mysqli_error($conn); } mysqli_close($conn);
?>

Output sampel harus seperti ini -

Connected successfully
id	name	id
1	sai	1
2	johar	2
3	raghu	3
4	ram	4

MySQL LEFT JOIN

Gabung kiri MySQLi berbeda dari gabungan sederhana. MySQLi LEFT JOIN memberikan pertimbangan ekstra pada tabel di sebelah kiri.

Jika saya melakukan LEFT JOIN, saya mendapatkan semua record yang cocok dengan cara yang sama dan SELAIN ITU saya mendapatkan record ekstra untuk setiap record yang tidak cocok di tabel kiri join - sehingga memastikan (dalam contoh saya) bahwa setiap nama mendapat a sebutkan -

Contoh

Cobalah contoh berikut untuk memahami LEFT JOIN -

root@host# mysql -u root -p password;
Enter password:*******

mysql> use TUTORIALS;
Database changed

mysql>SELECT a.id, a.name,b.id FROM tutorials_inf a LEFT JOIN tutorials_bks b ON a.id = b.id;

Anda perlu melakukan lebih banyak latihan agar terbiasa dengan JOINS. Ini adalah konsep yang agak rumit di MySQL / SQL dan akan menjadi lebih jelas saat melakukan contoh nyata.

Kami telah melihat SQL SELECT perintah bersama WHERE klausa untuk mengambil data dari tabel MySQLi, tetapi ketika kami mencoba memberikan kondisi, yang membandingkan nilai kolom atau kolom NULL, ini tidak bekerja dengan baik.

Untuk menangani situasi seperti itu MySQLi menyediakan tiga operator

  • IS NULL - Operator mengembalikan nilai true jika nilai kolom adalah NULL.

  • IS NOT NULL - Operator mengembalikan nilai true jika nilai kolom bukan NULL.

  • <=> - Operator membandingkan nilai, yang (tidak seperti operator =) benar bahkan untuk dua nilai NULL.

Kondisi yang melibatkan NULL adalah khusus. Anda tidak dapat menggunakan = NULL atau! = NULL untuk mencari nilai NULL di kolom. Perbandingan seperti itu selalu gagal karena tidak mungkin untuk mengatakan apakah itu benar atau tidak. Bahkan NULL = NULL gagal.

Untuk mencari kolom yang ada atau bukan NULL, gunakan IS NULL atau IS NOT NULL.

Menggunakan nilai NULL di Command Prompt

Misalkan sebuah meja tutorials_bks dalam database TUTORIALS dan berisi dua kolom id dan name, di mana nama NULL menunjukkan bahwa nilainya tidak diketahui -

Contoh

Coba contoh berikut -

root@host# mysql -u root -p password;
Enter password:*******

mysql> use TUTORIALS;
Database changed

mysql> INSERT INTO tutorials_bks (book) values('');
Query OK, 1 row affected (0.08 sec)

mysql> INSERT INTO tutorials_bks (book) values('');
Query OK, 1 row affected (0.08 sec)

mysql> INSERT INTO tutorials_bks (book) values('');
Query OK, 1 row affected (0.08 sec)

mysql> INSERT INTO tutorials_bks (book) values('NULL');
Query OK, 1 row affected (0.08 sec)

mysql> INSERT INTO tutorials_bks (book) values('NULL');
Query OK, 1 row affected (0.08 sec)

mysql> INSERT INTO tutorials_bks (book) values('NULL');
Query OK, 1 row affected (0.08 sec)

+----+---------+
| id | book    |
+----+---------+
|  1 | java    |
|  2 | java    |
|  3 | html    |
|  4 | c++     |
|  5 | Android |
|  6 |         |
|  7 |         |
|  8 |         |
|  9 | NULL    |
| 10 | NULL    |
| 11 | NULL    |
+----+---------+
11 rows in set (0.00 sec)

mysql>

Untuk menemukan catatan di mana kolom nama adalah atau bukan NULL, query harus ditulis seperti ini -

mysql> SELECT * FROM tutorials_bks WHERE book = "null";
+----+------+
| id | book |
+----+------+
|  9 | NULL |
| 10 | NULL |
| 11 | NULL |
+----+------+
3 rows in set (0.00 sec)

mysql> SELECT * FROM tutorials_bks WHERE book ! = "null";
+----+---------+
| id | book    |
+----+---------+
|  1 | java    |
|  2 | java    |
|  3 | html    |
|  4 | c++     |
|  5 | Android |
|  6 |         |
|  7 |         |
|  8 |         |
+----+---------+
8 rows in set (0.00 sec)

mysql> SELECT * FROM tutorials_bks WHERE book = "";
+----+------+
| id | book |
+----+------+
|  6 |      |
|  7 |      |
|  8 |      |
+----+------+
3 rows in set (0.01 sec)

Menangani Nilai NULL dalam Script PHP

Anda dapat menggunakan kondisi if ... else untuk menyiapkan kueri berdasarkan nilai NULL.

Contoh

Contoh berikut mengambil tutorial_count dari luar dan kemudian membandingkannya dengan nilai yang tersedia di tabel.

<?php
   $dbhost = 'localhost:3036'; $dbuser = 'root';
   $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }
   if( isset($tutorial_count )) { $sql = 'SELECT tutorial_author, tutorial_count FROM  tcount_tbl
         WHERE tutorial_count = $tutorial_count'; } else { $sql = 'SELECT tutorial_author, tutorial_count
         FROM  tcount_tbl WHERE tutorial_count IS $tutorial_count'; } mysql_select_db('TUTORIALS'); $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) { die('Could not get data: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { echo "Author:{$row['tutorial_author']}  <br> ".
         "Count: {$row['tutorial_count']} <br> ". "--------------------------------<br>"; } echo "Fetched data successfully\n"; mysql_close($conn);
?>

Anda telah melihat pola MySQLi yang cocok dengan LIKE ...%. MySQLi mendukung jenis operasi pencocokan pola lain berdasarkan ekspresi reguler danREGEXPoperator. Jika Anda mengetahui PHP atau PERL, maka sangat mudah bagi Anda untuk memahaminya karena pencocokan ini sangat mirip dengan ekspresi reguler skrip tersebut.

Berikut adalah tabel pola, yang dapat digunakan bersama REGEXP operator.

Pola Apa polanya cocok
^ Awal string
$ Akhir string
. Karakter tunggal apa pun
[...] Karakter apa pun yang terdaftar di antara tanda kurung siku
[^ ...] Karakter apa pun yang tidak terdaftar di antara tanda kurung siku
p1 | p2 | p3 Alternasi; cocok dengan salah satu pola p1, p2, atau p3
* Nol atau lebih contoh dari elemen sebelumnya
+ Satu atau lebih contoh elemen sebelumnya
{n} n contoh elemen sebelumnya
{M N} m melalui n contoh elemen sebelumnya

Contoh

Sekarang berdasarkan tabel di atas, Anda dapat menggunakan berbagai jenis kueri SQL untuk memenuhi kebutuhan Anda. Di sini, saya mencantumkan beberapa untuk pengertian Anda. Pertimbangkan kami memiliki tabel bernama tutorials_inf dan itu memiliki bidang bernama nama -

Query untuk menemukan semua nama yang dimulai dengan 'sa'

mysql>  SELECT * FROM tutorials_inf WHERE name REGEXP '^sa';

Output sampel harus seperti ini -

+----+------+
| id | name |
+----+------+
|  1 | sai  |
+----+------+
1 row in set (0.00 sec)

Query untuk menemukan semua nama yang diakhiri dengan 'ai'

mysql> SELECT * FROM tutorials_inf WHERE name REGEXP 'ai$';

Output sampel harus seperti ini -

+----+------+
| id | name |
+----+------+
|  1 | sai  |
+----+------+
1 row in set (0.00 sec)

Query untuk menemukan semua nama, yang mengandung 'a'

mysql> SELECT * FROM tutorials_inf WHERE name REGEXP 'a';

Output sampel harus seperti ini -

+----+-------+
| id | name  |
+----+-------+
|  1 | sai   |
|  3 | ram   |
|  4 | johar |
+----+-------+
3 rows in set (0.00 sec)

Query untuk menemukan semua nama yang diawali dengan huruf vokal

mysql>  SELECT * FROM tutorials_inf WHERE name REGEXP '^[aeiou]';

Transaksi adalah sekelompok operasi manipulasi database yang berurutan, yang dilakukan seolah-olah itu adalah satu unit kerja tunggal. Dengan kata lain, transaksi tidak akan pernah selesai kecuali setiap operasi individu dalam grup berhasil. Jika ada operasi dalam transaksi yang gagal, seluruh transaksi akan gagal.

Praktisnya, Anda akan menggabungkan banyak kueri SQL ke dalam grup dan Anda akan mengeksekusi semuanya bersama sebagai bagian dari transaksi.

Sifat Transaksi

Transaksi memiliki empat sifat standar berikut, biasanya disebut dengan singkatan ACID -

  • Atomicity- memastikan bahwa semua operasi dalam unit kerja diselesaikan dengan sukses; jika tidak, transaksi dibatalkan pada titik kegagalan dan operasi sebelumnya digulung kembali ke keadaan semula.

  • Consistency - memastikan bahwa database dengan benar mengubah status pada transaksi yang dilakukan dengan sukses.

  • Isolation - memungkinkan transaksi untuk beroperasi secara independen dan transparan satu sama lain.

  • Durability - memastikan bahwa hasil atau efek dari transaksi yang dilakukan tetap ada jika terjadi kegagalan sistem.

Di MySQL, transaksi dimulai dengan pernyataan BEGIN WORK dan diakhiri dengan pernyataan COMMIT atau ROLLBACK. Perintah SQLi antara pernyataan awal dan akhir membentuk sebagian besar transaksi.

COMMIT dan ROLLBACK

Dua kata kunci ini Commit dan Rollback digunakan terutama untuk Transaksi MySQL.

  • Ketika transaksi yang berhasil diselesaikan, perintah COMMIT harus dikeluarkan sehingga perubahan pada semua tabel yang terlibat akan diterapkan.

  • Jika terjadi kegagalan, perintah ROLLBACK harus dikeluarkan untuk mengembalikan setiap tabel yang direferensikan dalam transaksi ke status sebelumnya.

Anda dapat mengontrol perilaku transaksi dengan mengatur variabel sesi yang disebut AUTOCOMMIT. Jika AUTOCOMMIT diatur ke 1 (default), maka setiap pernyataan SQL (dalam transaksi atau tidak) dianggap sebagai transaksi lengkap dan dilakukan secara default saat selesai. Ketika AUTOCOMMIT diatur ke 0, dengan mengeluarkan perintah SET AUTOCOMMIT = 0, rangkaian pernyataan berikutnya bertindak seperti transaksi dan tidak ada aktivitas yang dilakukan sampai pernyataan COMMIT eksplisit dikeluarkan.

Anda dapat menjalankan perintah SQL ini di PHP dengan menggunakan mysqli_query() fungsi.

Contoh Umum Transaksi

Urutan peristiwa ini tidak bergantung pada bahasa pemrograman yang digunakan; jalur logis dapat dibuat dalam bahasa apa pun yang Anda gunakan untuk membuat aplikasi Anda.

Anda dapat menjalankan perintah SQL ini di PHP dengan menggunakan mysqli_query() fungsi.

  • Mulailah transaksi dengan mengeluarkan perintah SQL BEGIN WORK.

  • Keluarkan satu atau lebih perintah SQL seperti SELECT, INSERT, UPDATE atau DELETE.

  • Periksa apakah tidak ada kesalahan dan semuanya sesuai dengan kebutuhan Anda.

  • Jika ada kesalahan, keluarkan perintah ROLLBACK, jika tidak, keluarkan perintah COMMIT.

Jenis Tabel Aman-Transaksi di MySQLi

Anda tidak dapat menggunakan transaksi secara langsung, Anda bisa tetapi tidak akan aman dan terjamin. Jika Anda berencana untuk menggunakan transaksi dalam pemrograman MySQLi Anda, maka Anda perlu membuat tabel Anda dengan cara khusus. Ada banyak jenis tabel, yang mendukung transaksi tetapi yang paling populer adalahInnoDB.

Dukungan untuk tabel InnoDB memerlukan parameter kompilasi khusus saat mengompilasi MySQLi dari sumber. Jika versi MySQLi Anda tidak memiliki dukungan InnoDB, minta Penyedia Layanan Internet Anda untuk membuat versi MySQLi dengan dukungan untuk jenis tabel InnoDB atau unduh dan instal distribusi biner MySQL-Max untuk Windows atau Linux / UNIX dan bekerja dengan tipe tabel di lingkungan pengembangan.

Jika instalasi MySQLi Anda mendukung tabel InnoDB, cukup tambahkan file TYPE = InnoDBdefinisi ke pernyataan pembuatan tabel. Misalnya, kode berikut membuat tabel InnoDB yang disebut tutorials_innodb -

root@host# mysql -u root -p;
Enter password:*******

mysql> use TUTORIALS;
Database changed

mysql> create table tutorials_innodb
   -> (
   -> tutorial_author varchar(40) NOT NULL,
   -> tutorial_count  INT
   -> ) TYPE = InnoDB;
Query OK, 0 rows affected (0.02 sec)

Periksa tautan berikut untuk mengetahui lebih banyak tentang - InnoDB

Anda dapat menggunakan tipe tabel lain seperti GEMINI atau BDB, tetapi itu tergantung pada penginstalan Anda jika mendukung kedua jenis ini.

MySQLi ALTER Perintah ini sangat berguna saat Anda ingin mengubah nama tabel, bidang tabel apa pun, atau jika Anda ingin menambah atau menghapus kolom yang sudah ada dalam tabel.

Mari kita mulai dengan membuat tabel bernama tutorials_alter.

root@host# mysql -u root -p password;
Enter password:*******

mysql> use TUTORIALS;
Database changed

mysql> create table tutorials_alter
   -> (
   -> i INT,
   -> c CHAR(1)
   -> );
Query OK, 0 rows affected (0.27 sec)

mysql> SHOW COLUMNS FROM tutorials_alter;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| i     | int(11) | YES  |     | NULL    |       |
| c     | char(1) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.02 sec)

Menjatuhkan, Menambah atau Memosisikan Ulang Kolom

Misalkan Anda ingin menjatuhkan kolom yang sudah ada i dari tabel MySQLi atas maka Anda akan menggunakan DROP klausul bersama dengan ALTER perintah sebagai berikut -

mysql> ALTER TABLE tutorials_alter  DROP i;

SEBUAH DROP tidak akan berfungsi jika kolom adalah satu-satunya yang tersisa di tabel.

Untuk menambahkan kolom, gunakan ADD dan tentukan definisi kolom. Pernyataan berikut memulihkani kolom ke tutorials_alter -

mysql> ALTER TABLE tutorials_alter ADD i INT;

Setelah mengeluarkan pernyataan ini, testalter akan berisi dua kolom yang sama seperti saat Anda pertama kali membuat tabel, tetapi tidak akan memiliki struktur yang sama. Itu karena kolom baru ditambahkan ke akhir tabel secara default. Jadi meskipun begitui awalnya adalah kolom pertama di mytbl, sekarang menjadi yang terakhir.

mysql> SHOW COLUMNS FROM tutorials_alter;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| c     | char(1) | YES  |     | NULL    |       |
| i     | int(11) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.01 sec)

Untuk menunjukkan bahwa Anda menginginkan kolom pada posisi tertentu dalam tabel, gunakan FIRST untuk menjadikannya kolom pertama atau SETELAH col_name untuk menunjukkan bahwa kolom baru harus ditempatkan setelah col_name. Coba pernyataan ALTER TABLE berikut, menggunakan TAMPILKAN KOLOM setelah masing-masing untuk melihat apa efek masing-masing -

ALTER TABLE testalter_tbl DROP i;
ALTER TABLE testalter_tbl ADD i INT FIRST;
ALTER TABLE testalter_tbl DROP i;
ALTER TABLE testalter_tbl ADD i INT AFTER c;

Penentu FIRST dan AFTER hanya bekerja dengan klausa ADD. Ini berarti bahwa jika Anda ingin memposisikan ulang kolom yang sudah ada di dalam tabel, Anda harus DROP terlebih dahulu lalu TAMBAH di posisi baru.

Mengubah Definisi atau Nama Kolom

Untuk mengubah definisi kolom, gunakan MODIFY atau CHANGEklausa bersama dengan perintah ALTER. Misalnya untuk mengganti kolomc dari CHAR (1) ke CHAR (10), lakukan ini -

mysql> ALTER TABLE tutorials_alter MODIFY c CHAR(10);

Dengan CHANGE, sintaksnya sedikit berbeda. Setelah kata kunci CHANGE, Anda memberi nama kolom yang ingin Anda ubah, lalu tentukan definisi baru, yang menyertakan nama baru. Coba contoh berikut:

mysql> ALTER TABLE tutorials_alter CHANGE i j BIGINT;

Jika Anda sekarang menggunakan CHANGE untuk mengubah j dari BIGINT kembali ke INT tanpa mengubah nama kolom, pernyataannya akan seperti yang diharapkan -

mysql> ALTER TABLE tutorials_alter CHANGE j j INT;

Pengaruh ALTER TABLE pada Null dan Default Value Attributes -

Saat Anda MENGUBAH atau MENGUBAH kolom, Anda juga dapat menentukan apakah kolom tersebut dapat berisi nilai NULL dan berapa nilai default-nya. Faktanya, jika Anda tidak melakukan ini, MySQLi secara otomatis memberikan nilai untuk atribut ini.

Berikut adalah contoh di mana kolom NOT NULL akan bernilai 100 secara default.

mysql> ALTER TABLE tutorials_alter 
   -> MODIFY j BIGINT NOT NULL DEFAULT 100;

Jika Anda tidak menggunakan perintah di atas, maka MySQLi akan mengisi nilai NULL di semua kolom.

Mengubah Nilai Default Kolom

Anda dapat mengubah nilai default untuk setiap kolom menggunakan perintah ALTER. Coba contoh berikut.

mysql> ALTER TABLE tutorials_alter ALTER j SET DEFAULT 1000;
mysql> SHOW COLUMNS FROM tutorials_alter;
+-------+------------+------+-----+---------+-------+
| Field | Type       | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| c     | char(10)   | YES  |     | NULL    |       |
| j     | bigint(20) | NO   |     | 1000    |       |
+-------+------------+------+-----+---------+-------+
2 rows in set (0.02 sec)

Anda dapat menghapus batasan default dari kolom mana pun dengan menggunakan klausa DROP bersama dengan perintah ALTER.

mysql> ALTER TABLE tutorials_alter ALTER j DROP DEFAULT;
mysql> SHOW COLUMNS FROM tutorials_alter;
+-------+------------+------+-----+---------+-------+
| Field | Type       | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| c     | char(10)   | YES  |     | NULL    |       |
| j     | bigint(20) | NO   |     | NULL    |       |
+-------+------------+------+-----+---------+-------+
2 rows in set (0.02 sec)

Mengubah Jenis Tabel

Anda dapat menggunakan tipe tabel dengan menggunakan TYPE klausa bersama dengan perintah ALTER.

Untuk mengetahui tipe tabel saat ini, gunakan pernyataan SHOW TABLE STATUS.

mysql>  SHOW TABLE STATUS LIKE 'tutorials_alter'\G
*************************** 1. row ***************************
           Name: tutorials_alter
         Engine: InnoDB
        Version: 10
     Row_format: Compact
           Rows: 0
 Avg_row_length: 0
    Data_length: 16384
Max_data_length: 0
   Index_length: 0
      Data_free: 0
 Auto_increment: NULL
    Create_time: 2017-02-17 11:30:29
    Update_time: NULL
     Check_time: NULL
      Collation: latin1_swedish_ci
       Checksum: NULL
 Create_options:
        Comment:
1 row in set (0.00 sec)

Mengganti Nama Tabel

Untuk mengganti nama tabel, gunakan RENAMEopsi dari pernyataan ALTER TABLE. Coba contoh berikut untuk mengganti nama tutorials_alter menjadi tutorials_bks.

mysql> ALTER TABLE tutorials_alter RENAME TO tutorials_bks;

Anda dapat menggunakan perintah ALTER untuk membuat dan meletakkan INDEX pada file MySQL. Kita akan melihat fitur ini di bab selanjutnya.

Indeks database adalah struktur data yang meningkatkan kecepatan operasi dalam tabel. Indeks dapat dibuat menggunakan satu atau beberapa kolom, memberikan dasar untuk pencarian acak cepat dan pengurutan akses yang efisien ke rekaman.

Saat membuat indeks, harus diperhatikan bahwa kolom apa saja yang akan digunakan untuk membuat kueri SQL dan membuat satu atau lebih indeks pada kolom tersebut.

Secara praktis, indeks juga merupakan tipe tabel, yang menyimpan kunci utama atau bidang indeks dan penunjuk ke setiap rekaman ke dalam tabel aktual.

Pengguna tidak dapat melihat indeks, mereka hanya digunakan untuk mempercepat kueri dan akan digunakan oleh Mesin Pencari Database untuk menemukan catatan dengan sangat cepat.

Pernyataan INSERT dan UPDATE membutuhkan lebih banyak waktu pada tabel yang memiliki indeks dimana pernyataan SELECT menjadi cepat pada tabel tersebut. Alasannya adalah saat melakukan insert atau update, database perlu memasukkan atau mengupdate nilai indeks juga.

Indeks Sederhana dan Unik

Anda dapat membuat indeks unik di atas tabel. Indeks unik berarti bahwa dua baris tidak boleh memiliki nilai indeks yang sama. Berikut ini sintaks untuk membuat Indeks di atas tabel.

CREATE UNIQUE INDEX index_name ON table_name ( column1, column2,...);

Anda dapat menggunakan satu atau beberapa kolom untuk membuat indeks. Misalnya, kita dapat membuat indeks di tutorials_inf menggunakan NAME_INDEX.

CREATE UNIQUE INDEX NAME_INDEX ON tutorials_inf(name);

Anda dapat membuat indeks sederhana di atas tabel. Hapus saja kata kunci UNIK dari kueri untuk membuat indeks sederhana. Indeks sederhana memungkinkan nilai duplikat dalam tabel.

Jika Anda ingin mengindeks nilai dalam kolom dalam urutan menurun, Anda dapat menambahkan kata khusus DESC setelah nama kolom.

mysql> CREATE UNIQUE INDEX NAME_INDEX ON tutorials_inf (name DESC);

Perintah ALTER untuk menambah dan melepas INDEX

Ada empat jenis pernyataan untuk menambahkan indeks ke tabel -

  • ALTER TABLE tbl_name ADD PRIMARY KEY (column_list) - Pernyataan ini menambahkan PRIMARY KEY, yang berarti nilai yang diindeks harus unik dan tidak boleh NULL.

  • ALTER TABLE tbl_name ADD UNIQUE index_name (column_list) - Pernyataan ini membuat indeks yang nilainya harus unik (dengan pengecualian nilai NULL, yang mungkin muncul beberapa kali).

  • ALTER TABLE tbl_name ADD INDEX index_name (column_list) - Ini menambahkan indeks biasa di mana nilai apa pun dapat muncul lebih dari sekali.

  • ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list) - Ini membuat indeks FULLTEXT khusus yang digunakan untuk tujuan pencarian teks.

Berikut adalah contoh untuk menambahkan indeks pada tabel yang sudah ada.

mysql> ALTER TABLE tutorials_inf ADD INDEX (id);

Anda dapat menghapus INDEX apapun dengan menggunakan klausa DROP bersama dengan perintah ALTER. Coba contoh berikut untuk menjatuhkan indeks yang dibuat di atas.

mysql> ALTER TABLE tutorials_inf DROP INDEX (c);

Anda dapat menghapus INDEX apapun dengan menggunakan klausa DROP bersama dengan perintah ALTER. Coba contoh berikut untuk menjatuhkan indeks yang dibuat di atas.

ALTER Perintah untuk menambah dan melepas PRIMARY KEY

Anda juga dapat menambahkan kunci utama dengan cara yang sama. Tetapi pastikan Kunci Utama berfungsi pada kolom, yang BUKAN NIHIL.

Berikut adalah contoh untuk menambahkan kunci utama pada tabel yang sudah ada. Ini akan membuat kolom NOT NULL terlebih dahulu dan kemudian menambahkannya sebagai kunci utama.

mysql>  ALTER TABLE tutorials_inf MODIFY id INT NOT NULL;
mysql> ALTER TABLE tutorials_inf ADD PRIMARY KEY (id);

Anda dapat menggunakan perintah ALTER untuk melepaskan kunci utama sebagai berikut:

mysql> ALTER TABLE tutorials_inf DROP PRIMARY KEY;

Untuk menghapus indeks yang bukan PRIMARY KEY, Anda harus menentukan nama indeks.

Menampilkan Informasi INDEX

Anda dapat menggunakan perintah SHOW INDEX untuk mendaftar semua indeks yang terkait dengan tabel. Output format vertikal (ditentukan oleh \ G) sering kali berguna dengan pernyataan ini, untuk menghindari garis batas panjang -

Coba contoh berikut

mysql> SHOW INDEX FROM table_name\G
........

Tabel sementara bisa sangat berguna dalam beberapa kasus untuk menyimpan data sementara. Hal terpenting yang harus diketahui untuk tabel sementara adalah tabel tersebut akan dihapus ketika sesi klien saat ini berakhir.

Seperti yang dinyatakan sebelumnya, tabel sementara hanya akan bertahan selama sesi tersebut hidup. Jika Anda menjalankan kode dalam skrip PHP, tabel sementara akan dihancurkan secara otomatis ketika skrip selesai dijalankan. Jika Anda terhubung ke server database MySQL melalui program klien MySQLi, maka tabel sementara akan ada sampai Anda menutup klien atau menghancurkan tabel secara manual.

Contoh

Berikut adalah contoh yang menunjukkan penggunaan tabel sementara. Kode yang sama dapat digunakan dalam skrip PHP menggunakanmysqli_query() fungsi.

mysql> CREATE TEMPORARY TABLE SalesSummary (
   -> product_name VARCHAR(50) NOT NULL
   -> , total_sales DECIMAL(12,2) NOT NULL DEFAULT 0.00
   -> , avg_unit_price DECIMAL(7,2) NOT NULL DEFAULT 0.00
   -> , total_units_sold INT UNSIGNED NOT NULL DEFAULT 0
   -> );
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO SalesSummary
   -> (product_name, total_sales, avg_unit_price, total_units_sold)
   -> VALUES
   -> ('cucumber', 100.25, 90, 2);

mysql> SELECT * FROM SalesSummary;
+--------------+-------------+----------------+------------------+
| product_name | total_sales | avg_unit_price | total_units_sold |
+--------------+-------------+----------------+------------------+
| cucumber     |      100.25 |          90.00 |                2 |
+--------------+-------------+----------------+------------------+
1 row in set (0.00 sec)

Ketika Anda mengeluarkan perintah SHOW TABLES, maka tabel sementara Anda tidak akan dicantumkan dalam daftar. Sekarang, jika Anda akan keluar dari sesi MySQLi dan kemudian Anda akan mengeluarkan perintah PILIH, maka Anda tidak akan menemukan data yang tersedia di database. Bahkan tabel sementara Anda juga tidak akan ada.

Menjatuhkan Tabel Sementara

Secara default, semua tabel sementara dihapus oleh MySQLi ketika koneksi database Anda diakhiri. Masih jika Anda ingin menghapusnya di antara keduanya, maka Anda melakukannya dengan mengeluarkan perintah DROP TABLE.

Berikut adalah contoh tentang menjatuhkan tabel sementara -

mysql> DROP TABLE SalesSummary;
mysql>  SELECT * FROM SalesSummary;
ERROR 1146: Table 'TUTORIALS.SalesSummary' doesn't exist

Mungkin ada situasi ketika Anda membutuhkan salinan tabel yang tepat dan CREATE TABLE ... SELECT tidak sesuai dengan tujuan Anda karena salinan tersebut harus menyertakan indeks yang sama, nilai default, dan sebagainya.

Anda dapat menangani situasi ini dengan mengikuti langkah-langkah -

  • Gunakan SHOW CREATE TABLE untuk mendapatkan pernyataan CREATE TABLE yang menentukan struktur tabel sumber, indeks, dan semuanya.

  • Ubah pernyataan untuk mengubah nama tabel menjadi tabel klon dan jalankan pernyataan. Dengan cara ini, Anda akan memiliki tabel klon yang tepat.

  • Secara opsional, jika Anda ingin konten tabel disalin juga, keluarkan juga pernyataan INSERT INTO ... SELECT.

Contoh

Coba contoh berikut untuk membuat tabel klon untuk tutorials_inf.

Langkah 1

Dapatkan struktur lengkap tentang tabel.

mysql> SHOW CREATE TABLE tutorials_inf \G;
*************************** 1. row ***************************
       Table: tutorials_inf
Create Table: CREATE TABLE `tutorials_inf` (
   `id` int(11) NOT NULL,
   `name` varchar(20) NOT NULL,
   PRIMARY KEY (`id`),
   UNIQUE KEY `AUTHOR_INDEX` (`name`),
   UNIQUE KEY `NAME_INDEX` (`name`),
   KEY `id` (`id`)
) ENGINE = InnoDB DEFAULT CHARSET = latin1
1 row in set (0.05 sec)

ERROR: No query specified

Langkah 2

Ubah nama tabel ini dan buat tabel lain.

mysql> CREATE TABLE tutorials_clone(
   -> id int(11) NOT NULL,
   -> name varchar(20) NOT NULL,
   -> PRIMARY KEY (id),
   > UNIQUE KEY AUTHOR_INDEX (name),
   -> UNIQUE KEY NAME_INDEX (name),
   ->  KEY id (id));
Query OK, 0 rows affected (1.80 sec)

LANGKAH 3

Setelah menjalankan langkah 2, Anda akan membuat tabel klon di database Anda. Jika Anda ingin menyalin data dari tabel lama maka Anda dapat melakukannya dengan menggunakan pernyataan INSERT INTO ... SELECT.

mysql> INSERT INTO tutorials_clone(id,name) SELECT id,name from tutorials_inf;
Query OK, 4 rows affected (0.19 sec)
Records: 4  Duplicates: 0  Warnings: 0

Akhirnya, Anda akan memiliki tabel klon yang tepat seperti yang Anda inginkan.

Ada tiga informasi yang ingin Anda dapatkan dari MySQLi.

  • Information about the result of queries - Ini termasuk jumlah record yang dipengaruhi oleh pernyataan SELECT, UPDATE atau DELETE.

  • Information about tables and databases - Ini termasuk informasi yang berkaitan dengan struktur tabel dan database.

  • Information about the MySQLi server - Ini termasuk status server database saat ini, nomor versi, dll.

Sangat mudah untuk mendapatkan semua informasi ini pada prompt mysqli, tetapi saat menggunakan PERL atau PHP API, kita perlu memanggil berbagai API secara eksplisit untuk mendapatkan semua informasi ini. Bagian berikut akan menunjukkan kepada Anda bagaimana mendapatkan informasi ini.

Memperoleh Jumlah Baris yang Dipengaruhi oleh Kueri

Contoh PERL

Dalam skrip DBI, jumlah baris yang terpengaruh dikembalikan oleh do () atau oleh execute (), bergantung pada cara Anda mengeksekusi kueri -

# Method 1
# execute $query using do( ) my $count = $dbh->do ($query);
# report 0 rows if an error occurred
printf "%d rows were affected\n", (defined ($count) ? $count : 0);

# Method 2
# execute query using prepare( ) plus execute( )
my $sth = $dbh->prepare ($query); my $count = $sth->execute ( ); printf "%d rows were affected\n", (defined ($count) ? $count : 0);

Contoh PHP

Di PHP, aktifkan fungsi mysqli_affected_rows () untuk mengetahui berapa banyak baris yang diubah kueri -

$result_id = mysqli_query ($query, $conn_id);
# report 0 rows if the query failed
$count = ($result_id ? mysqli_affected_rows ($conn_id) : 0); print ("$count rows were affected\n");

Daftar Tabel dan Database

Ini sangat mudah untuk membuat daftar semua database dan tabel yang tersedia dengan server database. Hasil Anda mungkin nol jika Anda tidak memiliki cukup hak istimewa.

Terlepas dari metode yang saya sebutkan di bawah ini, Anda dapat menggunakan kueri SHOW TABLES atau SHOW DATABASES untuk mendapatkan daftar tabel atau database baik dalam PHP atau PERL.

Contoh PERL

# Get all the tables available in current database.
my @tables = $dbh->tables ( ); foreach $table (@tables ){
   print "Table Name $table\n";
}

Contoh PHP

<?php
   $servername = "localhost:3306";
   $username = "root"; $password = "";
   $dbname = "TUTORIALS"; $conn = new mysqli($servername, $username, $password, $dbname);
   
   if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error);
   } 
   echo"Database connected";
   $sql="SHOW DATABASES"; if (!($result = mysqli_query($conn,$sql))) {
      printf("Error: %s\n", mysqli_error($conn)); } while( $row = mysqli_fetch_row( $result ) ){ if (($row[0]!="information_schema") && ($row[0]!="mysql")) { echo $row[0]."\r\n";
      }
   }
   $conn->close();
?>

Mendapatkan Metadata Server

Ada perintah berikut di MySQL yang dapat dijalankan baik pada prompt mysql atau menggunakan script seperti PHP untuk mendapatkan berbagai informasi penting tentang server database.

Sr.No. Perintah & Deskripsi
1

SELECT VERSION( )

String versi server

2

SELECT DATABASE( )

Nama database saat ini (kosong jika tidak ada)

3

SELECT USER( )

Nama pengguna saat ini

4

SHOW STATUS

Indikator status server

5

SHOW VARIABLES

Variabel konfigurasi server

Urutan adalah himpunan bilangan bulat 1, 2, 3, ... yang dibuat sesuai permintaan. Urutan sering digunakan dalam database karena banyak aplikasi mengharuskan setiap baris dalam tabel berisi nilai unik dan urutan menyediakan cara mudah untuk membuatnya. Bab ini menjelaskan cara menggunakan urutan di MySQLi.

Menggunakan kolom AUTO_INCREMENT

Cara termudah di MySQLi untuk menggunakan Urutan adalah dengan mendefinisikan kolom sebagai AUTO_INCREMENT dan menyerahkan sisanya ke MySQLi untuk diurus.

Contoh

Coba contoh berikut. Ini akan membuat tabel dan setelah itu akan menyisipkan beberapa baris dalam tabel ini di mana tidak perlu memberikan ID catatan karena itu bertambah otomatis oleh MySQLi.

mysql>CREATE TABLE tutorials_auto(
   id INT UNSIGNED NOT NULL AUTO_INCREMENT, name VARCHAR(30) NOT NULL,PRIMARY KEY(id));
Query OK, 0 rows affected (0.28 sec)

mysql>INSERT INTO tutorials_auto(id,name) VALUES(NULL,'sai'),(NULL,'ram');
Query OK, 2 rows affected (0.12 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> SELECT * FROM insect ORDER BY id;
+----+------+
| id | name |
+----+------+
|  1 | sai  |
|  2 | ram  |
+----+------+
2 rows in set (0.05 sec)

Dapatkan Nilai AUTO_INCREMENT

LAST_INSERT_ID () adalah fungsi SQL, sehingga Anda dapat menggunakannya dari dalam klien mana pun yang memahami cara mengeluarkan pernyataan SQL. Jika tidak, PERL dan skrip PHP menyediakan fungsi eksklusif untuk mengambil nilai auto increment dari catatan terakhir.

Contoh PERL

Gunakan atribut mysql_insertid untuk mendapatkan nilai AUTO_INCREMENT yang dihasilkan oleh kueri. Atribut ini diakses melalui pegangan database atau pegangan pernyataan, tergantung pada bagaimana Anda mengeluarkan kueri. Contoh berikut mereferensikannya melalui pegangan database:

$dbh->do ("INSERT INTO tutorials_auto (name,date,origin)
VALUES('moth','2001-09-14','windowsill')");
my $seq = $dbh->{mysqli_insertid};

Contoh PHP

Setelah mengeluarkan kueri yang menghasilkan nilai AUTO_INCREMENT, ambil nilai dengan memanggil mysql_insert_id () -

mysql_query ("INSERT INTO tutorials_auto (name,date,origin)
VALUES('moth','2001-09-14','windowsill')", $conn_id); $seq = mysqli_insert_id ($conn_id);

Penomoran Ulang Urutan yang Ada

Mungkin ada kasus ketika Anda telah menghapus banyak rekaman dari tabel dan Anda ingin mengatur ulang semua rekaman. Ini dapat dilakukan dengan menggunakan trik sederhana tetapi Anda harus sangat berhati-hati melakukannya jika tabel Anda memiliki sambungan dengan tabel lain.

Jika Anda menentukan bahwa urutan ulang kolom AUTO_INCREMENT tidak dapat dihindari, cara untuk melakukannya adalah dengan melepaskan kolom dari tabel, lalu menambahkannya lagi. Contoh berikut menunjukkan bagaimana menomori ulang nilai id dalam tabel serangga menggunakan teknik ini -

mysql> ALTER TABLE tutorials_auto DROP id;
mysql> ALTER TABLE tutorials_auto
   -> ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST,
   -> ADD PRIMARY KEY (id);

Memulai Urutan pada Nilai Tertentu

Secara default, MySQLi akan memulai urutan dari 1 tetapi Anda dapat menentukan nomor lain juga pada saat pembuatan tabel. Berikut adalah contoh di mana MySQLi akan memulai urutan dari 100.

mysql> CREATE TABLE tutorials_auto
   -> (
   -> id INT UNSIGNED NOT NULL AUTO_INCREMENT = 100,
   -> PRIMARY KEY (id),
   -> name VARCHAR(30) NOT NULL, 
   -> );

Alternatifnya, Anda dapat membuat tabel dan kemudian mengatur nilai urutan awal dengan ALTER TABLE.

mysql> ALTER TABLE tutorials_auto AUTO_INCREMENT = 100;

Tabel atau kumpulan hasil terkadang berisi rekaman duplikat. Terkadang, hal itu diperbolehkan tetapi terkadang diperlukan untuk menghentikan rekaman duplikat. Terkadang, diperlukan untuk mengidentifikasi rekaman duplikat dan menghapusnya dari tabel. Bab ini akan menjelaskan cara mencegah rekaman duplikat terjadi di tabel dan cara menghapus rekaman duplikat yang sudah ada.

Mencegah Duplikat Terjadi dalam Tabel

Anda dapat menggunakan file PRIMARY KEY atau UNIQUEIndeks pada tabel dengan bidang yang sesuai untuk menghentikan rekaman duplikat. Mari kita ambil satu contoh: Tabel berikut tidak berisi indeks atau kunci utama seperti itu, sehingga akan memungkinkan catatan duplikat untuk nama_pertama dan nama_akhir.

CREATE TABLE person_tbl (
   first_name CHAR(20),
   last_name CHAR(20),
   sex CHAR(10)
);

Untuk mencegah beberapa rekaman dengan nilai nama depan dan belakang yang sama dibuat dalam tabel ini, tambahkan PRIMARY KEY untuk definisinya. Saat Anda melakukan ini, Anda juga perlu mendeklarasikan kolom yang diindeks menjadi NOT NULL, karena PRIMARY KEY tidak mengizinkan nilai NULL -

CREATE TABLE person_tbl (
   first_name CHAR(20) NOT NULL,
   last_name CHAR(20) NOT NULL,
   sex CHAR(10),
   PRIMARY KEY (last_name, first_name)
);

Kehadiran indeks unik dalam tabel biasanya menyebabkan kesalahan terjadi jika Anda menyisipkan catatan ke dalam tabel yang menduplikasi catatan yang sudah ada di kolom atau kolom yang menentukan indeks.

Menggunakan INSERT IGNORE daripada INSERT. Jika record tidak menduplikasi record yang sudah ada, MySQLi akan memasukkannya seperti biasa. Jika record adalah duplikat, kata kunci IGNORE memberitahu MySQLi untuk membuangnya secara diam-diam tanpa menimbulkan kesalahan.

Contoh berikut tidak error dan saat yang sama tidak akan menyisipkan catatan duplikat.

mysql> INSERT IGNORE INTO person_tbl (last_name, first_name)
   -> VALUES( 'Jay', 'Thomas');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT IGNORE INTO person_tbl (last_name, first_name)
   -> VALUES( 'Jay', 'Thomas');
Query OK, 0 rows affected (0.00 sec)

Menggunakan REPLACEdaripada INSERT. Jika record baru, itu disisipkan seperti dengan INSERT. Jika itu duplikat, catatan baru menggantikan yang lama -

mysql> REPLACE INTO person_tbl (last_name, first_name)
   -> VALUES( 'Ajay', 'Kumar');
Query OK, 1 row affected (0.00 sec)

mysql> REPLACE INTO person_tbl (last_name, first_name)
   -> VALUES( 'Ajay', 'Kumar');
Query OK, 2 rows affected (0.00 sec)

INSERT IGNORE dan REPLACE harus dipilih sesuai dengan perilaku penanganan duplikat yang ingin Anda lakukan. INSERT IGNORE menyimpan yang pertama dari kumpulan rekaman duplikat dan membuang sisanya. REPLACE menyimpan yang terakhir dari satu set duplikat dan menghapus yang sebelumnya.

Cara lain untuk menegakkan keunikan adalah dengan menambahkan indeks UNIK daripada PRIMARY KEY ke tabel.

CREATE TABLE person_tbl (
   first_name CHAR(20) NOT NULL,
   last_name CHAR(20) NOT NULL,
   sex CHAR(10)
   UNIQUE (last_name, first_name)
);

Menghitung dan Mengidentifikasi Duplikat

Berikut adalah query untuk menghitung record duplikat dengan first_name dan last_name dalam sebuah tabel.

mysql> SELECT COUNT(*) as repetitions, last_name, first_name
   -> FROM person_tbl
   -> GROUP BY last_name, first_name
   -> HAVING repetitions > 1;

Kueri ini akan mengembalikan daftar semua rekaman duplikat di tabel person_tbl. Secara umum, untuk mengidentifikasi kumpulan nilai yang diduplikasi, lakukan hal berikut -

  • Tentukan kolom mana yang berisi nilai yang mungkin diduplikasi.

  • Buat daftar kolom tersebut dalam daftar pilihan kolom, bersama dengan JUMLAH (*).

  • Sebutkan juga kolom-kolom di klausa GROUP BY.

  • Tambahkan klausa HAVING yang menghilangkan nilai unik dengan mengharuskan jumlah grup lebih besar dari satu.

Menghilangkan Duplikat dari Hasil Query:

Kamu dapat memakai DISTINCT bersama dengan pernyataan SELECT untuk mengetahui catatan unik yang tersedia dalam tabel.

mysql> SELECT DISTINCT last_name, first_name
   -> FROM person_tbl
   -> ORDER BY last_name;

Alternatif untuk DISTINCT adalah menambahkan klausa GROUP BY yang memberi nama kolom yang Anda pilih. Ini memiliki efek menghapus duplikat dan memilih hanya kombinasi unik dari nilai di kolom yang ditentukan -

mysql> SELECT last_name, first_name
   -> FROM person_tbl
   -> GROUP BY (last_name, first_name);

Menghapus Duplikat Menggunakan Penggantian Tabel

Jika Anda memiliki rekaman duplikat dalam tabel dan Anda ingin menghapus semua rekaman duplikat dari tabel itu, maka berikut adalah prosedurnya -

mysql> CREATE TABLE tmp SELECT last_name, first_name, sex
   -> FROM person_tbl;
   -> GROUP BY (last_name, first_name);
mysql> DROP TABLE person_tbl;
mysql> ALTER TABLE tmp RENAME TO person_tbl;

Cara mudah untuk menghapus rekaman duplikat dari tabel adalah dengan menambahkan INDEX atau PRIMAY KEY ke tabel itu. Meskipun tabel ini sudah tersedia, Anda dapat menggunakan teknik ini untuk menghapus rekaman duplikat dan Anda juga akan aman di masa mendatang.

mysql> ALTER IGNORE TABLE person_tbl 
   -> ADD PRIMARY KEY (last_name, first_name);