Co to jest INSERT INTO?
INSERT INTO służy do przechowywania danych w tabelach. Polecenie INSERT tworzy nowy wiersz w tabeli do przechowywania danych. Dane są zwykle dostarczane przez aplikacje działające w górnej części bazy danych.
Podstawowa składnia
Spójrzmy na podstawową składnię polecenia INSERT INTO MySQL:
INSERT INTO `nazwa_tabeli` (kolumna_1, kolumna_2,…) VALUES (wartość_1, wartość_2,…);
TUTAJ
- INSERT INTO `nazwa_tabeli` to polecenie, które mówi serwerowi MySQL, aby dodał nowy wiersz do tabeli o nazwie` nazwa_tabeli`.
- (kolumna_1, kolumna_2,…) określa kolumny do zaktualizowania w nowym wierszu MySQL
- VALUES (wartość_1, wartość_2,…) określa wartości, które mają zostać dodane do nowego wiersza
Podając wartości danych, które mają zostać wstawione do nowej tabeli, należy wziąć pod uwagę następujące kwestie:
- Typy danych ciągów - wszystkie wartości ciągów powinny być ujęte w pojedyncze cudzysłowy.
- Numeryczne typy danych - wszystkie wartości liczbowe należy podawać bezpośrednio, bez umieszczania ich w apostrofach lub cudzysłowach.
- Typy danych dat - wartości dat należy ująć w pojedyncze cudzysłowy w formacie „RRRR-MM-DD”.
Przykład:
Załóżmy, że mamy następującą listę nowych członków biblioteki, których należy dodać do bazy danych.
Pełne nazwy | Data urodzenia | płeć | Adres fizyczny | adres pocztowy | Numer kontaktowy | Adres e-mail |
---|---|---|---|---|---|---|
Leonard Hofstadter | Męski | Woodcrest | 0845738767 | |||
Sheldon Cooper | Męski | Woodcrest | 0976736763 | |||
Rajesh Koothrappali | Męski | Fairview | 0938867763 | |||
Leslie Winkle | 14/02/1984 | Męski | 0987636553 | |||
Howard Wolowitz | 24/08/1981 | Męski | Park Południowy | Box 4563 | 0987786553 | Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie obsługi JavaScript. |
WSTAWIJmy dane jeden po drugim. Zaczniemy od Leonarda Hofstadtera. Numer kontaktowy będziemy traktować jako numeryczny typ danych i nie będziemy umieszczać numeru w pojedynczych cudzysłowach.
WSTAWIĆ DO `członków` (` pełne_nazwy`, `płeć`,` adres_fizyczny`, `numer_kontaktów`) WARTOŚCI ('Leonard Hofstadter', 'Mężczyzna', 'Woodcrest', 0845738767);
Wykonanie powyższego skryptu powoduje usunięcie 0 z numeru kontaktowego Leonarda. Dzieje się tak, ponieważ wartość będzie traktowana jako wartość liczbowa, a zero (0) na początku jest pomijane, ponieważ nie jest znaczące.
Aby uniknąć takich problemów, wartość musi być ujęta w pojedyncze cudzysłowy, jak pokazano poniżej -
WSTAWIĆ DO `członków` (` pełne_nazwy`, `płeć`,` adres_fizyczny`, `numer_kontaktów`) VALUES ('Sheldon Cooper', 'Male', 'Woodcrest', '0976736763');
W powyższym przypadku zero (0) nie zostanie usunięte
Zmiana kolejności kolumn nie ma wpływu na zapytanie INSERT w MySQL, o ile poprawne wartości zostały odwzorowane na poprawne kolumny.
Zapytanie pokazane poniżej demonstruje powyższy punkt.
WSTAWIĆ DO `członków` (` numer_kontaktów`, `płeć`,` pełne_nazwy`, `adres_fizyczny`) VALUES ('0938867763', 'Mężczyzna', 'Rajesh Koothrappali', 'Woodcrest');
Powyższe zapytania pominęły kolumnę z datą urodzenia. Domyślnie MySQL wstawia wartości NULL w kolumnach pominiętych w zapytaniu INSERT.
Wstawmy teraz rekord Leslie, który ma podaną datę urodzenia. Wartość daty powinna być ujęta w pojedyncze cudzysłowy w formacie „RRRR-MM-DD”.
INSERT INTO `Members` (` full_names`, `date_of_birth`,` gender`, `physical_address`,` contact_number`) VALUES ('Leslie Winkle', '1984-02-14', 'Mężczyzna', 'Woodcrest', 0987636553 ');
Wszystkie powyższe zapytania określały kolumny i odwzorowywały je na wartości w instrukcji wstawiania MySQL. Jeśli podajemy wartości dla WSZYSTKICH kolumn w tabeli, możemy pominąć kolumny w zapytaniu wstawiającym MySQL.
Przykład:-
INSERT INTO `Members` VALUES (9, 'Howard Wolowitz', 'Male', '1981-08-24',
'SouthPark', 'PO Box 4563', '0987786553', 'lwolowitz [at] email.me') ;
Użyjmy teraz instrukcji SELECT, aby wyświetlić wszystkie wiersze w tabeli elementu członkowskiego.
SELECT * FROM `members`;
numer_ członkostwa | pełne nazwy | płeć | Data urodzenia | adres fizyczny | adres pocztowy | contct_ number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Płeć żeńska | 21-07-1980 | Działka nr 4 przy pierwszej ulicy | Prywatna torba | 0759 253 542, | Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie obsługi JavaScript. |
2 | Janet Smith Jones | Płeć żeńska | 23-06-1980 | Melrose 123 | ZERO | ZERO | Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie obsługi JavaScript. |
3 | Robert Phil | Męski | 12-07-1989 | Ul. 3rd Street 34 | ZERO | 12345 | Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie obsługi JavaScript. |
4 | Gloria Williams | Płeć żeńska | 14-02-1984 | 2nd Street 23 | ZERO | ZERO | ZERO |
5 | Leonard Hofstadter | Męski | ZERO | Woodcrest | ZERO | 845738767 | ZERO |
6 | Sheldon Cooper | Męski | ZERO | Woodcrest | ZERO | 976736763 | ZERO |
7 | Rajesh Koothrappali | Męski | ZERO | Woodcrest | ZERO | 938867763 | ZERO |
8 | Leslie Winkle | Męski | 14-02-1984 | Woodcrest | ZERO | 987636553 | ZERO |
9 | Howard Wolowitz | Męski | 24-08-1981 | Park Południowy | Box 4563 | 987786553 | Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie obsługi JavaScript. |
Zauważ, że numer kontaktowy Leonarda Hofstadtera zmniejszył zero (0) z numeru kontaktowego. Pozostałe numery kontaktowe nie spadły z zera (0) na początku.
Wstawianie do tabeli z innej tabeli
Polecenie INSERT może również służyć do wstawiania danych do tabeli z innej tabeli. Podstawowa składnia jest pokazana poniżej.
INSERT INTO table_1 SELECT * FROM table_2;
Spójrzmy teraz na praktyczny przykład. Stworzymy zastępczą tabelę dla kategorii filmów do celów demonstracyjnych. Nazwę nową tabelę kategorii category_archive. Poniższy skrypt tworzy tabelę.
TWORZENIE TABELI `category_archive` (` category_id` int (11) AUTO_INCREMENT, `category_name` varchar (150) DEFAULT NULL,` remarks` varchar (500) DEFAULT NULL, PRIMARY KEY (`category_id`))
Wykonaj powyższy skrypt, aby utworzyć tabelę.
Wstawmy teraz wszystkie wiersze z tabeli kategorii do tabeli archiwum kategorii. Poniższy skrypt pomaga nam to osiągnąć.
WSTAWIĆ DO `kategorie_archiwum` SELECT * FROM` kategorie`;
Wykonanie powyższego skryptu powoduje wstawienie wszystkich wierszy z tabeli kategorii do tabeli archiwum kategorii. Zwróć uwagę, że struktury tabel będą musiały być takie same, aby skrypt działał. Bardziej niezawodnym skryptem jest taki, który odwzorowuje nazwy kolumn w tabeli wstawiania na nazwy w tabeli zawierającej dane.
Przedstawione poniżej zapytanie demonstruje jego użycie.
INSERT INTO `category_archive` (id_kategorii, nazwa_kategorii, uwagi) SELECT id_kategorii, nazwa_kategorii, uwagi Z` kategorie`;
Wykonywanie zapytania SELECT
SELECT * FROM „Categories_archive”
daje następujące wyniki pokazane poniżej.
category_id | Nazwa Kategorii | uwagi |
---|---|---|
1 | Komedia | Filmy z humorem |
2 | Romantyczny | Historie miłosne |
3 | Epicki | Filmy fabularne |
4 | Przerażenie | ZERO |
5 | Fantastyka naukowa | ZERO |
6 | Kryminał | ZERO |
7 | Akcja | ZERO |
8 | Komedia romantyczna | ZERO |
9 | Bajki | ZERO |
10 | Bajki | ZERO |
Przykład PHP: wstaw do tabeli MySQL
Funkcja mysqli_query służy do wykonywania zapytań SQL.
Funkcja może służyć do wykonywania następujących typów zapytań;
- Wstawić
- Wybierz
- Aktualizacja
- kasować
Ma następującą składnię.
mysqli_query($db_handle,$query);
TUTAJ,
"mysqli_query (
…) ”To funkcja, która wykonuje zapytania SQL.„$ zapytanie” to zapytanie SQL do wykonania
„$ link_identifier” jest opcjonalne, można go użyć do przekazania łącza połączenia z serwerem
Przykład
$servername = "localhost";$username = "alex";$password = "yPXuPT";$dbname = "afmznf";// Create connection$conn = mysqli_connect($servername, $username, $password, $dbname);// Check connectionif (!$conn) {die("Connection failed: " . mysqli_connect_error());}$sql= "INSERT INTO addkeyworddata(link, keyword)VALUES ('https://www.guru99.com/','1000')";if (mysqli_query($conn, $sql)) {echo "New record created successfully".'
';} else {echo "Error: " . $sql. "
" . mysqli_error($conn);}}
Podsumowanie
- Polecenie INSERT służy do dodawania nowych danych do tabeli. MySql doda nowy wiersz po wykonaniu polecenia.
- Wartości daty i ciągów znaków należy ująć w pojedyncze cudzysłowy.
- Wartości liczbowe nie muszą być umieszczane w cudzysłowach.
- Polecenie INSERT może również służyć do wstawiania danych z jednej tabeli do drugiej.