Як використовувати PL SQL Вставлення, оновлення, видалення та вибір виписки
how use pl sql insert
Цей підручник пояснює, як використовувати команди PL SQL INSERT, UPDATE, DELETE та SELECT із прикладами програмування:
У цій статті ми продовжимо PL / SQL серія . В PL / SQL Типи даних, константи та змінні Підручник, ми детально дізналися про типи даних PL, змінні, константи та літерали за допомогою прикладів програмування. Тут ми обговоримо оператори PL SQL DML та їх роботу.
Ми дослідимо команди PL SQL INSERT, DELETE, UPDATE і SELECT для обробки даних у таблицях PL / SQL.
Почнемо розуміти реалізацію команд INSERT, DELETE, UPDATE та SELECT у таблицях. У сукупності вони називаються операторами мови керування даними (DML).
Команда PL SQL INSERT
Оператор INSERT INTO використовується для вставки даних у таблицю. Це називається a Мова маніпулювання даними . Він використовує ім'я таблиці та імена та значення стовпців як вхідні дані та виконує вставку значень у таблицю.
Синтаксис:
INSERT INTO <
> VALUES (<>, <>, …..);
Ім'я таблиці та значення, які потрібно вставити, є обов'язковою частиною оператора PL SQL INSERT. За бажанням ми також можемо згадати імена стовпців, куди слід вставити значення.
Ми створили таблицю EMPLOYEE за допомогою наведеного нижче оператора SQL:
CREATE TABLE EMPLOYEE ( CODE INT NOT NULL, NAME VARCHAR (15) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (CODE) );
Впровадження коду за допомогою PL SQL INSERT:
BEGIN INSERT INTO EMPLOYEE VALUES (1, 'FLEX', 34); INSERT INTO EMPLOYEE VALUES (2, 'HARRY', 35); END
Результатом роботи вищезазначеного коду має бути:
SELECT * from EMPLOYEE;
ВСТАВИТИ У ВИБІР
ВСТАВИТИ У ВСІ СТОЛЬЦИ
INSERT INTO SELECT використовується для вставки рядків у таблицю, діючи на результат оператора SELECT. Може знадобитися отримати рядок із таблиці та вставити в іншу таблицю.
Синтаксис:
INSERT INTO <> (col1, col2, col3) SELECT col1, col2, col3 FROM <> WHERE condition;
Команда INSERT INTO SELECT потребує однакових типів даних джерела та цільової таблиці. Якщо нам потрібно скопіювати цілі рядки вихідної таблиці в цільову таблицю, ми можемо опустити умову WHERE.
Ми створили ще одну таблицю під назвою MANAGER за допомогою наведеного нижче оператора SQL:
CREATE TABLE MANAGER ( CODE INT NOT NULL, NAME VARCHAR (15) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (CODE) );
Знову розглянемо таблицю EMPLOYEE.
Впровадження коду за допомогою INSERT INTO SELECT .:
BEGIN INSERT INTO MANAGER (CODE, NAME, AGE) SELECT CODE, NAME, AGE FROM EMPLOYEE WHERE CODE = 1; END;
Вивід вищевказаного коду:
SELECT * from MANAGER;
ВСТАВИТИ ЧАСТИННІ ДАНІ
Ми також можемо вставити часткові дані в іншу таблицю. Спершу створимо ДЕТАЛІ МЕНЕДЖЕРА з таблиці EMPLOYEE із запитом нижче.
CREATE TABLE MANAGERDETAIL AS SELECT * FROM EMPLOYEE WHERE 1 = 0;
Ось, ДЕ 1 = 0 посилається на перший стовпець таблиці EMPLOYEE, який є CODE.
Далі ми будемо використовувати оператор INSERT INTO SELECT для продублювання даних із таблиці EMPLOYEE до таблиці MANAGERDETAIL.
Впровадження коду за допомогою INSERT INTO SELECT;
BEGIN INSERT INTO MANAGERDETAIL SELECT CODE, NAME, AGE FROM EMPLOYEE WHERE CODE! = 0 END;
Вивід вищевказаного коду:
SELECT * from MANAGERDETAIL;
У наведеному вище прикладі ми не згадували імена стовпців у команді INSERT, оскільки на виході команди SELECT є значення, які відповідають стовпцям таблиці MANAGERDETAIL. Крім того, ми включили умову до пункту WHERE.
ВСТАВІТЬ ЧАСТОВІ ДАНІ ТА ЛІТЕРАЛЬНІ
Ми можемо вставити часткові дані та буквальне значення в таблицю.
Спершу створимо таблицю MANAGERCONTACT з наступним запитом:
CREATE TABLE MANAGERCONTACT ( CODE INT NOT NULL, NAME VARCHAR (15) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (CODE) );
Тепер давайте знову скористаємося допомогою таблиці EMPLOYEE і спробуємо продублювати дані з таблиці EMPLOYEE до таблиці MANAGERCONTACT.
Впровадження коду за допомогою INSERT INTO:
BEGIN INSERT INTO MANAGERCONTACT (CODE, NAME, AGE) SELECT CODE, NAME, 0 FROM EMPLOYEE; END;
Вихід вищевказаного коду:
SELECT * from MANAGERCONTACT;
У наведеному вище прикладі ми отримали значення з таблиці EMPLOYEE, а також включили 0 літерала в оператор INSERT, який змінив значення стовпця AGE на 0 у таблиці MANAGERCONTACT.
ВСТАВИТИ ВСЕ
Оператор INSERT ALL використовується для додавання більше одного рядка в одну таблицю або кілька таблиць. Її також називають командою з кількома таблицями і вона буває двох типів умовною та безумовною.
# 1) БЕЗУМОВНЕ ВСТАВЛЕННЯ ВСІХ
Для вставки більше одного рядка в таблицю використовується оператор INSERT ALL.
Синтаксис:
INSERT ALL INTO <
> (c1, c2, c3) VALUES (v1, v2, v3) INTO <
> (c1, c2, c3) VALUES (v4, v5, v6) INTO <
> (c1, c2, c3) VALUES (v7, v8, v9)
Тут c1, c2 та c3 - назви стовпців, а v1, v2 та v3 - значення, які потрібно вставити. У випадку, ми маємо використовувати буквальне значення замість підзапиту; ми повинні використати наведений нижче запит:
SELECT * FROM dual;
Ми створили таблицю SOCCERPLAYERS за допомогою наведеного нижче оператора SQL:
CREATE TABLE SOCCERPLAYERS ( PLAYERID INT NOT NULL, NAME VARCHAR (15) NOT NULL, COUNTRY VARCHAR (15), PRIMARY KEY (PLAYERID) );
Впровадження коду за допомогою INSERT ALL:
BEGIN INSERT ALL INTO SOCCERPLAYERS (PLAYERID, NAME, COUNTRY) VALUES (4, 'DANIEL', 'USA') INTO SOCCERPLAYERS (PLAYERID, NAME, COUNTRY) VALUES (8, 'DANNY', 'ITALY') INTO SOCCERPLAYERS (PLAYERID, NAME, COUNTRY) VALUES (7, 'FRANK', 'FRANCE') SELECT 1 FROM dual; END;
Вихід вищевказаного коду:
SELECT * from SOCCERPLAYERS;
У наведеному вище прикладі в таблицю було вставлено одразу три рядки за допомогою команди INSERT ALL.
Щоб вставити більше одного рядка в кілька таблиць, використовується оператор INSERT ALL.
Синтаксис:
INSERT ALL INTO <> (c1, c2, c3) VALUES (v1, v2, v3) INTO <> (c1, c2, c3) VALUES (v4, v5, v6) INTO <> (c1, c2, c3) VALUES (v7, v8, v9) Subquery;
Тут c1, c2 та c3 - назви стовпців, а v1, v2 та v3 - значення, які потрібно вставити. Table_name1, table_name2 і table_name3 - це імена таблиць.
# 2) УМОВНЕ ВСТАВЛЕННЯ ВСІХ
Оператор INSERT ALL може вставляти в таблиці більше одного рядка, залежно від деяких умов.
Синтаксис:
INSERT (ALL | FIRST) WHEN cond1 THEN INTO table_name1 <> VALUES <> WHEN cond2 THEN INTO table_name2 <> VALUES <> ELSE INTO table_name3 <> VALUES <> Subquery;
Ключове слово ALL використовується, щоб вказати, що повинні бути виконані всі умови за реченням WHERE. Якщо умова виконана, буде виконуватися відповідне речення INTO.
Якщо використовується ключове слово FIRST, то для кожного окремого рядка, отриманого з підзапиту, Oracle виконує критерії в пункті WHEN зверху вниз. Як тільки умова буде виконана, відповідне речення INTO буде запускатись і переходити до іншого речення WHEN для цього рядка.
Ми створили таблиці VEHICLE, CARS, SMALLCARS та LARGECARS за допомогою наведених нижче операторів SQL:
CREATE TABLE VEHICLE ( CARID INT NOT NULL, NAME VARCHAR (15) NOT NULL, COLOR VARCHAR (15), PRIMARY KEY (CARID) );
Вставте наступні значення в таблицю VEHICLE:
INSERT INTO VEHICLE VALUES (1, 'AUDI', 'RED'); INSERT INTO VEHICLE VALUES (4, 'BMW', 'WHITE'); INSERT INTO VEHICLE VALUES (7, 'KIA', 'GREEN'); CREATE TABLE CARS ( CARID INT NOT NULL, NAME VARCHAR (15) NOT NULL, COLOR VARCHAR (15), PRIMARY KEY (CARID) ); CREATE TABLE SMALLCARS AS SELECT * FROM CARS; CREATE TABLE LARGECARS AS SELECT * FROM CARS;
Впровадження коду за допомогою INSERT ALL.
BEGIN INSERT ALL WHEN CARID = 1 THEN INTO CARS WHEN CARID = 4 THEN INTO SMALLCARS WHEN CARID = 7 THEN INTO LARGECARS SELECT CARID, NAME, COLOR FROM VEHICLE; END;
Вихід вищевказаного коду:
SELECT * from CARS;
SELECT * from SMALLCARS;
SELECT * from LARGECARS;
У наведеному вище прикладі в кожну з трьох таблиць було вставлено один рядок на основі значення CARDID.
Існують певні обмеження щодо оператора INSERT ALL:
Він використовується лише для вставки значень у таблиці. Це не працює з поглядами або матеріалізованими поглядами.
Він не здатний вставляти значення у віддалені таблиці.
Кількість стовпців, які може обробити команда INSERT INTO, не повинна перевищувати 999.
Вираз колекції таблиць не можна використовувати в команді INSERT із декількох таблиць.
Підзапит INSERT із кількома таблицями не може використовувати послідовність.
Команда оновлення PL PL
Оператор UPDATE використовується для модифікації значень у таблиці. Його ще називають а Мова маніпулювання даними . Він використовує імена таблиці, стовпця та значень як вхідні дані та виконує модифікацію значень у таблиці.
Синтаксис:
UPDATE <
> SET <>=<>, <>=<>,… WHERE <>;
Ключове слово SET використовується для зміни значення стовпця на нове значення. Необов’язково використовується ключове слово WHERE, якщо його пропустити, тоді значення вказаного стовпця в повній таблиці буде змінено.
ОНОВИТИ ОДНУ СТОЛБКУ РЯДКУ
Знову розглянемо таблицю EMPLOYEE.
Впровадження коду з UPDATE:
BEGIN UPDATE EMPLOYEE SET NAME = 'HENRY' WHERE CODE=1; END;
Вихід вищевказаного коду:
SELECT * from EMPLOYEE;
ОНОВЛЕННЯ БАГАТО СТОЛБЦІВ РЯДКУ
Знову розглянемо таблицю EMPLOYEE.
Впровадження коду з UPDATE:
BEGIN UPDATE EMPLOYEE SET NAME = 'COMO', AGE = 30 WHERE CODE=2; END;
Вихід вищевказаного коду:
SELECT * from EMPLOYEE;
ОНОВИТИ БАГАТО РЯДКІВ
Знову розглянемо таблицю EMPLOYEE.
Впровадження коду з UPDATE:
BEGIN UPDATE EMPLOYEE SET AGE = AGE +1; END;
Вивід вищевказаного коду:
SELECT * from EMPLOYEE;
У наведеному вище прикладі ВІК усіх працівників збільшився на 1.
Команда видалення PL SQL
Оператор DELETE використовується для видалення цілого запису з таблиці. Його ще називають а Мова маніпулювання даними.
Синтаксис:
DELETE FROM <
> WHERE <>;
Ключове слово FROM не є обов’язковим, і оператор DELETE повинен дати той самий результат, якщо FROM додано чи не додано до запиту. За бажанням використовується ключове слово WHERE, якщо його пропустити, тоді буде видалено повну таблицю.
BEGIN DELETE FROM MANAGERDETAIL WHERE CODE > 0; END;
Вивід вищевказаного коду:
SELECT * from MANAGERDETAIL;
ВИДАЛИТИ ЦІЛІ РЯДКИ З ТАБЛИЦИ
Знову розглянемо таблицю ТРАНСПОРТНИЙ ЗАСОБ.
Впровадження коду за допомогою DELETE:
BEGIN DELETE FROM VEHICLE; END;
Вивід вищевказаного коду:
SELECT * from VEHICLE;
PL SQL Команда вибору
Оператор SELECT використовується для отримання даних із бази даних. Оператор SELECT INTO використовується для отримання значень із бази даних та збереження їх до локальних змінних, введених PL / SQL.
Якщо ми використовуємо лише оператор SELECT, він повертає один запис. Якщо оператор SELECT отримує кілька значень, TOO_MANY_ROWS виняток створюється PL / SQL. Використовуючи оператор SELECT INTO, ми призначаємо змінній принаймні одне значення. Однак, якщо з бази даних не отримано жодного запису, файл ДАНИХ НЕ ЗНАЙДЕНО кинуто виняток.
Кількість стовпців та їх тип повинен дорівнювати кількості змінних та їх типу в ключовому слові INTO. Значення отримуються з бази даних у тій же послідовності, що визначена в операторі SELECT.
Ключове слово WHERE всередині оператора SELECT є необов’язковим і дозволяє нам отримувати записи, які відповідають певним критеріям. Важливо зазначити, що запит SELECT за допомогою команд DELETE, UPDATE та INSERT не має речення INTO.
Синтаксис:
SELECT <>, <>, ..<> INTO <>, <>, … <> FROM <
> WHERE <>;
ОТРИМАТИ ДАНІ З ВСІХ СТОЛЬЦІВ ТАБЛИЦИ
Знову розглянемо таблицю EMPLOYEE.
Впровадження коду за допомогою SELECT:
BEGIN SELECT * FROM EMPLOYEE WHERE CODE=1; END;
Вивід вищевказаного коду:
Реалізація коду з оператором SELECT, що видає виняток:
BEGIN SELECT * FROM EMPLOYEE WHERE CODE=2; END;
Вивід вищевказаного коду:
Виняток відсутність знайдених даних викидається, оскільки оператору SELECT не вдалося отримати рядок, що відповідає умові, оскільки в базі даних немає працівника з КОДОМ 2.
ОТРИМАТИ ДАНІ З КОЛОНКИ ТАБЛИЦИ
Знову розглянемо таблицю EMPLOYEE.
BEGIN SELECT CODE FROM EMPLOYEE; END;
Вихід вищевказаного коду:
ОТРИМАТИ ДАНІ З БІЛЬКОГО СТОЛБЦІВ СТОЛУ
Знову розглянемо таблицю EMPLOYEE.
BEGIN SELECT CODE, NAME FROM EMPLOYEE; END;
Вивід вищевказаного коду:
У наведеному вище прикладі в оператор SELECT було додано два стовпці CODE та NAME.
Часті запитання та відповіді
Q # 1) Що таке ВСТАВИТИ, ОНОВИТИ І ВИДАЛИТИ в SQL?
Відповідь: ВСТАВИТИ, ОНОВИТИ та ВИДАЛИТИ - це команди в SQL, які допомагають працювати та оновлювати дані. Оператор INSERT вставляє рядки в таблицю. Оператор DELETE видаляє рядки з таблиці, а оператор UPDATE оновлює значення в рядках таблиці.
Запитання №2) Чи можемо ми ВСТАВИТИ, ОНОВИТИ та ВИДАЛИТИ у вигляді в SQL?
Відповідь: Так, ми можемо ВСТАВИТИ, ОНОВИТИ І ВИДАЛИТИ з огляду на SQL. Якщо подання об’єдналося між таблицями, ми можемо виконувати лише дії ВСТАВКИ та ОНОВЛЕННЯ, але не можемо виконати операцію ВИДАЛЕННЯ. Оператор DROP використовується для видалення подання.
Запитання №3) ВСТАВЛЯЄТЬ DDL чи DML?
Відповідь: INSERT - це DML або мова керування даними). Інші оператори DML включають UPDATE, DELETE тощо. Оператор DDL здатний створювати таблиці, схему та базу даних.
Q # 4) Чи можемо ми використати JOIN IN запит на видалення?
Відповідь: Так, ми можемо використовувати оператор INNER JOIN в команді DELETE для видалення рядків з таблиці.
Q # 5) Яка різниця між командою усічення та видалення?
Відповідь: TRUNCATE - це оператор DDL, а DELETE - DML. Команда TRUNCATE здатна видалити повну таблицю. Це не зберігає цілісність таблиці. Оператор DELETE може видалити лише певні дані з таблиці. Він також може містити умови для видалення.
Q # 6) Що таке DML, DCL та DDL?
Відповідь: Оператори SQL бувають типів - DML, DCL та DML.
Мова визначення даних або DDL включає такі команди, як ALTER, DROP, CREATE, RENAME, TRUNCATE і COMMENT. Мова маніпулювання даними або DML включає такі команди, як INSERT, DELETE, MERGE, UPDATE, CALL, LOCK TABLE та EXPLAIN PLAN.
Мова управління даними або DCL включає такі команди, як GRANT та REVOKE.
Q # 7) Чи скорочення відбувається швидше, ніж падіння?
Відповідь: Так, операція TRUNCATE швидша, ніж DROP. Команда TRUNCATE видаляє лише дані з таблиці. Команда DROP стирає структуру таблиці та дані з таблиці.
Висновок
У цьому посібнику ми детально обговорили деякі основні поняття команд PL SQL, які є важливими для розвитку знань про нього. Ми розглянули наступні теми, перелічені нижче: