SQLShack

w poprzednim artykule stworzyliśmy dwie tabele, a teraz jesteśmy gotowi użyć polecenia SQL INSERT INTO TABLE i wypełnić te tabele danymi. W tym celu przygotujemy instrukcje w programie Excel, a następnie wkleimy te instrukcje do SQL Server i wykonamy je. Sprawdzimy również zawartość obu tabel przed i po tych poleceniach za pomocą instrukcji SELECT. Więc zacznijmy.

polecenie Wstaw do tabeli

nie ma sensu tworzyć struktur bazy danych i nie mieć żadnych danych w bazie danych. Instrukcja INSERT INTO TABLE jest tą, której użyjemy do rozwiązania tego problemu. Jest to jedna z czterech ważnych instrukcji SQL DML (Data Manipulation Language) SELECT … FROM, INSERT INTO TABLE, UPDATE … SET I DELETE FROM… pełna składnia jest dość złożona, ponieważ INSERT INTO może być również bardzo złożoną instrukcją. Proszę spojrzeć na składnię T-SQL INSERT INTO TABLE complete tutaj.

w tym artykule użyjemy uproszczonej, ale również najczęstszej składni:

INSERT INTO table_name (column_list) VALUES (column_values);

w takiej instrukcji INSERT INTO musisz zdefiniować table_name, do którego wstawiasz dane, wyświetlić listę wszystkich kolumn (może użyjesz wszystkich, ale może tylko kilku z nich), a następnie wyświetlić listę wszystkich wartości. Zauważ, że wartości kolumn powinny odpowiadać definicji typów kolumn (np. nie można wstawić wartości tekstowej do kolumny/atrybutu numerycznego).

w przypadku wstawiania wszystkich wartości w tabeli, nie musisz wyświetlać wszystkich kolumn po nazwie tabeli i możesz użyć jeszcze bardziej uproszczonej składni:

INSERT INTO table_name VALUES (column_values);

osobiście wolę wyświetlanie wszystkich nazw kolumn, ponieważ takie podejście zadziała nawet jeśli dodamy nowe kolumny do istniejącej tabeli.

  • Notatka: polecenie INSERT INTO TABLE można zapisać w taki sposób, że wstawiamy wiele wierszy z 1 instrukcją lub nawet w połączeniu z instrukcją SELECT.

uproszczona składnia dla jednego z takich przypadków, w których instrukcje INSERT i SELECT są połączone, jest podana poniżej:

INSERT INTO destination_table (column_list, …)
SELECT column_list
FROM source_table
WHERE condition;

INSERT INTO table example

zanim cokolwiek zrobimy, sprawdźmy, co jest zapisane w naszych tabelach. Jest to model, który stworzyliśmy w poprzednim artykule. Widać, że mamy jedną tabelę, w której będziemy przechowywać dane dotyczące krajów i inną dla danych dotyczących miast. Są one również ze sobą powiązane, ale porozmawiamy o tym w poniższym artykule:

wstaw do tabeli - model danych

INSERT INTO TABLE - data model

aby sprawdzić zawartość tych dwóch tabel, użyjemy dwóch prostych instrukcji SELECT:

1
2

SELECT * FROM country;
SELECT * FROM city;

chociaż SELECT nie jest tematem tego artykułu, należy wspomnieć, że jego podstawową składnią jest:

SELECT 1 lub więcej atrybutów z tabeli;

gwiazda (*) po SELECT oznacza, że chcemy pokazać wartości wszystkich atrybutów/kolumn z tej tabeli w wyniku zapytania.

zgodnie z oczekiwaniami, w tych dwóch tabelach nic nie ma, a SQL Server zwraca wynik, jak pokazano na poniższym obrazku. Polecenia zwracają nazwy kolumn z tabel, których użyliśmy w zapytaniu SELECT, ale pod tymi nazwami kolumn nic nie ma. Możesz spojrzeć na to jako na pusty arkusz Excela z zdefiniowanymi nazwami kolumn (nagłówkami). Wiesz, jaki rodzaj danych powinien tam być, ale nie ma nic:

musimy to zmienić.

najpierw wypełnimy tabelę kraju za pomocą następujących instrukcji INSERT INTO TABLE:

1
2
3
4
5

INSERT INTO Country (country_name, country_name_eng, country_code) VALUES (’Deutschland’, 'Germany’, 'DEU’);
INSERT INTO Country (country_name, country_name_eng, country_code) VALUES (’Srbija’, 'Serbia’, 'SRB’);
INSERT INTO country (country_name, country_name_eng, country_code) values („Hrvatska”, „Croatia”, „HRV”);
INSERT INTO Country (country_name, country_name_eng, country_code) VALUES (’United Stated of America’, 'United Stated of America’, 'USA’);
INSERT INTO Country (country_name, country_name_eng, country_code) VALUES (’Polska’, 'Polska’, 'POL’);

udało się wprowadzić dane dla pięciu krajów. Wynik pokazano na poniższym obrazku. Ponieważ mieliśmy 5 instrukcji INSERT INTO TABLE, mamy 1 Wiadomość” (1 wiersz dotknięty) „dla każdego z tych pięciu poleceń w sekcji „Wiadomości”:

wstaw do tabeli-kraj

należy pamiętać, że wszystkie wartości (po wartościach) zostały uporządkowane w taki sam sposób, w jaki podaliśmy kolumny (po wstawieniu do kraju). Wszystkie trzy wartości są tekstami. Zapytanie zadziała, nawet jeśli nie zamówiliśmy ich we właściwy sposób, ponieważ wszystkie mają ten sam typ danych (tekst), ale dane będą przechowywane w niewłaściwych kolumnach. W takim przypadku mielibyśmy błąd semantyczny.

Zrobimy to za pomocą następujących instrukcji:

1
2
3
4
5
6

INSERT INTO City (city_name, lat, long, country_id) VALUES (’Berlin’, 52.520008, 13.404954, 1);
INSERT INTO City (city_name, lat, long, country_id) VALUES (”, 44.787197, 20.457273, 2);
INSERT INTO City (city_name, lat, long, country_id) VALUES (”, 45.815399, 15.966568, 3);
INSERT INTO City (city_name, lat, long, country_id) VALUES (’Nowy Jork’, 40.73061, -73.935242,4) ;
INSERT INTO City (city_name, lat, long, country_id) VALUES (’Los Angeles’, 34.052235, -118.243683, 4);
INSERT INTO City (city_name, lat, long, country_id) VALUES (’Warszawa’, 52.237049, 21.017532, 5);

po wykonaniu tych poleceń był to wynik. Zgodnie z oczekiwaniami Dodano 6 wierszy. I jeszcze raz mamy 1 wiadomość dla każdej wstawki w sekcji Wiadomości:

 City

w tym przypadku mielibyśmy problem, gdybyśmy nie podali wartości w ten sam sposób, podalibyśmy kolumny, ponieważ ich typy danych nie są takie same (są w kolejności: text, decimal number, decimal number, integer). Ten typ błędu nazywany jest błędem składni, a sam DBMS uniemożliwiłby w ogóle uruchomienie zapytania.

SELECT-sprawdź co zostało wstawione

teraz jeszcze raz sprawdzimy co jest zapisane w naszych tabelach. Użyjemy tych samych dwóch instrukcji SELECT, których wcześniej użyliśmy:

1
2

SELECT * FROM country;
SELECT * FROM city;

wynik pokazano na poniższym obrazku. Proszę zauważyć, że po wykonaniu zapytań mamy teraz sekcje wyniki i wiadomości w zapytaniach:

SELECT statements

możemy stwierdzić, że obie tabele w naszej bazie danych zawierają dane i teraz jesteśmy gotowi „zagrać” z czymś o wiele fajniejszym niż to.

wstaw do tabeli za pomocą programu Excel

w wielu przypadkach musisz uruchomić wiele instrukcji SQL na podstawie dostarczonego zestawu danych. Dotyczy to nie tylko instrukcji INSERT INTO TABLE, ale także instrukcji UPDATE I DELETE. Nie ma sensu ręcznie wpisywać tych instrukcji, ale powinieneś raczej zastosować mądrzejsze podejście-przygotować formuły (lub skrypt), które zautomatyzują tę część. W takich sytuacjach wolę używać Excela i formuł.

Uwaga: Osobiście, w kontekście baz danych, uważam, że Excel jest bardzo przydatny, gdy muszę utworzyć wiele instrukcji, a także podczas prezentacji wyników i / lub tworzenia pulpitów nawigacyjnych.

spójrzmy na te formuły:

kraje Excel

wzór użyty do wstawienia pierwszego kraju (Niemcy) to:

1
=”INSERT INTO Country (country_name, country_name_eng, country_code) VALUES ('”& B2 & „’, '” & C2 & „’, '” & D2 &”’);”

miasta Excel

wzór użyty do wstawienia pierwszego miasta (Berlin) to:

1
=”wstaw do wartości city (city_name, lat, long, country_id) ('”& B2 & „’, ” & C2 & „, ” & D2 & „, ” & E2 & „);”

możesz używać tych formuł do automatyzacji zadań. Podobne podejście zastosujemy później, gdy uruchamiamy wiele instrukcji UPDATE I DELETE (a nawet podczas tworzenia instrukcji SELECT).

podsumowanie

w tym artykule omówiliśmy jedną z czterech najważniejszych instrukcji SQL –instrukcję INSERT INTO TABLE. Użyliśmy go do wypełnienia tabel utworzonych w poprzednim artykule. Było to warunkiem wstępnym przejścia do bardziej inteligentnych rzeczy, takich jak teoria baz danych, a co ważniejsze, zwracanie wyników z naszej bazy danych.

w nadchodzącym artykule omówimy klucz podstawowy – co to jest i dlaczego jest ważny w bazach danych.

spis treści

dowiedz się SQL: Utwórz bazę danych & Utwórz operacje na tabelach

dowiedz się SQL: wstaw do tabeli

dowiedz się SQL: klucz podstawowy

dowiedz się SQL: klucz obcy

dowiedz się sql: polecenie select

dowiedz się sql: wewnętrzne połączenie vs lewe połączenie

dowiedz się SQL: skrypty SQL

dowiedz się sql: rodzaje relacji

dowiedz się SQL: Dołącz do wielu tabel

dowiedz się SQL: Funkcje zbiorcze

dowiedz się SQL: Jak napisać złożone zapytanie SELECT

dowiedz się SQL: baza danych INFORMATION_SCHEMA

dowiedz się SQL: typy danych SQL

dowiedz się sql: funkcje zdefiniowane przez użytkownika

dowiedz się SQL: procedury składowane zdefiniowane przez użytkownika

dowiedz się SQL: widoki SQL

dowiedz się SQL: wyzwalacze SQL

dowiedz się SQL: Przykłady zapytań SQL

dowiedz się SQL: Utwórz raport ręcznie za pomocą zapytań SQL

dowiedz się SQL: Funkcje daty i czasu SQL Server

dowiedz się SQL: tworzenie raportów SQL Server za pomocą funkcji daty i czasu

dowiedz się SQL: Tabele przestawne SQL Server

dowiedz się SQL: SQL Server eksport do Excela

dowiedz się sql: wprowadzenie do pętli SQL Server

dowiedz się sql: kursory SQL Server

dowiedz się SQL: najlepsze praktyki SQL dotyczące usuwania i aktualizacji danych

dowiedz się sql: Zadania związane z SQL

dowiedz się SQL: nie Equi łączy w SQL Server

dowiedz się SQL: SQL Injection

dowiedz się SQL: dynamiczny SQL

  • Autor
  • Ostatnie posty
Emil Drkusic
Emil jest specjalistą od baz danych z ponad 10-letnim doświadczeniem we wszystkim, co związane jest z bazami danych. Przez lata pracował w branży IT i finansów, a obecnie pracuje jako freelancer.
jego dotychczasowe i obecne zadania różnią się od projektowania baz danych i kodowania po nauczanie, doradztwo i pisanie o bazach danych. Również nie zapomnij, BI, tworzenie algorytmów, szachy, Filatelistyka, 2 psy, 2 Koty, 1 żona, 1 dziecko…
znajdziesz go na LinkedIn
Zobacz wszystkie posty, których autorem jest Emil Drkusic

Emil Drkusic
najnowsze posty Emila Drkusica (Zobacz wszystkie)
  • dowiedz się SQL: dynamiczny SQL-3 marca 2021 r
  • dowiedz się SQL: SQL Injection-2 listopada 2020 r
  • dowiedz się SQL: Non-Equi dołącza do SQL Server-wrzesień 29, 2020

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

More: