Kaj je INSERT INTO?
INSERT INTO se uporablja za shranjevanje podatkov v tabelah. Ukaz INSERT ustvari novo vrstico v tabeli za shranjevanje podatkov. Podatke običajno dobijo aplikacijski programi, ki se izvajajo na vrhu baze podatkov.
Osnovna sintaksa
Oglejmo si osnovno sintakso ukaza INSERT INTO MySQL:
INSERT INTO `ime_tabele` (stolpec_1, stolpec_2, ...) VREDNOSTI (vrednost_1, vrednost_2, ...);
TUKAJ
- INSERT INTO "table_name" je ukaz, ki strežniku MySQL pove, naj v tabelo z imenom "table_name" doda novo vrstico.
- (stolpec_1, stolpec_2, ...) določa stolpce, ki jih je treba posodobiti v novi vrstici MySQL
- VALUES (value_1, value_2,…) določa vrednosti, ki jih je treba dodati v novo vrstico
Pri podajanju podatkovnih vrednosti, ki jih je treba vstaviti v novo tabelo, je treba upoštevati naslednje:
- Niz podatkovnih vrst - vse vrednosti nizov morajo biti zaprte v enojne narekovaje.
- Številski podatkovni tipi - vse številske vrednosti je treba navesti neposredno, ne da bi jih zapirali v enojne ali dvojne narekovaje.
- Datumski podatkovni tipi - vrednosti datuma vključite v posamezne narekovaje v obliki 'LLLL-MM-DD'.
Primer:
Recimo, da imamo naslednji seznam novih članov knjižnice, ki jih je treba dodati v bazo podatkov.
Polna imena | Datum rojstva | spol | Fizični naslov | poštni naslov | Kontaktna številka | Email naslov |
---|---|---|---|---|---|---|
Leonard Hofstadter | Moški | Woodcrest | 0845738767 | |||
Sheldon Cooper | Moški | Woodcrest | 0976736763 | |||
Rajesh Koothrappali | Moški | Fairview | 0938867763 | |||
Leslie Winkle | 14.2.1984 | Moški | 0987636553 | |||
Howard Wolowitz | 24.8.1981 | Moški | Južni park | Nabiralnik 4563 | 0987786553 | Ta e-poštni naslov je zaščiten proti smetenju. Če ga želite videti, omogočite Javascript. |
Vstavimo podatke enega za drugim. Začeli bomo z Leonardom Hofstadterjem. Kontaktno številko bomo obravnavali kot številčno vrsto podatkov in je ne bomo vključili v enojne narekovaje.
VSTAVITE V "člane" ("polna_imena", "spol", "fizični_adres", "kontaktna_številka") VREDNOSTI ("Leonard Hofstadter", "Moški", "Woodcrest", 0845738767);
Izvedba zgornjega skripta spusti 0 z Leonardove kontaktne številke. To je zato, ker bo vrednost obravnavana kot številčna vrednost, ničla (0) na začetku pa bo izpuščena, ker ni pomembna.
Da bi se izognili takim težavam, mora biti vrednost zaprta v enojne narekovaje, kot je prikazano spodaj -
INSERT INTO `members` (` full_names`, `gender`,` fizični_address`, `contact_number`) VREDNOSTI ('Sheldon Cooper', 'Male', 'Woodcrest', '0976736763');
V zgornjem primeru nič (0) ne bo izpuščena
Spreminjanje vrstnega reda stolpcev ne vpliva na poizvedbo INSERT v MySQL, če so pravilne vrednosti preslikane v pravilne stolpce.
Spodnja poizvedba dokazuje zgornjo točko.
INSERT INTO `members` (` contact_number`, `gender`,` full_names`, `physical_address`) VREDNOSTI ('0938867763', 'Male', 'Rajesh Koothrappali', 'Woodcrest');
Zgornja vprašanja so preskočila stolpec z datumom rojstva. MySQL privzeto vstavi NULL vrednosti v stolpce, ki so izpuščeni v poizvedbi INSERT.
Zdaj vstavimo zapis za Leslie, ki ima naveden datum rojstva. Vrednost datuma mora biti v enojnih narekovajih v obliki "LLLL-MM-DD".
INSERT INTO `members` (` full_names`, `date_of_birth`,` gender`, `physical_address`,` contact_number`) VREDNOSTI ('Leslie Winkle', '1984-02-14', 'Male', 'Woodcrest', ' 0987636553 ');
Vse zgornje poizvedbe so podale stolpce in jih preslikale na vrednosti v stavku MySQL za vstavljanje. Če podajamo vrednosti za VSE stolpce v tabeli, lahko stolpce iz poizvedbe za vstavljanje MySQL izpustimo.
Primer: -
VSTAVITE V "VREDNOTE članov (9, 'Howard Wolowitz', 'Moški', '1981-08-24',
'SouthPark', 'PO Box 4563', '0987786553', 'lwolowitz [at] email.me') ;
Zdaj uporabimo izjavo SELECT za ogled vseh vrstic v članski tabeli.
SELECT * FROM `members`;
številka_članstva | polna_ imena | spol | datum rojstva | fizični naslov | poštni naslov | kont. številka | E-naslov |
---|---|---|---|---|---|---|---|
1. | Janet Jones | Ženska | 21-07-1980 | Prva ulična parcela št. 4 | Zasebna torba | 0759 253 542 | Ta e-poštni naslov je zaščiten proti smetenju. Če ga želite videti, omogočite Javascript. |
2. | Janet Smith Jones | Ženska | 23-06-1980 | Melrose 123 | NIČ | NIČ | Ta e-poštni naslov je zaščiten proti smetenju. Če ga želite videti, omogočite Javascript. |
3. | Robert Phil | Moški | 12. 7. 1989 | 3. ulica 34 | NIČ | 12345 | Ta e-poštni naslov je zaščiten proti smetenju. Če ga želite videti, omogočite Javascript. |
4. | Gloria Williams | Ženska | 14-02-1984 | 2. ulica 23 | NIČ | NIČ | NIČ |
5. | Leonard Hofstadter | Moški | NIČ | Woodcrest | NIČ | 845738767 | NIČ |
6. | Sheldon Cooper | Moški | NIČ | Woodcrest | NIČ | 976736763 | NIČ |
7. | Rajesh Koothrappali | Moški | NIČ | Woodcrest | NIČ | 938867763 | NIČ |
8. | Leslie Winkle | Moški | 14-02-1984 | Woodcrest | NIČ | 987636553 | NIČ |
9. | Howard Wolowitz | Moški | 24-08-1981 | Južni park | Nabiralnik 4563 | 987786553 | Ta e-poštni naslov je zaščiten proti smetenju. Če ga želite videti, omogočite Javascript. |
Opazite, da je kontaktna številka Leonarda Hofstadterja s kontaktne številke spustila ničlo (0). Druge kontaktne številke na začetku niso spustile ničle (0).
Vstavljanje v tabelo iz druge tabele
Ukaz INSERT lahko uporabite tudi za vstavljanje podatkov v tabelo iz druge tabele. Osnovna skladnja je prikazana spodaj.
INSERT INTO table_1 SELECT * FROM table_2;
Oglejmo si zdaj praktični primer. Za demonstracijske namene bomo ustvarili preskusno tabelo za kategorije filmov. Tabelo novih kategorij bomo poklicali categories_archive. Spodnji skript ustvari tabelo.
USTVARI TABELO `category_archive` (` category_id` int (11) AUTO_INCREMENT, `ime_kategorije` varchar (150) PRIROČNO NULL,` opombe` varchar (500) PRIROČNA NULL, OSNOVNI KLJUČ (`id_kategorije))
Izvedite zgornji skript, da ustvarite tabelo.
Zdaj vstavimo vse vrstice iz tabele kategorij v tabelo arhivov kategorij. Spodnji scenarij nam pomaga, da to dosežemo.
INSERT INTO `categories_archive` SELECT * FROM` categories`;
Izvedba zgornjega skripta vstavi vse vrstice iz tabele kategorij v tabelo arhivov kategorij. Upoštevajte, da morajo biti strukture tabel enake, da bo skript deloval. Bolj zanesljiv skript je tisti, ki imena stolpcev v tabeli za vstavljanje preslika na tista v tabeli, ki vsebuje podatke.
Spodnja poizvedba prikazuje njegovo uporabo.
INSERT INTO `category_archive` (id_kategorije, ime_kategorije, opombe) IZBERI id_kategorije, ime_kategorije, opombe IZ` kategorije`;
Izvajanje poizvedbe SELECT
IZBERITE * IZ `category_archive`
daje naslednje rezultate, prikazane spodaj.
id_kategorije | ime_kategorije | pripombe |
---|---|---|
1. | Komedija | Filmi s humorjem |
2. | Romantično | Ljubezenske zgodbe |
3. | Epsko | Zgodba o starodavnih filmih |
4. | Groza | NIČ |
5. | Znanstvena fantastika | NIČ |
6. | Triler | NIČ |
7. | Ukrepanje | NIČ |
8. | Romantična komedija | NIČ |
9. | Risanke | NIČ |
10. | Risanke | NIČ |
Primer PHP: vstavite v tabelo MySQL
Funkcija mysqli_query se uporablja za izvajanje poizvedb SQL.
Funkcijo lahko uporabite za izvajanje naslednjih vrst poizvedb;
- Vstavi
- Izberite
- Nadgradnja
- izbriši
Ima naslednjo sintakso.
mysqli_query($db_handle,$query);
TUKAJ,
"mysqli_query (
…) "Je funkcija, ki izvaja poizvedbe SQL."$ query" je poizvedba SQL, ki jo je treba izvesti
"$ link_identifier" ni obvezen, z njim lahko prenesete povezavo do strežniške povezave
Primer
$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);}}
Povzetek
- Ukaz INSERT se uporablja za dodajanje novih podatkov v tabelo. MySql bo po izvedbi ukaza dodal novo vrstico.
- Vrednosti datuma in nizov morajo biti v enojnih narekovajih.
- Številskih vrednosti ni treba zapirati v narekovaje.
- Ukaz INSERT lahko uporabite tudi za vstavljanje podatkov iz ene tabele v drugo.