Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak utworzyć tabelę w SQL – przykładowe zapytanie Postgres i MySQL

Umiejętność tworzenia tabel w SQL to ważna i fundamentalna koncepcja.

W tym samouczku przeprowadzę Cię przez SQL składnia CREATE TABLE instrukcja używająca przykładów kodu zarówno dla PostgreSQL, jak i MySQL.

Podstawowe CREATE TABLE Składnia

Oto podstawowa składnia CREATE TABLE oświadczenie:

CREATE TABLE table_name(
	column1 data_type column_constraint,
    column2 data_type column_constraint,
    column3 data_type column_constraint,
    column4 data_type column_constraint,
    ... etc
);

W pierwszej części musisz zacząć od CREATE TABLE oświadczenie, po którym następuje nazwa tabeli, którą chcesz utworzyć.

Gdybym chciał stworzyć tabelę informacji o nauczycielach, napisałbym coś takiego:

CREATE TABLE teachers();

Wewnątrz nawiasu dodasz informacje dotyczące tworzenia kolumn tabeli. Jeśli zapomnisz nawias, otrzymasz komunikat o błędzie.

CREATE TABLE teachers;

Średnik na końcu nawiasu informuje komputer, że jest to koniec SQL oświadczenie. Czasami usłyszysz to jako terminator instrukcji.

Co to jest MySQL silniki pamięci masowej?

Zgodnie z MySQL dokumentacja:

Silnik pamięci to komponenty MySQL, które obsługują operacje SQL dla różnych typów tabel.

MySQL używa tych silników pamięci masowej do wykonywania operacji CRUD (tworzenie, odczytywanie, aktualizowanie i usuwanie) na bazie danych.

W MySQL , możesz określić typ aparatu magazynu, którego chcesz użyć dla swojej tabeli. Jeśli pominiesz ENGINE klauzula wtedy domyślną będzie InnoDB.

CREATE TABLE table_name(
	column1 data_type column_constraint,
    column2 data_type column_constraint,
    column3 data_type column_constraint,
    column4 data_type column_constraint,
    ... etc
)ENGINE=storage_engine;

Co to jest IF NOT EXISTS klauzula?

Istnieje opcjonalna klauzula o nazwie IF NOT EXISTS to sprawdzi, czy tabela, którą chcesz utworzyć, już istnieje w bazie danych. Możesz umieścić tę klauzulę tuż przed nazwą tabeli.

CREATE TABLE IF NOT EXISTS teachers();

Jeśli tabela już istnieje, komputer nie utworzy nowej tabeli.

Jeśli pominiesz IF NOT EXISTS i spróbuj utworzyć tabelę, która już istnieje w bazie danych, wtedy pojawi się komunikat o błędzie.

W tym przykładzie najpierw stworzyłem tabelę o nazwie nauczyciele. Ale jeśli spróbuję utworzyć tę samą tabelę w następnym poleceniu, napotkam błąd.

CREATE TABLE IF NOT EXISTS teachers();
CREATE TABLE teachers();

Jak tworzyć kolumny w tabeli

Wewnątrz nawiasu CREATE TABLE oświadczenie, masz zamiar wyświetlić nazwy kolumn, które chcesz utworzyć, wraz z ich typami danych i ograniczeniami.

To jest przykład, jak możemy dodać cztery kolumny school_id , name , email i age do stołu naszych nauczycieli. Każda nazwa kolumny powinna być oddzielona przecinkami.

CREATE TABLE teachers(
	school_id data_type column_constraint, 
	name data_type column_constraint,
    email data_type column_constraint, 
	age data_type column_constraint
);

Zgodnie z MySQL dokumentacja:

MySQL ma sztywny limit 4096 kolumn na tabelę, ale efektywne maksimum może być mniejsze dla danej tabeli. Dokładny limit kolumn zależy od kilku czynników.

Jeśli pracujesz na mniejszym MySQL projektów osobistych, wtedy prawdopodobnie nie będziesz musiał się martwić o przekroczenie liczby kolumn dla swoich tabel.

Zgodnie z dokumentacją PostgreSQL istnieje limit 1600 kolumn na tabelę. Podobne do MySQL , dokładny limit może się różnić w zależności od miejsca na dysku lub ograniczeń wydajności.

Typy danych w SQL

Kiedy tworzysz kolumny w tabeli, musisz przypisać jej typ danych. Typy danych opisują typ wartości w kolumnach.

Oto sześć popularnych kategorii typów danych w SQL :

  1. Numeryczne (int, float, serial, dziesiętne itp.)
  2. Dane i czas (sygnatura czasowa, data, godzina itp.)
  3. Znak i ciąg (znak, varchar, tekst itp.)
  4. Unicode (ntext, nvarchar itp.)
  5. Binarny (binarny itp.)
  6. Różne (xml, tabela itp.)

W tym artykule nie omówimy wszystkich typów danych, ale omówimy niektóre z popularnych.

Oto pełna lista PostgreSQL typy danych i MySQL typy danych.

Co to jest SERIAL i AUTO_INCREMENT ?

W PostgreSQL , SERIAL typ danych to liczba całkowita, która automatycznie zwiększy się o jeden dla każdego nowego tworzonego wiersza.

Możemy dodać SERIAL zaraz po school_id kolumna w naszej tabeli nauczycieli.

school_id SERIAL

W MySQL , użyjesz AUTO_INCREMENT zamiast SERIAL . W tym przykładzie INT używany jest typ danych, który reprezentuje liczbę całkowitą.

school_id INT AUTO_INCREMENT

Jeśli dodamy pięć wierszy do naszej tabeli nauczycieli, dane wyjściowe pokażą liczby 1, 2, 3, 4, 5 dla school_id kolumna, ponieważ liczba całkowita automatycznie zwiększa się o jeden dla każdego nowego wiersza.

Co to jest VARCHAR typ danych?

VARCHAR typ danych to zmienna długość ciągu, w której można ustawić maksymalną długość znaków.

To jest przykład użycia VARCHAR typ danych dla name i email kolumny w naszej tabeli nauczycieli. Liczba 30 to maksymalna długość znaków.

name VARCHAR(30) column_constraint,
email VARCHAR(30) column_constraint,

Ograniczenia kolumn w SQL

Są to reguły stosowane do danych w kolumnach tabeli.

Oto lista najczęstszych ograniczeń dotyczących kolumn:

  • KLUCZ PODSTAWOWY — ten klucz służy jako unikalny identyfikator tabeli
  • KLUCZ OBCY — ten klucz zapewnia, że ​​wartości w kolumnie są również obecne w innej tabeli. Służy to jako łącznik między tabelami.
  • UNIKALNE — wszystkie wartości w kolumnie muszą być niepowtarzalne
  • NOT NULL — wartości nie mogą być NULL. NULL to brak wartości
  • SPRAWDZ — testuje wartość względem wyrażenia logicznego

Przykłady PRIMARY i FOREIGN klawisze

W naszej tabeli nauczycieli możemy dodać PRIMARY KEY do school_id kolumna.

Tak wyglądałby kod w PostgreSQL:

 school_id SERIAL PRIMARY KEY

Tak wyglądałby kod w MySQL:

school_id INT AUTO_INCREMENT PRIMARY KEY

Jeśli chcesz mieć więcej niż jedną kolumnę dla PRIMARY KEY , możesz dodać go zaraz po tworzeniu kolumn.

CREATE TABLE table_name(
	column1 data_type column_constraint,
    column2 data_type column_constraint,
    column3 data_type column_constraint,
    column4 data_type column_constraint,
    ... etc
    PRIMARY KEY (column1, column2)
);

Jeśli chcesz połączyć jedną tabelę z drugą, możesz użyć FOREIGN KEY .

Załóżmy, że mamy tabelę o nazwie district_employees z kluczem podstawowym district_id . Oto jak wyglądałby kod w PostgreSQL:

CREATE TABLE district_employees(
   district_id SERIAL PRIMARY KEY,
   employee_name VARCHAR(30) NOT NULL,
   PRIMARY KEY(district_id)
);

W naszej tabeli nauczycieli możemy użyć klucza obcego i odnieść się do tabeli district_employees.

district_id INT REFERENCES district_employees(district_id),
CREATE TABLE teachers(
    school_id SERIAL PRIMARY KEY,
    district_id INT REFERENCES district_employees(district_id),
    column1 data_type column_constraint,
    column2 data_type column_constraint,
    column3 data_type column_constraint,
    column4 data_type column_constraint,
    ... etc 
);

Przykłady NOT NULL , CHECK i UNIQUE

Jeśli chcemy mieć pewność, że nie mamy żadnych wartości, które są null, możemy użyć NOT NULL ograniczenie.

name VARCHAR(30) NOT NULL

Możemy użyć CHECK ograniczenie, aby wszyscy nasi nauczyciele mieli ukończone 18 lat. CHECK ograniczenie testuje wartość względem wyrażenia logicznego.

age INT CHECK(age >= 18)

Jeśli jedna z naszych wartości nie spełnia tego warunku, otrzymamy komunikat o błędzie.

Możemy użyć UNIQUE ograniczenie, aby upewnić się, że wszystkie e-maile są niepowtarzalne.

email VARCHAR(30) UNIQUE

To jest ostateczny wynik dla tabeli nauczycieli:

Tak wyglądałby kod w PostgreSQL:

CREATE TABLE teachers(
	school_id SERIAL PRIMARY KEY,
	name VARCHAR(30) NOT NULL,
    email VARCHAR(30) UNIQUE,
	age INT CHECK(age >= 18)      
);

Tak wyglądałby kod w MySQL:

CREATE TABLE teachers(
	school_id INT AUTO_INCREMENT PRIMARY KEY,
	name VARCHAR(30) NOT NULL,
    email VARCHAR(30) UNIQUE,
	age INT CHECK(age >= 18)      
);

Mam nadzieję, że podobał Ci się ten artykuł i życzę powodzenia w Twojej podróży z SQL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Składnia SQL ALTER TABLE – wymienione przez DBMS

  2. PHP mysql wstaw format daty

  3. 5 najlepszych kursów online do nauki MySQL

  4. Zresetuj hasło root serwera MySQL

  5. Czy jest jakiś sposób na sprawdzenie wydajności indeksowania mysql?