MySQL INSERT INTO Query: Jak přidat řádek do tabulky (příklad)

⚡ Chytré shrnutí

MySQL INSERT INTO Query přidává do tabulky nové řádky, a to buď explicitním pojmenováním cílových sloupců, nebo zadáním hodnoty pro každý sloupec. Správné uvedení řetězců, čísel a dat v uvozovkách určuje, zda uložená data přežijí beze změny.

  • 📥 Základní syntaxe: INSERT INTO `table_name`(column_1,column_2) VALUES (value_1,value_2) vytvoří jeden nový řádek v pojmenované tabulce.
  • 🔤 Pravidlo citování: Řetězcové hodnoty a hodnoty data vyžadují jednoduché uvozovky; číselné hodnoty se uvádějí bez uvozovek.
  • 0️⃣ Přední nulová past: Neuvedené telefonní číslo se čte jako číslo, takže úvodní nula se tiše vynechá.
  • 🔀 Pořadí sloupců: Pořadí sloupců v dotazu je irelevantní, za předpokladu, že každá hodnota odpovídá odpovídajícímu sloupci.
  • 🕳️ Vynechané sloupce: Sloupce vynechané z příkazu obdrží hodnotu NULL nebo svou deklarovanou výchozí hodnotu.
  • 📑 Stůl ke stolu: INSERT INTO … SELECT kopíruje řádky mezi tabulkami, když se sloupcové struktury zarovnají.

Co je INSERT INTO?

VLOŽTE DO se používá k ukládání dat do tabulek. Příkaz INSERT vytvoří v tabulce nový řádek pro ukládání 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ávány přímo bez uzavírání do jednoduchých nebo dvojitých uvozovek.
  • Datové typy data – hodnoty data uzavřete do jednoduchých uvozovek ve formátu 'RRRR-MM-DD'.

Vkládání více řádků najednou

Jeden příkaz INSERT může obsahovat několik řádků. Jednotlivé sady hodnot oddělte čárkou. Jeden příkaz je rychlejší než mnoho, protože index se aktualizuje jednou.

INSERT INTO `categories`(`category_name`,`remarks`) VALUES
('Documentary', 'Factual films'),
('Musical', 'Song driven films');

MySQL Příklad dotazu INSERT INTO

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ž Woodcrest 0938867763
Leslie Winkle 14/02/1984 Muž Woodcrest 0987636553
Howard Wolowitz 24/08/1981 Muž South Park PO Box 4563 0987786553 lwolowitz@email.me

Vkládejme data po řádcích, počínaje Leonardem Hofstadterem. S kontaktním číslem budeme zacházet jako s číselným datovým typem a nebudeme ho uzavírat do jednoduchých uvozovek.

INSERT INTO `members` (`full_names`,`gender`,`physical_address`,`contact_number`) VALUES ('Leonard Hofstadter','Male','Woodcrest',0845738767);

Spuštěním výše uvedeného skriptu se z Leonardova kontaktního čísla odstraní 0, protože hodnota je považována za číselnou a úvodní nula není významná.

Aby se těmto problémům předešlo, musí být hodnota uzavřena v jednoduchých uvozovkách, jak je znázorněno níže.

INSERT INTO `members` (`full_names`,`gender`,`physical_address`,`contact_number`) VALUES ('Sheldon Cooper','Male','Woodcrest', '0976736763');

⚠️ Tip: Telefonní čísla, PSČ a podobné identifikátory ukládejte do textového sloupce, například VARCHAR. Číselné sloupce nemohou mít úvodní nulu.

Změna pořadí sloupců

Změna pořadí sloupců nemá žádný vliv na dotaz INSERT v MySQL, pokud byly správné hodnoty namapovány na správné sloupce. Níže uvedený dotaz tento bod demonstruje.

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í. Datum musí být uzavřeno 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');

Vynechání seznamu sloupců

Všechny výše uvedené dotazy pojmenovaly sloupce a namapovaly je na hodnoty. Pokud zadáme hodnoty pro VŠECHNY sloupce v tabulce, lze seznam sloupců z tabulky vynechat. MySQL vložit dotaz.

INSERT INTO `members` VALUES (9,'Howard Wolowitz','Male','1981-08-24',
'SouthPark','P.O. Box 4563', '0987786553', 'lwolowitz@email.me');

Pojďme nyní použít příkaz SELECT zobrazit všechny řádky v tabulce členů.

SELECT * FROM `members`;
členské číslo celá_ jména rod datum narození fyzická adresa poštovní_ adresa číslo_kontaktu e-mail
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 kontaktní číslo Leonarda Hofstadtera ztratilo úvodní nulu, přesně jak bylo předpovězeno. Uvedená čísla si ji zachovala.

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;

Nyní vytvoříme fiktivní tabulku pro kategorie filmů s názvem categories_archive. Skript 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`))

Spusťte výše uvedený skript pro vytvoření tabulky. Nyní vložme všechny řádky z tabulky kategorií do tabulky archivu kategorií.

INSERT INTO `categories_archive` SELECT * FROM `categories`;

Aby skript fungoval, musí být struktury tabulek stejné. Robustnější skript mapuje názvy sloupců v cílové tabulce na názvy sloupců v tabulce obsahující data, jak je znázorněno níže.

INSERT INTO `categories_archive`(category_id,category_name,remarks) SELECT category_id,category_name,remarks FROM `categories`;

Spuštění níže uvedeného dotazu SELECT dává následující výsledky.

SELECT * FROM `categories_archive`;
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 z PHP. Spouští příkazy Insert, Select, Update a Delete stejným způsobem a má následující syntaxi.

mysqli_query($db_handle,$query);

TADY,

  • „mysqli_query(…)“ je funkce, která provádí dotazy SQL.
  • „$query“ je SQL dotaz, který má být proveden.
  • „$db_handle“ je odkaz na připojení k serveru vrácený funkcí mysqli_connect.

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);
}

Nejčastější dotazy

MySQL odmítne jej s chybou duplicitního záznamu. Použijte INSERT IGNORE pro tiché přeskočení řádku nebo INSERT … ON DUPLICATE KEY UPDATE pro aktualizaci existujícího řádku.

Spusťte SELECT LAST_INSERT_ID() hned po vložení, nebo zavolejte mysqli_insert_id($conn) v PHP. Vrátí klíč AUTO_INCREMENT vygenerovaný pro poslední řádek na vašem vlastním připojení.

Nikdy neřetězte uživatelský vstup do řetězce dotazu. Používejte připravené příkazy s vázanými parametry, aby hodnoty putovaly odděleně od SQL a nelze je spustit jako příkazy.

Ano. Asistenti s umělou inteligencí převádějí tabulky nebo prosté popisy na příkazy INSERT a MySQL Workbench lze je spustit. Zkontrolujte pořadí sloupců a citace, protože model může uhodnout schéma.

Nejprve jej vložte do vývojové kopie. Řádky generované umělou inteligencí mohou poškodit cizí klíče, překročit délku sloupců nebo vymyslet neplatná data. Spusťte dávku v transakci, aby bylo možné ji vrátit zpět.

Shrňte tento příspěvek takto: