Co je INSERT INTO?
INSERT INTO slouží k ukládání dat v tabulkách. 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 příkazu INSERT INTO MySQL:
INSERT INTO `table_name` (column_1, column_2, ...) VALUES (value_1, value_2, ...);
TADY
- INSERT INTO `table_name` je příkaz, který říká serveru MySQL, aby přidal nový řádek do tabulky s názvem` table_name.`
- (sloupec_1, sloupec_2, ...) určuje sloupce, které se mají aktualizovat v novém řádku MySQL
- VALUES (value_1, value_2,…) určuje hodnoty, které mají být přidány do nového řádku
Při zadávání datových hodnot, které mají být vloženy do nové tabulky, je třeba vzít v úvahu následující:
- Řetězcové datové typy - všechny řetězcové hodnoty by měly být uzavřeny v jednoduchých uvozovkách.
- Číselné datové typy - všechny číselné hodnoty by měly být dodávány přímo, aniž by byly uzavřeny do jednoduchých nebo dvojitých uvozovek.
- Datové typy data - uzavřete hodnoty data 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žský | Woodcrest | 0845738767 | |||
Sheldon Cooper | mužský | Woodcrest | 0976736763 | |||
Rajesh Koothrappali | mužský | Fairview | 0938867763 | |||
Leslie Winkle | 14/02/1984 | mužský | 0987636553 | |||
Howard Wolowitz | 24/08/1981 | mužský | South Park | PO Box 4563 | 0987786553 | Tato e-mailová adresa je chráněna před spamboty. Abyste ji mohli zobrazit, musíte mít povolený JavaScript. |
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 toto číslo neuzavřeme do jednoduchých uvozovek.
INSERT INTO `members` (` full_names`, `gender`,` physical_address`, `contact_number`) VALUES ('Leonard Hofstadter', 'Male', 'Woodcrest', 0845738767);
Provedením výše uvedeného skriptu klesne 0 z Leonardova kontaktního čísla. Důvodem je, že s hodnotou bude zacházeno jako s číselnou hodnotou a nula (0) na začátku bude zrušena, protože není významná.
Aby se předešlo těmto problémům, musí být hodnota uvedena 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 zrušena nula (0)
Změna pořadí sloupců nemá žádný vliv na dotaz INSERT v MySQL, pokud byly správné hodnoty namapovány na správné sloupce.
Dotaz zobrazený níže ukazuje 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 datum narození. Ve výchozím nastavení MySQL vloží hodnoty NULL do sloupců, které jsou v dotazu INSERT vynechány.
Vložme nyní záznam pro Leslie, do kterého je zadáno datum narození. Hodnota data by měla být uzavřena do jednoduchých uvozovek 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 určily sloupce a namapovaly je na hodnoty v příkazu MySQL insert. Pokud dodáváme hodnoty pro VŠECHNY sloupce v tabulce, můžeme sloupce z vloženého dotazu MySQL vynechat.
Příklad:-
INSERT INTO `members` VALUES (9, 'Howard Wolowitz', 'Male', '1981-08-24',
'SouthPark', 'PO Box 4563', '0987786553', 'lwolowitz [at] email.me') ;
Pojďme nyní pomocí příkazu SELECT zobrazit všechny řádky v členské tabulce.
SELECT * FROM `members`;
členské číslo | celá_jména | Rod | datum narození | fyzická adresa | postal_ address | Kontaktní_číslo | e-mailem |
---|---|---|---|---|---|---|---|
1 | Janet Jones | ženský | 21-07-1980 | Pozemek první ulice č. 4 | Soukromá taška | 0759 253 542 | Tato e-mailová adresa je chráněna před spamboty. Abyste ji mohli zobrazit, musíte mít povolený JavaScript. |
2 | Janet Smith Jones | ženský | 23-06-1980 | Melrose 123 | NULA | NULA | Tato e-mailová adresa je chráněna před spamboty. Abyste ji mohli zobrazit, musíte mít povolený JavaScript. |
3 | Robert Phil | mužský | 12.7.1989 | 3. ulice 34 | NULA | 12345 | Tato e-mailová adresa je chráněna před spamboty. Abyste ji mohli zobrazit, musíte mít povolený JavaScript. |
4 | Gloria Williams | ženský | 14-02-1984 | 2. ulice 23 | NULA | NULA | NULA |
5 | Leonard Hofstadter | mužský | NULA | Woodcrest | NULA | 845738767 | NULA |
6 | Sheldon Cooper | mužský | NULA | Woodcrest | NULA | 976736763 | NULA |
7 | Rajesh Koothrappali | mužský | NULA | Woodcrest | NULA | 938867763 | NULA |
8 | Leslie Winkle | mužský | 14-02-1984 | Woodcrest | NULA | 987636553 | NULA |
9 | Howard Wolowitz | mužský | 24-08-1981 | SouthPark | PO Box 4563 | 987786553 | Tato e-mailová adresa je chráněna před spamboty. Abyste ji mohli zobrazit, musíte mít povolený JavaScript. |
Všimněte si, že kontaktní číslo Leonarda Hofstadtera kleslo na nulu (0) z kontaktního čísla. Ostatní kontaktní čísla na začátku nezrušila nulu (0).
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;
Pojďme se nyní podívat na praktický příklad. Pro demonstrační účely vytvoříme fiktivní tabulku pro kategorie filmů. Zavoláme novou tabulku kategorií category_archive. Níže uvedený skript vytvoří tabulku.
CREATE TABLE `category_archive` (` category_id` int (11) AUTO_INCREMENT, `category_name` varchar (150) DEFAULT NULL,` remarks` varchar (500) DEFAULT NULL, PRIMARY KEY (`category_id`))
Proveďte výše uvedený skript a vytvořte tabulku.
Vložme nyní všechny řádky z tabulky kategorií do tabulky archivů kategorií. Skript zobrazený níže nám k tomu pomáhá.
INSERT INTO `category_archive` SELECT * FROM` category`;
Provedení výše uvedeného skriptu vloží všechny řádky z tabulky kategorií do tabulky archivů kategorií. Všimněte si, že struktury tabulky budou muset být stejné, aby skript fungoval. Robustnější skript je ten, který mapuje názvy sloupců v tabulce vložení na ty v tabulce obsahující data.
Níže uvedený dotaz ukazuje jeho použití.
INSERT INTO `category_archive` (category_id, category_name, remarks) SELECT category_id, category_name, remarks FROM` categories`;
Provádění dotazu SELECT
VYBERTE * Z `kategorie_archiv`
poskytuje následující výsledky uvedené níže.
id_kategorie | Název Kategorie | poznámky |
---|---|---|
1 | Komedie | Filmy s humorem |
2 | Romantický | Milostné příběhy |
3 | Epické | Příběh starých filmů |
4 | Hrůza | NULA |
5 | Sci-fi | NULA |
6 | Thriller | NULA |
7 | Akce | NULA |
8 | Romantická komedie | NULA |
9 | Kreslené | NULA |
10 | Kreslené | NULA |
Příklad PHP: Vložit do tabulky MySQL
Funkce mysqli_query se používá k provádění dotazů SQL.
Funkci 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 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);}}
souhrn
- 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 do jednoduchých uvozovek.
- Číselné hodnoty není nutné uvádět v uvozovkách.
- Příkaz INSERT lze také použít k vložení dat z jedné tabulky do druhé.