mysql insert into table insert statement syntax examples
W tym samouczku wyjaśniono instrukcję MYSQL INSERT INTO tabeli wraz z składnią zapytania i przykładami. Naucz się także różnych odmian polecenia wstawiania MYSQL:
W MySQL polecenie INSERT służy do dodawania danych do tabeli. Za pomocą tego polecenia możemy wstawić dane w jednym lub więcej niż jednym wierszu w jednej transakcji. W jednej transakcji można również dodać dane do jednej lub więcej niż jednej tabeli.
Omówimy to wszystko w kolejnych sekcjach. Zanim przejdziesz dalej, pamiętaj, że używamy MySQL w wersji 8.0. Możesz go pobrać z tutaj .
Czego się nauczysz:
- Składnia polecenia MySQL INSERT
- Odmiany instrukcji MySQL INSERT
- Często zadawane pytania i odpowiedzi
- Wniosek
Składnia polecenia MySQL INSERT
INSERT [LOW_PRIORITY|DELAYED|HIGH_PRIORITY][IGNORE] INTO tablename (column1, column2, column3...) VALUES (value1, value2, value3, ....);
Objaśnienie składni:
- Składnia zaczyna się od słowa kluczowego „INSERT INTO”, informując w ten sposób serwer MySQL o typie wykonywanej czynności. To jest obowiązkowe słowo kluczowe i nie można go pominąć.
- Następnie pojawia się nazwa tabeli, na której ma zostać wykonana akcja wstawiania. Jest to obowiązkowe i nie można go również pominąć.
- Następnie zostaną wstawione nazwy kolumn wraz z odpowiadającymi im wartościami. Jest to również obowiązkowe i nie można tego pominąć.
- Następnie będzie klauzula wartości. W tej klauzuli należy podać wartość dla każdej kolumny, którą wstawiamy do tabeli. Sekwencja wartości i kolejność nazw kolumn powinny być zsynchronizowane.
- Liczba i typy danych w kolumnach powinny być takie same, jak w przypadku wartości.
Modyfikatory w instrukcji INSERT
- NISKI PRIORYTET: Modyfikator ten informuje MySQL Engine, aby opóźnił wykonanie instrukcji INSERT do czasu, gdy nie ma żadnych połączeń z odczytem z tabeli, którą próbujemy WSTAWIĆ. Pomaga to w osiągnięciu spójności we wszystkich innych operacjach, które będą wykonywane na tej tabeli.
- WYSOKI PRIORYTET: Ten modyfikator informuje silnik MySQL o nadaniu wysokiego priorytetu instrukcji INSERT w stosunku do innych instrukcji / transakcja która jest wykonywana na stole.
- IGNOROWAĆ: Ten modyfikator informuje MySQL Engine, aby ignorował wszelkie błędy, które mogą powstać w wyniku wykonania instrukcji INSERT. Wszelkie powstałe błędy byłyby traktowane jako zwykłe ostrzeżenia, a wstawianie rekordów do tabeli przebiegałoby bez przeszkód.
- OPÓŹNIONY: To jest rozszerzenie MySQL do standardowego SQL. Gdy użytkownik wyda polecenie INSERT DELAYED, serwer kolejkuje wszystkie wiersze, a dane są wstawiane do tabeli później, gdy tabela nie jest używana przez żadne inne transakcje.
Przykład MySQL INSERT
Poniżej znajduje się przykładowa tabela utworzona w MySQL.
Nazwa schematu: Pacyfik
Nazwa tabeli: pracowników
Nazwy kolumn:
- empNum - przechowuje wartości całkowite dla numeru pracownika.
- lastName - przechowuje wartości varchar dla nazwiska pracownika.
- firstName - przechowuje wartości varchar dla imienia pracownika.
- email - przechowuje wartości varchar dla identyfikatora e-mail pracownika.
- deptNum - przechowuje varchar dla identyfikatora działu, do którego należy pracownik.
- wynagrodzenie - zawiera wartości dziesiętne wynagrodzenia dla każdego pracownika.
- data_początkowa - Przechowuje wartości dat dla daty dołączenia pracownika.
Nazwa schematu: Pacyfik
Nazwa tabeli: historia_pracowników
Nazwy kolumn:
- empNum - przechowuje wartości całkowite dla numeru pracownika.
- lastName - przechowuje wartości varchar dla nazwiska pracownika.
- firstName - przechowuje wartości varchar dla imienia pracownika.
- email - przechowuje wartości varchar dla identyfikatora e-mail pracownika.
- deptNum - przechowuje varchar dla identyfikatora działu, do którego należy pracownik.
- wynagrodzenie - przechowuje wartości dziesiętne wynagrodzenia dla każdego pracownika.
- data_początkowa - Przechowuje wartości dat dla daty dołączenia pracownika.
Odmiany instrukcji MySQL INSERT
1) MySQL wstaw pojedynczy wiersz
Najpierw przyjrzymy się scenariuszowi, w którym określiliśmy zarówno nazwy kolumn, jak i wartości do wstawienia za pomocą słowa kluczowego INSERT INTO.
Na przykład, Tutaj spróbujemy wstawić nowego pracownika. Dodamy numer pracownika, imię i nazwisko, a także zaktualizujemy identyfikator e-mail, wynagrodzenie i identyfikator działu, do którego powinien należeć nowy pracownik.
Zapytanie i odpowiadające mu wyniki są następujące:
Jak pokazano na powyższym obrazku, instrukcja INSERT została wykonana pomyślnie i wstawiła jeden wiersz do tabeli pracownika.
Poniższa instrukcja wyjściowa przedstawia czas wykonania instrukcji, instrukcję MySQL, która została wykonana oraz liczbę wierszy, na które miało to wpływ.
Proszę zanotować tutaj, że wartość dla każdej kolumny jest wymieniona w tej samej kolejności, jak w nazwach kolumn. Należy również zauważyć, że kolumna z typem danych liczba całkowita / dziesiętna nie jest ujęta w cudzysłów, jednak typy kolumn z typem danych varchar / char zostały ujęte w cudzysłów.
Aby zweryfikować wynik tej instrukcji INSERT, wykonajmy instrukcję SELECT w tej tabeli z empNum równym 1012.
Pytanie:
INSERT INTO employees ( empNum, lastName, firstName, email, deptNum, salary ) VALUES ( 1012, 'Luther', 'Martin', 'ml@gmail.com', 3, 13000 ) ;
Migawka tabeli po:
empNum | nazwisko | Imię | deptNum | Wynagrodzenie | ||
---|---|---|---|---|---|---|
1007 | Schmitt | James | js@gmail.com | 4 | 21780 | 0001-01-01 |
1012 | Lutra | Jaskółka oknówka | ml@gmail.com | 3 | 13000 |
# 2) MySQL wstawia dane tylko w określonej kolumnie
Dalej jest inny sposób wstawiania danych do tabeli, ale poprzez wstawianie rekordów tylko w wymaganych kolumnach, a nie we wszystkich kolumnach. Należy jednak pamiętać, że nie możemy pominąć kluczowych kolumn w tym scenariuszu. W przypadku tabeli naszego pracownika kluczową kolumną jest kolumna empNum. Wypróbujmy to.
Na przykład, W tabeli pracownika wstawimy nowy rekord z danymi dotyczącymi tylko empNum, lastName, firstName. Nie przypiszemy temu pracownikowi żadnego adresu e-mail, działu ani wynagrodzenia.
Poniżej znajduje się zapytanie i jego wynik:
Jak pokazano na powyższym obrazku, instrukcja wstawiania została wykonana pomyślnie i wstawiła jeden wiersz do tabeli pracownika.
Proszę zanotować, że aby wstawić tylko wybrane kolumny, kolumny, które pominęliśmy, powinny być zadeklarowane jako NULL lub powinny mieć jakąś domyślną wartość, która zostanie zapełniona w przypadku pominięcia tej kolumny. Jeśli ten warunek nie zostanie spełniony, instrukcja wstawiania zakończy się niepowodzeniem.
polecenie tar w systemie UNIX z przykładami
Sprawdźmy wykonanie powyższej instrukcji INSERT, wykonując instrukcję SELECT dla empNum = 1013.
Pytanie:
INSERT INTO employees ( empNum, lastName, firstName ) VALUES ( 1013, 'Nolan', 'Chris' ) ;
Migawka tabeli po:
empNum | nazwisko | Imię | deptNum | Wynagrodzenie | |
---|---|---|---|---|---|
1013 | Nolan | Chris | ZERO | ZERO | ZERO |
# 3) MySQL wstaw wiele wierszy
Następnie przejdziemy przez scenariusz, w którym musimy wstawić wiele wierszy do tabeli za pomocą tej samej instrukcji INSERT.
Na przykład, w tym przypadku musimy podać nazwy kolumn tylko raz, ale możemy powtarzać wartości dla tych kolumn tyle razy, ile potrzeba.
Poniżej znajduje się zapytanie wraz z powiązanymi z nim wynikami:
Jak pokazano na powyższym obrazku, wykonanie instrukcji przebiegło pomyślnie.
Zwróć uwagę na część komunikatu, która stwierdza, że dotyczyło to 3 wierszy, co oznacza, że ta pojedyncza instrukcja INSERT wstawiła 3 rekordy podczas wykonywania tej instrukcji INSERT.
Dalsza lektura = >> Instrukcja MySQL If
Sprawdźmy wyniki naszej instrukcji INSERT, wykonując instrukcję SELECT dla nowych identyfikatorów pracowników 1014, 1015 i 1016.
Szczegóły są następujące:
Pytanie:
INSERT INTO employees ( empNum, lastName, firstName, email, deptNum, salary ) VALUES (1014, 'Murray', 'Keith', 'km@gmail.com', 1, 25000), (1015, 'Branson', 'John', 'jb@gmail.com', 2, 15000), (1016, 'Martin', 'Richard', 'rm@gmail.com', 4, 5000) ;
Migawka tabeli po:
empNum | nazwisko | Imię | deptNum | Wynagrodzenie | |
---|---|---|---|---|---|
1014 | Murray | Keith | km@gmail.com | jeden | 25000 |
1015 | Branson | Jan | jb@gmail.com | dwa | 15000 |
1016 | Jaskółka oknówka | Richard | rm@gmail.com | 4 | 5000 |
# 4) Data wstawienia MySQL
Następnie przejdziemy przez scenariusz, w którym musimy wstawić wartości do kolumny daty.
Na przykład, Wstawianie wartości do kolumny daty może być trudne. Datę w MySQL można dodać do formatu „RRRR-MM-DD”. Aby to osiągnąć, dodajmy kolumnę data_początkowa z wartością domyślną „0001-01-01”.
Oznacza to, że wszystkie istniejące rekordy w tabeli pracownika z datą_początkową zostaną zaktualizowane jako „0001-01-01”. Oświadczenie alter będzie następujące.
Pytanie:
ALTER TABLE employees ADD start_date DATE default '0001-01-01' ;
Sprawdźmy wynik powyższego zapytania, wykonując prostą instrukcję SELECT w tabeli:
Dlatego dodaliśmy nową kolumnę daty z typem danych „DATA” z wartością domyślną „0001-01-01”. Teraz wstawmy dwa nowe rekordy pracowników, jeden z aktualną datą, a drugi z określoną datą.
Poniżej znajdują się zapytania wraz ze szczegółami:
c ++ jak używać stringstream
Jak pokazano na powyższym rysunku, użyliśmy funkcji wstawiania wielu wierszy w tabeli, jak wyjaśniono w poprzedniej sekcji.
Pierwszy rekord został wstawiony za pomocą funkcji CURRENT_DATE (). Ta funkcja zwraca bieżącą datę systemową. Drugi rekord został wstawiony z określoną datą w formacie „RRRR-MM-DD”.
Następnie zweryfikujemy dane wyjściowe naszej instrukcji INSERT za pomocą instrukcji SELECT dla empNum 1017 i 1018.
Pierwszy rekord z empNum = 1017 ma datę_początkową taką samą, jak data bieżąca, czyli 25thListopad 2019 r. (W tym przypadku data napisania tego samouczka) w formacie „RRRR-MM-DD”.
Pytanie:
INSERT INTO employees ( empNum, lastName, firstName, email, deptNum, salary, start_date ) VALUES (1017, 'Johnson', 'Eve', 'ej@gmail.com', 3, 5500, CURRENT_DATE()), (1018, 'Bond', 'Nolan', 'nb@gmail.com', 2, 15000, '2019-09-13') ;
Migawka tabeli po:
empNum | nazwisko | Imię | deptNum | Wynagrodzenie | Data rozpoczęcia | |
---|---|---|---|---|---|---|
1017 | Johnson | Przeddzień | ej@gmail.com | 3 | 5500 | 2019-11-25 00:00:00 |
1018 | Więź | Nolan | nb@gmail.com | dwa | 15000 | 2019-09-13 00:00:00 |
# 5) MySQL wstaw do tabeli z innej tabeli
Następnie przejdziemy przez scenariusz, w którym musimy wstawić dane do nowej tabeli z istniejącej tabeli.
Na przykład, Rozważmy scenariusz, w którym musimy okresowo przenosić dane z naszej istniejącej tabeli do tabeli historycznej lub archiwalnej. Aby to osiągnąć, utwórzmy nową tabelę Employer_history.
Naszym zadaniem jest przeniesienie danych z tabeli pracowników do tabeli Employer_history.
Instrukcja CREATE jest następująca:
Pytanie:
CREATE TABLE employees_history LIKE employees ;
Sprawdźmy wynik powyższego zapytania, wykonując prostą instrukcję DESC na nowej tabeli, która da nam strukturę nowej tabeli:
Więc stworzyliśmy nową tabelę. Teraz załadujmy dane do tej nowej tabeli z tabeli pracownika.
=> Dowiedz się więcej o MySQL STWÓRZ POLECENIE TABELI .
Poniżej przedstawiono zapytanie i jego szczegóły:
Jak pokazano na powyższym obrazku, wstawienie danych do nowej tabeli z istniejącej tabeli powiodło się.
Zwróć uwagę na kolumnę wiadomości w zakładce wyjścia. Mówi, że dotyczy to 18 rzędów. Oznacza to, że wszystkie 18 wierszy z istniejącej tabeli zostało skopiowanych do nowo utworzonej tabeli workers_history.
Następnie zweryfikujemy dane wyjściowe naszej instrukcji INSERT za pomocą instrukcji SELECT w tabeli workers_history.
Powyższy obrazek przedstawia wszystkie wiersze skopiowane z tabeli pracownika w tabeli workers_history.
Powyższy obrazek przedstawia wszystkie wiersze skopiowane z tabeli workers w tabeli workers_history.
Pytanie:
INSERT INTO employees_history ( empNum, lastName, firstName, email, deptNum, salary, start_date ) SELECT empNum, lastName, firstName, email, deptNum, salary, start_date FROM employees ;
Migawka tabeli po:
empNum | nazwisko | Imię | deptNum | Wynagrodzenie | Data rozpoczęcia | |
---|---|---|---|---|---|---|
1001 | Andrews | Jacek | ja@gmail.com | jeden | 3182,7 | 0001-01-01 |
1002 | Schwatz | Mikrofon | ms@gmail.com | jeden | 5304,5 | 0001-01-01 |
1003 | Langley | Małgorzata | margaret.langley@gmail.com | dwa | 8820 | 0001-01-01 |
1004 | Harera | Sandra | sh@gmail.com | jeden | 10609 | 0001-01-01 |
1005 | czytać | Piotr | pl@gmail.com | dwa | 14333 | 0001-01-01 |
1006 | Keith | Przędzarka | jk@gmail.com | dwa | 16538 | 0001-01-01 |
1008 | Bailey | Oliver | oliver.bailey@gmail.com | 3 | 24494 | 0001-01-01 |
1009 | Puchar | Złupić | hb@gmail.com | 5 | 30646 | 0001-01-01 |
1010 | Armstrong | Jakub | jacob.armstrong@gmail.com | 4 | 32670 | 0001-01-01 |
1011 | Hanks | Tomek | th@gmail.com | ZERO | 10100 | 0001-01-01 |
1012 | Lutra | Jaskółka oknówka | ml@gmail.com | 3 | 13000 | 0001-01-01 |
1013 | Nolan | Chris | ZERO | ZERO | ZERO | 0001-01-01 |
1014 | Murray | Keith | km@gmail.com | jeden | 25000 | 0001-01-01 |
1015 | Branson | Jan | jb@gmail.com | dwa | 15000 | 0001-01-01 |
1016 | Jaskółka oknówka | Richard | rm@gmail.com | 4 | 5000 | 0001-01-01 |
1017 | Johnson | Przeddzień | ej@gmail.com | 3 | 5500 | 2019-11-25 00:00:00 |
1018 | Więź | Nolan | nb@gmail.com | dwa | 15000 | 2019-09-13 00:00:00 |
Często zadawane pytania i odpowiedzi
Q # 1) Jak wstawić dane do tabeli w MySQL?
Odpowiedź: Aby wstawić dane do tabeli MySQL, MySQL dostarcza nam ważne słowo kluczowe „INSERT INTO”. Po nim następuje nazwa tabeli, lista kolumn i lista odpowiednich wartości, które należy wstawić. Możemy użyć tego słowa kluczowego, aby wstawić jedną lub więcej kolumn w tej samej transakcji.
P # 2) Wyjaśnij klauzulę „INSERT IGNORE INTO”.
Odpowiedź: Kiedy próbujemy wstawić więcej niż jeden wiersz w jednej instrukcji INSERT, może się zdarzyć, że wykonanie może się nie powieść z powodu złych danych w jakimkolwiek konkretnym wierszu. Spowoduje to zatrzymanie transakcji i powrót do poprzedniego zatwierdzenia.
Aby uniknąć takich scenariuszy, „WSTAW IGNORUJ DO” Jest używane. Ta klauzula ignoruje błąd powodujący nieprawidłowe rekordy i wstawia tylko prawidłowe rekordy, aby transakcja nie została zatrzymana. Jest to przydatne, gdy musisz wykonać zbiorcze wstawianie i nie możesz pozwolić sobie na ponowne wykonanie tego w przypadku złych danych w wierszu.
Pytanie 3) Jak zaktualizować atrybuty w MySQL?
Odpowiedź: Możemy zaktualizować atrybut (y) za pomocą instrukcji MySQL Update, w której instrukcja zaczyna się od słowa kluczowego UPDATE, po którym następuje nazwa tabeli. Następna jest klauzula SET, po której następuje nazwa kolumny i klauzula WHERE.
Q # 4) Czy mogę wstawić wiele rekordów w jednej transakcji MySQL Insert?
Odpowiedź: Jak pokazano powyżej, pod „Wstawianie danych w wielu wierszach” sekcji, możemy wstawić wiele wierszy w jednej transakcji wstawiania. Możemy użyć klauzuli INSERT INTO, po której następuje nazwa tabeli i lista kolumn, ale zamiast jednej listy wartości musimy wspomnieć o wielu listach wartości dla każdej z kolumn.
Q # 5) Skąd pobierasz MySQL?
Odpowiedź: Możesz pobrać wersję MySQL 8.0 stąd: MySQL .
jest unixem tym samym co linux
Przeczytaj także => Jak pobrać MySQL
P # 6) Czy klauzula SELECT może być używana w instrukcji MySQL INSERT?
Odpowiedź: Tak, SELECT może być używany razem z instrukcją MySQL INSERT. Zostało to wyjaśnione w sekcji „MySQL wstawianie tabeli z innej tabeli”. Jest to używane, gdy musimy wstawić wiersze w jednej tabeli, używając danych już obecnych w innej tabeli.
Na przykład, przenoszenie danych z bieżącej tabeli do tabeli historycznej w hurtowni danych.
Pytanie 7) W jaki sposób MySQL przechowuje datę w tabelach?
Odpowiedź: MySQL używa formatu „RRRR-MM-DD” do przechowywania danych w tabelach. Typ danych to DATA. Zakres dat obsługiwanych przez MySQL to od „1000-01-01” do „9999-12-31”.
MySQL ma również typ danych DATETIME do przechowywania zarówno daty, jak i czasu. Format to „RRRR-MM-DD gg: mm: ss”. Dopuszczalny zakres to od „1000-01-01 00:00:00” do „9999-12-31 23:59:59”.
Zalecana lektura = >> Samouczek dotyczący typów danych MySQL
Wniosek
Dlatego w tym samouczku poznaliśmy pięć różnych sposobów wykonywania instrukcji INSERT w MySQL.
- MySQL wstawianie pojedynczego wiersza
- MySQL Wstawianie danych tylko w określonej kolumnie
- MySQL wstawianie danych w wielu wierszach
- Data wstawienia MySQL
- MySQL Wstawianie tabeli z innej tabeli
Możemy użyć dowolnego z nich, w zależności od wymagań naszego projektu.
Miłego czytania !!
rekomendowane lektury
- Różnica między SQL a MySQL i SQL Server (z przykładami)
- Top 40 najlepszych pytań i odpowiedzi do wywiadów MySQL (2021 pytań)
- Instrukcja MySQL Update - składnia i przykłady aktualizacji zapytania
- Składnia poleceń Unix Cat, opcje z przykładami
- Polecenie sortowania systemu Unix ze składnią, opcjami i przykładami
- Wstaw wiele dokumentów do MongoDB za pomocą tablic
- C # przy użyciu instrukcji i C # wirtualnego samouczka metody z przykładami
- Struktura programu C # i podstawowa składnia z przykładami