ECK (expr) tip: TINYINT [(lungime)] [UNSIGNED] [ZEROFILL] sau SMALLINT [(lungime)] [UNSIGNED] [ZEROFILL] sau MEDIUMINT [(lungime)] [UNSIGNED] [ZEROFILL] sau INT [(lungime) ] [uNSIGNED] [ZEROFILL] sau INTEGER [(lungime)] [uNSIGNED] [ZEROFILL] sau BIGINT [(lungime)] [nesemnat] [ZEROFILL] sau REAL [(lungime, zecimale)] [uNSIGNED] [ZEROFILL] sau DOUBLE [(lungime, zecimale)] [uNSIGNED] [ZEROFILL] sau FLOAT [(lungime, zecimale)] [nesemnat] [ZEROFILL] sau DECIMAL (lungime, zecimale) [nesemnat] [ZEROFILL] sau NUMERIC (lungime, zecimale) [uNSIGNED ] [ZEROFILL] sau CHAR (lungime) [BINARY] sau VARCHAR (lungime) [BINARY] sau DATE și TIME sau TIMESTAMP sau DATETIME sau TINYBLOB sau BLOB sau MEDIUMBLOB sau LONGBLOB sau TINYTEXT sau TEXT sau MEDIUMTEXT sau LONGTEXT sau ENUM (valoare1, valoare2 , valoarea3) sau SET (valoare1, valoare2, valoarea3) index_col_name: COL_NAME [(lungime)] reference_definition: [. (index_col_name)] REFERINȚE tbl_name [POTRIVIRE FULL | .. MECI PARȚIALĂ] [ON reference_option DELETE] [ON UPDATE reference_option] reference_option: RESTRICT | CASCADE | SET NULL | Nici o acțiune | table_options SET DEFAULT: TYPE = sau AUTO_INCREMENT = # sau AVG_ROW_LENGTH = # sau CHECKSUM = sau COMMENT = "string" sau MAX_ROWS = # sau MIN_ROWS = # sau = PACK_KEYS sau PAROLĂ = "string" sau DELAY_KEY_WRITE = sau ROW_FORMAT =
Instrucțiunea CREATE TABLE creează un tabel cu numele specificat în baza de date curentă. Regulile pentru nume de tabele valide sunt date în secțiunea 6.1.2 Denumiri de baze de date, tabele, coloane, aliasuri index. Dacă nu există o bază de date curentă activă sau tabelul specificat există deja, apare o eroare de execuție a comenzii.
În MySQL versiunea 3.22 și mai târziu, numele tabelului poate fi specificat ca nume db_name.tbl_name. Această formă de înregistrare funcționează indiferent dacă baza de date specificată este actuală.
În MySQL versiunea 3.23, când creați un tabel, puteți utiliza cuvântul cheie TEMPORARY. Tabelul temporar este șters automat când conexiunea este finalizată, iar numele său este valabil numai în timpul acestei conexiuni. Aceasta înseamnă că tabelele temporare cu același nume pot fi utilizate în două conexiuni diferite, fără a exista conflicte între ele sau cu un tabel existent cu același nume (tabelul existent este ascuns până când tabela temporară este șters). În MySQL 4.0.2, trebuie să aveți privilegiile CREATE TEMPORARY TABLES pentru a crea tabele temporare.
În MySQL versiunea 3.23 și mai târziu, puteți utiliza cuvintele cheie DACĂ NU EXISTĂ, astfel încât să nu apară o eroare dacă tabela specificată există deja. Ar trebui să se țină seama de faptul că acest lucru nu verifică identitatea structurilor acestor tabele.
Fiecare tabel tbl_name este reprezentat de anumite fișiere din directorul bază de date. În cazul tabelelor ca MyISAM, acestea sunt următoarele fișiere:
Fișier definiție tabel
Pentru mai multe informații despre proprietățile diferitelor tipuri de coloane, consultați secțiunea 6.2 Tipuri de coloane.
BDB sau Berkeley_db
Tabele cu suport pentru tranzacții și blocarea paginilor. Vezi tabelele BDB sau Berkeley_DB.
Datele pentru acest tabel sunt stocate numai în memorie. Vezi secțiunea 7.4 Tabele HEAP.
Programa inițială a mesei. Vezi tabelele ISAM.
Tabele cu suport pentru tranzacții și blocare de rânduri. Vezi secțiunea 7.5 Tabele InnoDB.
Un set de tabele MyISAM, folosit ca o singură masă. Vezi secțiunea 7.2 Tabelele MERGE.
Alias pentru mesele MERGE
Un nou handler care oferă portabilitatea tablelor în formă binară, care înlocuiește ISAM. Vezi tabelele MyISAM.
Consultați secțiunea 7 Tipuri de tabele MySQL. Dacă specificați un tip de tabel care nu este acceptat de această versiune, MySQL va selecta cel mai apropiat unul de tipul specificat din tipurile posibile. De exemplu, dacă specificați TYPE = BDB și această distribuție MySQL nu suportă tabelele BDB. atunci tabelul MyISAM va fi creat în schimb. Alte opțiuni tabulare sunt utilizate pentru a optimiza caracteristicile tabelului. În majoritatea cazurilor, aceste opțiuni nu necesită o instalare specială. Aceste opțiuni funcționează cu toate tipurile de tabele, dacă nu se specifică altfel:
Următoarea valoare este AUTO_INCREMENT. care ar trebui setat pentru acest tabel (MyISAM).
Valoarea aproximativă a lungimii medii a unui rând pentru un tabel dat. Este logic să instalați numai pentru tabele extinse cu înregistrări cu lungime variabilă.
Ar trebui să fie setat la 1. pentru a se asigura că sumele de control pentru toate rândurile sunt suportate în MySQL (acest lucru face ca tabelele să fie ușor mai mici la upgrade, dar facilitează găsirea tabelelor corupte) (MyISAM).
Numărul maxim de rânduri care vor fi stocate în acest tabel.
Numărul minim de rânduri care vor fi stocate în acest tabel.
Ar trebui setat la 1 pentru a obține un index mai mic. De obicei, aceasta încetinește actualizarea și accelerează citirea (MyISAM.ISAM). Setarea la 0 va dezactiva compactarea tastelor. Când este instalat în DEFAULT (MySQL 4.0), manipulatorul de tabele va comprima doar coloane lungi CHAR / VARCHAR.
Criptează fișierul .frm cu o parolă. Această opțiune nu funcționează în versiunea standard a MySQL.
Setarea la 1 întârzie operația de actualizare a tabelului cheilor până când tabela specificată (MyISAM) este închisă.
Specifică modul de stocare a rândurilor. În prezent, această opțiune funcționează numai cu tabelele MyISAM. care suportă formatele liniei DYNAMIC și FIXED. Consultați secțiunea 7.1.2 Formate de tabelă MyISAM.
Dacă utilizați tabele MySQL MyISAM evalueaza expresia MAX_ROWS * avg_row_length. pentru a determina cât de mare va fi masa de rezultat. În cazul în care nu este specificat, nici una dintre opțiunile de mai sus, dimensiunea maximă a tabelului va fi de 4 GB (2 GB sau dacă sistemul de operare acceptă numai până la dimensiunea de 2 GB a tabelului). Acest lucru este de a se asigura că în cazul în care nu este nevoie reală pentru fișiere mari, pentru a limita dimensiunea unui pointer, care va face indicele mai mici și mai repede. În cazul în care opțiunea PACK_KEYS nu este utilizat, implicit este sigilat doar siruri de caractere, dar nu numere. Când se utilizează PACK_KEYS = 1 numărul va fi sigilat. Atunci când compactarea cheie numerică binară MySQL va utiliza compresie prefix. Acest lucru înseamnă că beneficiile acestei vor fi semnificative numai în cazul unui număr mare de numere identice. La comprimarea prefixe pentru fiecare nevoile cheie un octet suplimentar, care indică cât de multe bytes cheie anterioare sunt aceleași ca și pentru următoarele (rețineți că indicatorul într-un șir de caractere stocate în ordinea de „big-octet-pentru-lansare“, imediat după ce cheia - pentru a îmbunătăți compresie). Acest lucru înseamnă că, atunci când există mai multe chei identice în două rânduri de înregistrare pentru toate "cheile ulterioare` similare vor ocupa doar 2 octeți (inclusiv indicatorul liniei). Comparați: în cazul obișnuit pentru stocarea cheilor necesare razmer_hraneniya_klyucha ulterioare + razmer_ukazatelya (de obicei 4) bytes. Pe de altă parte, dacă toate cheile sunt total diferite, fiecare tastă va ocupa un octet mai mult în cazul în care cheia nu poate avea o valoare NULL (în acest caz, cheia ambalate vor fi stocate în același octet, care este utilizat pentru a indica faptul că cheia este NULL) .