Giriş

Tablolar, SQL veritabanlarındaki birincil organizasyon yapısıdır. Tablodaki her bir satırın veya kaydın ayrı özelliklerini yansıtan bir dizi sütun içerirler. Veri organizasyonunun böylesine temel bir yönü olarak, ilişkisel veritabanlarıyla çalışan herkesin gerektiğinde tabloların nasıl oluşturulacağını, değiştirileceğini ve silineceğini anlaması önemlidir.

Bu kılavuzda, SQL'de tabloların nasıl oluşturulacağının yanı sıra mevcut tabloların nasıl değiştirilip silineceğini ele alacağız.

Önkoşullar

Bu kılavuzu takip etmek için, SQL kullanan bir tür ilişkisel veritabanı yönetim sistemi (RDBMS) çalıştıran bir bilgisayara ihtiyacınız olacak. Bu kılavuzdaki talimatlar ve örnekler aşağıdaki ortam kullanılarak doğrulanmıştır:

  • Ubuntu 20.04 çalıştıran bir sunucu.
  • MySQL

Ayrıca, joker karakter kullanarak alıştırma yapabileceğiniz bazı örnek verilerle yüklenmiş bir veritabanına ve tabloya ihtiyacınız olacak. Bunlara sahip değilseniz, aşağıdaki MySQL'e Bağlanma ve Örnek Veritabanı Kurma bölümünü okuyarak, bu kılavuzun örneklerde kullanacağı bir veritabanı ve tablonun nasıl oluşturulacağına ilişkin ayrıntılar için okuyabilirsiniz .

MySQL'e Bağlanma ve Örnek Bir Veritabanı Kurma

SQL veritabanı sisteminiz uzak bir sunucuda çalışıyorsa, yerel makinenizden sunucunuza SSH uygulayın:

ssh sammy@your_server_ip

Ardından sammy ile MySQL kullanıcı hesabınızın adıyla değiştirerek MySQL sunucu istemini açın :

mysql -u sammy -p

Şu adda bir veritabanı oluşturun tablesDB:

CREATE DATABASE tablesDB;

Veritabanı başarıyla oluşturulduysa, aşağıdaki gibi çıktılar alırsınız:

Output
Query OK, 1 row affected (0.01 sec)

tablesDBVeritabanını seçmek için aşağıdaki gibi USE ifadeyi çalıştırın :

USE tablesDB;
Output
Database changed

Bununla, kılavuzun geri kalanını takip etmeye ve SQL'de tabloların nasıl oluşturulup yönetileceğini öğrenmeye hazırsınız.

Tablolar Oluşturma

SQL'de bir tablo oluşturmak için, CREATE TABLE komutu ve ardından tablo için istediğiniz adı kullanın:

CREATE TABLE table_name;

Her SQL deyiminde olduğu gibi, CREATE TABLEifadelerin noktalı virgül ( ;) ile bitmesi gerektiğini unutmayın .

Bu örnek sözdizimi, sütun içermeyen boş bir tablo oluşturacaktır. Sütunlu bir tablo oluşturmak için, sütun adları ve bunlara karşılık gelen veri türleri ve kısıtlamalarının bir listesiyle, parantez içinde parantez içine alınmış ve virgülle ayrılmış tablo adını izleyin:

CREATE TABLE table_name (
column1_name column1_data_type,
column2_name column2_data_type,
. . .
columnN_name columnN_data_type
);

Örnek olarak, İstanbul'daki en sevdiğiniz parklar hakkında bazı bilgileri kaydetmek için bir tablo oluşturmak istediğinizi varsayalım. Her parkla ilgili hangi nitelikleri kaydetmek istediğinize karar verdikten sonra, bu özelliklerin her biri için sütun adlarına ve her biri için uygun veri türüne karar verirsiniz:

  • parkName : Her parkın adı. Park adlarının uzunluğunda büyük bir fark vardır, bu nedenle varchar maksimum 30 karakter uzunluğuna sahip veri türü uygun olacaktır.
  • yearBuilt: Parkın inşa edildiği yıl. MySQL sahip olmasına rağmen year veri türünü, bu sadece değerleri verir 1901 etmek 2155. Mesela İstanbul'da, 1901'den önce inşa edilmiş birkaç parka sahiptir, bu nedenle bunun yerine int veri türünü kullanabilirsiniz .
  • firstVisit: Her parkı ilk ziyaretinizin tarihi. MySQL, date bu sütun için kullanabileceğiniz veri türüne sahiptir. Verileri biçiminde depolar YYYY-MM-DD.
  • lastVisit: Her parka yaptığınız en son ziyaretinizin tarihi. Yine, bunun için date türü kullanabilirsiniz .

faveParks Bu adlara ve veri türlerine sahip sütunlarla adlandırılmış bir tablo oluşturmak için aşağıdaki komutu çalıştırmanız gerekir:

CREATE TABLE faveParks (
parkName varchar(30),
yearBuilt int,
firstVisit date,
lastVisit date
);
//Output
Query OK, 0 rows affected (0.01 sec)

Tabloya herhangi bir veri eklemediğiniz için bunun yalnızca tablonun yapısını oluşturduğunu unutmayın.

Ayrıca CREATE TABLE AS sözdizimi ile mevcut tablolardan yeni tablolar oluşturabilirsiniz :

CREATE TABLE new_table_name AS (
SELECT column1, column2, . . . columnN
FROM old_table_name
);

Yeni tablonun adını bir sütun listesi ve veri türleriyle takip etmek yerine, onu takip edin AS ve ardından parantez içinde, SELECT orijinal tablodan yeni tabloya kopyalamak istediğiniz sütunları ve verileri döndüren bir ifade .

Orijinal tablonun sütunlarında herhangi bir veri varsa, tüm bu verilerin yeni tabloya da kopyalanacağını unutmayın. Ayrıca, netlik açısından, bu örnek sözdizimi SELECT yalnızca gerekli FROM tümceye sahip bir sorgu içerir . Ancak, herhangi bir geçerli SELECT ifade bu yerde çalışacaktır.

Örnek olarak, aşağıdaki komut, daha önce oluşturulan tablodaki parkInfoiki sütundan bir faveParkstablo oluşturur:

CREATE TABLE parkInfo AS (
SELECT parkName, yearBuilt
FROM faveParks
);
//Output
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

faveParks Tabloda herhangi bir veri olsaydı, tabloya parkName ve yearBuilt sütunlarına ait veriler de parkInfotabloya kopyalanırdı , ancak bu durumda her iki tablo da boş olacaktır.

Mevcut bir tablonun adını kullanarak bir tablo oluşturmaya çalışırsanız, bir hataya neden olur:

CREATE TABLE parkInfo (
name varchar(30),
squareFootage int,
designer varchar(30)
);
//Output
ERROR 1050 (42S01): Table 'parkInfo' already exists

Bu hatayı önlemek için, IF NOT EXISTS seçeneği CREATE TABLE komutunuza ekleyebilirsiniz . Bu, veritabanına belirtilen ada sahip bir veritabanının zaten mevcut olup olmadığını kontrol etmesini ve varsa, hata yerine bir uyarı vermesini söyleyecektir:

CREATE TABLE IF NOT EXISTS parkInfo (
name varchar(30),
squareFootage int,
designer varchar(30)
);
//Output
Query OK, 0 rows affected, 1 warning (0.00 sec)

Bu komut, adı verilen tablo parkInfo hala mevcut olduğundan, yeni bir tablo oluşturmada başarısız olacaktır . Yine de, bu çıktının CREATE TABLE ifadenin bir uyarıya yol açtığını gösterdiğine dikkat edin . Uyarı mesajını görüntülemek için teşhis SHOW WARNINGS ifadesini çalıştırın:

SHOW WARNINGS;
//Output
| Level | Code | Message                         |
+-------+------+---------------------------------+
| Note  | 1050 | Table 'parkInfo' already exists |
+-------+------+---------------------------------+
1 row in set (0.00 sec)

Bu çıktının da gösterdiği gibi, daha önce aldığınız aynı hata, IF NOT EXISTSseçeneği dahil ettiğiniz için bir uyarı olarak kaydedilmiştir . Bu, işlemlerin çalıştırılması gibi belirli durumlarda yararlı olabilir; bir hata, tüm işlemin başarısız olmasına neden olurken, bir uyarı yalnızca buna neden olan ifadenin başarısız olacağı anlamına gelir.

Şimdilik nu kadar arkadaşlar bir sonraki makalemde Tablo değiştirme ve silme işlemlerini anlatmayı planlıyorum. Takipte kalın...