MySQL INSERT INTO Query: Jak přidat řádek do tabulky (příklad)
Co je INSERT INTO?
VLOŽTE DO slouží k ukládání dat do tabulek. Příkaz INSERT vytvoří v tabulce nový řádek pro uložení dat. Data jsou obvykle dodávána aplikačními programy, které běží nad databází.
Základní syntaxe
Podívejme se na základní syntaxi INSERT INTO MySQL příkaz:
INSERT INTO `table_name`(column_1,column_2,...) VALUES (value_1,value_2,...);
ZDE
- INSERT INTO `název_tabulky` je příkaz, který říká MySQL serveru přidat nový řádek do tabulky s názvem `název_tabulky.`
- (sloupec_1, sloupec_2,…) určuje sloupce, které mají být aktualizovány v novém MySQL řádek
- VALUES (value_1, value_2,…) určuje hodnoty, které mají být přidány do nového řádku
Při zadávání hodnot dat, které mají být vloženy do nové tabulky, je třeba vzít v úvahu následující:
- Datové typy řetězce – všechny hodnoty řetězce by měly být uzavřeny v jednoduchých uvozovkách.
- Číselné datové typy – všechny číselné hodnoty by měly být zadány přímo, aniž by byly uzavřeny do jednoduchých nebo dvojitých uvozovek.
- Datové typy data – hodnoty data uzavřete do jednoduchých uvozovek ve formátu 'RRRR-MM-DD'.
Příklad:
Předpokládejme, že máme následující seznam nových členů knihovny, které je třeba přidat do databáze.
Celé jméno | Datum narození | rod | Fyzická adresa | Poštovní adresa | Kontaktní číslo | Emailová adresa |
---|---|---|---|---|---|---|
Leonard Hofstadter | Muž | Woodcrest | 0845738767 | |||
Sheldon Cooper | Muž | Woodcrest | 0976736763 | |||
Rajesh Koothrappali | Muž | Fairview | 0938867763 | |||
Leslie Winkle | 14/02/1984 | Muž | 0987636553 | |||
Howard Wolowitz | 24/08/1981 | Muž | South Park | PO Box 4563 | 0987786553 | lwolowitz@email.me |
Pojďme VLOŽIT data jeden po druhém. Začneme Leonardem Hofstadterem. S kontaktním číslem budeme zacházet jako s číselným datovým typem a nebudeme je uzavírat do jednoduchých uvozovek.
INSERT INTO `members` (`full_names`,`gender`,`physical_address`,`contact_number`) VALUES ('Leonard Hofstadter','Male','Woodcrest',0845738767);
Po provedení výše uvedeného skriptu se z Leonardova kontaktního čísla odstraní nula. Je to proto, že hodnota bude považována za číselnou hodnotu a nula (0) na začátku je vypuštěna, protože není významná.
Aby se předešlo takovým problémům, musí být hodnota uzavřena v jednoduchých uvozovkách, jak je uvedeno níže –
INSERT INTO `members` (`full_names`,`gender`,`physical_address`,`contact_number`) VALUES ('Sheldon Cooper','Male','Woodcrest', '0976736763');
Ve výše uvedeném případě nebude nula (0) vypuštěna
Změna pořadí sloupců nemá žádný vliv na dotaz INSERT v MySQL pokud byly správné hodnoty mapovány do správných sloupců.
Níže uvedený dotaz demonstruje výše uvedený bod.
INSERT INTO `members` (`contact_number`,`gender`,`full_names`,`physical_address`) VALUES ('0938867763','Male','Rajesh Koothrappali','Woodcrest');
Výše uvedené dotazy přeskočily sloupec data narození. Ve výchozím stavu, MySQL vloží hodnoty NULL do sloupců, které jsou v dotazu INSERT vynechány.
Nyní vložíme záznam pro Leslie, který má zadané datum narození. Hodnota data by měla být uzavřena v jednoduchých uvozovkách ve formátu 'RRRR-MM-DD'.
INSERT INTO `members` (`full_names`,`date_of_birth`,`gender`,`physical_address`,`contact_number`) VALUES ('Leslie Winkle','1984-02-14','Male','Woodcrest', '0987636553');
Všechny výše uvedené dotazy specifikovaly sloupce a mapovaly je na hodnoty v MySQL vložit příkaz. Pokud dodáváme hodnoty pro VŠECHNY sloupce v tabulce, můžeme sloupce z tabulky vynechat MySQL vložit dotaz.
Příklad:-
INSERT INTO `members` VALUES (9,'Howard Wolowitz','Male','1981-08-24', 'SouthPark','P.O. Box 4563', '0987786553', 'lwolowitz[at]email.me');
Pojďme nyní použít příkaz SELECT pro zobrazení všech řádků v tabulce členů.
SELECT * FROM `members`;
členské číslo | celá_ jména | rod | datum narození | fyzická adresa | poštovní_ adresa | číslo_kontaktu | |
---|---|---|---|---|---|---|---|
1 | Janet Jonesová | Žena | 21-07-1980 | První ulice pozemek č. 4 | Soukromá taška | 0759 253 542 | janetjones@yagoo.cm |
2 | Janet Smith Jonesová | Žena | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
3 | Robert Phil | Muž | 12-07-1989 | 3. ulice 34 | NULL | 12345 | rm@tstreet.com |
4 | Gloria Williamsová | Žena | 14-02-1984 | 2. ulice 23 | NULL | NULL | NULL |
5 | Leonard Hofstadter | Muž | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Muž | NULL | Woodcrest | NULL | 0976736763 | NULL |
7 | Rajesh Koothrappali | Muž | NULL | Woodcrest | NULL | 0938867763 | NULL |
8 | Leslie Winkle | Muž | 14-02-1984 | Woodcrest | NULL | 0987636553 | NULL |
9 | Howard Wolowitz | Muž | 24-08-1981 | South Park | PO Box 4563 | 0987786553 | lwolowitz@email.me |
Všimněte si, že u kontaktního čísla Leonarda Hofstadtera klesla nula (0) z kontaktního čísla. Ostatní kontaktní čísla neklesla na nulu (0) na začátku.
Vkládání do tabulky z jiné tabulky
Příkaz INSERT lze také použít k vložení dat do tabulky z jiné tabulky. Základní syntaxe je uvedena níže.
INSERT INTO table_1 SELECT * FROM table_2;
Podívejme se nyní na praktický příklad. Pro demonstrační účely vytvoříme fiktivní tabulku pro kategorie filmů. Novou tabulku kategorií nazveme category_archive. Skript zobrazený níže vytvoří tabulku.
CREATE TABLE `categories_archive` ( `category_id` int(11) AUTO_INCREMENT, `category_name` varchar(150) DEFAULT NULL, `remarks` varchar(500) DEFAULT NULL, PRIMARY KEY (`category_id`))
Pro vytvoření tabulky spusťte výše uvedený skript.
Vložme nyní všechny řádky z tabulky kategorií do tabulky archivu kategorií. Níže uvedený skript nám k tomu pomáhá.
INSERT INTO `categories_archive` SELECT * FROM `categories`;
Spuštěním výše uvedeného skriptu se vloží všechny řádky z tabulky kategorií do tabulky archivu kategorií. Všimněte si, že struktury tabulek musí být stejné, aby skript fungoval. Robustnější skript je ten, který mapuje názvy sloupců ve vkládací tabulce na ty v tabulce obsahující data.
Dotaz uvedený níže ukazuje jeho použití.
INSERT INTO `categories_archive`(category_id,category_name,remarks) SELECT category_id,category_name,remarks FROM `categories`;
Provedení dotazu SELECT
SELECT * FROM `categories_archive`
poskytuje následující výsledky uvedené níže.
category_id | category_name | poznámky |
---|---|---|
1 | Komedie | Filmy s humorem |
2 | Romantický | Milostné příběhy |
3 | Úžasné | Příběhové starověké filmy |
4 | Hrůza | NULL |
5 | Sci-fi | NULL |
6 | Detektivka | NULL |
7 | Akce | NULL |
8 | Romantická komedie | NULL |
9 | Kreslené | NULL |
10 | Kreslené | NULL |
Příklad PHP: Vložit do MySQL Tabulka
K provedení se používá funkce mysqli_query SQL dotazy.
Funkci SQL insert into table lze použít k provedení následujících typů dotazů:
- Vložit
- vybrat
- Aktualizace
- vymazat
Má následující syntaxi.
mysqli_query($db_handle,$query);
TADY,
„mysqli_query(…)“ je funkce, která provádí dotazy SQL.
„$query“ je dotaz SQL, který se má provést
„$link_identifier“ je volitelný, lze jej použít k předání odkazu na připojení k serveru
Příklad
$servername = "localhost"; $username = "alex"; $password = "yPXuPT"; $dbname = "afmznf"; // Create connection $conn = mysqli_connect($servername, $username, $password, $dbname); // Check connection if (!$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".'<br>'; } else { echo "Error: " . $sql. "<br>" . mysqli_error($conn); } }
Shrnutí
- Příkaz INSERT se používá k přidání nových dat do tabulky. MySql přidá nový řádek po provedení příkazu.
- Hodnoty data a řetězce by měly být uzavřeny v jednoduchých uvozovkách.
- Číselné hodnoty není nutné uzavírat do uvozovek.
- Příkaz INSERT lze také použít k vložení dat z jedné tabulky do druhé.