MariaDB - Hızlı Kılavuz

Bir veritabanı uygulaması, ana uygulamadan ayrı olarak bulunur ve veri koleksiyonlarını depolar. Her veritabanı, içerdiği verilerin oluşturulması, erişimi, yönetimi, aranması ve kopyalanması için bir veya birden fazla API kullanır.

Veritabanları ayrıca nesneler veya dosyalar gibi ilişkisel olmayan veri kaynaklarını da kullanır. Ancak veritabanları, diğer veri kaynakları ile yavaş erişim ve yazımdan muzdarip olan büyük veri kümeleri için en iyi seçeneği kanıtlamaktadır.

İlişkisel veritabanı yönetim sistemleri veya RDBMS, verileri çeşitli tablolarda depolar. Bu tablolar arasındaki ilişkiler, birincil anahtarlar ve yabancı anahtarlar kullanılarak oluşturulur.

RDBMS aşağıdaki özellikleri sunar -

  • Tablolar, sütunlar ve indeksler içeren bir veri kaynağı uygulamanıza olanak tanır.

  • Birden çok tablonun satırları boyunca referansların bütünlüğünü sağlarlar.

  • Endeksleri otomatik olarak güncellerler.

  • SQL sorgularını ve işlemlerini tablolardan veri alırken veya değiştirirken yorumlarlar.

RDBMS Terminolojisi

MariaDB ile ilgili tartışmamıza başlamadan önce, veritabanları ile ilgili birkaç terimi gözden geçirelim.

  • Database - Veritabanı, ilgili verileri tutan tablolardan oluşan bir veri kaynağıdır.

  • Table - Elektronik tablo anlamına gelen tablo, verileri içeren bir matristir.

  • Column- Veri öğesi anlamına gelen bir sütun, bir türdeki verileri tutan bir yapıdır; örneğin, nakliye tarihleri.

  • Row- Satır, ilgili verileri gruplayan bir yapıdır; örneğin, bir müşteri için veriler. Aynı zamanda bir demet, giriş veya kayıt olarak da bilinir.

  • Redundancy - Bu terim, sistemi hızlandırmak için verileri iki kez depolamayı ifade eder.

  • Primary Key- Bu, benzersiz, tanımlayıcı bir değeri ifade eder. Bu değer bir tabloda iki kez görünemez ve onunla ilişkilendirilmiş yalnızca bir satır vardır.

  • Foreign Key - Yabancı anahtar, iki tablo arasında bir bağlantı görevi görür.

  • Compound Key- Bileşik anahtar veya bileşik anahtar, birden çok sütuna başvuran bir anahtardır. Benzersiz bir kaliteye sahip olmayan bir sütun nedeniyle birden çok sütunu ifade eder.

  • Index - Bir indeks, bir kitabın indeksi ile neredeyse aynıdır.

  • Referential Integrity - Bu terim, tüm yabancı anahtar değerlerinin mevcut satırları göstermesini sağlamayı ifade eder.

MariaDB Veritabanı

MariaDB, MySQL'in orijinal geliştiricileri tarafından oluşturulan popüler bir MySQL fork'udur. MySQL'in Oracle tarafından satın alınmasıyla ilgili endişelerden doğdu. Hem küçük veri işleme görevleri hem de kurumsal ihtiyaçlar için destek sunar. Yalnızca MySQL'in basit bir şekilde kaldırılmasını ve MariaDB'nin yüklenmesini gerektiren MySQL'in yerine geçmeyi amaçlamaktadır. MariaDB, MySQL'in aynı özelliklerini ve daha fazlasını sunar.

MariaDB'nin Temel Özellikleri

MariaDB'nin önemli özellikleri:

  • MariaDB'nin tamamı GPL, LGPL veya BSD kapsamındadır.

  • MariaDB, diğer RDBMS veri kaynaklarıyla çalışmak için yüksek performanslı depolama motorları da dahil olmak üzere çok çeşitli depolama motorları içerir.

  • MariaDB, standart ve popüler bir sorgulama dili kullanır.

  • MariaDB bir dizi işletim sisteminde çalışır ve çok çeşitli programlama dillerini destekler.

  • MariaDB, en popüler web geliştirme dillerinden biri olan PHP için destek sunar.

  • MariaDB, Galera küme teknolojisi sunar.

  • MariaDB ayrıca MySQL'de bulunmayan birçok işlem ve komut sunar ve performansı olumsuz etkileyen özellikleri ortadan kaldırır / değiştirir.

Başlangıç

Bu eğiticiye başlamadan önce, PHP ve HTML eğiticilerimizde özellikle tartışılan materyaller olmak üzere temel PHP ve HTML bilgisine sahip olduğunuzdan emin olun.

Bu kılavuz, MariaDB'nin bir PHP ortamında kullanımına odaklanmaktadır, bu nedenle örneklerimiz en çok PHP geliştiricileri için yararlı olacaktır.

Bilginiz yoksa veya gözden geçirmeniz gerekiyorsa PHP Eğitimimizi incelemenizi şiddetle tavsiye ederiz.

MariaDB için tüm indirmeler resmi MariaDB vakıf web sitesinin İndirmeler bölümünde bulunur. İstediğiniz sürümün bağlantısını tıkladığınızda birden çok işletim sistemi, mimari ve kurulum dosyası türü için indirmelerin bir listesi görüntülenir.

LINUX / UNIX'e yükleme

Linux / Unix sistemleri hakkında derinlemesine bilginiz varsa, kurulumunuzu oluşturmak için kaynağı indirin. Önerilen kurulum yöntemimiz, dağıtım paketlerini kullanmaktır. MariaDB, aşağıdaki Linux / Unix dağıtımları için paketler sunar -

  • RedHat/CentOS/Fedora
  • Debian/Ubuntu

Aşağıdaki dağıtımlar, depolarında bir MariaDB paketi içerir -

  • openSUSE
  • Arch Linux
  • Mageia
  • Mint
  • Slackware

Bir Ubuntu ortamına yüklemek için şu adımları izleyin -

Step 1 - Kök kullanıcı olarak oturum açın.

Step 2 - MariaDB paketini içeren dizine gidin.

Step 3 - GnuPG imzalama anahtarını aşağıdaki kodla içe aktarın -

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db

Step 4 - MariaDB'yi sources.listdosya. Dosyayı açın ve aşağıdaki kodu ekleyin -

sudo add-apt-repository 'deb http://ftp.osuosl.org/pub/mariadb/repo/5.5/ubuntuprecise main'

Step 5 - Sistemi aşağıdakilerle yenileyin -

sudo apt-get update

Step 6 - MariaDB'yi aşağıdakilerle yükleyin -

sudo apt-get install mariadb-server

Windows'a yükleme

Otomatik bir kurulum dosyasını (MSI) bulup indirdikten sonra, kurulumu başlatmak için dosyayı çift tıklamanız yeterlidir. Kurulum sihirbazı, kurulumun her adımında ve gerekli ayarlarda size yol gösterecektir.

Kurulumu komut isteminden başlatarak test edin. Genellikle dizinde olmak üzere kurulumun konumuna gidin ve komut isteminde aşağıdakileri yazın -

mysqld.exe --console

Kurulum başarılı olursa, başlatma ile ilgili mesajlar göreceksiniz. Bu görünmüyorsa, izin sorunlarınız olabilir. Kullanıcı hesabınızın uygulamaya erişebildiğinden emin olun. Windows ortamında MariaDB yönetimi için grafik istemciler mevcuttur. Komut satırını rahatsız edici veya kullanışsız bulursanız, bunları denemeyi unutmayın.

Kurulumu Test Etme

MariaDB'nin çalışmasını ve kurulumunu onaylamak için birkaç basit görevi gerçekleştirin.

Use the Admin Utility to Get Server Status

Mysqladmin ikili dosyasıyla sunucu sürümünü görüntüleyin.

[root@host]# mysqladmin --version

Sürümü, dağıtımı, işletim sistemini ve mimariyi göstermelidir. Bu türün çıktısını görmezseniz, sorunlar için kurulumunuzu inceleyin.

Execute Simple Commands with a Client

MariaDB için komut istemini açın. Bu sizi MariaDB'ye bağlamalı ve komutların yürütülmesine izin vermelidir. Aşağıdaki gibi basit bir komut girin -

mysql> SHOW DATABASES;

Yükleme sonrası

MariaDB'yi başarıyla kurduktan sonra, bir kök şifresi belirleyin. Yeni bir kurulumun şifresi boş olacaktır. Yeni şifreyi belirlemek için aşağıdakileri girin -

mysqladmin -u root password "[enter your password here]";

Yeni kimlik bilgilerinizle sunucuya bağlanmak için aşağıdakileri girin -

mysql -u root -p
Enter password:*******

Windows'ta yükseltme

Windows sisteminizde MySQL zaten kuruluysa ve MariaDB'ye yükseltmek istiyorsanız; MySQL'i kaldırmayın ve MariaDB'yi kurmayın. Bu, mevcut veritabanıyla bir çakışmaya neden olacaktır. Bunun yerine MariaDB'yi kurmanız ve ardından Windows yükleme dosyasındaki yükseltme sihirbazını kullanmanız gerekir.

MySQL my.cnf dosyanızın seçenekleri MariaDB ile çalışmalıdır. Ancak MariaDB, MySQL'de bulunmayan birçok özelliğe sahiptir.

My.cnf dosyanızdaki aşağıdaki çakışmaları göz önünde bulundurun -

  • MariaDB, geçici dosyalar için varsayılan olarak Aria depolama motorunu kullanır. Çok sayıda geçici dosyanız varsa, MyISAM tablolarını kullanmıyorsanız anahtar arabellek boyutunu değiştirin.

  • Uygulamalarınız sık sık bağlanıyor / bağlantıyı kesiyorsa, iş parçacığı önbellek boyutunu değiştirin.

  • 100'den fazla bağlantı kullanıyorsanız, iş parçacığı havuzunu kullanın.

Uyumluluk

MySQL ve MariaDB esasen aynıdır. Ancak, yükseltmede sorun yaratmaya yetecek kadar fark vardır. MariaDB Bilgi Bankası'nda bu temel farklılıkların daha fazlasını gözden geçirin .

MariaDB'yi çalıştırmadan önce, ilk olarak mevcut durumunu, çalıştığını veya kapatıldığını belirleyin. MariaDB'yi başlatmak ve durdurmak için üç seçenek vardır -

  • Mysqld'yi (MariaDB ikili dosyası) çalıştırın.
  • Mysqld_safe başlangıç ​​komut dosyasını çalıştırın.
  • Mysql.server başlangıç ​​komut dosyasını çalıştırın.

MariaDB'yi standart olmayan bir konuma kurduysanız, komut dosyalarındaki konum bilgilerini düzenlemeniz gerekebilir. MariaDB'yi komut dosyasıyla birlikte bir "durdur" parametresi ekleyerek durdurun.

Linux altında otomatik olarak başlatmak isterseniz, başlangıç ​​komut dosyalarını ekleyin. initsistemi. Her dağıtımın farklı bir prosedürü vardır. Sistem belgelerinize bakın.

Kullanıcı Hesabı Oluşturma

Aşağıdaki kodla yeni bir kullanıcı hesabı oluşturun -

CREATE USER 'newusername'@'localhost' IDENTIFIED BY 'userpassword';

Bu kod, kullanıcı tablosuna ayrıcalıkları olmayan bir satır ekler. Parola için bir karma değer kullanma seçeneğiniz de vardır. Kullanıcı ayrıcalıklarını aşağıdaki kodla verin -

GRANT SELECT, INSERT, UPDATE, DELETE ON database1 TO 'newusername'@'localhost';

Diğer ayrıcalıklar, MariaDB'de mümkün olan hemen hemen her komut veya işlemi içerir. Bir kullanıcı oluşturduktan sonra, hibe tablolarını yenilemek için bir "FLUSH PRIVILEGES" komutunu yürütün. Bu, kullanıcı hesabının kullanılmasına izin verir.

Yapılandırma Dosyası

Unix / Linux üzerinde bir derlemeden sonra, "/etc/mysql/my.cnf" yapılandırma dosyası aşağıdaki gibi görünecek şekilde düzenlenmelidir -

# Example mysql config file.
# You can copy this to one of:
# /etc/my.cnf to set global options,
# /mysql-data-dir/my.cnf to get server specific options or
# ~/my.cnf for user specific options.

#

# One can use all long options that the program supports.
# Run the program with --help to get a list of available options

# This will be passed to all mysql clients
[client]
#password = my_password
#port = 3306
#socket = /tmp/mysql.sock

# Here is entries for some specific programs
# The following values assume you have at least 32M ram

# The MySQL server
[mysqld]
#port = 3306
#socket = /tmp/mysql.sock
temp-pool

# The following three entries caused mysqld 10.0.1-MariaDB (and possibly other
   versions) to abort...
# skip-locking
# set-variable = key_buffer = 16M
# set-variable = thread_cache = 4

loose-innodb_data_file_path = ibdata1:1000M
loose-mutex-deadlock-detector
gdb

######### Fix the two following paths

# Where you want to have your database
data = /path/to/data/dir

# Where you have your mysql/MariaDB source + sql/share/english
language = /path/to/src/dir/sql/share/english

[mysqldump]
quick
MariaDB
8
set-variable = max_allowed_packet=16M
[mysql]
no-auto-rehash

[myisamchk]
set-variable = key_buffer = 128M

"Data =" ve "language =" satırlarını ortamınıza uyacak şekilde düzenleyin.

Dosya değişikliğinden sonra, kaynak dizine gidin ve aşağıdakileri yürütün -

./scripts/mysql_install_db --srcdir = $PWD --datadir = /path/to/data/dir -- user = $LOGNAME

"$PWD” variable if you added datadir to the configuration file. Ensure “$LOGNAME ”, MariaDB'nin 10.0.1 sürümünü çalıştırırken kullanılır.

Yönetim Komutları

MariaDB ile çalışırken düzenli olarak kullanacağınız önemli komutların aşağıdaki listesini inceleyin -

  • USE [database name] - Mevcut varsayılan veritabanını ayarlar.

  • SHOW DATABASES - Sunucudaki mevcut veritabanlarını listeler.

  • SHOW TABLES - Tüm geçici olmayan tabloları listeler.

  • SHOW COLUMNS FROM [table name] - Belirtilen tabloyla ilgili sütun bilgilerini sağlar.

  • SHOW INDEX FROM TABLENAME [table name] - Belirtilen tabloyla ilgili tablo indeksi bilgilerini sağlar.

  • SHOW TABLE STATUS LIKE [table name]\G – - Tablolara geçici olmayan tablolar ve tablo adlarını getirmek için LIKE yan tümcesi kullanıldıktan sonra görünen kalıp hakkında bilgi sağlar.

MariaDB, PHP, C #, JavaScript, Ruby on Rails, Django ve daha fazlası gibi çok çeşitli programlama dilleri ve çerçeveleriyle iyi bir şekilde ortaktır. PHP, basitliği ve tarihsel ayak izi nedeniyle mevcut tüm diller arasında en popüler olanıdır. Bu kılavuz, MariaDB ile ortak olan PHP'ye odaklanacaktır.

PHP, MySQL veritabanıyla çalışmak için bir dizi işlev sağlar. Bu işlevler, erişim veya işlem yapma gibi görevleri yerine getirir ve MariaDB ile tamamen uyumludur. Diğer herhangi bir PHP işlevini çağırdığınız gibi bu işlevleri de çağırın.

MariaDB için kullanacağınız PHP işlevleri aşağıdaki biçime uygundur -

mysql_function(value,value,...);

Fonksiyonun ikinci bölümü eylemini belirtir. Bu kılavuzda kullanılan işlevlerden ikisi aşağıdaki gibidir -

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

Aşağıdaki örnek, MariaDB işlevine yapılan PHP çağrısının genel sözdizimini gösterir -

<html>
   <head>
      <title>PHP and MariaDB</title>
   </head>

   <body>
      <?php
         $retval = mysql_function(value, [value,...]); if( !$retval ) {
            die ( "Error: Error message here" );
         }
         // MariaDB or PHP Statements
      ?>
   </body>
</html>

Bir sonraki bölümde, PHP işlevlerini kullanarak temel MariaDB görevlerini inceleyeceğiz.

MariaDB ile bağlantı kurmanın bir yolu, komut isteminde mysql ikilisini kullanmaktır.

MYSQL İkili

Aşağıda verilen bir örneği inceleyin.

[root@host]# mysql -u root -p

Enter password:******

Yukarıda verilen kod MariaDB'ye bağlanır ve SQL komutlarını çalıştırmak için bir komut istemi sağlar. Kodu girdikten sonra, sürüm numarasının görüntülendiği başarılı bir bağlantı olduğunu belirten bir hoş geldiniz mesajı görünmelidir.

Welcome to the MariaDB monitor. Commands end with ; or \g. 
Your MariaDB connection id is 122323232 
Server version: 5.5.40-MariaDB-log
  
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.  
mysql>

Örnek, kök erişimini kullanır, ancak ayrıcalıklara sahip herhangi bir kullanıcı elbette MariaDB komut istemine erişebilir ve işlemleri gerçekleştirebilir.

MariaDB ile bağlantısını şu yolla kesin: exit aşağıdaki gibi komut -

mysql> exit

PHP Bağlantı Komut Dosyası

MariaDB'ye bağlanmanın ve bağlantıyı kesmenin başka bir yolu da bir PHP betiği kullanmaktır. PHP,mysql_connect()bir veritabanı bağlantısını açma işlevi. Beş isteğe bağlı parametre kullanır ve başarılı bir bağlantıdan sonra bir MariaDB bağlantı tanımlayıcısı veya başarısız bağlantı durumunda bir yanlış döndürür. Ayrıca,mysql_close() tek bir parametre kullanan veritabanı bağlantılarını kapatmak için işlev.

Sözdizimi

Aşağıdaki PHP bağlantı komut dosyası sözdizimini inceleyin -

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

Parametrelerin açıklaması aşağıda verilmiştir -

Sr.No Parametre ve Açıklama
1

server

Bu isteğe bağlı parametre, veritabanı sunucusunu çalıştıran ana bilgisayar adını belirtir. Varsayılan değeri "localhost: .3036" dır.

2

user

Bu isteğe bağlı parametre, veritabanına erişen kullanıcı adını belirtir. Varsayılan değeri, sunucunun sahibidir.

3

passwd

Bu isteğe bağlı parametre, kullanıcının parolasını belirtir. Varsayılan değeri boştur.

4

new_link

Bu isteğe bağlı parametre, ikinci bir çağrıda mysql_connect() yeni bir bağlantı yerine aynı bağımsız değişkenlerle mevcut bağlantının tanımlayıcısı döndürülür.

5

client flags

Bu isteğe bağlı parametre, aşağıdaki sabit değerlerin bir kombinasyonunu kullanır -

  • MYSQL_CLIENT_SSL - SSL şifrelemesini kullanır.

  • MYSQL_CLIENT_COMPRESS - Sıkıştırma protokolünü kullanır.

  • MYSQL_CLIENT_IGNORE_SPACE - İşlev adlarından sonra boşluğa izin verir.

  • MYSQL_CLIENT_INTERACTIVE - Bağlantıyı kapatmadan önce etkileşimli zaman aşımı saniyeleri hareketsizliğe izin verir.

Aşağıda verilen PHP bağlantı kesme komut dizisini inceleyin -

bool mysql_close ( resource $link_identifier );

Kaynağı atlarsanız, en son açılan kaynak kapanır. Başarılı bir kapanışta true veya false değerini döndürür.

Bir MariaDB sunucusuna bağlanmak için aşağıdaki örnek kodu deneyin -

<html>
   <head>
      <title>Connect to MariaDB Server</title>
   </head>

   <body>
      <?php
         $dbhost = 'localhost:3036';
         $dbuser = 'guest1'; $dbpass = 'guest1a';
         $conn = mysql_connect($dbhost, $dbuser, $dbpass);
      
         if(! $conn ) { die('Could not connect: ' . mysql_error()); } echo 'Connected successfully'; mysql_close($conn);
      ?>
   </body>
</html>

Başarılı bağlantıda aşağıdaki çıktıyı göreceksiniz -

mysql> Connected successfully

MariaDB'de veritabanlarının oluşturulması veya silinmesi, genellikle yalnızca kök kullanıcılara veya yöneticilere verilen ayrıcalıklar gerektirir. Bu hesaplar altında, bir veritabanı oluşturmak için iki seçeneğiniz vardır - mysqladmin ikili dosyası ve bir PHP betiği.

mysqladmin ikili

Aşağıdaki örnek, mysqladmin ikili dosyasının adıyla bir veritabanı oluşturmada kullanımını gösterir. Products -

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

PHP Veritabanı Komut Dosyası Oluştur

PHP, mysql_queryMariaDB veritabanı oluşturma işlevi. İşlev, biri isteğe bağlı olmak üzere iki parametre kullanır ve başarılı olduğunda "true" değerini, yoksa "false" değerini döndürür.

Sözdizimi

Aşağıdakileri inceleyin create database script sözdizimi -

bool mysql_query( sql, connection );

Parametrelerin açıklaması aşağıda verilmiştir -

S.No Parametre ve Açıklama
1

sql

Bu gerekli parametre, işlemi gerçekleştirmek için gereken SQL sorgusundan oluşur.

2

connection

Belirtilmediğinde, bu isteğe bağlı parametre kullanılan en son bağlantıyı kullanır.

Veritabanı oluşturmak için aşağıdaki örnek kodu deneyin -

<html>
   <head>
      <title>Create a MariaDB Database</title>
   </head>

   <body>
      <?php
         $dbhost = 'localhost:3036'; $dbuser = 'root';
         $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) {
            die('Could not connect: ' . mysql_error());
         }

         echo 'Connected successfully<br />';
         $sql = 'CREATE DATABASE PRODUCTS'; $retval = mysql_query( $sql, $conn );
      
         if(! $retval ) { die('Could not create database: ' . mysql_error()); } echo "Database PRODUCTS created successfully\n"; mysql_close($conn);
      ?>
   </body>
</html>

Başarılı bir silme işleminde aşağıdaki çıktıyı göreceksiniz -

mysql> Database PRODUCTS created successfully 
mysql> SHOW DATABASES; 
+-----------------------+ 
| Database              | 
+-----------------------+ 
| PRODUCTS              | 
+-----------------------+

MariaDB'de veritabanlarının oluşturulması veya silinmesi, genellikle yalnızca kök kullanıcılara veya yöneticilere verilen ayrıcalıklar gerektirir. Bu hesaplar altında, bir veritabanını silmek için iki seçeneğiniz vardır: mysqladmin ikili dosyası ve bir PHP betiği.

Silinen veritabanlarının kurtarılamaz olduğunu unutmayın, bu nedenle bu işlemi yaparken dikkatli olun. Ayrıca, silmek için kullanılan PHP betiklerinot silme işleminden önce size bir onay istenir.

mysqladmin ikili

Aşağıdaki örnek, varolan bir veritabanını silmek için mysqladmin ikili dosyasının nasıl kullanılacağını gösterir -

[root@host]# mysqladmin -u root -p drop PRODUCTS
Enter password:******
mysql> DROP PRODUCTS
ERROR 1008 (HY000): Can't drop database 'PRODUCTS'; database doesn't exist

PHP Drop Veritabanı Komut Dosyası

PHP, mysql_queryMariaDB veritabanlarını silme işlevi. İşlev, biri isteğe bağlı olmak üzere iki parametre kullanır ve başarılı olduğunda "true" değerini, yoksa "false" değerini döndürür.

Sözdizimi

Aşağıdaki drop veritabanı komut dosyası sözdizimini inceleyin -

bool mysql_query( sql, connection );

Parametrelerin açıklaması aşağıda verilmiştir -

Sr.No Parametre ve Açıklama
1

sql

Bu gerekli parametre, işlemi gerçekleştirmek için gereken SQL sorgusundan oluşur.

2

connection

Belirtilmediğinde, bu isteğe bağlı parametre kullanılan en son bağlantıyı kullanır.

Bir veritabanını silmek için aşağıdaki örnek kodu deneyin -

<html>
   <head>
      <title>Delete a MariaDB Database</title>
   </head>

   <body>
      <?php
         $dbhost = 'localhost:3036'; $dbuser = 'root';
         $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) {
            die('Could not connect: ' . mysql_error());
         }
         echo 'Connected successfully<br />';
         
         $sql = 'DROP DATABASE PRODUCTS'; $retval = mysql_query( $sql, $conn );
         
         if(! $retval ){ die('Could not delete database: ' . mysql_error()); } echo "Database PRODUCTS deleted successfully\n"; mysql_close($conn);
      ?>
   </body>
</html>

Başarılı bir silme işleminde aşağıdaki çıktıyı göreceksiniz -

mysql> Database PRODUCTS deleted successfully

MariaDB'ye bağlandıktan sonra, birçok veritabanı mevcut olabileceğinden, çalışmak için bir veritabanı seçmelisiniz. Bu görevi gerçekleştirmenin iki yolu vardır: komut isteminden veya bir PHP betiğinden.

Komut İstemi

Komut isteminde bir veritabanı seçerken, SQL komutunu kullanın ‘use’ -

[root@host]# mysql -u root -p

Enter password:******

mysql> use PRODUCTS;

Database changed

mysql> SELECT database();  
+-------------------------+ 
| Database                | 
+-------------------------+ 
| PRODUCTS                | 
+-------------------------+

Bir veri tabanı seçtiğinizde, sonraki tüm komutlar seçilen veri tabanı üzerinde çalışacaktır.

Note- Tüm isimler (örn. Veritabanı, tablo, alanlar) büyük / küçük harfe duyarlıdır. Komutların doğru duruma uygun olduğundan emin olun.

PHP Veritabanı Komut Dosyası Seç

PHP, mysql_select_dbveritabanı seçimi için işlev. İşlev, biri isteğe bağlı olmak üzere iki parametre kullanır ve başarılı seçimde "true" değerini veya başarısızlık durumunda false değerini döndürür.

Sözdizimi

Aşağıdaki seçme veritabanı komut dosyası sözdizimini inceleyin.

bool mysql_select_db( db_name, connection );

Parametrelerin açıklaması aşağıda verilmiştir -

S.No Parametre ve Açıklama
1

db_name

Bu gerekli parametre, kullanılacak veritabanının adını belirtir.

2

connection

Belirtilmediğinde, bu isteğe bağlı parametre kullanılan en son bağlantıyı kullanır.

Bir veritabanı seçmek için aşağıdaki örnek kodu deneyin -

<html>
   <head>
      <title>Select a MariaDB Database</title>
   </head>

   <body>
      <?php
         $dbhost = 'localhost:3036'; $dbuser = 'guest1';
         $dbpass = 'guest1a'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) {
            die('Could not connect: ' . mysql_error());
         }
         echo 'Connected successfully';
         
         mysql_select_db( 'PRODUCTS' );
         mysql_close($conn);
      ?>
   </body>
</html>

Başarılı seçimde, aşağıdaki çıktıyı göreceksiniz -

mysql> Connected successfully

Veritabanınızın optimizasyonu için iyi alan tanımları gereklidir. İdeal yaklaşım, yalnızca ihtiyaç duyulan tür ve boyuttaki bir alanı kullanmanızı gerektirir. Örneğin, yalnızca beş karakter genişliğinde bir alan kullanacaksanız, 20 karakter genişliğinde bir alan tanımlamayın. Alan (veya sütun) türleri, alanda depolanan veri türleri göz önüne alındığında veri türleri olarak da bilinir.

MariaDB veri türleri sayısal, tarih ve saat ve dize değerleri olarak kategorize edilebilir.

Sayısal Veri Türleri

MariaDB tarafından desteklenen sayısal veri türleri aşağıdaki gibidir -

  • TINYINT - Bu veri türü, -128 ila 127 işaretli aralığa ve 0 ila 255 arasındaki işaretsiz aralığa düşen küçük tam sayıları temsil eder.

  • BOOLEAN - Bu veri türü, 0 değerini "false" ile ve 1 değerini "true" ile ilişkilendirir.

  • SMALLINT - Bu veri türü, -32768 ila 32768 işaretli aralığı ve 0 ila 65535 işaretsiz aralığı içindeki tam sayıları temsil eder.

  • MEDIUMINT - Bu veri türü, -8388608 ile 8388607 arasındaki işaretli aralıktaki ve 0 ile 16777215 arasındaki işaretsiz aralığındaki tam sayıları temsil eder.

  • INT(also INTEGER)- Bu veri türü, normal boyutta bir tamsayıyı temsil eder. İşaretsiz olarak işaretlendiğinde, aralık 0 ila 4294967295'i kapsar. İşaretlendiğinde (varsayılan ayar), aralık -2147483648 ila 2147483647'yi kapsar. Bir sütun ZEROFILL (işaretsiz durum) olarak ayarlandığında, tüm değerlerinin başına yerleştirmek için sıfırlar eklenir INT değerinde M basamak.

  • BIGINT - Bu veri türü, 9223372036854775808 - 9223372036854775807 işaretli aralığı ve 0 - 18446744073709551615 işaretsiz aralığı içindeki tam sayıları temsil eder.

  • DECIMAL(ayrıca DEC, NUMERIC, FIXED) - Bu veri türü, M'nin rakamlarını ve D'nin ondalıktan sonra rakamları belirttiği kesin sabit nokta sayılarını temsil eder. M değeri "-" veya ondalık noktayı eklemez. D 0 olarak ayarlanırsa, ondalık veya kesir bölümü görünmez ve değer INSERT'te en yakın DECIMAL değerine yuvarlanır. İzin verilen maksimum rakam 65'tir ve ondalık basamaklar için maksimum 30'dur. İhmal edildiğinde M için varsayılan değer 10 ve ihmal edildiğinde D için 0'dır.

  • FLOAT - Bu veri türü, 0 değerinin küçük, kayan noktalı sayısını veya aşağıdaki aralıklar içindeki bir sayıyı temsil eder -

    • -3.402823466E + 38 ila -1.175494351E-38

    • 1.175494351E-38 ila 3.402823466E + 38

  • DOUBLE (Ayrıca REAL ve DOUBLE PRECISION) - Bu veri türü, 0 değerinin normal boyutlu, kayan noktalı sayılarını veya aşağıdaki aralıklar içinde temsil eder -

    • -1.7976931348623157E + 308 - -2.2250738585072014E-308

    • 2.2250738585072014E-308 ila 1.7976931348623157E + 308

  • BIT- Bu veri türü, M değeri başına bit sayısını belirten bit alanlarını temsil eder. M'nin ihmal edilmesi durumunda varsayılan 1'dir. Bit değerleri, değerin 0 ve 1'lerdeki bit değerini temsil ettiği “b” [değer] ”ile uygulanabilir. Sıfır doldurma, tam uzunluk için soldan otomatik olarak gerçekleşir; örneğin, "10", "0010" olur.

Tarih ve Saat Veri Türleri

MariaDB tarafından desteklenen tarih ve saat veri türleri aşağıdaki gibidir -

  • DATE - Bu veri türü "1000-01-01" ila "9999-12-31" tarih aralığını temsil eder ve "YYYY-AA-GG" tarih biçimini kullanır.

  • TIME - Bu veri türü "-838: 59: 59.999999" ile "838: 59: 59.999999" arasındaki bir zaman aralığını temsil eder.

  • DATETIME- Bu veri türü "1000-01-01 00: 00: 00.000000" ile "9999-12-31 23: 59: 59.999999" aralığını temsil eder. "YYYY-AA-GG SS: DD: SS" biçimini kullanır.

  • TIMESTAMP- Bu veri türü, "YYYY-AA-GG SS: DD: DD" biçiminin bir zaman damgasını temsil eder. Esas olarak, örneğin ekleme veya güncelleme gibi veritabanı değişikliklerinin zamanının detaylandırılmasında kullanım alanı bulur.

  • YEAR- Bu veri türü, 4 basamaklı formatta bir yılı temsil eder. Dört basamaklı biçim, 1901 ile 2155 ve 0000 aralığındaki değerlere izin verir.

Dize Veri Türleri

MariaDB tarafından desteklenen dize türü değerleri aşağıdaki gibidir -

  • String literals - Bu veri türü tırnak içine alınmış karakter dizilerini temsil eder.

  • CHAR- Bu veri türü, belirtilen uzunlukta boşluklar içeren sağ dolgulu, sabit uzunlukta bir dizeyi temsil eder. M, 0 ile 255 aralığındaki karakterlerin sütun uzunluğunu temsil eder, varsayılan değeri 1'dir.

  • VARCHAR - Bu veri türü, 0 ila 65535 arasında bir M aralığı (maksimum sütun uzunluğu) olan değişken uzunluklu bir dizeyi temsil eder.

  • BINARY - Bu veri türü, bayt cinsinden sütun uzunluğu M olan ikili bayt dizelerini temsil eder.

  • VARBINARY - Bu veri türü, M sütun uzunluğu olmak üzere, değişken uzunluktaki ikili bayt dizilerini temsil eder.

  • TINYBLOB- Bu veri türü, maksimum uzunluğu 255 (28 - 1) bayt olan bir blob sütununu temsil eder. Depolamada, her biri, değerdeki bayt miktarını belirten bir bayt uzunluğunda ön ek kullanır.

  • BLOB- Bu veri türü, maksimum uzunluğu 65.535 (216 - 1) bayt olan bir blob sütununu temsil eder. Depolamada, her biri, değerdeki bayt miktarını belirten iki bayt uzunluğunda bir önek kullanır.

  • MEDIUMBLOB- Bu veri türü, maksimum uzunluğu 16.777.215 (2 24 - 1) bayt olan bir blob sütununu temsil eder . Depolamada, her biri, değerdeki bayt miktarını belirten üç bayt uzunluğunda bir ön ek kullanır.

  • LONGBLOB- Bu veri türü, maksimum uzunluğu 4,294,967,295 (2 32 - 1) bayt olan bir blob sütununu temsil eder . Depolamada her biri, değerdeki bayt miktarını gösteren dört bayt uzunluğunda bir önek kullanır.

  • TINYTEXT- Bu veri türü, maksimum 255 (2 8 - 1) karakter uzunluğunda bir metin sütununu temsil eder . Depolamada, her biri, değerdeki bayt miktarını belirten bir bayt uzunluğunda ön ek kullanır.

  • TEXT- Bu veri türü, maksimum 65.535 (2 16 - 1) karakter uzunluğunda bir metin sütununu temsil eder . Depolamada, her biri, değerdeki bayt miktarını belirten iki bayt uzunluğunda bir önek kullanır.

  • MEDIUMTEXT- Bu veri türü, maksimum 16.777.215 (2 24 - 1) karakter uzunluğunda bir metin sütununu temsil eder . Depolamada, her biri, değerdeki bayt miktarını belirten üç bayt uzunluğunda bir ön ek kullanır.

  • LONGTEXT- Bu veri türü, maksimum 4,294,967,295 veya 4GB (2 32 - 1) karakter uzunluğunda bir metin sütununu temsil eder . Depolamada her biri, değerdeki bayt miktarını gösteren dört bayt uzunluğunda bir önek kullanır.

  • ENUM - Bu veri türü, bir listeden yalnızca tek bir değere sahip bir dize nesnesini temsil eder.

  • SET- Bu veri türü, maksimum 64 üyesi olan bir listeden sıfır veya daha fazla değere sahip bir dize nesnesini temsil eder. SET değerleri dahili olarak tamsayı değerleri olarak sunulur.

Bu bölümde, tabloların nasıl oluşturulacağını öğreneceğiz. Bir tablo oluşturmadan önce adını, alan adlarını ve alan tanımlarını belirleyin.

Tablo oluşturma için genel sözdizimi aşağıdadır -

CREATE TABLE table_name (column_name column_type);

ÜRÜNLER veritabanında bir tablo oluşturmak için uygulanan komutu inceleyin -

databaseproducts_ tbl(
   product_id INT NOT NULL AUTO_INCREMENT,
   product_name VARCHAR(100) NOT NULL,
   product_manufacturer VARCHAR(40) NOT NULL,
   submission_date DATE,
   PRIMARY KEY ( product_id )
);

Yukarıdaki örnek, bir boş değerin neden olduğu hataları önlemek için alan özelliği olarak "NOT NULL" kullanır. "AUTO_INCREMENT" özelliği, MariaDB'ye bir sonraki kullanılabilir değeri kimlik alanına eklemesi talimatını verir. Birincil anahtar anahtar kelimesi bir sütunuprimary key. Virgülle ayrılmış birden çok sütun, bir birincil anahtar tanımlayabilir.

Tablo oluşturmanın iki ana yöntemi, komut istemini ve bir PHP betiğini kullanmaktır.

Komut İstemi

Görevi aşağıda gösterildiği gibi gerçekleştirmek için CREATE TABLE komutunu kullanın -

root@host# mysql -u root -p
Enter password:*******
mysql> use PRODUCTS;
Database changed
mysql> CREATE TABLE products_tbl(
   -> product_id INT NOT NULL AUTO_INCREMENT,
   -> product_name VARCHAR(100) NOT NULL,
   -> product_manufacturer VARCHAR(40) NOT NULL,
   -> submission_date DATE,
   -> PRIMARY KEY ( product_id )
   -> );
mysql> SHOW TABLES;
+------------------------+
| PRODUCTS               |
+------------------------+
| products_tbl           |
+------------------------+

Tüm komutların noktalı virgülle sonlandırıldığından emin olun.

PHP Tablo Komut Dosyası Oluştur

PHP sağlar mysql_query()tablo oluşturmak için. İkinci argümanı gerekli SQL komutunu içerir -

<html>
   <head>
      <title>Create a MariaDB Table</title>
   </head>

   <body>
      <?php
         $dbhost = 'localhost:3036';
         $dbuser = 'root'; $dbpass = 'rootpassword';
         $conn = mysql_connect($dbhost, $dbuser, $dbpass);
      
         if(! $conn ){ die('Could not connect: ' . mysql_error()); } echo 'Connected successfully<br />'; $sql = "CREATE TABLE products_tbl( ".
            "product_id INT NOT NULL AUTO_INCREMENT, ".
            "product_name VARCHAR(100) NOT NULL, ".
            "product_manufacturer VARCHAR(40) NOT NULL, ".
            "submission_date DATE, ".
            "PRIMARY KEY ( product_id )); ";
      
         mysql_select_db( 'PRODUCTS' );
         $retval = mysql_query( $sql, $conn ); if(! $retval ) {
            die('Could not create table: ' . mysql_error());
         }
         echo "Table created successfully\n";
         
         mysql_close($conn);
      ?>
   </body>
</html>

Başarılı bir tablo oluşturduğunuzda, aşağıdaki çıktıyı göreceksiniz -

mysql> Table created successfully

Bu bölümde tabloları silmeyi öğreneceğiz.

Tablo silme çok kolaydır, ancak silinen tüm tabloların kurtarılamaz olduğunu unutmayın. Tablo silme için genel sözdizimi aşağıdaki gibidir -

DROP TABLE table_name ;

Tablo bırakmayı gerçekleştirmek için iki seçenek vardır: komut istemi veya bir PHP betiği kullanın.

Komut İstemi

Komut isteminde, basitçe DROP TABLE SQL komutu -

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

mysql> SELECT * from products_tbl
ERROR 1146 (42S02): Table 'products_tbl' doesn't exist

PHP Drop Table Script

PHP sağlar mysql_query()tabloları düşürmek için. Basitçe ikinci argümanına uygun SQL komutunu iletin -

<html>
   <head>
      <title>Create a MariaDB Table</title>
   </head>

   <body>
      <?php
         $dbhost = 'localhost:3036';
         $dbuser = 'root'; $dbpass = 'rootpassword';
         $conn = mysql_connect($dbhost, $dbuser, $dbpass);
         
         if(! $conn ) { die('Could not connect: ' . mysql_error()); } echo 'Connected successfully<br />'; $sql = "DROP TABLE products_tbl";
         mysql_select_db( 'PRODUCTS' );
         $retval = mysql_query( $sql, $conn ); if(! $retval ) {
            die('Could not delete table: ' . mysql_error());
         }
         echo "Table deleted successfully\n";
         
         mysql_close($conn);
      ?>
   </body>
</html>

Başarılı bir tablo silme işleminde, aşağıdaki çıktıyı göreceksiniz -

mysql> Table deleted successfully

Bu bölümde, bir tabloya nasıl veri ekleneceğini öğreneceğiz.

Bir tabloya veri eklemek INSERT komutunu gerektirir. Komutun genel sözdizimi INSERT şeklindedir ve ardından tablo adı, alanlar ve değerler gelir.

Aşağıda verilen genel söz dizimini gözden geçirin -

INSERT INTO tablename (field,field2,...) VALUES (value, value2,...);

İfade, dize değerleri için tek veya çift tırnak kullanılmasını gerektirir. İfadenin diğer seçenekleri arasında “INSERT ... SET” ifadeleri, “INSERT ... SELECT” ifadeleri ve diğer birkaç seçenek bulunur.

Note - İfadede görünen VALUES () işlevi yalnızca INSERT ifadeleri için geçerlidir ve başka yerde kullanılırsa NULL döndürür.

İşlemi gerçekleştirmek için iki seçenek vardır: komut satırını kullanın veya bir PHP betiği kullanın.

Komut İstemi

Komut isteminde, bir seçme işlemi gerçekleştirmenin birçok yolu vardır. Aşağıda standart bir ifade verilmiştir -

belowmysql>
INSERT INTO products_tbl (ID_number, Nomenclature) VALUES (12345,“Orbitron 4000”);
mysql> SHOW COLUMNS FROM products_tbl;
+-------------+-------------+------+-----+---------+-------+
| Field       | Type        | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| ID_number   | int(5)      |      |     |         |       |
| Nomenclature| char(13)    |      |     |         |       |
+-------------+-------------+------+-----+---------+-------+

Birden çok satır ekleyebilirsiniz -

INSERT INTO products VALUES (1, “first row”), (2, “second row”);

Ayrıca SET maddesini de kullanabilirsiniz -

INSERT INTO products SELECT * FROM inventory WHERE status = 'available';

PHP Ekleme Komut Dosyası

İşlemi gerçekleştirmek için bir PHP işlevi içinde aynı “INSERT INTO ...” ifadesini kullanın. Kullanacaksınmysql_query() bir kez daha işlev görür.

Aşağıda verilen örneği inceleyin -

<?php
   if(isset($_POST['add'])) {
      $dbhost = 'localhost:3036'; $dbuser = 'root';
      $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) {
         die('Could not connect: ' . mysql_error());
      }

      if(! get_magic_quotes_gpc() ) {
         $product_name = addslashes ($_POST['product_name']);
         $product_manufacturer = addslashes ($_POST['product_name']);
      } else {
         $product_name = $_POST['product_name'];
         $product_manufacturer = $_POST['product_manufacturer'];
      }
      $ship_date = $_POST['ship_date'];
      $sql = "INSERT INTO products_tbl ". "(product_name,product_manufacturer, ship_date) ". "VALUES"."('$product_name','$product_manufacturer','$ship_date')";

      mysql_select_db('PRODUCTS');
      $retval = mysql_query( $sql, $conn ); if(! $retval ) {
         die('Could not enter data: ' . mysql_error());
      }

      echo "Entered data successfully\n";
      mysql_close($conn);
   }
?>

Başarılı veri eklemede aşağıdaki çıktıyı göreceksiniz -

mysql> Entered data successfully

Ayrıca, doğru veri girişini sağlamak için kontrol gibi ek ifadeler ile doğrulama ifadeleri ile işbirliği yapacaksınız. MariaDB, bu amaç için bazıları otomatik olan bir dizi seçenek içerir.

Bu bölümde, tablodan nasıl veri seçileceğini öğreneceğiz.

SELECT deyimleri seçili satırları alır. UNION ifadeleri, bir sıralama cümlesi, bir LIMIT cümlesi, bir WHERE cümlesi, bir GROUP BY ... HAVING cümlesi ve alt sorgular içerebilirler.

Aşağıdaki genel söz dizimini inceleyin -

SELECT field, field2,... FROM table_name, table_name2,... WHERE...

Bir SELECT ifadesi, kullanılan tabloyu belirtmek için birden çok seçenek sunar -

  • database_name.table_name

  • table_name.column_name

  • database_name.table_name.column_name

Tüm seçili ifadeler bir veya daha fazla içermelidir select expressions. Seçili ifadeler aşağıdaki seçeneklerden birinden oluşur -

  • Bir sütun adı.

  • Operatörleri ve fonksiyonları kullanan bir ifade.

  • Verilen tablodaki tüm sütunları seçmek için "tablo_adı. *" Spesifikasyonu.

  • FROM yan tümcesinde belirtilen tüm tablolardan tüm sütunları seçmek için "*" karakteri.

Bir select ifadesinin yürütülmesinde komut istemi veya bir PHP betiği kullanılabilir.

Komut İstemi

Komut isteminde, ifadeleri aşağıdaki gibi yürütün -

root@host# mysql -u root -p password;
Enter password:*******
mysql> use PRODUCTS;
Database changed
mysql> SELECT * from products_tbl
+-------------+---------------+
| ID_number   | Nomenclature  |
+-------------+---------------+
| 12345       | Orbitron 4000 |
+-------------+---------------+

PHP Select Script

İşlemi gerçekleştirmek için bir PHP işlevi içinde aynı SELECT ifadesini kullanın. Kullanacaksınmysql_query()bir kez daha işlev görür. Aşağıda verilen bir örneği inceleyin -

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root'; $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) { die('Could not connect: ' . mysql_error()); } $sql = 'SELECT product_id, product_name,product_manufacturer, ship_date FROM products_tbl';
   mysql_select_db('PRODUCTS');
   $retval = mysql_query( $sql, $conn ); if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }

   while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
      echo "Product ID :{$row['product_id']} <br> ". "Name: {$row['product_name']} <br> ".
         "Manufacturer: {$row['product_manufacturer']} <br> ". "Ship Date : {$row['ship_date']} <br>".
         "--------------------------------<br>";
   }

   echo "Fetched data successfully\n";
   mysql_close($conn);
?>

Başarılı veri alımında aşağıdaki çıktıyı göreceksiniz -

Product ID: 12345
Nomenclature: Orbitron 4000
Manufacturer: XYZ Corp
Ship Date: 01/01/17
----------------------------------------------
Product ID: 12346
Nomenclature: Orbitron 3000
Manufacturer: XYZ Corp
Ship Date: 01/02/17
----------------------------------------------
mysql> Fetched data successfully

En iyi uygulamalar, her SELECT ifadesinden sonra imleç belleğinin serbest bırakılmasını önerir. PHP,mysql_free_result()bu amaç için işlev. Aşağıda gösterildiği gibi kullanımını inceleyin -

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root'; $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) { die('Could not connect: ' . mysql_error()); } $sql = 'SELECT product_id, product_name, product_manufacturer, ship_date FROM products_tbl';
   mysql_select_db('PRODUCTS');
   $retval = mysql_query( $sql, $conn ); if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }

   while($row = mysql_fetch_array($retval, MYSQL_NUM)) {
      echo "Product ID :{$row[0]} <br> ". "Name: {$row[1]} <br> ".
         "Manufacturer: {$row[2]} <br> ". "Ship Date : {$row[3]} <br> ".
         "--------------------------------<br>";
   }

   mysql_free_result($retval); echo "Fetched data successfully\n"; mysql_close($conn);
?>

WHEREyan tümceleri SELECT, UPDATE, DELETE ve INSERT gibi çeşitli ifadeleri filtreler. Eylemi belirtmek için kullanılan kriterleri sunarlar. Genellikle bir ifadede bir tablo adından sonra görünürler ve durumları aşağıdaki gibidir. WHERE yan tümcesi temelde bir if ifadesi gibi işlev görür.

Aşağıda verilen WHERE cümlesinin genel sözdizimini gözden geçirin -

[COMMAND] field,field2,... FROM table_name,table_name2,... WHERE [CONDITION]

WHERE cümlesinin aşağıdaki niteliklerine dikkat edin -

  • İsteğe bağlıdır.

  • Herhangi bir koşulun belirtilmesine izin verir.

  • VE veya VEYA operatörü kullanarak birden çok koşulun belirtilmesine izin verir.

  • Büyük / küçük harfe duyarlılık yalnızca LIKE karşılaştırmalarını kullanan ifadeler için geçerlidir.

WHERE yan tümcesi aşağıdaki operatörlerin kullanımına izin verir -

Şebeke
=! =
> <
> = <=

WHERE cümleleri komut isteminde veya bir PHP betiği içinde kullanılabilir.

Komut İstemi

Komut isteminde, standart bir komut kullanın -

root@host# mysql -u root -p password;
Enter password:*******
mysql> use PRODUCTS;
Database changed
mysql> SELECT * from products_tbl WHERE product_manufacturer = 'XYZ Corp';
+-------------+----------------+----------------------+
| ID_number   | Nomenclature   | product_manufacturer |
+-------------+----------------+----------------------+
| 12345       | Orbitron 4000  | XYZ Corp             |
+-------------+----------------+----------------------+
| 12346       | Orbitron 3000  | XYZ Corp             |
+-------------+----------------+----------------------+
| 12347       | Orbitron 1000  | XYZ Corp             |
+-------------+----------------+----------------------+

Bir örneği inceleyin. AND durum -

SELECT *
FROM products_tbl
WHERE product_name = 'Bun Janshu 3000';
AND product_id <= 344;

Bu örnek hem VE hem de VEYA koşullarını birleştirir

SELECT *
FROM products_tbl
WHERE (product_name = 'Bun Janshu 3000' AND product_id < 344)
OR (product_name = 'Bun Janshu 3000');

Where Clause Kullanan PHP Scriptleri

Çalıştır mysql_query() WHERE yan tümcesi kullanan işlemlerde işlev -

<?php
   $dbhost = 'localhost:3036'; $dbuser = 'root';
   $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }

   $sql = 'SELECT product_id, product_name, product_manufacturer, ship_date FROM products_tbl WHERE product_manufacturer = "XYZ Corp"'; mysql_select_db('PRODUCTS'); $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) { die('Could not get data: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { echo "Product ID :{$row['product_id']} <br> ".
         "Name: {$row['product_name']} <br> ". "Manufacturer: {$row['product_manufacturer']} <br> ".
         "Ship Date: {$row['ship_date']} <br> ". "--------------------------------<br>"; } echo "Fetched data successfully\n"; mysql_close($conn);
?>

Başarılı veri alımında aşağıdaki çıktıyı göreceksiniz -

Product ID: 12345
Nomenclature: Orbitron 4000
Manufacturer: XYZ Corp
Ship Date: 01/01/17
----------------------------------------------
Product ID: 12346
Nomenclature: Orbitron 3000
Manufacturer: XYZ Corp
Ship Date: 01/02/17
----------------------------------------------
Product ID: 12347
Nomenclature: Orbitron 1000
Manufacturer: XYZ Corp
Ship Date: 01/02/17
----------------------------------------------
mysql> Fetched data successfully

UPDATEkomutu, değerleri değiştirerek mevcut alanları değiştirir. Değişiklik için sütunları belirtmek ve atanan yeni değerleri belirtmek için SET yan tümcesini kullanır. Bu değerler, bir ifade veya alanın varsayılan değeri olabilir. Varsayılan bir değer ayarlamak, VARSAYILAN anahtar sözcüğün kullanılmasını gerektirir. Komut ayrıca bir güncelleme için koşulları ve / veya belirli bir sırada güncellenecek bir ORDER BY yan tümcesi belirtmek için bir WHERE yan tümcesi kullanabilir.

Aşağıdaki genel söz dizimini inceleyin -

UPDATE table_name SET field=new_value, field2=new_value2,...
[WHERE ...]

Komut isteminden veya bir PHP betiği kullanarak bir UPDATE komutunu yürütün.

Komut İstemi

Komut isteminde, standart bir komut kullanın -

root@host# mysql -u root -p password;
Enter password:*******
mysql> use PRODUCTS;
Database changed
mysql> UPDATE products_tbl
   SET nomenclature = 'Fiber Blaster 300Z' WHERE ID_number = 112;
mysql> SELECT * from products_tbl WHERE ID_number='112';
+-------------+---------------------+----------------------+
| ID_number   | Nomenclature        | product_manufacturer |
+-------------+---------------------+----------------------+
| 112         | Fiber Blaster 300Z  | XYZ Corp             |
+-------------+---------------------+----------------------+

PHP Güncelleme Sorgu Komut Dosyası

Çalıştır mysql_query() UPDATE komut ifadelerinde işlev -

<?php
   $dbhost = ‘localhost:3036’; $dbuser = ‘root’;
   $dbpass = ‘rootpassword’; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) {
      die(‘Could not connect: ‘ . mysql_error());
   }

   $sql = ‘UPDATE products_tbl SET product_name = ”Fiber Blaster 300z” WHERE product_id = 112’; mysql_select_db(‘PRODUCTS’); $retval = mysql_query( $sql, $conn );

   if(! $retval ) { die(‘Could not update data: ‘ . mysql_error()); } echo “Updated data successfully\n”; mysql_close($conn);
?>

Başarılı bir veri güncellemesinde, aşağıdaki çıktıyı göreceksiniz -

mysql> Updated data successfully

DELETE komutu, belirtilen tablodan tablo satırlarını siler ve silinen miktarı döndürür. ROW_COUNT () işleviyle silinen miktara erişin. Bir WHERE yan tümcesi satırları belirtir ve yokluğunda tüm satırlar silinir. LIMIT yan tümcesi, silinen satırların sayısını kontrol eder.

Birden çok satır için bir DELETE deyiminde, yalnızca bir koşulu sağlayan satırları siler; ve LIMIT ve WHERE maddelerine izin verilmez. DELETE deyimleri, farklı veritabanlarındaki tablolardan satırların silinmesine izin verir, ancak bir tablodan silmeye ve ardından bir alt sorgu içinde aynı tablodan seçmeye izin vermez.

Aşağıdaki DELETE sözdizimini inceleyin -

DELETE FROM table_name [WHERE …]

Komut isteminden veya bir PHP betiği kullanarak bir DELETE komutunu yürütün.

Komut İstemi

Komut isteminde, standart bir komut kullanın -

root@host# mysql –u root –p password;
Enter password:*******
mysql> use PRODUCTS;
Database changed
mysql> DELETE FROM products_tbl WHERE product_id=133;
mysql> SELECT * from products_tbl WHERE ID_number='133';
ERROR 1032 (HY000): Can't find record in 'products_tbl'

PHP Sorgu Komut Dosyasını Silme

Kullan mysql_query() DELETE komut deyimlerinde işlev -

<?php
   $dbhost = 'localhost:3036'; $dbuser = 'root';
   $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }

   $sql = 'DELETE FROM products_tbl WHERE product_id = 261'; mysql_select_db('PRODUCTS'); $retval = mysql_query( $sql, $conn );

   if(! $retval ) { die('Could not delete data: ' . mysql_error()); } echo "Deleted data successfully\n"; mysql_close($conn);
?>

Başarılı veri silme işleminde aşağıdaki çıktıyı göreceksiniz -

mysql> Deleted data successfully
mysql> SELECT * from products_tbl WHERE ID_number='261';
ERROR 1032 (HY000): Can't find record in 'products_tbl'

WHERE yan tümcesi, bir işlem tam eşleşme kullandığında verileri almak için bir yol sağlar. Ortak özelliklere sahip birden fazla sonuç gerektiren durumlarda,LIKE cümlesi geniş desen eşleştirmesini barındırır.

LIKE yan tümcesi, bir model eşleşmesini test ederek doğru veya yanlış döndürür. Karşılaştırma için kullanılan desenler, aşağıdaki joker karakterleri kabul eder: Karakter sayılarıyla (0 veya daha fazla) eşleşen “%”; ve tek bir karakterle eşleşen "_". "_" Joker karakteri yalnızca kendi kümesindeki karakterlerle eşleşir, yani başka bir küme kullanırken latin karakterleri yok sayar. Eşleşmeler, varsayılan olarak büyük / küçük harfe duyarlı değildir ve büyük / küçük harf duyarlılığı için ek ayarlar gerektirir.

NOT LIKE cümlesi, ters koşulu test etmeye çok benzer not Şebeke.

İfade ifadesi veya desen NULL olarak değerlendirilirse, sonuç NULL olur.

Aşağıda verilen genel LIKE cümlesi sözdizimini gözden geçirin -

SELECT field, field2,... FROM table_name, table_name2,...
WHERE field LIKE condition

Ya komut isteminde ya da bir PHP betiği içinde LIKE deyimi kullanın.

Komut İstemi

Komut isteminde, standart bir komut kullanın -

root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> SELECT * from products_tbl
   WHERE product_manufacturer LIKE 'XYZ%';
+-------------+----------------+----------------------+
| ID_number   | Nomenclature   | product_manufacturer |
+-------------+----------------+----------------------+
| 12345       | Orbitron 4000  | XYZ Corp             |
+-------------+----------------+----------------------+
| 12346       | Orbitron 3000  | XYZ Corp             |
+-------------+----------------+----------------------+
| 12347       | Orbitron 1000  | XYZ Corp             |
+-------------+----------------+----------------------+

Like Clause Kullanan PHP Script

Kullan mysql_query() LIKE yan tümcesini kullanan ifadelerde işlev

<?php
   $dbhost = 'localhost:3036'; $dbuser = 'root';
   $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }

   $sql = 'SELECT product_id, product_name, product_manufacturer, ship_date FROM products_tbl WHERE product_manufacturer LIKE "xyz%"'; mysql_select_db('PRODUCTS'); $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) { die('Could not get data: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { echo "Product ID:{$row['product_id']} <br> ".
         "Name: {$row['product_name']} <br> ". "Manufacturer: {$row['product_manufacturer']} <br> ".
         "Ship Date: {$row['ship_date']} <br> ". "--------------------------------<br>"; } echo "Fetched data successfully\n"; mysql_close($conn);
?>

Başarılı veri alımında aşağıdaki çıktıyı göreceksiniz -

Product ID: 12345
Nomenclature: Orbitron 4000
Manufacturer: XYZ Corp
Ship Date: 01/01/17
----------------------------------------------
Product ID: 12346
Nomenclature: Orbitron 3000
Manufacturer: XYZ Corp
Ship Date: 01/02/17
----------------------------------------------
Product ID: 12347
Nomenclature: Orbitron 1000
Manufacturer: XYZ Corp
Ship Date: 01/02/17
----------------------------------------------
mysql> Fetched data successfully

ORDER BYcümle, önceki tartışmalarda belirtildiği gibi, bir ifadenin sonuçlarını sıralar. Üzerinde işlenen verilerin sırasını belirtir ve artan (ASC) veya azalan (DESC) sırayla sıralama seçeneğini içerir. Sipariş spesifikasyonunun ihmal edilmesi durumunda, varsayılan sıra yükseliyor.

ORDER BY yan tümceleri DELETE ve UPDATE gibi çok çeşitli ifadelerde görünür. Her zaman bir ifadenin sonunda görünürler, bir alt sorguda veya bir ayarlı işlevden önce değil, çünkü sonuçtaki son tabloda çalışırlar. Ayrıca bir sütunu tanımlamak için bir tamsayı kullanamazsınız.

Aşağıda verilen ORDER BY cümlesinin genel sözdizimini gözden geçirin -

SELECT field, field2,... [or column] FROM table_name, table_name2,...
ORDER BY field, field2,... ASC[or DESC]

Ya komut isteminde ya da bir PHP betiği içinde ORDER BY yan tümcesi kullanın.

Komut İstemi

Komut isteminde, standart bir komut kullanın -

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

mysql> SELECT * from products_tbl ORDER BY product_manufacturer ASC
+-------------+----------------+----------------------+
| ID_number   | Nomenclature   | product_manufacturer |
+-------------+----------------+----------------------+
| 56789       | SuperBlast 400 | LMN Corp             |
+-------------+----------------+----------------------+
| 67891       | Zoomzoom 5000  | QFT Corp             |
+-------------+----------------+----------------------+
| 12347       | Orbitron 1000  | XYZ Corp             |
+-------------+----------------+----------------------+

Cümleye Göre Sırayı Kullanan PHP Betiği

Kullanın mysql_query() ORDER BY yan tümcesini kullanan ifadelerde bir kez daha işlev -

<?php
   $dbhost = 'localhost:3036'; $dbuser = 'root';
   $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }

   $sql = 'SELECT product_id, product_name, product_manufacturer, ship_date FROM products_tbl ORDER BY product_manufacturer DESC'; mysql_select_db('PRODUCTS'); $retval = mysql_query( $sql, $conn );

   if(! $retval ) { die('Could not get data: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { echo "Product ID :{$row['product_id']} <br> ".
         "Name: {$row['product_name']} <br> ". "Manufacturer: {$row['product_manufacturer']} <br> ".
         "Ship Date : {$row['ship_date']} <br> ". "--------------------------------<br>"; } echo "Fetched data successfully\n"; mysql_close($conn);
?>

Başarılı veri alımında aşağıdaki çıktıyı göreceksiniz -

Product ID: 12347
Nomenclature: Orbitron 1000
Manufacturer: XYZ Corp
Ship Date: 01/01/17
----------------------------------------------
Product ID: 67891
Nomenclature: Zoomzoom 5000
Manufacturer: QFT Corp
Ship Date: 01/01/17
----------------------------------------------
Product ID: 56789
Nomenclature: SuperBlast 400
Manufacturer: LMN Corp
Ship Date: 01/04/17
----------------------------------------------
mysql> Fetched data successfully

Önceki tartışmalarda ve örneklerde, tek bir tablodan almayı veya birden çok kaynaktan birden çok değeri almayı inceledik. Gerçek dünyadaki veri işlemlerinin çoğu çok daha karmaşıktır ve birden çok tablodan toplama, karşılaştırma ve geri alma gerektirir.

JOINsiki veya daha fazla tablonun tek bir nesnede birleştirilmesine izin verir. SELECT, UPDATE ve DELETE ifadeleri aracılığıyla kullanılırlar.

Aşağıda gösterildiği gibi bir JOIN kullanan bir ifadenin genel söz dizimini gözden geçirin -

SELECT column
FROM table_name1
INNER JOIN table_name2
ON table_name1.column = table_name2.column;

JOINS için örtük birleştirmeler kullanılan ve anahtar sözcük kullanılmayan eski sözdizimine dikkat edin. Bir birleştirme elde etmek için bir WHERE yan tümcesi kullanmak mümkündür, ancak anahtar kelimeler en iyi okunabilirlik, bakım ve en iyi uygulamalar için işe yarar.

BİRLEŞTİRMELER, sol birleştirme, sağ birleştirme veya iç birleştirme gibi birçok biçimde gelir. Çeşitli birleştirme türleri, paylaşılan değerlere veya özelliklere göre farklı toplama türleri sunar.

Ya komut isteminde ya da bir PHP betiği ile bir JOIN çalıştırın.

Komut İstemi

Komut isteminde standart bir ifade kullanın -

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

mysql> SELECT products.ID_number, products.Nomenclature, inventory.inventory_ct
   FROM products
   INNER JOIN inventory
   ON products.ID_numbeer = inventory.ID_number;
+-------------+----------------+-----------------+
| ID_number   | Nomenclature   | Inventory Count |
+-------------+----------------+-----------------+
| 12345       | Orbitron 4000  | 150             |
+-------------+----------------+-----------------+
| 12346       | Orbitron 3000  | 200             |
+-------------+----------------+-----------------+
| 12347       | Orbitron 1000  | 0               |
+-------------+----------------+-----------------+

JOIN Kullanan PHP Script

Kullan mysql_query() bir birleştirme işlemi gerçekleştirme işlevi -

<?php
   $dbhost = 'localhost:3036'; $dbuser = 'root';
   $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }

   $sql = 'SELECT a.product_id, a.product_manufacturer, b.product_count FROM products_tbl a, pcount_tbl b WHERE a.product_manufacturer = b.product_manufacturer'; mysql_select_db('PRODUCTS'); $retval = mysql_query( $sql, $conn );

   if(! $retval ) { die('Could not get data: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { echo "Manufacturer:{$row['product_manufacturer']} <br> ".
         "Count: {$row['product_count']} <br> ". "Product ID: {$row['product_id']} <br> ".
         "--------------------------------<br>";
   }

   echo "Fetched data successfully\n";
   mysql_close($conn);
?>

Başarılı veri alımında aşağıdaki çıktıyı göreceksiniz -

ID Number: 12345
Nomenclature: Orbitron 4000
Inventory Count: 150
--------------------------------------
ID Number: 12346
Nomenclature: Orbitron 3000
Inventory Count: 200
--------------------------------------
ID Number: 12347
Nomenclature: Orbitron 1000
Inventory Count: 0
--------------------------------------
mysql> Fetched data successfully

NULL değerlerle çalışırken, bunların bilinmeyen değerler olduğunu unutmayın. Geçerli değerler olan boş dizeler veya sıfır değildirler. Tablo oluşturmada, sütun özellikleri, bunların boş değerleri kabul etmesine veya reddetmesine izin verir. Basitçe bir NULL veya NOT NULL yan tümcesi kullanın. Bu, kimlik numarası gibi eksik kayıt bilgilerinin olduğu durumlarda uygulamalara sahiptir.

Kullanıcı tanımlı değişkenler, açık atamaya kadar NULL değerine sahiptir. Depolanan rutin parametreler ve yerel değişkenler, bir NULL değeri ayarlamaya izin verir. Yerel bir değişkenin varsayılan değeri olmadığında, NULL değerine sahiptir.

NULL, büyük / küçük harfe duyarlı değildir ve aşağıdaki takma adlara sahiptir -

  • BİLİNMİYOR (bir boole değeri)
  • \N

NULL Operatörleri

Standart karşılaştırma operatörleri NULL ile kullanılamaz (ör. =,>,> =, <=, <Veya! =) Çünkü NULL değerine sahip tüm karşılaştırmalar doğru veya yanlış değil NULL döndürür. NULL ile veya muhtemelen onu içeren karşılaştırmalar “<=>” (NULL-SAFE) operatörünü kullanmalıdır.

Diğer mevcut operatörler şunlardır -

  • IS NULL - NULL değerini test eder.

  • IS NOT NULL - NULL değerinin olmadığını doğrular.

  • ISNULL - NULL değeri keşfedildiğinde 1 değerini ve yokluğunda 0 değerini döndürür.

  • COALESCE - Bir listenin NULL olmayan ilk değerini döndürür veya bir tane yoksa NULL değeri döndürür.

BOŞ Değerleri Sıralama

Sıralama işlemlerinde, NULL değerler en düşük değere sahiptir, bu nedenle DESC sıralaması altta NULL değerlerle sonuçlanır. MariaDB, NULL değerleri için daha yüksek bir değer ayarlamaya izin verir.

Bunu aşağıda gösterildiği gibi yapmanın iki yolu vardır -

SELECT column1 FROM product_tbl ORDER BY ISNULL(column1), column1;

Diğer yol -

SELECT column1 FROM product_tbl ORDER BY IF(column1 IS NULL, 0, 1), column1 DESC;

NULL İşlevleri

İşlevler, herhangi bir parametre NULL olduğunda genellikle NULL verir. Bununla birlikte, NULL değerleri yönetmek için özel olarak tasarlanmış işlevler vardır. Onlar -

  • IFNULL()- İlk ifade NULL değilse onu döndürür. NULL olarak değerlendirildiğinde, ikinci ifadeyi döndürür.

  • NULLIF() - Karşılaştırılan ifadeler eşit olduğunda NULL döndürür, değilse ilk ifadeyi döndürür.

TOPLA ve AVG gibi işlevler NULL değerleri göz ardı eder.

NULL Değerleri Ekleme

NOT NULL olarak bildirilen bir sütuna bir NULL değer eklendiğinde, bir hata oluşur. Varsayılan SQL modunda, NOT NULL sütunu bunun yerine veri türüne göre varsayılan bir değer ekler.

Bir alan bir TIMESTAMP, AUTO_INCREMENT veya sanal sütun olduğunda, MariaDB NULL değerleri farklı şekilde yönetir. Bir AUTO_INCREMENT sütununa ekleme, sıradaki sonraki sayının yerine eklenmesine neden olur. Bir TIMESTAMP alanında, MariaDB bunun yerine geçerli zaman damgasını atar. Sanal sütunlarda, bu öğreticide daha sonra ele alınan bir konu, varsayılan değer atanmıştır.

UNIQUE dizinler birçok NULL değeri tutabilir, ancak birincil anahtarlar NULL olamaz.

NULL Değerler ve Alter Komutu

Bir sütunu değiştirmek için ALTER komutunu kullandığınızda, NULL belirtimlerin yokluğunda MariaDB otomatik olarak değerler atar.

LIKE yan tümcelerinden sağlanan kalıp eşleştirmesinin ötesinde, MariaDB, REGEXP işleci aracılığıyla düzenli ifadeye dayalı eşleştirme sunar. Operatör, belirli bir modele göre bir dizgi ifadesi için desen eşleştirme gerçekleştirir.

MariaDB 10.0.5, özyinelemeli modeller, ileriye dönük iddialar ve daha fazlası gibi alanlarla eşleştirme kapsamını önemli ölçüde artıran PCRE Regular Expressions'ı tanıttı.

Aşağıda verilen standart REGEXP işleci söz diziminin kullanımını inceleyin -

SELECT column FROM table_name WHERE column REGEXP '[PATTERN]';

REGEXP, bir kalıp eşleşmesi için 1, yoksa 0 değerini döndürür.

Tersi için REGEXP DEĞİL biçiminde bir seçenek mevcuttur. MariaDB, uyumluluk nedenleriyle oluşturulmuş REGEXP ve NOT REGEXP, RLIKE ve NOT RLIKE için eşanlamlılar da sunar.

Karşılaştırılan model, değişmez bir dize veya tablo sütunu gibi başka bir şey olabilir. Dizelerde, C kaçış sözdizimini kullanır, bu nedenle "\" karakterlerini iki katına çıkarın. REGEXP ayrıca ikili dizeler haricinde büyük / küçük harfe duyarlıdır.

Kullanılabilecek olası kalıpların bir tablosu aşağıda verilmiştir -

Sr.No Desen ve Açıklama
1

^

Dizenin başlangıcıyla eşleşir.

2

$

Dizenin sonuyla eşleşir.

3

.

Tek bir karakterle eşleşir.

4

[...]

Parantez içindeki herhangi bir karakterle eşleşir.

5

[^...]

Parantez içinde listelenmeyen herhangi bir karakterle eşleşir.

6

p1|p2|p3

Herhangi bir modelle eşleşiyor.

7

*

Önceki öğenin 0 veya daha fazla örneğiyle eşleşir.

8

+

Önceki öğenin 1 veya daha fazla örneğiyle eşleşir.

9

{n}

Önceki öğenin n örneğiyle eşleşir.

10

{m,n}

Önceki öğenin m ile n arası örnekleriyle eşleşir.

Aşağıda verilen kalıp eşleştirme örneklerini inceleyin -

"Pr" ile başlayan ürünler -

SELECT name FROM product_tbl WHERE name REGEXP '^pr';

"Na" ile biten ürünler -

SELECT name FROM product_tbl WHERE name REGEXP 'na$';

Sesli harfle başlayan ürünler -

SELECT name FROM product_tbl WHERE name REGEXP '^[aeiou]';

İşlemler, sıralı grup işlemleridir. Tek bir birim olarak işlev görürler ve grup içindeki tüm işlemler başarıyla yürütülene kadar sona erdirilmezler. Gruptaki tek bir hata, tüm işlemin başarısız olmasına neden olur ve veritabanı üzerinde hiçbir etkisinin olmamasına neden olur.

İşlemler ACID (Atomiklik, Tutarlılık, İzolasyon ve Dayanıklılık) ile uyumludur -

  • Atomicity - Arızaları iptal ederek ve değişiklikleri geri alarak tüm işlemlerin başarılı olmasını sağlar.

  • Consistency - Veritabanının başarılı bir işlemde değişiklikleri uygulamasını sağlar.

  • Isolation - İşlemlerin bağımsız işlem yapmasını sağlar.

  • Durability - Sistem arızası durumunda başarılı bir işlemin kalıcılığını sağlar.

Bir işlem bildiriminin başında START TRANSACTION deyimi ve ardından COMMIT ve ROLLBACK deyimleri bulunur -

  • İŞLEMİ BAŞLAT, işlemi başlatır.

  • COMMIT, verilerdeki değişiklikleri kaydeder.

  • ROLLBACK, herhangi bir değişikliği yok ederek işlemi sonlandırır.

Başarılı bir işlemde COMMIT harekete geçer. Bir başarısızlık durumunda, ROLLBACK harekete geçer.

Note- Bazı ifadeler örtük bir kesinliğe neden olur ve işlemlerde kullanıldığında da bir hataya neden olur. Bu tür ifadelerin örnekleri arasında, bunlarla sınırlı olmamak üzere, CREATE, ALTER ve DROP bulunur.

MariaDB işlemleri, SAVEPOINT ve LOCK TABLES gibi seçenekleri de içerir. SAVEPOINT, ROLLBACK ile kullanılacak bir geri yükleme noktası ayarlar. KİLİT TABLOLARI, belirli zaman dilimlerinde değişiklikleri önlemek için oturumlar sırasında tablolara erişimin kontrol edilmesini sağlar.

AUTOCOMMIT değişkeni, işlemler üzerinde kontrol sağlar. 1 ayarı, tüm işlemlerin başarılı işlemler olarak kabul edilmesini zorlar ve 0 ayarı, değişikliklerin kalıcılığının yalnızca açık bir COMMIT deyiminde gerçekleşmesine neden olur.

Bir İşlemin Yapısı

Bir işlem bildiriminin genel yapısı, START TRANSACTION ile başlamaktan oluşur. Bir sonraki adım, bir veya daha fazla komut / işlem eklemek, hataları kontrol eden ifadeler eklemek, bulunan hataları yönetmek için ROLLBACK ifadeleri eklemek ve son olarak başarılı işlemlerde değişiklikleri uygulamak için bir COMMIT ifadesi eklemek.

Aşağıda verilen örneği inceleyin -

START TRANSACTION;
SELECT name FROM products WHERE manufacturer = 'XYZ Corp';
UPDATE spring_products SET item = name;
COMMIT;

ALTER komutu, mevcut bir tablonun yapısını değiştirmenin, yani sütunların kaldırılması veya eklenmesi, dizinlerin değiştirilmesi, veri türlerinin değiştirilmesi veya adların değiştirilmesi gibi değişiklikler için bir yol sağlar. ALTER ayrıca bir meta veri kilidi etkin olduğunda değişikliklerin uygulanmasını bekler.

Sütunları Değiştirmek için ALTER kullanma

DROP ile eşleştirilmiş ALTER, mevcut bir sütunu kaldırır. Ancak, sütun kalan tek sütun ise başarısız olur.

Aşağıda verilen örneği inceleyin -

mysql> ALTER TABLE products_tbl DROP version_num;

Sütun eklemek için bir ALTER ... ADD ifadesi kullanın -

mysql> ALTER TABLE products_tbl ADD discontinued CHAR(1);

Sütunun yerleşimini belirtmek için İLK ve SONRA anahtar kelimelerini kullanın -

ALTER TABLE products_tbl ADD discontinued CHAR(1) FIRST;
ALTER TABLE products_tbl ADD discontinued CHAR(1) AFTER quantity;

FIRST ve AFTER anahtar sözcüklerinin yalnızca ALTER ... ADD ifadeleri için geçerli olduğunu unutmayın. Ayrıca, yeniden konumlandırmak için bir tabloyu bırakmanız ve ardından eklemeniz gerekir.

Bir ALTER deyiminde MODIFY veya CHANGE yan tümcesini kullanarak bir sütun tanımını veya adını değiştirin. Cümleler benzer etkilere sahiptir, ancak büyük ölçüde farklı sözdizimi kullanır.

Aşağıda verilen bir DEĞİŞİKLİK örneğini inceleyin -

mysql> ALTER TABLE products_tbl CHANGE discontinued status CHAR(4);

CHANGE kullanan bir ifadede, orijinal sütunu ve ardından onun yerini alacak yeni sütunu belirtin. Aşağıdaki bir MODIFY örneğini inceleyin -

mysql> ALTER TABLE products_tbl MODIFY discontinued CHAR(4);

ALTER komutu ayrıca varsayılan değerlerin değiştirilmesine izin verir. Bir örneği inceleyin -

mysql> ALTER TABLE products_tbl ALTER discontinued SET DEFAULT N;

Bir DROP cümlesiyle eşleştirerek varsayılan kısıtlamaları kaldırmak için de kullanabilirsiniz -

mysql> ALTER TABLE products_tbl ALTER discontinued DROP DEFAULT;

Tabloları Değiştirmek için ALTER Kullanımı

TYPE cümlesiyle tablo türünü değiştirin -

mysql> ALTER TABLE products_tbl TYPE = INNODB;

RENAME anahtar sözcüğüyle bir tabloyu yeniden adlandırın -

mysql> ALTER TABLE products_tbl RENAME TO products2016_tbl;

Dizinler, kayıt almayı hızlandıran araçlardır. Bir dizin, dizinlenmiş bir sütundaki her değer için bir girdi oluşturur.

Dört tür dizin vardır -

  • Primary (bir kayıt tüm kayıtları temsil eder)

  • Unique (bir kayıt birden çok kaydı temsil eder)

  • Plain

  • Full-Text (metin aramalarında birçok seçeneğe izin verir).

Bu kullanımda "anahtar" ve "dizin" terimleri aynıdır.

Dizinler bir veya daha fazla sütunla ilişkilendirilir ve hızlı aramaları ve verimli kayıt organizasyonunu destekler. Bir dizin oluştururken, sorgularınızda hangi sütunların sıklıkla kullanıldığını düşünün. Daha sonra bunların üzerinde bir veya daha fazla dizin oluşturun. Ek olarak, dizinleri esasen birincil anahtar tabloları olarak görüntüleyin.

Dizinler aramaları veya SELECT deyimlerini hızlandırsa da, hem tablolarda hem de dizinde işlemlerin gerçekleştirilmesi nedeniyle eklemelerin ve güncellemelerin sürüklenmesini sağlarlar.

Bir Dizin Oluşturun

CREATE TABLE ... INDEX deyimi veya CREATE INDEX deyimi aracılığıyla bir dizin oluşturabilirsiniz. Okunabilirliği, bakımı ve en iyi uygulamaları destekleyen en iyi seçenek CREATE INDEX.

Aşağıda verilen Dizinin genel sözdizimini inceleyin -

CREATE [UNIQUE or FULLTEXT or...] INDEX index_name ON table_name column;

Kullanımının bir örneğini inceleyin -

CREATE UNIQUE INDEX top_sellers ON products_tbl product;

Dizin bırakın

DROP INDEX veya ALTER TABLE ... DROP ile bir dizini bırakabilirsiniz. Okunabilirliği, bakımı ve en iyi uygulamaları destekleyen en iyi seçenek DROP INDEX'tir.

Aşağıda verilen Drop Index'in genel sözdizimini gözden geçirin -

DROP INDEX index_name ON table_name;

Kullanımının bir örneğini inceleyin -

DROP INDEX top_sellers ON product_tbl;

Bir Dizini Yeniden Adlandırma

ALTER TABLE ifadesiyle bir dizini yeniden adlandırın. Aşağıda verilen genel söz dizimini gözden geçirin -

ALTER TABLE table_name DROP INDEX index_name, ADD INDEX new_index_name;

Kullanımının bir örneğini inceleyin -

ALTER TABLE products_tbl DROP INDEX top_sellers, ADD INDEX top_2016sellers;

Dizinleri Yönetme

Tüm dizinleri incelemeniz ve izlemeniz gerekecektir. Belirli bir tabloyla ilişkili tüm mevcut dizinleri listelemek için GÖSTER DİZİNİ kullanın. Dikey bir format belirten "\ G" gibi bir seçeneği kullanarak görüntülenen içeriğin formatını ayarlayabilirsiniz.

Aşağıdaki örneği inceleyin -

mysql > SHOW INDEX FROM products_tbl\G

Tablo İstatistikleri

Kayıtlara ve sağlanan istatistiklere daha hızlı erişim göz önüne alındığında, sorguları optimize etmek için dizinler yoğun bir şekilde kullanılır. Ancak, birçok kullanıcı dizin bakımını külfetli bulmaktadır. MariaDB 10.0, her depolama motorundaki her tablo için veri istatistiklerini ve hatta indekslenmemiş sütunların istatistiklerini hesaplayan depolama motorundan bağımsız istatistik tablolarını kullanıma sundu.

Bazı işlemler, hız veya tek kullanımlık veriler nedeniyle geçici tablolardan yararlanabilir. Geçici bir tablonun ömrü, ister komut isteminden ister bir PHP betiği ile veya bir istemci programı aracılığıyla kullanın, bir oturumun sona ermesiyle sona erer. Ayrıca sistemde tipik bir şekilde görünmez. SHOW TABLES komutu, geçici tablolar içeren bir listeyi göstermez.

Geçici Tablo Oluşturun

CREATE TABLE deyimindeki TEMPORARY anahtar sözcüğü, geçici bir tablo oluşturur. Aşağıda verilen bir örneği inceleyin -

mysql>CREATE TEMPORARY TABLE order (
   item_name VARCHAR(50) NOT NULL
   , price DECIMAL(7,2) NOT NULL DEFAULT 0.00
   , quantity INT UNSIGNED NOT NULL DEFAULT 0
);

Geçici bir tablo oluştururken, LIKE yan tümcesi ile var olan tabloları yani tüm genel özelliklerini klonlayabilirsiniz. Geçici tabloyu oluşturmak için kullanılan CREATE TABLE deyimi, TEMPORARY anahtar kelimesinin sonucu olarak işlemleri gerçekleştirmez.

Geçici tablolar geçici olmayandan ayrı dursalar ve bir oturumun sonunda düşseler de, bazı çakışmaları olabilir -

  • Bazen süresi dolan oturumlardan hayalet geçici tablolarla çakışırlar.

  • Bazen geçici olmayan tabloların gölge adlarıyla çakışırlar.

Note - MariaDB bunu bir fark referansı olarak gördüğü için, geçici tabloların geçici olmayan bir tabloyla aynı ada sahip olmasına izin verilir.

Yönetim

MariaDB, kullanıcılara geçici tablolar oluşturmak için ayrıcalıklar verilmesini gerektirir. Yönetici olmayan kullanıcılara bu ayrıcalığı vermek için bir GRANT ifadesi kullanın.

GRANT CREATE TEMPORARY TABLES ON orders TO 'machine122'@'localhost';

Geçici Tablo Bırakın

Geçici tablolar esasen oturumların sonunda kaldırılsa da, bunları silme seçeneğiniz vardır. Geçici bir tablonun kaldırılması TEMPORARY anahtar kelimesinin kullanılmasını gerektirir ve en iyi uygulamalar, geçici olmayan tablolardan önce geçici tabloların kaldırılmasını önerir.

mysql> DROP TABLE order;

Bazı durumlar, mevcut bir tablonun tam bir kopyasının oluşturulmasını gerektirir. CREATE ... SELECT deyimi, dizinler ve varsayılan değerler gibi şeyleri ihmal ettiği için bu çıktıyı üretemez.

Bir tabloyu çoğaltma prosedürü aşağıdaki gibidir -

  • Kaynak tablonun tüm yapısını detaylandıran bir CREATE TABLE deyimi oluşturmak için SHOW CREATE TABLE'ı kullanın.

  • Tabloya yeni bir ad vermek için ifadeyi düzenleyin ve çalıştırın.

  • Tablo verilerinin kopyalanması gerekiyorsa INSERT INTO ... SELECT deyimi kullanın.

mysql> INSERT INTO inventory_copy_tbl (
   product_id,product_name,product_manufacturer,ship_date)
   
   SELECT product_id,product_name,product_manufacturer,ship_date,
   FROM inventory_tbl;

Kopya oluşturmanın başka bir yöntemi de CREATE TABLE AS deyimini kullanır. İfade tüm sütunları, sütun tanımlarını kopyalar ve kopyayı kaynak tablonun verileriyle doldurur.

Aşağıda verilen sözdizimini gözden geçirin -

CREATE TABLE clone_tbl AS
   SELECT columns
   FROM original_tbl
   WHERE conditions];

Aşağıdaki kullanım örneğini inceleyin -

CREATE TABLE products_copy_tbl AS
   SELECT *
   FROM products_tbl;

10.0.3 sürümünde MariaDB, sıra olarak bilinen bir depolama motorunu tanıttı. Ad hoc, işlemler için bir tamsayı dizisi oluşturur ve sonra sona erer. Dizi, azalan veya artan sırada pozitif tamsayılar içerir ve bir başlangıç, bitiş ve artış değeri kullanır.

Sanal (diske yazılmamış) doğası nedeniyle birden çok sorgularda kullanılmasına izin vermez, yalnızca orijinal sorgusunda kullanılır. Bununla birlikte, sıra tabloları bir ALTER komutu ile standart tablolara dönüştürülebilir. Dönüştürülmüş bir tablo silinirse, sıra tablosu hala mevcuttur. Diziler ayrıca negatif sayılar üretemez veya minimum / maksimumda döndüremez.

Sıra Motorunu Kurma

Sıraların kullanılması, MariaDB'nin ikili yerine bir eklenti olarak dağıttığı sıra motorunun kurulmasını gerektirir. Aşağıdaki komutla kurun -

INSTALL SONAME "ha_sequence";

Kurulumdan sonra doğrulayın -

SHOW ENGINES\G

Motor kurulumundan sonra, sıra sözdizimi kullanan bir adla standart bir tablo oluşturamayacağınızı, ancak bir sıra sözdizimi adıyla geçici bir tablo oluşturabileceğinizi unutmayın.

Sıra Oluşturuluyor

İki sıra oluşturma yöntemi vardır -

  • Bir tablo oluşturun ve bir sütunu otomatik artış olarak tanımlamak için AUTO_INCREMENT özelliğini kullanın.

  • Var olan bir veritabanını kullanın ve bir dizi oluşturmak için bir dizi SELECT sorgusu kullanın. Sorgu seq_ [FROM] _to_ [TO] veya seq_ [FROM] _to_ [TO] _step_STEP sözdizimini kullanır.

En iyi uygulamalar ikinci yöntemin kullanılmasını tercih eder. Aşağıda verilen bir dizi oluşturma örneğini inceleyin -

SELECT * FROM seq_77_to_99;

Dizilerin birçok kullanımı vardır -

  • İşlemlerdeki ilgili sorunlara karşı koruma sağlamak için bir sütundaki eksik değerleri bulun -

SELECT myseq.seq FROM seq_22_to_28 myseq LEFT JOIN table1 t ON myseq.seq
   = x.y WHERE x.y IS NULL;
  • Değerlerin bir kombinasyonunu oluşturun -

SELECT x1.seq, x2.seq FROM seq_5_to_9 x1 JOIN seq_5_to_9 x2 ORDER BY 5, 6;
  • Bir sayının katlarını bulun -

SELECT seq FROM seq_3_to_100_step_4;
  • Rezervasyon sistemleri gibi uygulamalarda kullanılmak üzere bir tarih dizisi oluşturun.
  • Bir zaman dizisi oluşturun.

MariaDB, önceki derslerde tartışıldığı gibi, bazı durumlarda yinelenen kayıtlara ve tablolara izin verir. Bu kopyaların bazıları, farklı veriler veya nesne türleri nedeniyle veya işlem nesnesinin benzersiz yaşam süresi veya depolanması nedeniyle gerçekte yinelenmez. Bu kopyalar ayrıca tipik olarak sorun teşkil etmez.

Bazı durumlarda, kopyalar sorunlara neden olur ve genellikle dolaylı eylemler veya bir MariaDB komutunun yumuşak politikası nedeniyle ortaya çıkarlar. Bu sorunu kontrol etmenin, kopyaları bulmanın, kopyaları silmenin ve kopya oluşturmayı önlemenin çeşitli yolları vardır.

Stratejiler ve Araçlar

Yinelenenleri yönetmenin dört temel yolu vardır -

  • JOIN ile balık tutun ve geçici bir tabloyla silin.

  • Bir yinelemenin bulunmasıyla ilgili güncelleme yapmak için INSERT ... ON DUPLICATE ANAHTAR GÜNCELLEME işlevini kullanın.

  • Bir SELECT ifadesinin sonuçlarını budamak ve kopyaları kaldırmak için DISTINCT kullanın.

  • Kopyaların eklenmesini durdurmak için INSERT IGNORE kullanın.

Birleştirmeyi Geçici Bir Tablo ile Kullanma

Basitçe bir iç birleştirme gibi yarı birleştirme gerçekleştirin ve ardından geçici bir tabloyla bulunan kopyaları kaldırın.

INSERT kullanarak

INSERT ... ON DUPLICATE ANAHTAR GÜNCELLEME yinelenen bir benzersiz veya birincil anahtar bulduğunda, bir güncelleme gerçekleştirir. Birden fazla benzersiz anahtar bulunduğunda, yalnızca ilkini günceller. Bu nedenle, birden çok benzersiz dizini olan tablolarda kullanmayın.

Doldurulmuş bir alana ekleme sırasında dizine alınmış değerler içeren bir tabloda neler olduğunu ortaya çıkaran aşağıdaki örneği inceleyin -

INSERT INTO add_dupl VALUES (1,'Apple');
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'

Note - Anahtar bulamazsa, INSERT ... ON DUPLICATE KEY UPDATE deyimi normal bir insert deyimi gibi çalışır.

DISTINCT kullanma

DISTINCT cümleleri, yinelemeleri sonuçlardan kaldırır. DISTINCT yan tümcesi için genel sözdizimi aşağıdaki gibidir -

SELECT DISTINCT fields
FROM table
[WHERE conditions];

Note - DISTINCT cümlesine sahip bir ifadenin sonuçları -

  • Bir ifade kullanırken, onun için benzersiz değerler verir.

  • Birden çok ifade kullanırken, benzersiz kombinasyonlar döndürür.

  • NULL değerleri göz ardı etmez; bu nedenle, sonuçlar benzersiz değerler olarak NULL içerir.

Tek bir ifade için DISTINCT yan tümcesi kullanarak aşağıdaki ifadeyi inceleyin -

SELECT DISTINCT product_id
FROM products
WHERE product_name = 'DustBlaster 5000';

Birden çok ifade kullanarak aşağıdaki örneği inceleyin -

SELECT DISTINCT product_name, product_id
FROM products
WHERE product_id < 30

INSERT IGNORE kullanma

Bir INSERT IGNORE ifadesi, MariaDB'ye yinelenen bir kaydın bulunması üzerine eklemeyi iptal etme talimatı verir. Aşağıda verilen kullanım örneğini inceleyin -

mysql> INSERT IGNORE INTO customer_tbl (LN, FN)
   VALUES( 'Lex', 'Luther');

Ayrıca, yinelemelerin arkasındaki mantığı not edin. Bazı tablolar, o tablo verilerinin doğasına göre kopyalar gerektirir. Yinelenen kayıtları yönetme stratejinize bu ihtiyacı dahil edin.

Kullanıcı girdisini kabul etmenin basit eylemi, istismarlara kapı açar. Sorun öncelikle verilerin mantıksal yönetiminden kaynaklanıyor, ancak neyse ki, bu büyük kusurlardan kaçınmak oldukça kolaydır.

SQL ekleme fırsatları, genellikle kullanıcıların bir ad gibi verileri girmesi ve kod mantığının bu girişi analiz edememesi durumunda ortaya çıkar. Kod, bunun yerine, bir saldırganın veritabanında çalışacak bir MariaDB ifadesi eklemesine izin verir.

Kullanıcılar tarafından girilen, şüpheli ve herhangi bir işlemden önce güçlü bir doğrulamaya ihtiyaç duyan verileri her zaman dikkate alın. Bu doğrulamayı model eşleştirme yoluyla gerçekleştirin. Örneğin, beklenen girdi bir kullanıcı adı ise, girilen karakterleri alfasayısal karakterler ve alt çizgilerle ve belirli bir uzunlukla sınırlayın. Aşağıda verilen bir örneği inceleyin -

if(check_match("/^\w{8,20}$/", $_GET['user_name'], $matches)) {
   $result = mysql_query("SELECT * FROM system_users WHERE user_name = $matches[0]");
} else {
   echo "Invalid username";
}

Ayrıca, girdi kısıtlamaları oluştururken REGEXP işlecini ve LIKE yan tümcelerini kullanın.

Aşağıdakiler gibi, gerekli her türlü açık girdi kontrolünü göz önünde bulundurun:

  • Kullanılan kaçış karakterlerini kontrol edin.

  • Giriş için belirli uygun veri türlerini kontrol edin. Girişi gerekli veri türü ve boyutuyla sınırlayın.

  • Girilen verilerin sözdizimini kontrol edin. Gerekli modelin dışında hiçbir şeye izin vermeyin.

  • İzin verilen şartları kontrol edin. Kara listeye SQL anahtar sözcükleri.

Enjeksiyon saldırılarının tehlikelerini bilmiyor olabilirsiniz veya bunların önemsiz olduğunu düşünebilirsiniz, ancak bunlar güvenlik kaygıları listesinin başında gelir. Ayrıca, bu iki girişin etkisini düşünün -

1=1
-or-
*

Bunlardan herhangi birinin doğru komutla birlikte girilmesine izin veren kod, veri tabanındaki tüm kullanıcı verilerinin ortaya çıkmasına veya veri tabanındaki tüm verilerin silinmesine neden olabilir ve hiçbir enjeksiyon özellikle akıllıca değildir. Bazı durumlarda, saldırganlar delikleri incelemek için zaman bile harcamıyor; basit girdilerle kör saldırılar gerçekleştirirler.

Ayrıca, MariaDB ile eşleştirilmiş herhangi bir programlama / komut dosyası dili tarafından sağlanan, daha fazla kontrol ve bazen daha iyi kontrol sağlayan kalıp eşleştirme ve düzenli ifade araçlarını göz önünde bulundurun.

Veriler, iş ve operasyonların temeli olarak hizmet eder ve çeşitli olası tehditler (örneğin, saldırganlar, sistem hataları, kötü yükseltmeler ve bakım hataları) nedeniyle, yedeklemeler kritik kalır. Bu yedeklemeler pek çok biçimde olabilir ve bu işlemlerde daha da geniş seçeneklerle onları oluşturmak için birçok seçenek vardır. Hatırlanması gereken önemli şeyler veritabanı türü, kritik bilgiler ve ilgili yapıdır. Bu bilgi, en iyi seçeneğinizi belirler.

SEÇENEKLER

Yedeklemeler için ana seçenekler arasında mantıksal yedeklemeler ve fiziksel yedeklemeler bulunur. Mantıksal yedeklemeler, verileri geri yüklemek için SQL ifadelerini tutar. Fiziksel yedeklemeler, verilerin kopyalarını içerir.

  • Logical backupsGenellikle aynı makine ve veritabanı türüyle sınırlı olan fiziksel yedeklemelerin aksine, başka bir makinede farklı bir konfigürasyona sahip verileri geri yükleme esnekliği sunar. Mantıksal yedeklemeler veritabanı ve tablo düzeyinde, fiziksel yedeklemeler ise dizin ve dosya düzeyinde gerçekleşir.

  • Physical backupsboyut olarak mantıksaldan daha küçüktür ve ayrıca gerçekleştirilmesi ve geri yüklenmesi daha az zaman alır. Fiziksel yedeklemeler ayrıca günlük ve yapılandırma dosyalarını içerir, ancak mantıksal yedeklemeler içermez.

Yedekleme Araçları

MariaDB yedeklemeleri için kullanılan ana araç mysqldump. Mantıksal yedeklemeler ve esneklik sunar. Aynı zamanda küçük veritabanları için mükemmel bir seçenek olduğunu kanıtlıyor.Mysqldumpverileri SQL, CSV, XML ve diğer birçok biçime döker. Çıktısı, açık talimat olmadan saklı prosedürleri, görünümleri ve olayları tutmaz.

İçin üç seçenek var mysqldump yedeklemeler -

  • Raw data - Dosyanın hedefini de belirten --tab seçeneği aracılığıyla bir tabloyu ham veri dosyası olarak döküm -

$ mysqldump -u root -p --no-create-info \
   --tab=/tmp PRODUCTS products_tbl
  • Data/Definitions export- Bu seçenek, tek veya birden çok tablonun bir dosyaya aktarılmasına izin verir ve ana makinedeki tüm mevcut veritabanlarının yedeklenmesini destekler. İçeriği veya tanımları bir dosyaya dışa aktarmanın bir örneğini inceleyin

$ mysqldump -u root -p PRODUCTS products_tbl > export_file.txt
  • Transfer - Veritabanlarını ve tabloları başka bir ana bilgisayara da gönderebilirsiniz

$ mysqldump -u root -p database_name \
   | mysql -h other-host.com database_name

SELECT ... INTO OUTFILE İfadesini Kullanma

Verileri dışa aktarmak için başka bir seçenek de SELECT ... INTO OUTFILE deyimini kullanır. Bu basit seçenek, tabloyu basit biçimlendirilmiş bir metin dosyasına çıkarır -

mysql> SELECT * FROM products_tbl
   -> INTO OUTFILE '/tmp/products.txt';

Öznitelikleri, dosyayı tercih ettiğiniz özelliklere göre biçimlendirmeye izin verir.

Bu ifadenin aşağıdaki niteliklerine dikkat edin -

  • Dosya adı, çıktı için istediğiniz konumu belirtmelidir.

  • İfadeyi yürütmek için MariaDB dosya ayrıcalıklarına ihtiyacınız var.

  • Çıktı dosyası adı benzersiz olmalıdır.

  • Ana bilgisayarda oturum açma kimlik bilgilerine ihtiyacınız var.

  • Bir UNIX ortamında çıktı dosyası herkes tarafından okunabilir ancak sunucunun sahipliği onu silme yeteneğinizi etkiler. Ayrıcalıklara sahip olduğunuzdan emin olun.

CONNECT'i Yedeklemelerde Kullanma

CONNECT işleyicisi, verilerin dışa aktarılmasına izin verir. Bu, öncelikle SELECT ... INTO OUTFILE işleminin dosya formatını desteklemediği durumlarda yararlıdır.

Aşağıdaki örneği inceleyin -

create table products
engine = CONNECT table_type = XML file_name = 'products.htm' header = yes
option_list = 'name = TABLE,coltype = HTML,attribute = border = 1;cellpadding = 5'

select plugin_name handler, plugin_version version, plugin_author
author, plugin_description description, plugin_maturity maturity
from information_schema.plugins where plugin_type = 'STORAGE ENGINE';

Diğer Aletler

Yedeklemeler için diğer seçenekler aşağıdaki gibidir -

  • XtraBackup- Bu seçenek XtraDB / InnoDB veritabanlarını hedefler ve herhangi bir depolama motoruyla çalışır. Percona'nın resmi sitesinden bu araç hakkında daha fazla bilgi edinin.

  • Snapshots- Bazı dosya sistemleri anlık görüntülere izin verir. İşlem, tabloları okuma kilidi ile yıkamak, anlık görüntüyü monte etmek, tabloların kilidini açmak, anlık görüntüyü kopyalamak ve ardından anlık görüntünün bağlantısını kesmekten oluşur.

  • LVM- Bu popüler yöntem bir Perl betiği kullanır. Her tabloda bir okuma kilidi alır ve önbellekleri diske temizler. Ardından bir anlık görüntü alır ve tabloların kilidini açar. Yetkiliye danışınmylvmbackup daha fazla bilgi için web sitesi.

  • TokuBackup- Percona tarafından sağlanan bu çözüm, InnoDB yedekleme seçeneklerinin sorunlarını ve sınırlamalarını dikkate alarak sıcak yedeklemeler sağlar. Uygulamalar onları işlemeye devam ederken dosyaların işlemsel ses kopyasını üretir.Daha fazla bilgi için Percona web sitesine bakın ..

INNODB Hususları

InnoDB, performans geliştirme için bir arabellek havuzu kullanır. Bir yedeklemede, mantıksal yedeklemeler genellikle tam tablo taramaları gerçekleştirdiğinden, InnoDB'yi tüm tablonun arabellek havuzuna kopyalanmasını önlemek için yapılandırın.

Bu bölümde, çeşitli yedek yükleme yöntemlerini öğreneceğiz. Bir veritabanını bir yedeklemeden geri yüklemek basit ve bazen çok uzun bir işlemdir.

Veri yüklemede üç seçenek vardır: LOAD DATA deyimi, mysqlimport ve basit bir mysqldump geri yüklemesi.

LOAD DATA kullanma

LOAD DATA deyimi, toplu yükleyici olarak işlev görür. Bir metin dosyası yükleyen kullanımının bir örneğini inceleyin -

mysql> LOAD DATA LOCAL INFILE 'products_copy.txt' INTO TABLE empty_tbl;

LOAD DATA deyiminin aşağıdaki niteliklerine dikkat edin -

  • MariaDB'nin ana bilgisayarda derin bir arama yapmasını önlemek için LOCAL anahtar sözcüğünü kullanın ve çok özel bir yol kullanın.

  • İfade, satır beslemeleriyle (satırsonu) sonlandırılan satırlardan ve sekmelerle ayrılmış veri değerlerinden oluşan bir format varsayar.

  • Bir satırdaki alanların biçimlendirmesini açıkça belirtmek için FIELDS yan tümcesini kullanın. Satır sonunu belirtmek için LINES yan tümcesini kullanın. Aşağıdaki bir örneği inceleyin.

mysql> LOAD DATA LOCAL INFILE 'products_copy.txt' INTO TABLE empty_tbl
   FIELDS TERMINATED BY '|'
   LINES TERMINATED BY '\n';
  • İfade, veri dosyası içindeki sütunların tablonun aynı sırasını kullandığını varsayar. Farklı bir sipariş belirlemeniz gerekiyorsa, dosyayı aşağıdaki gibi yükleyebilirsiniz -

mysql> LOAD DATA LOCAL INFILE 'products_copy.txt' INTO TABLE empty_tbl (c, b, a);

MYSQLIMPORT'u kullanma

Mysqlimport aracı, aynı işlemlerin komut satırından yapılmasına izin veren bir LOAD DATA sarmalayıcı görevi görür.

Verileri aşağıdaki gibi yükleyin -

$ mysqlimport -u root -p --local database_name source_file.txt

Biçimlendirmeyi aşağıdaki gibi belirtin -

$ mysqlimport -u root -p --local --fields-terminated-by="|" \
   --lines-terminated-by="\n" database_name source_file.txt

Kullan --columns sütun sırasını belirtme seçeneği -

$ mysqlimport -u root -p --local --columns=c,b,a \
   database_name source_file.txt

MYSQLDUMP kullanma

İle geri yükleniyor mysqldump döküm dosyasını ana bilgisayara geri yüklemek için bu basit ifadeyi gerektirir -

shell> mysql database_name < source_file.sql

ÖZEL KARAKTERLER VE Alıntılar

LOAD DATA deyiminde, tırnak işaretleri ve özel karakterler doğru şekilde yorumlanmayabilir. İfade, tırnaksız değerleri varsayar ve ters eğik çizgileri kaçış karakterleri olarak değerlendirir. Biçimlendirmeyi belirtmek için FIELDS yan tümcesini kullanın. Veri değerlerinden alıntıların çıkarılmasına neden olan "ENCLOSED BY" ile tırnak işaretinin üzerine gelin. Kaçışları "ESCAPED BY" ile değiştirin.

Bu bölüm, en sık kullanılan işlevlerin bir listesini içerir, tanımlar, açıklamalar ve örnekler sunar.

MariaDB Aggregate İşlevleri

En sık kullanılan toplama işlevleri aşağıda verilmiştir -

Sr.No İsim & Açıklama
1

COUNT

Kayıtların sayısını sayar.

Example - müşteri tablosundan COUNT (*) SEÇİN;

2

MIN

Bir kayıt kümesinin minimum değerini ortaya çıkarır.

Example - Kuruluşa GÖRE sözleşmelerden GRUPLA kuruluş, MIN (hesap) seçin;

3

MAX

Bir kayıt kümesinin maksimum değerini ortaya çıkarır.

Example - GROUP BY sözleşmelerinden kuruluş, MAX (hesap_boyutu) kuruluş seçin;

4

AVG

Bir kayıt kümesinin ortalama değerini hesaplar.

Example - Sözleşmelerden AVG'yi (hesap_boyutu) SEÇİN;

5

SUM

Bir kayıt kümesinin toplamını hesaplar.

Example - Sözleşmelerden TOPLA (hesap_boyutu) SEÇİN;

MariaDB Yaş Hesaplama

TIMESTAMPDIFF işlevi yaşı hesaplamak için bir yol sağlar -

SELECT CURDATE() AS today;
SELECT ID, DOB, TIMESTAMPDIFF(YEAR,DOB,'2015-07-01') AS age FROM officer_info;

MariaDB String Birleştirme

CONCATişlev, bir birleştirme işleminden sonra sonuç dizgesini döndürür. Bir veya daha fazla argüman kullanabilirsiniz. Aşağıda verilen sözdizimini gözden geçirin -

SELECT CONCAT(item, item,...);

Aşağıdaki örneği inceleyin -

SELECT CONCAT('Ram', 'bu', 'tan');
Output:Rambutan

MariaDB Tarih / Saat İşlevleri

Aşağıda verilen önemli tarih fonksiyonlarıdır -

Sr.No İsim & Açıklama
1

CURDATE()

Tarihi yyyy-aa-gg veya yyyyaagg biçiminde döndürür.

Example - CURDATE () SEÇİN;

2

DATE()

Tarihi birden çok biçimde döndürür.

Example −CREATE TABLE product_release_tbl (x TARİH);

3

CURTIME()

Saati HH: MM: SS veya HHMMSS.uuuuuu biçiminde döndürür.

Example - CURTIME SEÇ ();

4

DATE_SUB()

Belirtilen tarihten birkaç gün ekler veya çıkarır.

Example - TARİH_SUB SEÇİN ('2016-02-08', ARALIK 60 GÜN);

5

DATEDIFF()

İki tarih arasındaki günleri belirler.

Example - TARİHLİIFF'i SEÇİN ('2016-01-01 23:59:59', '2016-01-03');

6

DATE ADD()

Tarih ve saate herhangi bir zaman birimi ekler veya çıkarır.

Example - TARİH_ADD SEÇİN ('2016-01-04 23:59:59', INTERVAL 22 SECOND);

7

EXTRACT()

Tarihten bir birim çıkarır.

Example - ÖZÜ SEÇİN ('2016-01-08' YILI);

8

NOW()

Geçerli tarih ve saati yyyy-aa-gg ss: dd: ss veya yyyyaagghhmmss.uuuuuu biçiminde döndürür.

Example - ŞİMDİ SEÇİN ();

9

DATE FORMAT()

Tarihi, belirtilen biçim dizesine göre biçimlendirir.

Example - TARİH_FORMATINI SEÇİN ('2016-01-09 20:20:00', '% W% M% Y');

Aşağıda bazı önemli zaman işlevleri verilmiştir -

Sr.No İsim & Açıklama
1

HOUR()

Zamanın saatini veya geçen saatleri döndürür.

Example - SAAT SEÇİN ('19: 17: 09 ');

2

LOCALTIME()

Tam olarak NOW () gibi çalışır.

3

MICROSECOND()

Zamanın mikrosaniyesini döndürür.

Example - MICROSECOND SEÇİN ('16: 30: 00.543876 ');

4

MINUTE()

Zamanın dakikalarını döndürür.

Example - DAKİKA SEÇİN ('2016-05-22 17:22:01');

5

SECOND()

Tarihin saniyelerini döndürür.

Example - İKİNCİ SEÇİN ('2016-03-12 16: 30: 04.000001');

6

TIME_FORMAT()

Saati, belirtilen biçim dizesine göre biçimlendirir.

Example - SELECT TIME_FORMAT ('22: 02: 20 ','% H% k% h% I% l ');

7

TIMESTAMP()

Yyyy-aa-gg ss: dd: gg biçiminde bir etkinlik için zaman damgası sağlar.

Example - CREATE TABLE order_ (ID INT, tmst TIMESTAMP);

MariaDB Sayısal İşlevleri

Aşağıda, MariaDB'deki bazı önemli sayısal işlevler verilmiştir -

Sr.No İsim & Açıklama
1

TRUNCATE()

Kesilmiş bir sayıyı ondalık basamak belirtimine döndürür.

Example - TRUNCATE SEÇİN (101.222, 1);

2

COS()

X radyan'ın kosinüsünü döndürür.

Example - COS SEÇİN (PI ());

3

CEILING()

X'in altında olmayan en küçük tamsayıyı döndürür.

Example - TAVAN SEÇİN (2.11);

4

DEGREES()

Radyanı dereceye çevirir.

Example - DERECE SEÇİN (PI ());

5

DIV()

Tamsayı bölme yapar.

Example - 100 DIV 4 SEÇİN;

6

EXP()

E'yi x'in kuvvetine döndürür.

Example - EXP SEÇİN (2);

7

FLOOR()

X'in üzerinde olmayan en büyük tamsayıyı döndürür.

Example - KAT SEÇİMİ (2.01);

8

LN()

X'in doğal logaritmasını döndürür.

Example - LN (3) SEÇİN;

9

LOG()

Doğal logaritmayı veya logaritmayı belirli bir tabana döndürür.

Example - GÜNLÜK SEÇİN (3);

10

SQRT()

Karekökü döndürür.

Example - KAREKÖK SEÇ (16);

MariaDB Dize İşlevleri

Önemli dize fonksiyonları aşağıda verilmiştir -

Sr.No İsim & Açıklama
1

INSTR()

Bir alt dizenin ilk örneğinin konumunu döndürür.

Example - INSTR ('rambutan', 'tan') SEÇİN;

2

RIGHT()

En sağdaki dize karakterlerini döndürür.

Example - SAĞ SEÇİN ('rambutan', 3);

3

LENGTH()

Bir dizenin bayt uzunluğunu döndürür.

Example - UZUNLUK SEÇİN ('rambutan');

4

LOCATE()

Bir alt dizenin ilk örneğinin konumunu döndürür.

Example - KONUM SEÇİN ('tan', 'rambutan');

5

INSERT()

Değiştirilmiş belirli bir konumda belirtilen bir alt dizeye sahip bir dize döndürür.

Example - INSERT SEÇİN ('ramputan', 4, 1, 'b');

6

LEFT()

En soldaki karakterleri döndürür.

Example - SOL SEÇİN ('rambutan', 3);

7

UPPER()

Karakterleri büyük harfe dönüştürür.

Example - ÜST SEÇİN (soyad);

8

LOWER()

Karakterleri küçük harfe dönüştürür.

Example - ALT SEÇ (soyad);

9

STRCMP()

Dizeleri karşılaştırır ve eşit olduklarında 0 döndürür.

Example - STRCMP SEÇİN ('yumurta', 'peynir');

10

REPLACE()

Karakterleri değiştirdikten sonra bir dize döndürür.

Example - DEĞİŞTİRME SEÇİN ('sully', 'l', 'n');

11

REVERSE()

Bir dizedeki karakterleri ters çevirir.

Example - TERS SEÇİN ('yarış arabası');

12

REPEAT()

Verilen karakterleri x kez tekrarlayan bir dize döndürür.

Example - TEKRARLA SEÇİN ('ha', 10);

13

SUBSTRING()

Bir dizeden x konumundan başlayarak bir alt dize döndürür.

Example - ALT DİZE SEÇİN ('rambutan', 3);

14

TRIM()

Bir dizeden sondaki / baştaki karakterleri kaldırır.

Example - TRIM SEÇİN ('_rambutan'DAN BAŞLAYAN' _ ');