В этом уроке мы узнаем, как использовать SQL в PL / SQL. SQL является фактическим компонентом, который заботится о получении и обновлении данных в базе данных, тогда как PL / SQL является компонентом, который обрабатывает эти данные. Далее в этой статье мы также обсудим, как объединить SQL в блоке PL / SQL.
В этом уроке вы узнаете
Транзакции DML в PL / SQL
DML расшифровывается как Data Manipulation Language . Эти заявления в основном используются для выполнения манипуляционной деятельности. Это касается следующих операций.
- Вставка данных
- Обновление данных
- Удаление данных
- Выбор данных
В PL / SQL мы можем манипулировать данными только с помощью команд SQL.
Вставка данных
В PL / SQL мы можем вставить данные в любую таблицу, используя команду SQL INSERT INTO. Эта команда примет имя таблицы, столбец таблицы и значения столбца в качестве входных данных и вставит значение в базовую таблицу.
Команда INSERT также может получать значения непосредственно из другой таблицы, используя инструкцию SELECT, а не указывать значения для каждого столбца. С помощью оператора SELECT мы можем вставить столько строк, сколько содержится в базовой таблице.
Синтаксис:
BEGIN INSERT INTO <table_name>(<column1 >,<column2>,...<column_n>) VALUES(<valuel><value2>,...:<value_n>); END;
- Приведенный выше синтаксис показывает команду INSERT INTO. Имя и значения таблицы являются обязательными полями, тогда как имена столбцов не являются обязательными, если операторы вставки имеют значения для всех столбцов таблицы.
- Ключевое слово «VALUES» является обязательным, если значения указаны отдельно, как показано выше.
Синтаксис:
BEGIN INSERT INTO <table_name>(<columnl>,<column2>,...,<column_n>) SELECT <columnl>,<column2>,.. <column_n> FROM <table_name2>; END;
- Приведенный выше синтаксис показывает команду INSERT INTO, которая получает значения непосредственно из <table_name2> с помощью команды SELECT.
- Ключевое слово «VALUES» не должно присутствовать в этом случае, так как значения не приводятся отдельно.
Обновление данных
Обновление данных просто означает обновление значения любого столбца в таблице. Это можно сделать с помощью оператора UPDATE. Этот оператор принимает имя таблицы, имя столбца и значение в качестве ввода и обновляет данные.
Синтаксис:
BEGIN UPDATE <table_name> SET <columnl>=<VALUE1>,<column2>=<value2>,<column_n>=<value_n> WHERE <condition that uniquely identifies the record that needs to be update>; END;
- Приведенный выше синтаксис показывает ОБНОВЛЕНИЕ. Ключевое слово «SET» указывает движку PL / SQL обновить значение столбца на указанное значение.
- Предложение WHERE является необязательным. Если этот пункт не указан, то значение упомянутого столбца во всей таблице будет обновлено.
Удаление данных
Удаление данных означает удаление одной полной записи из таблицы базы данных. Для этого используется команда «УДАЛИТЬ».
Синтаксис:
BEGIN DELETE FROM <table_name> WHERE <condition that uniquely identifies the record that needs to be update>; 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», так как в этих случаях он не будет заполнять никакие переменные.
Синтаксис:
BEGIN SELECT <columnl>,..<column_n> INTO <vanable 1 >,. .<variable_n> FROM <table_name> WHERE <condition to fetch the required records>; END;
- Приведенный выше синтаксис показывает команду SELECT-INTO. Ключевое слово «FROM» является обязательным, оно идентифицирует имя таблицы, из которой необходимо извлечь данные.
- Предложение WHERE является необязательным. Если это условие не задано, будут получены данные из всей таблицы.
Пример 1. В этом примере мы увидим, как выполнять операции DML в PL / SQL. Мы собираемся вставить следующие четыре записи в таблицу emp.
EMP_NAME | EMP_NO | ЗАРПЛАТА | УПРАВЛЯЮЩИЙ ДЕЛАМИ |
ВВВ | 1000 | 25000 | AAA |
XXX | 1001 | 10000 | ВВВ |
YYY | 1002 | 10000 | ВВВ |
ZZZ | 1003 | 7500 | ВВВ |
Затем мы собираемся обновить зарплату «XXX» до 15000, и мы собираемся удалить запись сотрудника «ZZZ». Наконец, мы собираемся спроектировать детали сотрудника «XXX».
DECLARE l_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,managed VALUES(‘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 EMP SET salary=15000 WHERE 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; /
Output:
Values Inserted Values Updated Values Deleted Employee Detail Employee Name:XXX Employee Number:1001 Employee Salary:15000 Employee Manager Name:BBB
Code Explanation:
- Code line 2-5: Declaring the variable.
- Code line 7-14: Inserting the records into emp table.
- Code line 15: Committing the insert transactions.
- Code line 17-19: Updating the salary of the employee ‘XXX’ to 15000
- Code line 20: Committing the update transaction.
- Code line 22: Deleting the record of ‘ZZZ’
- Code line 23: Committing the delete transaction.
- Code line 25-27: Selecting the record of ‘XXX’ and populating into the variable l_emp_name, l_emp_no, l_salary, l_manager.
- Code line 28-32: Displaying the fetched records value.