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é.
