В этом руководстве мы узнаем, как использовать 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. Имя и значения таблицы являются обязательными полями, тогда как имена столбцов не являются обязательными, если операторы вставки имеют значения для всех столбцов таблицы.
- Ключевое слово VALUES является обязательным, если значения указаны отдельно, как показано выше.
Синтаксис:
BEGININSERT INTO( , ,… , )SELECT , ,… FROM ;END;
- В приведенном выше синтаксисе показана команда INSERT INTO, которая принимает значения непосредственно из
с помощью команды SELECT. - Ключевое слово "VALUES" не должно присутствовать в этом случае, так как значения не приводятся отдельно.
Обновление данных
Обновление данных просто означает обновление значения любого столбца в таблице. Это можно сделать с помощью оператора UPDATE. Этот оператор принимает имя таблицы, имя столбца и значение в качестве входных данных и обновляет данные.
Синтаксис:
BEGIN UPDATESET = , = , = WHERE ;END;
- Приведенный выше синтаксис показывает UPDATE. Ключевое слово «SET» указывает этому механизму PL / SQL обновить значение столбца заданным значением.
- Предложение WHERE не является обязательным. Если этот пункт не указан, то значение указанного столбца во всей таблице будет обновлено.
Удаление данных
Удаление данных означает удаление одной полной записи из таблицы базы данных. Для этого используется команда «УДАЛИТЬ».
Синтаксис:
BEGINDELETEFROMWHERE ;END;
- В приведенном выше синтаксисе показана команда УДАЛИТЬ. Ключевое слово 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 : Отображение значения выбранных записей.