mysql create table tutorial with examples
Bu eğiticide, sözdizimi ve programlama örnekleri ile MySQL CREATE TABLE komutunun kullanımını inceleyeceğiz:
CREATE TABLE deyimi, SQL'in DDL'sinin (Veri Tanımlama Dili) bir parçasıdır.
Verilen bir veritabanında bir tablo OLUŞTURMA yollarını, tablo oluştururken sütun adlarından ve DB motorundan bahsetmenin yollarını ve SQL tabloları için adlandırma kurallarıyla ilgili kuralları tartışacağız.
Ne öğreneceksin:
- Ön Koşullar
- MySQL CREATE TABLE Komutu
- Sonuç
Ön Koşullar
SQL komutlarından herhangi birini çalıştırmanın ön koşulu MySQL sunucusunu indirmek olacaktır. Ücretsiz topluluk sürümü indirilebilir İşte.
Bu öğreticideki tüm örnekler ve tartışmalar için MySQL Workbench SQL İstemcisini de kullanacağız. MySQL Workbench'in ücretsiz topluluk sürümü indirilebilir İşte (üzerinde çalıştığınız işletim sistemine bağlı olarak sürümü seçebilirsiniz).
MySQL Workbench'i kullanmak istemiyorsanız, MySQL Sunucusunun varsayılan kurulumuyla birlikte gelen MySQL Komut satırı istemcisini de kullanabilirsiniz.
MySQL CREATE TABLE Komutu
CREATE TABLE komutu, MySQL'deki DDL (Veri Tanımlama Dili) komut setinin bir parçasıdır ve kullanıcının verilen veritabanı için yeni bir tablo oluşturmasına izin verir.
Not: CREATE TABLE komutu, MySQL, Postgres, SQL Server gibi hemen hemen tüm ilişkisel veritabanları için mevcuttur.
MySQL CREATE TABLE Sözdizimi
En basit haliyle, CREATE TABLE komutunu yalnızca temel seçeneklerle, yani tablo adı ve sütun tanımlarıyla kullanabilirsiniz.
CREATE TABLE (IF NOT EXISTS) tableName ( column1 datatype, column2 datatype, .... ); Söz dizimi argümanlarını ayrıntılı olarak anlayalım:
- Tablo ismi: Bu, oluşturmaya çalıştığınız tablonun adı olmalıdır. Tam olarak nitelenmiş bir ad olmalıdır (varsayılan bir veritabanı kümeniz yoksa). Örneğin, databaseName.tableName
Tablo adı, tırnak işaretleri olmadan veya 'tabloAdı' ve 'veritabanıAdı' gibi bir geri işaret sembolüyle belirtilebilir. - Sütun tanımı: SQL'deki bir tablo en az bir sütundan oluşmalıdır. Tüm sütun tanımları sütun veri türünün yanı sıra sütun_adı içermelidir. Ayrıca isteğe bağlı olarak birincil anahtar, null, null değil vb. Gibi diğer sütun özelliklerini de dahil edebilirsiniz.
Tablo oluşturmak için yukarıdaki sözdizimini kullanmanın bir örneğini görelim.
EMPLOYEE_DETAILS adlı (veritabanında - SAMPLE_DB) sütunlarla bir tablo oluşturacağız.
- isim: varchar (100)
- yaş: int
- adres: varchar (100)
CREATE TABLE SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100) ); Aşağıda verilen, Tablo oluşturmanın çıktısı olacaktır:

Not:
# 1) Yukarıdaki sözdiziminde isteğe bağlı komutun (MEVCUT DEĞİLSE) kullanımına dikkat edin.
Oluşturmaya çalıştığımız tablo zaten veritabanında mevcutsa bir hata oluşmasını önleyeceği için genellikle bu komutu kullanmanız önerilir.
IF NOT EXISTS ile ve olmadan kullanım örneğini burada bulabilirsiniz.
- IF NOT EXISTS yoksa, tablo zaten mevcutsa bir hata oluşturur.

- IF NOT EXISTS ile bir hata oluşturmaz. Ancak, tablonun zaten mevcut olduğuna dair bir uyarı gösterecektir.

# 2) CREATE TABLE komutunu kullanırken 'tableName', veritabanı adı ile tam olarak nitelendirilmelidir, yani bizim onu kullanma şeklimiz SAMPLE_DB.employee_details
Tablo adını belirlemenin diğer yolları, 'KULLAN' komutunu kullanarak mevcut veritabanını kurmaktır. Örneğin. SAMPLE_DB KULLANIN; ve sonra tam olarak nitelenmiş tablo adı yerine yalnızca tablo adını çalıştırır / kullanır.
Tablo Seçenekleri ile TABLO OLUŞTUR
Tablo seçenekleri, MySQL tablolarının davranışını optimize etmek için kullanılır. Bunlar MySQL CREATE TABLE komutu (veya daha sonra ALTER TABLE komutu aracılığıyla) kullanılarak bir tablo oluştururken uygulanabilir.
Sözdizimi, belirtilebilecek ek tablo seçenekleriyle aynı kalır.
CREATE TABLE (IF NOT EXISTS) tableName ( column1 datatype, column2 datatype, .... ) (table “” not found /)
; Aşağıda en yaygın kullanılan seçenekleri tartışacağız (Tablo seçeneklerinin tam listesi bulunabilir. İşte ).
# 1) MOTOR
Tablo için depolama motorunu belirtmek için kullanılır, yani varsayılan değer InnoDB'dir. Herhangi bir özel depolama motoruna ihtiyaç duyulmadıkça bunun değiştirilmesi gerekli değildir. Depolama motorları için diğer geçerli değerler MEMORY, CSV, HEAP vb .'dir.
MySQL CREATE TABLE'ın bir parçası olarak ENGINE'i belirtmek için sözdizimi aşağıda verilmiştir.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100) )ENGINE='MEMORY';# 2) AUTO_INCREMENT
Bu seçenek, tablonun ilk AUTO_INCREMENT değerini ayarlamak için kullanılır, yani varsayılan değer 1'dir, ancak başka herhangi bir pozitif tamsayı değerini geçersiz kılabilirsiniz.
Not: AUTO_INCREMENT, tablodaki yalnızca bir sütun için belirtilebilir ve birincil anahtar olmalıdır. Otomatik artımı 10 olarak belirleme ve otomatik artırmanın doğru ayarlanıp ayarlanmadığını doğrulamak için bir kayıt ekleme örneğini görelim.
Birincil anahtar olarak işaretlenmiş ek bir kimlik alanıyla aynı table (employee_details) kullanıyoruz (bu komutu çalıştırmadan önce mevcut tabloyu bıraktığınızdan emin olun).
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details( id int not null AUTO_INCREMENT primary key, name varchar(100), age int, address varchar(100) )AUTO_INCREMENT=10; ID için herhangi bir değer içermeyen bir satır ekleyelim ve değerlerin 10'dan başlayan değerden girdiğinden emin olalım.
INSERT INTO SAMPLE_DB.employee_details(name,age,address) values ('aman kumar',20,'mumbai'); select * from SAMPLE_DB.employee_details; 
# 3) SAĞLAMA TOPLAMI
Depolanan tüm tablo için bir sağlama toplamına sahip olmak istiyorsanız, bu 1 olarak ayarlanmalıdır. Genellikle bozuk tablo olmamasını sağlamak için kullanılır.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100) )CHECKSUM=1; CHECKSUM, herhangi bir ekleme veya güncelleme sırasında tüm tablonun canlı bir sağlama toplamını tutar
Bölümleme Ayrıntıları ile TABLO OLUŞTUR
Bölümleme seçeneklerini kullanarak gerekirse Kullanıcı tanımlı bölümlemeden de bahsedebiliriz.
Bir kavram olarak bölümleme, daha hızlı erişim süreleri ve optimize edilmiş sorgular sağlamak için tabloların içeriğini dosya sistemi boyunca dağıtmak için yaygın olarak kullanılır. Bölümleme, belirtilen stratejilere veya bölümleme anahtarlarına bağlı olarak büyük bir tabloyu daha küçük tablolara böler.
MySQL CREATE TABLE Komutu ile Bölümleme ayrıntılarını nasıl belirleyebileceğimize bakalım.
Çalışan_details örnek tablosunu kullanacağız ve eşit bir veri dağılımına sahip olmak için bölüm hash anahtarı olarak kullanılacak departman_id adlı yeni bir tamsayı sütunu ekleyeceğiz.
Ayrıca bölüm sayısının belirtilmesi, kaç gerçek bölümün oluşturulacağını gösterir (bu durumda 4). Belirtilmezse, varsayılan olarak yalnızca 1 bölüm olacaktır.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100), department_id int )PARTITION BY HASH (department_id) PARTITIONS 4; Not: Genel olarak, bölümler oluşturmak için kullanılacak anahtar, tablo için kullanılacak beklenen erişim modellerine bağlı olacaktır. Bu durumda, tabloyu çoğu zaman departman kimliğine göre sorguladığımızı varsayalım, bu durumda, hash anahtarının bir parçası olarak departman_id'ye sahip olmak mantıklıdır.
MySQL Tablo Klonlama ve Kopyalama
Bazen mevcut bir tablonun klonunu oluşturmak veya içeriği bir tablodan başka bir tabloya kopyalamak isteyebilirsiniz. MySQL, aşağıda gösterildiği gibi bunu başarmanın 2 yolunu destekler.
- LIKE komutunu kullanma
- SELECT komutunu kullanma
LIKE COMMAND Kullanarak Tablo Klonlama
LIKE komutuyla, mevcut tablolarla tamamen aynı sütun adlarına ve özelliklerine sahip yeni bir tablo oluşturabilirsiniz.
İşte LIKE Command kullanan sözdizimi.
kalite analisti mülakat soruları ve cevapları pdf
CREATE TABLE tableName1 LIKE tableName2Yukarıdaki komutla, tableName2 ile aynı yapı ve özelliklere sahip yeni bir tablo yani tableName1 oluşturulacaktır.
Lütfen bu yaklaşımla - yalnızca sütun adları ve özelliklerinin klonlandığını ve gerçek tablo verilerinin klonlandığını unutmayın.
Employee_details adlı bir tablo oluşturmayı deneyelim ve bu tabloyu LIKE seçeneğini kullanarak student_details adında yeni bir tablo oluşturmak için kullanalım.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100), department_id int ); CREATE TABLE SAMPLE_DB.student_details LIKE SAMPLE_DB.employee_details;Aşağıda verilen, yukarıdaki komutun çıktısıdır.

SELECT COMMAND Kullanarak Tablo Klonlama
Bu yaklaşım, mevcut tablonun bir kopyasını yeni bir tabloya oluşturmak için SELECT komutunu kullanır.
Bu yaklaşımla, tablodaki veriler de yeni tabloya kopyalanır.
CREATE TABLE tableName1 AS SELECT * FROM tableName2;Employee_details adlı bir tablo oluşturmayı deneyelim ve bu tabloyu SELECT seçeneğini kullanarak student_details adında yeni bir tablo oluşturmak için kullanalım.
CREATE TABLE SAMPLE_DB.student_details AS SELECT * FROM SAMPLE_DB.employee_details;MySQL Tablo Adlandırma Kuralları
Önceki bölümlerde MySQL tabloları oluşturmayı öğrendik. Şimdi MySQL ile ilgili geçerli kısıtlamalarla birlikte tabloları adlandırırken akılda tutulması gereken bazı kuralları görelim.
Bu kurallar / kurallar hem SQL tabloları hem de veritabanları için geçerlidir.
# 1) İsimlerdeki Hukuki Karakterler
için) Tırnaksız adlar, tüm karakterlerin rakam olmaması dışında SQL Server varsayılan karakter kümesindeki herhangi bir karakterden oluşabilir. Örneğin, '23test' geçerli bir tablo adıdır ancak '2345' değildir.
Aşağıda tırnaksız isimler için kullanılabilecek karakterlerin listesi verilmiştir:
ASCII: (0-9, a-z, A-Z $ _) (temel Latin harfleri, 0-9 rakamları, dolar, alt çizgi)
Genişletilmiş: U + 0080 .. U + FFFF
ASCII kodları hakkında daha fazla bilgi edinin İşte
b) Tablo ve veritabanı adları, bir ters işaret karakteri (`) ile alıntılanabilir ve ters işaret karakteri dışında herhangi bir harf / karakter içerebilir. Alıntılanan isimlerle, tüm rakamları içeren tablo / veritabanı adlarına bile sahip olabilirsiniz.
Bu tür tablolar için, bu tür tablolardaki verilere erişmek için tablonun etrafındaki geri işaretlerini ve / veya veritabanı adını kullanmanız gerekeceğini lütfen unutmayın.
c) Tablo ve Veritabanı adları, veritabanı ve tablo ayırıcı olarak kullanıldığı için nokta '.' İçeremez.
d) Veritabanı ve Tablo adları - '$' ve '_' özel karakterleri içerebilir.
# 2) İsim Uzunluğu
MySQL'de bir veritabanı veya tablo adı için izin verilen maksimum uzunluk 64 karakterler.
# 3) İsim Niteleyiciler
Önceki bölümlerde tartışıldığı gibi, MySQL'de bir tablo her zaman parçası olduğu veritabanı ile bağlam içindedir. Bu nedenle, bir tabloya erişmek için tam nitelikli bir tablo adı kullanabilirsiniz - bu, nokta ve ardından sütun adıyla ayrılmış veritabanı adı kombinasyonundan başka bir şey değildir.
Örneğin, SAMPLE_DB veritabanındaki 'EMPLOYEE_DETAILS' tablosundaki tüm öğeleri seçmek için, aşağıdaki gibi tam nitelikli bir ad kullanabilirsiniz.
SELECT * from SAMPLE_DB.EMPLOYEE_DETAILS;DB ve tablo adları, aşağıda gösterildiği gibi, ters işaretlerle ayrı ayrı alıntılandığı şekilde de belirtilebilir.
SELECT * from `SAMPLE_DB`.`EMPLOYEE_DETAILS`;Adlandırma tabloları ve Veritabanları ile ilgili sektör tarafından önerilen kurallar ve en iyi uygulamalar aşağıda verilmiştir.
- Tabloları ve veritabanlarını küçük harfle adlandırın - Bu genellikle, özellikle günlük veri tabanını sorgulayanlar için DB'nin yazılmasını ve sorgulanmasını hızlandırır.
- Tablo ve db adlarında boşluk yerine alt çizgi ('_') kullanın - Bu isimleri daha okunaklı hale getirir.
- Tablolar ve veritabanları için kendinden açıklamalı isimler kullanın - Örneğin, çalışanın ayrıntılarını içeren bir tablo, çalışan_bilgisi, çalışan_verisi, çalışan, çalışan_ ayrıntıları, çalışan_adı_ve_adresi gibi farklı şekillerde adlandırılabilir. En açıklayıcı bir isim seçmek mantıklı olacaktır. Örneğin, çalışan_ayrıntıları veya çalışan_bilgisi olarak tablo adını seçebiliriz. Bu öznel bir tartışma olsa da, bu varlıkları kullanacak ve yaratacak olan ekibin birden fazla üyesi tarafından kararlaştırılmalıdır.
- Veritabanı ve tablo adlarında sayı kullanmaktan kaçının - sample_db_2, test_table_1 vb. Gibi
Sıkça Sorulan Sorular ve Cevaplar
S # 1) Index kullanarak MySQL'de bir tablo nasıl oluşturulur?
ücretsiz anime izleme yolları
Cevap: Tablo oluşturma sırasında herhangi bir sütuna (veya sütun kombinasyonuna) bir INDEX ekleyebilirsiniz.
Employee_details tablosu için departman_id sütununa bir Dizin eklemenin bir örneğini görelim.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), id int, age int, address varchar(100), department_id int, index(department_id) ); S # 2) MySQL'de tarih içeren bir tablo nasıl oluşturulur?
Cevap: Tarih, bir tablo oluştururken herhangi bir sütunla ilişkilendirilmesi gereken bir veri türüdür.
Çalışan_detayları örnek tablosu için veri türü olarak DATETIME olan joining_date sütunu ile aşağıdaki örnek CREATE TABLE komutuna bakın.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), id int primary key, age int, address varchar(100), joining_date datetime, department_id int ); S # 3) MySQL'de tablonun yapısını nasıl görebilirim?
Cevap: Bir tablo oluşturduktan sonra, tablonun yapısına sütunlar, dizinler vb. Başvurmak istiyorsanız, ayrıntıları almak için DESCRIBE komutunu kullanabilirsiniz.
Sözdizimi:
DESCRIBE tableName;Şimdi bir tablo oluşturalım ve DESCRIBE komutunun çıktısını görelim.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), id int primary key, age int, address varchar(100), department_id int ); DESCRIBE sample_db.employee_details; Aşağıda DESCRIBE komutunun çıktısı verilmiştir.

S # 4) MySQL'de bir tabloya nasıl YABANCI ANAHTAR eklerim?
Cevap: Yabancı Anahtar, MySQL'de 2 tabloyu birbirine bağlamak için kullanılır. Yabancı Anahtar kısıtlamasını kullanmak için, başvuruda bulunduğunuz tabloyu önceden oluşturmuş olmanız gerekir.
>> hakkında daha fazla bilgi edinin MySQL Yabancı Anahtar Kısıtlaması
Bunu bir örnekle anlamaya çalışalım. Diyelim ki 2 tablomuz var, yani Bölüm (kolejin sahip olduğu çeşitli bölümler hakkında ayrıntılar içerir) ve Öğrenci ayrıntıları (öğrencilerle ilgili tüm ayrıntılar).
Bölümde sütunlar var - id (birincil anahtar) ve ad.
Öğrenci Detayları - id (birincil anahtar), yaş, adres ve departman_id (Departman tablosunda belirtilen yabancı anahtar).
Aşağıda, bu tabloların her ikisi için de CREATE TABLE komutunun sözdizimi verilmiştir.
CREATE TABLE department ( name varchar(100), id INT NOT NULL, PRIMARY KEY (id) ); CREATE TABLE student_details ( name varchar(100), id int not null, age int, address varchar(100), department_id int, PRIMARY KEY (id), FOREIGN KEY (department_id) references department(id) ON DELETE CASCADE );Sütunlar ve departman_id arasındaki ilişkinin departman tablosundaki sütun kimliği ile referans gösterilmesi gerektiğini belirttiğimiz student_details tablosundaki FOREIGN KEY referansının sözdizimine bakın.
Sonuç
Veri Tanımlama Dili kategorisindeki komutlara ait MySQL'de CREATE TABLE komutu burada detaylı olarak anlatılmıştır.
Tablo için ayarlanan ek özelliklere sahip olmak için CREATE TABLE komutuyla birlikte bahsedilebilecek ENGINE, CHECKSUM gibi farklı tablo seçeneklerini öğrendik.
MySQL'de mevcut tablonun bir klonunu oluşturmanın yollarını araştırdık. Son olarak, tablo adları için adlandırma kurallarının yanı sıra sektör tarafından önerilen en iyi uygulamalar hakkında konuştuk.
Mutlu Okumalar !!
Önerilen Kaynaklar
- MySQL Kod Örnekleriyle Görünüm Öğreticisini Oluştur
- MySQL Veri Türleri | MySQL'de Farklı Veri Türleri Nelerdir?
- MySQL Tabloya Ekle - İfade Sözdizimi ve Örnekler Ekle
- MySQL JOIN Eğitimi: İç, Dış, Çapraz, Sol, Sağ ve Öz
- SQL Vs MySQL Vs SQL Server Arasındaki Fark (Örneklerle)
- PL SQL Ekle, Güncelle, Sil ve Seç İfadesi Nasıl Kullanılır
- MongoDB Veritabanı Oluşturma Eğitimi
- MongoDB Kullanıcı Oluşturun ve Örneklerle Rol Atayın