Mikä on INSERT INTO?
INSERT INTO -toimintoa käytetään tietojen tallentamiseen taulukoihin. INSERT-komento luo uuden rivin taulukkoon tietojen tallentamiseksi. Tiedot toimitetaan yleensä tietokannan päällä toimivilla sovellusohjelmilla.
Perussyntaksi
Katsotaanpa INSERT INTO MySQL -komennon perussyntaksi:
INSERT INTO "taulukon_nimi" (sarake_1, sarake_2,…) ARVOT (arvo_1, arvo_2,…);
TÄSSÄ
- INSERT INTO "taulukon_nimi" on komento, joka käskee MySQL-palvelinta lisäämään uuden rivin taulukkoon nimeltä taulukon_nimi.
- (sarake_1, sarake_2,…) määrittää sarakkeet, jotka on päivitettävä uudelle MySQL-riville
- ARVOT (arvo_1, arvo_2,…) määrittää uudelle riville lisättävät arvot
Toimitettaessa uuteen taulukkoon lisättäviä data-arvoja on otettava huomioon seuraavat seikat:
- Merkkijonotietotyypit - kaikki merkkijonon arvot tulisi sulkea lainausmerkkeihin.
- Numeeriset tietotyypit - kaikki numeeriset arvot tulee toimittaa suoraan liittämättä niitä yksittäisiin tai kaksoislainausmerkeihin.
- Päivämäärän tietotyypit - liitä päivämääräarvot lainausmerkkeihin muodossa "VVVV-KK-PP".
Esimerkki:
Oletetaan, että meillä on seuraava luettelo uusista kirjaston jäsenistä, jotka on lisättävä tietokantaan.
Täydelliset nimet | Syntymäaika | sukupuoli | Fyysinen osoite | postiosoite | Yhteysnumero | Sähköpostiosoite |
---|---|---|---|---|---|---|
Leonard Hofstadter | Uros | Woodcrest | 0845738767 | |||
Sheldon Cooper | Uros | Woodcrest | 0976736763 | |||
Rajesh Koothrappali | Uros | Fairview | 0938867763 | |||
Leslie Winkle | 14/02/1984 | Uros | 0987636553 | |||
Howard Wolowitz | 24/08/1981 | Uros | Eteläpuisto | PL 4563 | 0987786553 | Tämä sähköpostiosoite on suojattu spamboteilta. Tarvitset JavaScriptin käyttääksesi sitä. |
Lisätään tiedot yksitellen. Aloitamme Leonard Hofstadterin kanssa. Käsittelemme yhteyshenkilön numeroa numeerisena tietotyyppinä emmekä liitä numeroa lainausmerkkeihin.
INSERT INTO "jäsenet" ("koko_nimet", "sukupuoli", "fyysinen_osoite", "yhteyshenkilönumero") ARVOT ("Leonard Hofstadter", "Mies", "Woodcrest", 0845738767);
Yllä olevan komentosarjan suorittaminen pudottaa 0 Leonardin yhteyshenkilön numerosta. Tämä johtuu siitä, että arvoa käsitellään numeerisena arvona ja nolla (0) alussa pudotetaan, koska se ei ole merkittävä.
Tällaisten ongelmien välttämiseksi arvo on liitettävä lainausmerkkeihin alla esitetyllä tavalla -
INSERT INTO "jäsenet" ("koko_nimet", "sukupuoli", "fyysinen_osoite", "yhteyshenkilönumero") ARVOT ("Sheldon Cooper", "Mies", "Woodcrest", "0976736763");
Edellä olevassa tapauksessa nollaa (0) ei pudota
Sarakkeiden järjestyksen muuttamisella ei ole vaikutusta INSERT-kyselyyn MySQL: ssä, kunhan oikeat arvot on yhdistetty oikeisiin sarakkeisiin.
Alla esitetty kysely osoittaa yllä olevan asian.
INSERT INTO "jäsenet" ("yhteyshenkilönumero", "sukupuoli", "täydelliset_nimet", "fyysinen_osoite") ARVOT ("0938867763", "Mies", "Rajesh Koothrappali", "Woodcrest");
Yllä olevat kyselyt ohittivat syntymäpäivä -sarakkeen. Oletuksena MySQL lisää NULL-arvot sarakkeisiin, jotka jätetään pois INSERT-kyselystä.
Lisätään nyt Leslien tietue, jolla on syntymäaika. Päivämääräarvo tulee liittää lainausmerkkeihin muodossa "VVVV-KK-PP".
INSERT INTO "jäsenet" ("koko_nimet", "syntymäpäivä_," sukupuoli "," fyysinen_osoite "," kontakti_numero ") ARVOT ('Leslie Winkle', '1984-02-14', 'Mies', 'Woodcrest', ' 0987636553 ');
Kaikki yllä olevat kyselyt määrittivät sarakkeet ja yhdistivät ne MySQL-lisäyslausekkeen arvoihin. Jos toimitamme arvot KAIKKI sarakkeet taulukossa, voimme jättää sarakkeet pois MySQL-lisäyskyselystä.
Esimerkki: -
INSERT INTO jäsenten ARVOT (9, 'Howard Wolowitz', 'Male', '1981-08-24',
'SouthPark', 'PO Box 4563', '0987786553', 'lwolowitz [at] email.me') ;
Katsotaanpa nyt SELECT-käskyä tarkastellaksemme kaikkia jäsenen taulukon rivejä.
SELECT * FROM `members`;
jäsennumero | koko_nimet | sukupuoli | syntymäaika | fyysinen osoite | postiosoite | cont_ numero | sähköposti |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Nainen | 21-07-1980 | Ensimmäisen kadun tontti nro 4 | Yksityinen laukku | 0759 253542 | Tämä sähköpostiosoite on suojattu spamboteilta. Tarvitset JavaScriptin käyttääksesi sitä. |
2 | Janet Smith Jones | Nainen | 23-06-1980 | Melrose 123 | TYHJÄ | TYHJÄ | Tämä sähköpostiosoite on suojattu spamboteilta. Tarvitset JavaScriptin käyttääksesi sitä. |
3 | Robert Phil | Uros | 12-07-1989 | 3. katu 34 | TYHJÄ | 12345 | Tämä sähköpostiosoite on suojattu spamboteilta. Tarvitset JavaScriptin käyttääksesi sitä. |
4 | Gloria Williams | Nainen | 14-02-1984 | 2. katu 23 | TYHJÄ | TYHJÄ | TYHJÄ |
5 | Leonard Hofstadter | Uros | TYHJÄ | Woodcrest | TYHJÄ | 845738767 | TYHJÄ |
6 | Sheldon Cooper | Uros | TYHJÄ | Woodcrest | TYHJÄ | 976736763 | TYHJÄ |
7 | Rajesh Koothrappali | Uros | TYHJÄ | Woodcrest | TYHJÄ | 938867763 | TYHJÄ |
8 | Leslie Winkle | Uros | 14-02-1984 | Woodcrest | TYHJÄ | 987636553 | TYHJÄ |
9 | Howard Wolowitz | Uros | 24-08-1981 | Eteläpuisto | PL 4563 | 987786553 | Tämä sähköpostiosoite on suojattu spamboteilta. Tarvitset JavaScriptin käyttääksesi sitä. |
Huomaa, että Leonard Hofstadterin kontaktinumero on pudonnut nollan (0) yhteyshenkilön numerosta. Muut kontaktinumerot eivät ole laskeneet nollaa (0) alussa.
Lisätään taulukkoon toisesta taulukosta
INSERT-komentoa voidaan käyttää myös tietojen lisäämiseen taulukkoon toisesta taulukosta. Perussyntaksi on alla esitetty.
INSERT INTO table_1 SELECT * FROM table_2;
Katsotaanpa nyt käytännön esimerkkiä. Luomme esittelytarkoituksiin nuken taulukon elokuvaluokille. Kutsumme uutta luokkataulukkoa category_archive. Alla oleva komentosarja luo taulukon.
LUO TAULUKKO `category_archive` (` category_id` int (11) AUTO_INCREMENT, `category_name` varchar (150) DEFAULT NULL,` huomautukset` varchar (500) DEFAULT NULL, PRIMARY KEY (`category_id`))
Luo taulukko suorittamalla yllä oleva komentosarja.
Lisätään nyt kaikki luokkataulukon rivit luokkien arkistotaulukkoon. Alla esitetty komentosarja auttaa meitä saavuttamaan sen.
INSERT INTO `category_archive` VALITSE * FROM` luokista`;
Yllä olevan komentosarjan suorittaminen lisää kaikki luokkataulukon rivit luokkien arkistotaulukkoon. Huomaa, että taulukon rakenteiden on oltava samat, jotta komentosarja toimisi. Vankempi komentosarja on sellainen, joka kartoittaa lisäystaulukon sarakkeiden nimet tietojen taulukossa oleviin nimiin.
Alla esitetty kysely osoittaa sen käytön.
INSERT INTO "categories_archive" (kategoria_id, luokan_nimi, huomautukset) VALITSE category_id, luokan_nimi, huomautukset FROM `kategoriasta`;
Suoritetaan SELECT-kysely
VALITSE * FROM `category_archive`
antaa seuraavat tulokset.
category_id | Kategorian nimi | huomautukset |
---|---|---|
1 | Komedia | Elokuvat huumorilla |
2 | Romanttinen | Rakkaustarinat |
3 | Eeppinen | Tarina-elokuvat |
4 | Kauhu | TYHJÄ |
5 | Tieteiskirjallisuus | TYHJÄ |
6 | Trilleri | TYHJÄ |
7 | Toiminta | TYHJÄ |
8 | Romanttinen komedia | TYHJÄ |
9 | Sarjakuvat | TYHJÄ |
10 | Sarjakuvat | TYHJÄ |
PHP-esimerkki: Lisää MySQL-taulukkoon
Mysqli_query-funktiota käytetään SQL-kyselyjen suorittamiseen.
Funktiota voidaan käyttää seuraavien kyselytyyppien suorittamiseen;
- Lisää
- Valitse
- Päivittää
- poistaa
Sillä on seuraava syntakse.
mysqli_query($db_handle,$query);
TÄSSÄ,
"mysqli_query (
…) "On funktio, joka suorittaa SQL-kyselyt."$ query" on suoritettava SQL-kysely
"$ link_identifier" on valinnainen, sitä voidaan käyttää välittämään palvelimen yhteyslinkki
Esimerkki
$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);}}
Yhteenveto
- INSERT-komentoa käytetään lisäämään uusia tietoja taulukkoon. MySql lisää uuden rivin, kun komento on suoritettu.
- Päivämäärän ja merkkijonon arvot tulee liittää lainausmerkeihin.
- Numeerisia arvoja ei tarvitse liittää lainausmerkkeihin.
- INSERT-komentoa voidaan käyttää myös tietojen lisäämiseen taulukosta toiseen.