У цьому підручнику ми збираємось навчитися використовувати SQL в PL / SQL. SQL - це фактичний компонент, який дбає про отримання та оновлення даних у базі даних, тоді як PL / SQL - компонент, який обробляє ці дані. Далі, у цій статті ми також обговоримо, як поєднати SQL в блоці PL / SQL.
У цьому підручнику ви дізнаєтесь-
- Вставка даних
- Оновлення даних
- Видалення даних
- Вибір даних
DML-транзакції в PL / SQL
DML розшифровується як мова керування даними . Ці твердження в основному використовуються для здійснення маніпуляційної діяльності. Він стосується наступних операцій.
- Вставка даних
- Оновлення даних
- Видалення даних
- Вибір даних
У PL / SQL ми можемо обробляти дані лише за допомогою команд SQL.
Вставка даних
У PL / SQL ми можемо вставити дані в будь-яку таблицю за допомогою команди SQL INSERT INTO. Ця команда прийме ім'я таблиці, значення стовпця та стовпця таблиці як вхідні дані та вставить значення в базову таблицю.
Команда INSERT також може приймати значення безпосередньо з іншої таблиці, використовуючи оператор 'SELECT', а не надаючи значення для кожного стовпця. За допомогою оператора 'SELECT' ми можемо вставити стільки рядків, скільки містить базова таблиця.
Синтаксис:
BEGININSERT INTO( , ,… )VALUES( ,… : );END;
- У наведеному вище синтаксисі показано команду INSERT INTO. Ім'я та значення таблиці є обов'язковими полями, тоді як імена стовпців не є обов'язковими, якщо оператори вставки мають значення для всіх стовпців таблиці.
- Ключове слово "ЦІННОСТІ" є обов'язковим, якщо значення подаються окремо, як показано вище.
Синтаксис:
BEGININSERT INTO( , ,… , )SELECT , ,… FROM ;END;
- У наведеному вище синтаксисі показано команду INSERT INTO, яка приймає значення безпосередньо з
за допомогою команди SELECT. - У цьому випадку ключове слово "ЦІННОСТІ" не повинно бути, оскільки значення не подаються окремо.
Оновлення даних
Оновлення даних просто означає оновлення значення будь-якого стовпця в таблиці. Це можна зробити за допомогою оператора 'UPDATE'. Цей вислів приймає за вхідні дані назву таблиці, назву стовпця та значення та оновлює дані.
Синтаксис:
BEGIN UPDATESET = , = , = WHERE ;END;
- У наведеному вище синтаксисі показано ОНОВЛЕННЯ. Ключове слово 'SET' вказує механізму PL / SQL оновити значення стовпця із заданим значенням.
- Застереження "WHERE" є необов’язковим. Якщо цього пункту не вказано, то значення згаданого стовпця у всій таблиці буде оновлено.
Видалення даних
Видалення даних означає видалення одного повного запису з таблиці бази даних. Для цього використовується команда 'DELETE'.
Синтаксис:
BEGINDELETEFROMWHERE ;END;
- У наведеному вище синтаксисі показано команду DELETE. Ключове слово "FROM" є необов'язковим і з реченням "FROM" або без нього команда поводиться однаково.
- Застереження "WHERE" є необов’язковим. Якщо цього пункту не вказано, вся таблиця буде видалена.
Вибір даних
Проеціювання / отримання даних означає отримання необхідних даних з таблиці бази даних. Цього можна досягти за допомогою команди 'SELECT' із реченням 'INTO'. Команда 'SELECT' отримає значення з бази даних, а речення 'INTO' призначить ці значення локальній змінній блоку PL / SQL.
Нижче наведені пункти, які потрібно врахувати в операторі 'SELECT'.
- Оператор 'SELECT' повинен повертати лише один запис, використовуючи речення 'INTO', оскільки одна змінна може містити лише одне значення. Якщо оператор "SELECT" повертає більше одного значення, ніж "TOO_MANY_ROWS", буде викликано виняток.
- Оператор 'SELECT' присвоює значення змінній у реченні 'INTO', тому для заповнення значення йому потрібно отримати принаймні один запис із таблиці. Якщо він не отримав жодного запису, тоді буде вилучено виняток "NO_DATA_FOUND".
- Кількість стовпців та їх тип даних у реченні 'SELECT' повинні збігатися з кількістю змінних та їх типами даних у реченні 'INTO'.
- Значення отримуються та заповнюються в тому самому порядку, як зазначено у заяві.
- Застереження WHERE є необов’язковим, що дозволяє мати більше обмежень щодо записів, які збираються отримати.
- Оператор "SELECT" може бути використаний в умові "WHERE" інших операторів DML для визначення значень умов.
- Оператор 'SELECT' при використанні операторів 'INSERT', 'UPDATE', 'DELETE' не повинен мати речення 'INTO', оскільки в цих випадках він не заповнює жодну змінну.
Синтаксис:
BEGINSELECT,… INTO ,… FROM WHERE ;END;
- У наведеному вище синтаксисі показано команду SELECT-INTO. Ключове слово "FROM" є обов'язковим, яке визначає ім'я таблиці, з якої потрібно отримати дані.
- Застереження "WHERE" є необов’язковим. Якщо цього пункту не вказано, будуть отримані дані з усієї таблиці.
Приклад 1 : У цьому прикладі ми побачимо, як виконувати операції DML в PL / SQL. Ми збираємось вставити чотири записи в таблицю emp.
EMP_NAME | EMP_NO | ПЛАТА | МЕНЕДЖЕР |
BBB | 1000 | 25000 | AAA |
XXX | 1001 | 10000 | BBB |
РРР | 1002 | 10000 | BBB |
ZZZ | 1003 | 7500 | BBB |
Тоді ми збираємось оновити заробітну плату "XXX" до 15000, і ми збираємось видалити запис працівника "ZZZ". Нарешті, ми збираємось спроектувати деталі співробітника "XXX".
DECLAREl_emp_name VARCHAR2(250);l_emp_no NUMBER;l_salary NUMBER;l_manager VARCHAR2(250);BEGIN INSERT INTO emp(emp_name,emp_no,salary,manager)VALUES(‘BBB’,1000,25000,’AAA’);INSERT INTO emp(emp_name,emp_no,salary,manager)VALUES('XXX',1001,10000,’BBB);INSERT INTO emp(emp_name,emp_no,salary,managedVALUES(‘YYY',1002,10000,'BBB');INSERT INTO emp(emp_name,emp_no,salary,manager)VALUES(‘ZZZ',1003,7500,'BBB'):COMMIT;Dbms_output.put_line(‘Values Inserted');UPDATE EMPSET salary=15000WHERE emp_name='XXX';COMMIT;Dbms_output.put_line(‘Values Updated');DELETE emp WHERE emp_name='ZZZ';COMMIT:Dbms_output.put_line('Values Deleted );SELECT emp_name,emp_no,salary,manager INTO l_emp_name,l_emp_no,l_salary,l_manager FROM emp WHERE emp_name='XXX';Dbms output.put line(‘Employee Detail’);Dbms_output.put_line(‘Employee Name:‘||l_emp_name);Dbms_output.put_line(‘Employee Number:‘||l_emp_no);Dbms_output.put_line(‘Employee Salary:‘||l_salary);Dbms output.put line(‘Emplovee Manager Name:‘||l_manager):END;/
Вихід:
Values InsertedValues UpdatedValues DeletedEmployee DetailEmployee Name:XXXEmployee Number:1001Employee Salary:15000Employee Manager Name:BBB
Пояснення коду:
- Кодовий рядок 2-5 : Оголошення змінної.
- Рядок коду 7-14 : Вставка записів у таблицю emp.
- Рядок коду 15 : Фіксація транзакцій вставки.
- Рядок коду 17-19 : Оновлення заробітної плати працівника "XXX" до 15000
- Рядок коду 20 : Фіксація транзакції оновлення.
- Рядок коду 22 : Видалення запису "ZZZ"
- Кодовий рядок 23 : Фіксація транзакції видалення.
- Кодовий рядок 25-27 : Вибір запису "XXX" та заповнення змінної l_emp_name, l_emp_no, l_salary, l_manager.
- Кодовий рядок 28-32 : Відображення значення отриманих записів.