Úvod do MySQL
Hlavním cílem databázového systému je ukládat data do tabulek. Pro definování funkčnosti v databázi máme různé druhy příkazů SQL. V tomto tématu se dozvíme o Insert v MySQL.
Příkazy SQL lze rozdělit do následujících kategorií:
- DDL (jazyk pro definici dat)
- DML (jazyk pro manipulaci s daty)
- DQL (jazyk datového dotazu)
- DCL (jazyk pro kontrolu dat)
- TCL (Transaction control language)
Zde v tomto článku se zaměříme hlavně na DML. Jak vidíme název Data Manipulation language, tak jakmile je vytvořena tabulka / databáze, něco manipulovat, vyžadujeme příkazy DML. Výhodou použití těchto příkazů je to, že v případě, že dojde k nesprávným změnám, můžeme je vrátit / vrátit zpět.
V DML jsou příkazy:
1. VLOŽIT: Slouží k vložení nových řádků do tabulky.
INSERT into employee
Values(101, 'abcd');
2. DELETE: Slouží k odstranění jednoho řádku nebo celých záznamů v tabulce.
DELETE TABLE employee;
3. AKTUALIZACE: Slouží k aktualizaci existujících záznamů v tabulce.
UPDATE employee
SET col1 = new_col
WHERE condition;
Syntaxe příkazu Insert v MySQL
Příkaz INSERT INTO můžeme psát následujícími dvěma způsoby.
Cesta č. 1
INSERT INTO table_name
VALUES (value1, value2, ….);
Cesta č. 2
INSERT INTO table_name (column1, column2, …….)
VALUES (value1, value2, ….);
- INSERT INTO table_name je příkaz, který přidá nový řádek do tabulky s názvem `table_name` v databázi MySQL.
- (column_1, column_2, …) jsou názvy sloupců, do kterých bude přidán nový záznam.
- VALUES (value_1, value_2, …) určuje hodnoty, které se mají přidat do nového řádku.
Při přidávání nových záznamů musíme být opatrní při definování typů dat při vytváření struktury tabulky.
- Řetězec: Všechny hodnoty řetězce by měly být uzavřeny jednoduchými uvozovkami.
- Numeric: Numerické hodnoty by neměly být uzavřeny v jednoduchých ani dvojitých uvozovkách.
- Datum: Tyto datové typy by měly být v jediné nabídce ve formátu „RRRR-MM-DD“.
Uvažujme, že existuje „zaměstnanecká“ tabulka sestávající z následujících atributů:
Emp_id | Emp_name | Telefon | E-mailem | oddělení | Manažer | Město |
1001 | Vinay | 9876543219 | CSR | Sudhir | Bangalore | |
1002 | Raaj | 9764527848 | TO | Stephen | Hyderabad | |
1003 | Sakti | 9567382784 | Automobilový průmysl | Ved | Bhubaneswar |
Pokud přidáváme hodnoty pro všechny sloupce tabulky, nemusíme v dotazu specifikovat názvy sloupců, ale musíme se ujistit, že náš nový záznam by měl následovat sled sloupců, jak je definován v tabulce.
INSERT INTO employee
VALUES (1004, 'Ravi', 9856478398, ' ', 'marketing', 'shiv', 'kolkata');
Pokud nemáme všechny hodnoty sloupců a některé z nich vložíme, musíme do dotazu zadat názvy sloupců.
INSERT INTO employee (emp_id, emp_name, phone, email, manager)
VALUES (1005, 'sam', 9856478398, ' ', 'shivankar');
Implementace příkazu Insert v MySQL
Uvažujme, že máme následující seznamy nových záznamů, které je potřeba přidat do databázové tabulky STUDENT.
Roll_no | Jméno | Příjmení | Standard | Telefon | Procento | Město |
1 | Sandeep | Kumar | 10 | 9876456726 | 89, 33 | Cuttack |
2 | Shyam | 9 | 76 | Bhubaneswar | ||
3 | Sakti | Naik | 6463765776 | 76 | ||
4 | Sid | 8 | 9864876986 | Kalkata | ||
5 | Vinay | Kumar | 10 | 92 |
Tyto řádky vložíme jeden po druhém do databáze.
- Začněme Sandeepem. Zde jsou 'Roll_no', 'Standard', 'Phone' a 'Percentage' numerická pole, takže hodnoty v tomto sloupci budou vloženy bez uvozovek.
INSERT INTO student
VALUES (1, 'Sandeep', 'Kumar', 10, 9876456726, 89.33, 'Cuttack');
Poznámka: Protože máme hodnoty všech sloupců tabulky studentů, nemusíme při použití příkazu INSERT specifikovat název sloupce. Musíme se však ujistit, že naše hodnota by měla odpovídat pořadí sloupců v tabulce.
- V případě záznamu Shyam můžeme vidět, že mnoho hodnot chybí. Zde musíme zadat názvy sloupců, do kterých chceme hodnoty vložit.
INSERT INTO student (Roll_no, First_name, Standard, Percentage, City)
VALUES (2, 'Shyam', 9, 76, 'Bhubaneswar');
Poznámka: V tomto záznamu nemáme hodnoty každého sloupce. Proto musíme specifikovat všechny názvy sloupců, do kterých chceme vložit naše hodnoty, a v pořadí těchto názvů sloupců musíme také uvést hodnoty.
INSERT INTO student (Roll_no, First_name, Last_name, Phone, Percentage)
VALUES (3, 'Sakti', 'naik', 6463765776, 76);
INSERT INTO student (Roll_no, First_name, Standard, Phone, City)
VALUES (4, 'Sid', 8, 9864876986, 'Kolkata');
INSERT INTO student (Roll_no, First_name, Last_name, standard, Percentage)
VALUES (5, 'Vinay', 'Kumar', 10, 92);
Změna pořadí sloupců a hodnoty nebude mít žádný vliv na dotaz INSERT, protože správnou hodnotu nelze mapovat do pravého sloupce. Mohou tedy nastat problémy, jako je vložení číselné hodnoty do řetězce nebo naopak.
Ve všech výše uvedených dotazech chybí tolik polí jako Příjmení, Telefon, Město. V takových případech tedy MySQL vloží výchozí hodnoty NULL do sloupců, které jsme v dotazech přeskočili.
Vložení do tabulky z jiné tabulky
Pokud existují 2 podobné tabulky a chceme vložit data z tabulky_1 do tabulky_2 přímo, abychom se vyhnuli ruční práci, můžeme také použít jiný typ dotazu INSERT. V takovém případě musíme použít příkaz SELECT s příkazem INSERT. Příkaz SELECT v zásadě spadá pod jazyk DQL (Data Query Language), který se používá pro získávání / načítání dat. Příkaz select lze použít také s mnoha typy klauzí.
Základní syntaxe pro vkládání záznamů do jedné tabulky z druhé je následující:
INSERT INTO table_1 SELECT * FROM table_2;
Příklad
Podívejme se na níže uvedený příklad:
1. Tabulka objednávek
Objednávka číslo | Order_department | Jméno zákazníka | Kontaktní číslo | Množství | Místo |
8465637 | Nábytek | Petr | 8659876766 | 1000 | Dillí |
9473636 | Ozdoby | Alexi | 9863769898 | 800 | Bombaj |
2. Order_archive Table
Objednávka číslo | Order_department | Jméno zákazníka | Kontaktní číslo | Množství | Místo |
Zde máme 2 tabulky s názvem Order and Order_archive. Pokud přesuneme všechny záznamy z tabulky Order do Order_archive, úkol může provést následující kód:
INSERT INTO Order_archive SELECT * FROM Order;
Pokud chceme přesunout některé konkrétní sloupce z tabulky Order do Order_archive, pak:
INSERT INTO Order_archive (Order_no, Order_department, Contact_no, Quantity)
SELECT Order_no, Order_department, Contact_no, Quantity FROM Order;
Závěr
Příkaz Insert je velmi užitečný, protože přichází ke hře od okamžiku vytvoření tabulky do pokaždé, kdykoli do stávající tabulky přidáme další záznamy. Z tohoto článku můžeme shrnout následující body:
- Příkaz INSERT slouží k přidání nových dat do tabulky.
- Hodnota data a řetězce by měla být v jedné nabídce.
- Číselná hodnota by neměla být v uvozovkách.
- Při vkládání záznamů do konkrétních sloupců by měl být název a hodnota sloupce mapována ve stejném pořadí.
- Tento příkaz lze také použít k vložení záznamů z jedné tabulky do jiné tabulky.
Doporučené články
Toto je průvodce pro vložení do MySQL. Zde diskutujeme implementaci příkazu Insert v MySQL spolu s příslušnými příklady a syntaxí. Můžete se také podívat na následující článek.
- Co je MySQL Schema?
- Funkce MySQL String
- Co je MySQL?
- Jak nainstalovat MySQL
- Příklady implementace INSERT v Oracle