mysql create table tutorial with examples
W tym samouczku omówimy użycie polecenia MySQL CREATE TABLE z przykładami składni i programowania:
Instrukcja CREATE TABLE jest częścią języka DDL (Data Definition Language) języka SQL.
Omówimy sposoby, w jakie można TWORZYĆ tabelę w danej bazie danych, wymieniać nazwy kolumn i silnik DB podczas tworzenia tabeli, a także zasady nazewnictwa tabel SQL.
Czego się nauczysz:
- Wymagania wstępne
- Polecenie MySQL CREATE TABLE
- Wniosek
Wymagania wstępne
Warunkiem koniecznym do uruchomienia dowolnego polecenia SQL byłoby pobranie serwera MySQL. Bezpłatną edycję społeczności można pobrać tutaj.
Będziemy również używać klienta SQL MySQL Workbench do wszystkich przykładów i dyskusji w tym samouczku. Można pobrać bezpłatną wersję społecznościową MySQL Workbench tutaj (możesz wybrać wersję w zależności od systemu operacyjnego, na którym pracujesz).
Jeśli nie chcesz używać MySQL Workbench - możesz również użyć klienta MySQL Command Line, który jest dostarczany z domyślną instalacją MySQL Server.
Polecenie MySQL CREATE TABLE
Polecenie CREATE TABLE jest częścią zestawu poleceń DDL (Data Definition Language) w MySQL i umożliwia użytkownikowi utworzenie nowej tabeli dla danej bazy danych.
Uwaga: Polecenie CREATE TABLE istnieje dla prawie wszystkich relacyjnych baz danych - takich jak MySQL, Postgres, SQL Server itp.
Składnia MySQL CREATE TABLE
W najprostszej formie możesz użyć polecenia CREATE TABLE tylko z podstawowymi opcjami, tj. Nazwą tabeli i definicjami kolumn.
CREATE TABLE (IF NOT EXISTS) tableName ( column1 datatype, column2 datatype, .... );
Przyjrzyjmy się szczegółowo argumentom składniowym:
- Nazwa tabeli: Powinna to być nazwa tabeli, którą próbujesz utworzyć. Powinna to być w pełni kwalifikowana nazwa (na wypadek, gdybyś nie miał domyślnego zestawu bazy danych). Na przykład, databaseName.tableName
Nazwę tabeli można określić bez cudzysłowów lub za pomocą symbolu odwrotnego znaku, takiego jak „tableName” i „databaseName”. „Nazwa tabeli” - Definicja kolumny: Tabela w języku SQL musi składać się z co najmniej jednej kolumny. Wszystkie definicje kolumn muszą zawierać nazwę_kolumny oraz typ danych kolumny. Możesz również opcjonalnie dołączyć inne właściwości kolumny, takie jak klucz podstawowy, null, not null itp.
Zobaczmy przykład użycia powyższej składni do utworzenia tabeli.
Stworzymy tabelę o nazwie EMPLOYEE_DETAILS (w bazie danych - SAMPLE_DB) z kolumnami
- Nazwa: varchar (100)
- wiek: int
- adres: varchar (100)
CREATE TABLE SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100) );
Poniżej podano wynik tworzenia tabeli:
Uwaga:
# 1) Zwróć uwagę na użycie (JEŚLI NIE ISTNIEJE) opcjonalnego polecenia w powyższej składni.
Ogólnie zaleca się użycie tego polecenia, ponieważ pozwoliłoby to uniknąć generowania błędu, jeśli tabela, którą próbujemy utworzyć, znajduje się już w bazie danych.
Oto przykład użycia zi bez JEŚLI NIE ISTNIEJE.
- Bez JEŚLI NIE ISTNIEJE wygenerowałoby błąd, jeśli tabela już istnieje.
- Opcja JEŚLI NIE ISTNIEJE nie generuje błędu. Jednak pokaże ostrzeżenie, że tabela już istnieje.
# 2) „tableName” podczas korzystania z polecenia CREATE TABLE powinna być w pełni kwalifikowana nazwą bazy danych, tj. Sposobem, w jaki go użyliśmy, jest SAMPLE_DB.employee_details
Innym sposobem określenia nazwy tabeli jest skonfigurowanie bieżącej bazy danych za pomocą polecenia „USE”. Na przykład. USE SAMPLE_DB; a następnie uruchamianie / używanie tylko nazwy tabeli zamiast w pełni kwalifikowanej nazwy tabeli.
UTWÓRZ TABELĘ z opcjami tabeli
Opcje tabeli służą do optymalizacji zachowania tabel MySQL. Można je zastosować podczas tworzenia tabeli za pomocą polecenia MySQL CREATE TABLE (lub później za pomocą polecenia ALTER TABLE).
Składnia pozostaje taka sama z dodatkowymi opcjami tabeli, które można określić.
CREATE TABLE (IF NOT EXISTS) tableName ( column1 datatype, column2 datatype, .... ) (table “” not found /)
;
Poniżej omówimy najczęściej używane opcje (pełną listę opcji tabeli można znaleźć tutaj ).
# 1) SILNIK
Służy do określenia mechanizmu przechowywania dla tabeli, tj.Domyślną wartością jest InnoDB. Nie trzeba tego zmieniać, chyba że istnieje potrzeba konkretnego mechanizmu przechowywania. Inne prawidłowe wartości silników pamięci masowej to MEMORY, CSV, HEAP itp.
Składnia określająca ENGINE jako część MySQL CREATE TABLE jest podana poniżej.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100) )ENGINE='MEMORY';
# 2) AUTO_INCREMENT
Ta opcja służy do ustawiania początkowej wartości AUTO_INCREMENT tabeli, tj.Domyślna wartość to 1, ale można zastąpić inną dodatnią liczbę całkowitą.
Uwaga: AUTO_INCREMENT można określić tylko dla jednej kolumny w tabeli i powinien to być klucz podstawowy. Zobaczmy przykład określania autoinkrementacji jako 10 i wstawiania rekordu w celu sprawdzenia, czy autoinkrementacja jest ustawiona prawidłowo.
Używamy tej samej tabeli Employer_details (upewnij się, że istniejąca tabela zostanie usunięta przed uruchomieniem tego polecenia) z dodatkowym polem id oznaczonym jako klucz podstawowy.
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;
Wstawmy wiersz bez wartości identyfikatora i upewnijmy się, że wartości są wstawiane od wartości zaczynającej się od 10.
INSERT INTO SAMPLE_DB.employee_details(name,age,address) values ('aman kumar',20,'mumbai'); select * from SAMPLE_DB.employee_details;
# 3) SUMA KONTROLNA
Powinien być ustawiony na 1, jeśli chcesz przechowywać sumę kontrolną dla całej tabeli. Zwykle jest używany, aby upewnić się, że nie ma uszkodzonych tabel.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100) )CHECKSUM=1;
CHECKSUM przechowuje na żywo sumę kontrolną całej tabeli podczas wszelkich wstawień lub aktualizacji
UTWÓRZ TABELĘ ze szczegółami partycjonowania
W razie potrzeby możemy również wspomnieć o partycjonowaniu zdefiniowanym przez użytkownika, korzystając z opcji partycjonowania.
Koncepcja partycjonowania jest szeroko stosowana do dystrybucji zawartości tabel w systemie plików w celu zapewnienia krótszych czasów dostępu i zoptymalizowanych zapytań. Partycjonowanie dzieli dużą tabelę na mniejsze tabele w zależności od strategii lub określonych kluczy partycjonowania.
Zobaczmy, jak możemy określić szczegóły partycjonowania za pomocą polecenia MySQL CREATE TABLE.
Użyjemy przykładowej tabeli Employer_details i dodamy nową kolumnę z liczbą całkowitą o nazwie Department_id, która będzie używana jako klucz mieszający partycji, aby uzyskać równomierny rozkład danych.
Również określenie liczby partycji wskazywałoby, ile rzeczywistych partycji zostanie utworzonych (w tym przypadku 4). Jeśli nie zostanie określony, domyślnie będzie tylko 1 partycja.
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;
Uwaga: Zasadniczo klucz, który zostałby użyty do utworzenia partycji, zależałby od przewidywanych wzorców dostępu, które byłyby używane dla tabeli. W tym przypadku załóżmy, że przez większość czasu będziemy odpytywać tabelę na podstawie identyfikatora działu, wtedy sensowne jest umieszczenie identyfikatora działu jako części klucza skrótu.
Klonowanie i kopiowanie tabel MySQL
Czasami możesz chcieć utworzyć klon istniejącej tabeli lub skopiować zawartość z jednej tabeli do innej. MySQL obsługuje 2 sposoby osiągnięcia tego, jak pokazano poniżej.
- Korzystanie z polecenia LIKE
- Za pomocą polecenia WYBIERZ
Klonowanie tabeli przy użyciu polecenia LIKE
Za pomocą polecenia LIKE możesz utworzyć nową tabelę z dokładnie takimi samymi nazwami kolumn i właściwościami, jak istniejące tabele.
Oto składnia polecenia LIKE.
kto ma najlepszą usługę poczty elektronicznej
CREATE TABLE tableName1 LIKE tableName2
Za pomocą powyższego polecenia zostanie utworzona nowa tabela, tj. TableName1, z taką samą strukturą i właściwościami, jak tableName2.
Należy pamiętać, że przy takim podejściu - tylko nazwy kolumn i właściwości są klonowane, a nie rzeczywiste dane tabeli.
Spróbujmy utworzyć tabelę o nazwie Employer_details i użyj tej tabeli, aby utworzyć nową tabelę o nazwie student_details, korzystając z opcji LIKE.
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;
Poniżej podano wynik powyższego polecenia.
Klonowanie tabeli za pomocą polecenia WYBIERZ
To podejście wykorzystuje polecenie SELECT, aby utworzyć kopię istniejącej tabeli do nowej tabeli.
Przy takim podejściu dane z tabeli są również kopiowane do nowej tabeli.
CREATE TABLE tableName1 AS SELECT * FROM tableName2;
Spróbujmy utworzyć tabelę o nazwie Employer_details i użyj tej tabeli, aby utworzyć nową tabelę o nazwie student_details, korzystając z opcji SELECT.
CREATE TABLE SAMPLE_DB.student_details AS SELECT * FROM SAMPLE_DB.employee_details;
Konwencje nazewnictwa tabel MySQL
W poprzednich sekcjach dowiedzieliśmy się o tworzeniu tabel MySQL. Zobaczmy teraz kilka reguł, o których należy pamiętać podczas nazywania tabel, wraz z ograniczeniami, które mają zastosowanie w odniesieniu do MySQL.
Te konwencje / zasady dotyczą zarówno tabel SQL, jak i baz danych.
# 1) Legalne postacie w nazwach
do) Nazwy bez cudzysłowu mogą składać się z dowolnych znaków z domyślnego zestawu znaków programu SQL Server, z wyjątkiem tego, że nie wszystkie znaki mogą być cyframi. Na przykład, „23test” to poprawna nazwa tabeli, ale nie „2345”.
Poniżej podano listę znaków, których można użyć w nazwach bez cudzysłowów:
ASCII: (0-9, a-z, A-Z $ _) (podstawowe litery łacińskie, cyfry 0-9, dolar, podkreślenie)
Rozszerzony: U + 0080 .. U + FFFF
Dowiedz się więcej o kodach ASCII tutaj
b) Nazwy tabel i baz danych mogą być cytowane za pomocą znaku odwrotnego kliknięcia (`) i mogą zawierać dowolną literę / znak z wyjątkiem samego znaku odwrotnego apostrofu. Dzięki nazwom w cudzysłowie możesz nawet mieć nazwy tabel / baz danych zawierające wszystkie cyfry.
Zwróć uwagę, że w przypadku takich tabel, aby uzyskać dostęp do danych znajdujących się w takich tabelach, musisz użyć grawitów wokół tabeli i / lub nazwy bazy danych.
java 8 nowe funkcje z przykładami
do) Nazwy tabeli i bazy danych nie mogą zawierać kropki „.”, Ponieważ jest ona używana jako baza danych i separator tabeli.
re) Nazwy bazy danych i tabeli mogą zawierać znaki specjalne „$” i „_”.
# 2) Długość nazwy
Maksymalna dozwolona długość bazy danych lub nazwy tabeli w MySQL to 64 postacie.
# 3) Kwalifikatory nazw
Jak omówiono w poprzednich sekcjach, w MySQL tabela jest zawsze w kontekście z bazą danych, której jest częścią. Dlatego, aby uzyskać dostęp do tabeli, możesz użyć w pełni kwalifikowanej nazwy tabeli - która jest niczym innym, jak kombinacją nazwy bazy danych oddzielonej kropką, a następnie nazwą kolumny.
Na przykład, aby wybrać wszystkie elementy z tabeli „EMPLOYEE_DETAILS” z bazy danych SAMPLE_DB, możesz użyć w pełni kwalifikowanej nazwy, jak poniżej.
SELECT * from SAMPLE_DB.EMPLOYEE_DETAILS;
Nazwy DB i tabel można również podawać oddzielnie w cudzysłowie, jak pokazano poniżej.
SELECT * from `SAMPLE_DB`.`EMPLOYEE_DETAILS`;
Poniżej podano zalecane konwencje i najlepsze praktyki dotyczące tabel nazewnictwa i baz danych.
- Nazwij tabele i bazy danych małymi literami - To generalnie przyspiesza pisanie i odpytywanie bazy danych, szczególnie dla osób zaangażowanych w codzienne odpytywanie bazy danych.
- W nazwach tabel i baz danych użyj podkreślenia („_”) zamiast spacji - To sprawia, że nazwy są bardziej czytelne.
- Używaj zrozumiałych nazw tabel i baz danych - Na przykład, tabelę zawierającą szczegóły pracownika można nazwać na różne sposoby, np. informacje o pracowniku, dane_pracownika, pracownik, szczegóły_pracownika, imię_pracownika_i_adres. Wybranie nazwy, która jest najbardziej oczywista, miałoby sens. Na przykład, możemy wybrać nazwę tabeli na Employer_details lub Employer_info. Chociaż jest to subiektywna dyskusja, powinna zostać uzgodniona przez wielu członków zespołu, którzy będą używać i tworzyć te podmioty.
- Unikaj używania liczb w nazwach baz danych i tabel - Jak sample_db_2, test_table_1 itp.
Często zadawane pytania i odpowiedzi
Pytanie 1) Jak utworzyć tabelę w MySQL za pomocą indeksu?
Odpowiedź: Możesz dodać INDEKS do dowolnej kolumny (lub kombinacji kolumn) podczas samego tworzenia tabeli.
Zobaczmy przykład dodawania indeksu do kolumny id_ działu w tabeli dane_pracownika.
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) );
Q # 2) Jak stworzyć tabelę z datą w MySQL?
Odpowiedź: Data to typ danych, który powinien być powiązany z dowolną kolumną podczas tworzenia tabeli.
Zapoznaj się z poniższą przykładową komendą CREATE TABLE z kolumną joining_date mającą DATETIME jako typ danych dla przykładowej tabeli Employer_details.
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 );
Q # 3) Jak mogę zobaczyć strukturę tabeli w MySQL?
Odpowiedź: Po utworzeniu tabeli, jeśli chcesz odwołać się do struktury tabeli, takiej jak kolumny, indeksy itp., Możesz użyć polecenia DESCRIBE, aby pobrać szczegóły.
Składnia:
DESCRIBE tableName;
Utwórzmy tabelę i zobaczmy dane wyjściowe dla polecenia DESCRIBE.
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;
Poniżej podano wynik działania polecenia DESCRIBE.
Q # 4) Jak dodać KLUCZ OBCY do tabeli w MySQL?
Odpowiedź: Klucz obcy jest używany do połączenia dwóch tabel w MySQL. Aby użyć ograniczenia klucza obcego, powinieneś już utworzyć tabelę, do której się odnosisz.
>> Dowiedz się więcej o Ograniczenie klucza obcego MySQL
Spróbujmy to zrozumieć na przykładzie. Powiedzmy, że mamy 2 tabele, tj. Wydział (który zawiera szczegółowe informacje o różnych działach uczelni) i Szczegóły dotyczące studentów (wszystkie informacje dotyczące studentów).
Dział ma kolumny - id (klucz podstawowy) i nazwa.
Szczegóły ucznia - id (klucz podstawowy), wiek, adres i identyfikator działu (odwołanie do klucza obcego z tabeli działu).
Poniżej podano składnię polecenia CREATE TABLE dla obu tych tabel.
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 );
Zapoznaj się ze składnią odwołania do klucza OBCEGO w tabeli student_details, w której wspomnieliśmy o relacji między kolumnami, a identyfikator działu powinien odnosić się do identyfikatora kolumny z tabeli działu.
Wniosek
Polecenie CREATE TABLE w MySQL, które należy do poleceń z kategorii Data Definition Language, zostało szczegółowo wyjaśnione tutaj.
Dowiedzieliśmy się o różnych opcjach tabeli, takich jak ENGINE, CHECKSUM, itp., O których można by wspomnieć wraz z poleceniem CREATE TABLE, aby ustawić dodatkowe właściwości tabeli.
Przeszliśmy przez sposoby tworzenia klonu istniejącej tabeli w MySQL. Na koniec omówiliśmy konwencje nazewnictwa nazw tabel wraz z zalecanymi przez branżę najlepszymi praktykami.
Miłego czytania !!
rekomendowane lektury
- MySQL - samouczek dotyczący tworzenia widoku z przykładami kodu
- Typy danych MySQL | Jakie są różne typy danych w MySQL
- MySQL Wstaw do tabeli - Wstaw składnię instrukcji i przykłady
- MySQL JOIN Tutorial: Wewnętrzny, Zewnętrzny, Krzyż, Lewo, Prawo i Ja
- Różnica między SQL a MySQL i SQL Server (z przykładami)
- Jak używać instrukcji PL SQL wstawiania, aktualizowania, usuwania i wybierania
- Samouczek dotyczący tworzenia bazy danych MongoDB
- MongoDB Utwórz użytkownika i przypisz role z przykładami