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;