Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 8376 razy

Polecenie CREATE TABLE umożliwia stworzenie tabeli, która w przyszłości będzie przechowywała rekordy danych. Aby jednak było możliwe prawidłowe korzystanie z tego polecenia trzeba poznać najpierw typy danych, jakie mogą być ustawione dla danej komórki tabeli. Oto przykład utworzenia tabeli z wykorzystaniem tego polecenia:

CREATE TABLE books ( id int unsigned not null auto_increment primary key, title char(255) not null, author char(255) not null );

Nazwa tabeli tworzonej w tym przypadku to books, składa się ona z trzech pól:

  • pierwszego o nazwie id, przechowującego typ int unsigned (całkowity bez znaku). Kolejne instrukcje to:
    • not null - czyli wpis nie może mieć wartości 0;
    • polecenie auto_increment oznacza automatyczne dodawanie wartości tego pola (automatycznie przy dodawaniu danych będzie ustawiał to pole na wartość o 1 większą od ostatnio wstawionej wartości);
    • primary key oznacza, że jest to klucz główny tej tabeli. W danej tabeli może istnieć tylko jeden klucz główny.
  • drugiego pola o nazwie title przyjmującego ciąg 255 znaków char(255);
  • trzeciego pola o nazwie author przyjmującego również ciąg 255 znaków char(255).

Do powyższego zapytania można dodać warunek IF NOT EXISTS w następujący sposób:

CREATE TABLE IF NOT EXISTS books ( id int unsigned not null auto_increment primary key, title char(255) not null, author char(255) not null );

jeżeli nie ma się pewności, czy tabela o podanej nazwie już nie istnieje.

Typy danych

Typy liczbowe dzielą się na dwie główne grupy:

  • całkowite, które z kolei można podzielić na:
    • całkowite ze znakiem;
    • całkowite bez znaku - wymagają użycia dodatkowego słowa UNSIGNED z nazwą typu całkowitego ze znakiem
  • zmiennoprzecinkowe

Typy liczb całkowitych

Poniżej zamieszczam tabelkę opisującą podstawowe typy danych liczbowych całkowitych:

TINYINT[(W)] BIT BOOL
SMALLINT
MEDIUMINT[(W)]
INT[(W)] INTEGER[(W)]
BIGINT[(W)]

W powyższej tabelce dla równoważnych typów danych zapisane zostały zakresy ich wartości:

  • u góry - dla liczb całkowitych ze znakiem
  • u dołu - dla liczb całkowitych bez znaku, czyli np. INT UNSIGNED.

Oznaczenie W w nawiasach kwadratowych oznacza długość wyświetlania liczby. Podanie tej wartości jest opcjonalne (można pominąć)

Typy liczb zmiennoprzecinkowych

Poniżej zamieszczam tabelkę opisującą podstawowe typy danych liczbowych zmiennoprzecinkowych:

FLOAT(precyzja)
FLOAT[(W, L)]
DOUBLE[(W, L)] DOUBLE PRECISION[(W, L)] REAL[(W, L)]
DECIMAL[(W[, L])] NUMERIC[(W, L)] DEC[(W, L)] FIXED[(W, L)]

Typy przechowywania daty i czasu

W SQL-u dostępnych jest kilka typów umożliwiających przechowywanie daty i czasu. Ciekawą właściwością pól tego typu jest to, że przy wstawianiu rekordu do bazy danych i pozostawieniu danego pola daty lub czasu jako puste wstawiana jest automatycznie bieżąca data. Oto dostępne typy obsługujące datę i czas:

DATE
TIME
DATETIME
TIMESTAMP[(W)]
YEAR[(2 lub 4)]

Dla typu TIMESTAMP format wyświetlania daty w zależności od parametru W pokazuje poniższa tabelka.

TIMESTAMP TIMESTAMP(14)
TIMESTAMP(12)
TIMESTAMP(10)
TIMESTAMP(8)
TIMESTAMP(6)
TIMESTAMP(4)
TIMESTAMP(2)

Typy łańcuchowe

Typy krótkie tekstowe o stałej lub zmiennej długości znaków:

[NATIONAL] CHAR(W) [BINARY lub ASCII lub UNICODE]
Typ przechowujący stałą liczbę znaków o długości W, jeżeli wprowadzony ciąg jest krótszy od W to zmienna i tak będzie zajmowała W znaków pamięci, gdy dłuższy to wstawia tylko tą część, która się mieści. Ustawienia:
  • NATIONAL - wymusza użycie domyślnego zbioru znaków, który i tak jest domyślnie wykorzystywany przez MySQL-a;
  • BINARY - wyłącza rozpoznawanie wielkości liter (domyślnie rozpoznawane);
  • UNICODE wskazuje, że bedzie wykorzystywany zastaw znaków ucs.
CHAR
[NATIONAL] VARCHAR(W) [BINARY]

Kolejny typ danych to TEXT - przechowujący zmienną ilość tekstu i BLOB - przechowująca dane binarne. Oto zestawienie tych typów danych:

TINYBLOB
TINYTEXT
BLOB
TEXT
MEDIUMBLOB
MEDIUMTEXT
LONGBLOB
LONGTEXT

Ostatni rodzaj typów to typy enumeryczne, umożliwiająca stworzenie własnej listy wartości dopuszczalnych do wprowadzenia w danym polu tabeli. Oto one:

ENUM('wartość1', 'wartość2', ...)
SET('wartość1', 'wartość2', ...)

Tworzenie tabelki z poziomu konsoli systemowej

Utwórzmy więc małą tabelkę w nowej bazie danych:

mysql -u root -p
password: **************
mysql> CREATE DATABASE library DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

mysql> USE library;
Database changed
mysql> 

USE library;
mysql> CREATE TABLE books (id int unsigned not null auto_increment primary key,
     > title char(255) not null,
     > author char(255) not null
     > );
Query OK, 1 row affected (0.33 sec)

mysql> DESCRIBE books;
+--------+------------------+------+-----+---------+----------------+
| Field  | Type             | Null | Key | Default | Extra          |
+--------+------------------+------+-----+---------+----------------+
| id     | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| title  | char(255)        | NO   |     | NULL    |                |
| author | char(255)        | NO   |     | NULL    |                |
+--------+------------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
Layout wykonany przez autora strony, wszelkie prawa zastrzeżone. Jakiekolwiek użycie części lub całości grafik znajdujących się na tej stronie bez pisemnej zgody jej autora surowo zabronione.