Čo je INSERT INTO?
INSERT INTO slúži na ukladanie údajov do tabuliek. Príkaz INSERT vytvorí v tabuľke nový riadok na ukladanie údajov. Dáta sú zvyčajne dodávané aplikačnými programami, ktoré bežia nad databázou.
Základná syntax
Pozrime sa na základnú syntax príkazu INSERT INTO MySQL:
INSERT INTO `table_name` (stĺpec_1, stĺpec_2, ...) HODNOTY (hodnota_1, hodnota_2, ...);
TU
- INSERT INTO `table_name` je príkaz, ktorý povie serveru MySQL, aby pridal nový riadok do tabuľky s názvom` table_name.`
- (stĺpec_1, stĺpec_2, ...) určuje stĺpce, ktoré sa majú aktualizovať v novom riadku MySQL
- VALUES (hodnota_1, hodnota_2, ...) určuje hodnoty, ktoré sa majú pridať do nového riadku
Pri zadávaní údajových hodnôt, ktoré sa majú vložiť do novej tabuľky, je potrebné vziať do úvahy toto:
- Reťazcové dátové typy - všetky reťazcové hodnoty by mali byť uzavreté v jednoduchých úvodzovkách.
- Číselné typy údajov - všetky číselné hodnoty by sa mali zadávať priamo bez toho, aby sa uvádzali v jednoduchých alebo dvojitých úvodzovkách.
- Dátové typy dátumu - uveďte hodnoty dátumu v jednoduchých úvodzovkách vo formáte RRRR-MM-DD.
Príklad:
Predpokladajme, že máme nasledujúci zoznam nových členov knižnice, ktorých je potrebné pridať do databázy.
Celé mená | Dátum narodenia | rod | Fyzická adresa | Poštová 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ž | Južný park | PO Box 4563 | 0987786553 | Táto e-mailová adresa je chránená pred spamovacími robotmi. Ak ju chcete vidieť, musíte mať povolený JavaScript. |
VKLADAJME údaje jeden po druhom. Začneme Leonardom Hofstadterom. S kontaktným číslom budeme zaobchádzať ako s číselným údajovým typom a nebudeme ho uzatvárať do jednoduchých úvodzoviek.
INSERT INTO `members` (` full_names`, `gender`,` physical_address`, `contact_number`) VALUES ('Leonard Hofstadter', 'Male', 'Woodcrest', 0845738767);
Vykonaním vyššie uvedeného skriptu klesne 0 z Leonardovho kontaktného čísla. Je to z toho dôvodu, že s hodnotou sa bude zaobchádzať ako s číselnou hodnotou a nula (0) na začiatku bude zrušená, pretože nie je významná.
Aby sa zabránilo takýmto problémom, musí byť hodnota uvedená v jednoduchých úvodzovkách, ako je uvedené nižšie -
INSERT INTO `members` (` full_names`, `gender`,` physical_address`, `contact_number`) VALUES ('Sheldon Cooper', 'Male', 'Woodcrest', '0976736763');
V uvedenom prípade nula (0) nebude vynechaná
Zmena poradia stĺpcov nemá žiadny vplyv na INSERT dotaz v MySQL, pokiaľ sú správne hodnoty namapované na správne stĺpce.
Dotaz uvedený nižšie demonštruje vyššie uvedený bod.
INSERT INTO `members` (` contact_number`, `gender`,` full_names`, `physical_address`) VALUES ('0938867763', 'Male', 'Rajesh Koothrappali', 'Woodcrest');
Vyššie uvedené dotazy preskočili stĺpec dátumu narodenia. Predvolene MySQL vloží hodnoty NULL do stĺpcov, ktoré sú v dotaze INSERT vynechané.
Poďme teraz vložiť záznam pre Leslie, ktorý má uvedený dátum narodenia. Hodnota dátumu by mala byť uvedená v jednoduchých úvodzovkách vo formáte 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šetky vyššie uvedené dotazy špecifikovali stĺpce a mapovali ich na hodnoty vo vyhlásení vloženia MySQL. Ak dodávame hodnoty pre VŠETKY stĺpce v tabuľke, môžeme stĺpce z dotazu na vloženie MySQL vynechať.
Príklad: -
INSERT INTO `members` VALUES (9, 'Howard Wolowitz', 'Male', '1981-08-24',
'SouthPark', 'PO Box 4563', '0987786553', 'lwolowitz [at] email.me') ;
Poďme si teraz pomocou príkazu SELECT pozrieť všetky riadky v členskej tabuľke.
SELECT * FROM `members`;
členské číslo | celé_mená | rod | dátum narodenia | fyzická adresa | Poštová adresa | kontct_ cislo | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Žena | 21-07-1980 | Pozemok prvej ulice č. 4 | Súkromná taška | 0759 253 542 | Táto e-mailová adresa je chránená pred spamovacími robotmi. Ak ju chcete vidieť, musíte mať povolený JavaScript. |
2 | Janet Smith Jones | Žena | 23-06-1980 | Melrose 123 | NULOVÝ | NULOVÝ | Táto e-mailová adresa je chránená pred spamovacími robotmi. Ak ju chcete vidieť, musíte mať povolený JavaScript. |
3 | Robert Phil | Muž | 12.7.1989 | 3. ulica 34 | NULOVÝ | 12345 | Táto e-mailová adresa je chránená pred spamovacími robotmi. Ak ju chcete vidieť, musíte mať povolený JavaScript. |
4 | Gloria Williams | Žena | 14-02-1984 | 2. ulica 23 | NULOVÝ | NULOVÝ | NULOVÝ |
5 | Leonard Hofstadter | Muž | NULOVÝ | Woodcrest | NULOVÝ | 845738767 | NULOVÝ |
6 | Sheldon Cooper | Muž | NULOVÝ | Woodcrest | NULOVÝ | 976736763 | NULOVÝ |
7 | Rajesh Koothrappali | Muž | NULOVÝ | Woodcrest | NULOVÝ | 938867763 | NULOVÝ |
8 | Leslie Winkle | Muž | 14-02-1984 | Woodcrest | NULOVÝ | 987636553 | NULOVÝ |
9 | Howard Wolowitz | Muž | 24-08-1981 | Južný park | PO Box 4563 | 987786553 | Táto e-mailová adresa je chránená pred spamovacími robotmi. Ak ju chcete vidieť, musíte mať povolený JavaScript. |
Všimnite si, že kontaktné číslo pre Leonarda Hofstadtera kleslo na nulu (0) z kontaktného čísla. Ostatné kontaktné čísla na začiatku neznížili nulu (0).
Vkladanie do tabuľky z inej tabuľky
Príkaz INSERT možno použiť aj na vloženie údajov do tabuľky z inej tabuľky. Základná syntax je uvedená nižšie.
INSERT INTO table_1 SELECT * FROM table_2;
Pozrime sa teraz na praktický príklad. Pre demonštračné účely vytvoríme fiktívnu tabuľku pre kategórie filmov. Novú tabuľku kategórií budeme nazývať category_archive. Skript zobrazený nižšie vytvára tabuľku.
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`))
Vykonaním vyššie uvedeného skriptu vytvorte tabuľku.
Poďme teraz vložiť všetky riadky z tabuľky kategórií do tabuľky archívov kategórií. To nám pomáha dosiahnuť skript uvedený nižšie.
VLOŽTE DO `category_archive` VYBERTE * Z` category`;
Vykonaním vyššie uvedeného skriptu sa vložia všetky riadky z tabuľky kategórií do tabuľky archívov kategórií. Upozorňujeme, že aby tabuľky fungovali, štruktúry tabuľky musia byť rovnaké. Robustnejší skript je taký, ktorý mapuje názvy stĺpcov v tabuľke vloženia na tie v tabuľke, ktorá obsahuje údaje.
Dopyt zobrazený nižšie demonštruje jeho použitie.
INSERT INTO `category_archive` (category_id, category_name, remarks) SELECT category_id, category_name, remarks FROM` categories`;
Vykonáva sa dotaz SELECT
VYBERTE * Z `category_archive`
poskytuje nasledujúce výsledky uvedené nižšie.
id_kategórie | meno kategórie | poznámky |
---|---|---|
1 | Komédia | Filmy s humorom |
2 | Romantické | Milostné príbehy |
3 | Epické | Príbehové filmy |
4 | Hrôza | NULOVÝ |
5 | Sci-fi | NULOVÝ |
6 | Thriller | NULOVÝ |
7 | Akcia | NULOVÝ |
8 | Romantická komédia | NULOVÝ |
9 | Kreslené | NULOVÝ |
10 | Kreslené | NULOVÝ |
Príklad PHP: Vložte do tabuľky MySQL
Funkcia mysqli_query sa používa na vykonávanie dotazov SQL.
Túto funkciu je možné použiť na vykonanie nasledujúcich typov dotazov;
- Vložte
- Vyberte
- Aktualizácia
- vymazať
Má nasledujúcu syntax.
mysqli_query($db_handle,$query);
TU,
"mysqli_query (
…) „Je funkcia, ktorá vykonáva dotazy SQL.„$ query“ je dotaz SQL, ktorý sa má vykonať
„$ link_identifier“ je voliteľný, možno ho použiť na odovzdanie odkazu na pripojenie k serveru
Prí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);}}
Zhrnutie
- Príkaz INSERT sa používa na pridanie nových údajov do tabuľky. Po vykonaní príkazu MySql pridá nový riadok.
- Dátum a hodnoty reťazca by mali byť uvedené v jednoduchých úvodzovkách.
- Číselné hodnoty nie je potrebné uvádzať v úvodzovkách.
- Príkaz INSERT možno použiť aj na vloženie údajov z jednej tabuľky do druhej.