CREATE TABLE în MySQL

Baze de date și tabele Toate versiunile MySQL și MariaDB

Creează un tabel nou, cu coloanele și tipurile lor de date.

Sintaxă
CREATE TABLE nume (
  coloana TIP [NOT NULL] [DEFAULT valoare],
  ...
  PRIMARY KEY (coloana)
);

Ce face CREATE TABLE

CREATE TABLE definește un tabel: numele fiecărei coloane, tipul de date și regulile ei. Tipuri uzuale: INT (număr întreg), DECIMAL(10,2) (bani), VARCHAR(n) (text scurt), TEXT (text lung), DATE, DATETIME.

Reguli frecvente: NOT NULL (valoarea este obligatorie), DEFAULT (valoarea implicită), UNIQUE (fără valori repetate), PRIMARY KEY (identificatorul unic al rândului) și AUTO_INCREMENT (număr crescut automat).

Cu IF NOT EXISTS, comanda nu dă eroare dacă tabelul există deja.

Exemple

Exemplul 1: Un tabel de articole

CREATE TABLE IF NOT EXISTS articole (
  id INT AUTO_INCREMENT PRIMARY KEY,
  titlu VARCHAR(200) NOT NULL,
  slug VARCHAR(200) NOT NULL UNIQUE,
  vizualizari INT NOT NULL DEFAULT 0,
  publicat DATE
);

INSERT INTO articole (titlu, slug, publicat)
VALUES ('Ghid MySQL', 'ghid-mysql', '2026-10-19');

SELECT * FROM articole;

Rezultat

+----+------------+------------+-------------+------------+
| id | titlu      | slug       | vizualizari | publicat   |
+----+------------+------------+-------------+------------+
|  1 | Ghid MySQL | ghid-mysql |           0 | 2026-10-19 |
+----+------------+------------+-------------+------------+

Exemplul 2: Opțiunile specifice MySQL

ENGINE=InnoDB alege motorul de stocare (implicit în MySQL modern), iar CHARSET setul de caractere al tabelului.

CREATE TABLE produse (
  id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  nume VARCHAR(100) NOT NULL,
  pret DECIMAL(10,2) NOT NULL,
  creat DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

DESCRIBE produse;

Rezultat în MySQL

+-------+---------------+------+-----+-------------------+-------------------+
| Field | Type          | Null | Key | Default           | Extra             |
+-------+---------------+------+-----+-------------------+-------------------+
| id    | int unsigned  | NO   | PRI | NULL              | auto_increment    |
| nume  | varchar(100)  | NO   |     | NULL              |                   |
| pret  | decimal(10,2) | NO   |     | NULL              |                   |
| creat | datetime      | YES  |     | CURRENT_TIMESTAMP | DEFAULT_GENERATED |
+-------+---------------+------+-----+-------------------+-------------------+

Greșeli frecvente

  • Folosești FLOAT pentru prețuri. Numerele zecimale binare au mici erori de rotunjire. Pentru bani folosește DECIMAL(10,2).
  • Pui virgulă după ultima coloană, înainte de ). Primești eroare de sintaxă.
  • Folosești ca nume de coloană un cuvânt rezervat (order, key, desc). Alege alt nume sau pune-l între backtick-uri.

Comenzi înrudite

  • ALTER TABLE: Modifică structura unui tabel existent: adaugă, șterge, redenumește sau schimbă coloane.
  • CREATE INDEX: Creează un index, care face căutările după o coloană mult mai rapide.
  • FOREIGN KEY: Leagă o coloană de cheia primară din alt tabel și împiedică datele fără pereche.
  • SHOW TABLES / DESCRIBE: Arată tabelele dintr-o bază de date și structura unui tabel.