MySQL Primary, Unique, Index key Oluşturma

Bir  tabloda verilerin düzeni için kurallar konulur. Buna kısıtlama denilir.

Kısıtlamalar verilerin doğruluğunu ve güvenirliliğini sağlar, konulan kısıta göre de, yanlış veri girişini engeller.

Bu kısıtlar:

  • Veri tekrarını engeller
  • Verinin boş olmasını engeller
  • Verilerin hızlı şekilde sorgulanmasını sağlar
  • Tablolar arasında ilişkiyi doğru kurar
  • Giriş  yapılacak veriye kural tanımlar

Bu kısıtlar: SQL de yaygın olarak kullanılır, Bu kısıtlar tablo oluşturulurken  (create table) tanımlanabileceği gibi daha sonrada Alter ile de tanımlanabilir.

  • Not Null : Bir bilgi alanının boş olmamasını sağlar
  • Primary key : Bir bilgi alanında tekrar önler, tabloda benzersiz kayıt olmasını sağlar, not null özelliğine sahip
  • Unique : Bir bilgi alanında tekrar önler, tabloda benzersiz kayıt olmasını sağlar*, null olabilir
  • Index  : Tablodan hızlı bir şekilde  veriyi sorgulamak için kullanılır.
  • Default : Bilgi girilmez ise varsayılan olarak bir değer atanır
  • Check : Bir bilgi alanına girilecek verinin kuralını belirler.

Not:* Primary ile Unique farkı, bir tabloda bir tane primary tanımlanırken, gerektiği kadar unique oluşturulabilir.

Unique de; Aklınıza gelebilir, peki ilk kayıt null, ikinci de null, hani tekrar etmeyecekti. Bu anahtarın özelliği bilgi girilmez ise null, fakat bilgi girildi ise, aynısından girilmesine izin vermiyor.

Tabloya Primary key Ekleme

ogrenci tablomuza göz atalım, yapıyı görmek

MariaDB [obs]> desc ogrenci;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| ogrNo   | char(11)    | YES  |     | NULL    |       |
| adi     | varchar(30) | YES  |     | NULL    |       |
| soyadi  | varchar(30) | YES  |     | NULL    |       |
| mobil   | varchar(10) | YES  |     | NULL    |       |
| dtarihi | date        | YES  |     | NULL    |       |
| bolumu  | varchar(30) | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
6 rows in set (0.046 sec)

Bu tabloda ogrencinin numarası tekrar etmemeli, her ogrNo tek olmalı, bunun için bu alana PRIMARY anahtarı eklenmeli.

Tabloyu daha oluştururken şöyle yapılabilirdi.

create table ogrenci(ogrNo char(11),
                     adi varchar(30),
                     ... 
                     bolumu varchar(30),
                     primary key (ogrNo)
);

Artık bizim tablomuz var, sonradan primary eklememiz gerekiyor, bunun içinde

MariaDB [obs]> ALTER TABLE ogrenci ADD PRIMARY KEY (ogrNo);

yazmak yeterlidir.

MariaDB [obs]> desc ogrenci;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| ogrNo   | char(11)    | NO   | PRI | NULL    |       |
| adi     | varchar(30) | YES  |     | NULL    |       |
| soyadi  | varchar(30) | YES  |     | NULL    |       |
| mobil   | varchar(10) | YES  |     | NULL    |       |
| dtarihi | date        | YES  |     | NULL    |       |
| bolumu  | varchar(30) | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
6 rows in set (0.046 sec)

Primary Drop – Kaldırmak

ALTER TABLE ogrenci DROP PRIMARY KEY;

MySQL Primary, Unique, Index key Oluşturma

Bir  tabloda verilerin düzeni için kurallar konulur. Buna kısıtlama denilir.

Kısıtlamalar verilerin doğruluğunu ve güvenirliliğini sağlar, konulan kısıta göre de, yanlış veri girişini engeller.

Bu kısıtlar:

  • Veri tekrarını engeller
  • Verinin boş olmasını engeller
  • Verilerin hızlı şekilde sorgulanmasını sağlar
  • Tablolar arasında ilişkiyi doğru kurar
  • Giriş  yapılacak veriye kural tanımlar

Bu kısıtlar: SQL de yaygın olarak kullanılır, Bu kısıtlar tablo oluşturulurken  (create table) tanımlanabileceği gibi daha sonrada Alter ile de tanımlanabilir.

  • Not Null : Bir bilgi alanının boş olmamasını sağlar
  • Primary key : Bir bilgi alanında tekrar önler, tabloda benzersiz kayıt olmasını sağlar, not null özelliğine sahip
  • Unique : Bir bilgi alanında tekrar önler, tabloda benzersiz kayıt olmasını sağlar*, null olabilir
  • Index  : Tablodan hızlı bir şekilde  veriyi sorgulamak için kullanılır.
  • Default : Bilgi girilmez ise varsayılan olarak bir değer atanır
  • Check : Bir bilgi alanına girilecek verinin kuralını belirler.

Not:* Primary ile Unique farkı, bir tabloda bir tane primary tanımlanırken, gerektiği kadar unique oluşturulabilir.

Unique de; Aklınıza gelebilir, peki ilk kayıt null, ikinci de null, hani tekrar etmeyecekti. Bu anahtarın özelliği bilgi girilmez ise null, fakat bilgi girildi ise, aynısından girilmesine izin vermiyor.

Tabloya Primary key Ekleme

ogrenci tablomuza göz atalım, yapıyı görmek

MariaDB [obs]> desc ogrenci;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| ogrNo   | char(11)    | YES  |     | NULL    |       |
| adi     | varchar(30) | YES  |     | NULL    |       |
| soyadi  | varchar(30) | YES  |     | NULL    |       |
| mobil   | varchar(10) | YES  |     | NULL    |       |
| dtarihi | date        | YES  |     | NULL    |       |
| bolumu  | varchar(30) | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
6 rows in set (0.046 sec)

Bu tabloda ogrencinin numarası tekrar etmemeli, her ogrNo tek olmalı, bunun için bu alana PRIMARY anahtarı eklenmeli.

Tabloyu daha oluştururken şöyle yapılabilirdi.

create table ogrenci(ogrNo char(11),
                     adi varchar(30),
                     ... 
                     bolumu varchar(30),
                     primary key (ogrNo)
);

Artık bizim tablomuz var, sonradan primary eklememiz gerekiyor, bunun içinde

MariaDB [obs]> ALTER TABLE ogrenci ADD PRIMARY KEY (ogrNo);

yazmak yeterlidir.

MariaDB [obs]> desc ogrenci;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| ogrNo   | char(11)    | NO   | PRI | NULL    |       |
| adi     | varchar(30) | YES  |     | NULL    |       |
| soyadi  | varchar(30) | YES  |     | NULL    |       |
| mobil   | varchar(10) | YES  |     | NULL    |       |
| dtarihi | date        | YES  |     | NULL    |       |
| bolumu  | varchar(30) | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
6 rows in set (0.046 sec)

Primary Drop – Kaldırmak

ALTER TABLE ogrenci DROP PRIMARY KEY;