Oracle PL / SQL Insert, Update, Delete & Изберете в (Пример)

Съдържание:

Anonim

В този урок ще научим как да използваме 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, която взема стойностите директно от <име_таблица2>, използвайки командата SELECT.
  • Ключовата дума „СТОЙНОСТИ“ не трябва да присъства в този случай, тъй като стойностите не са дадени отделно.

Актуализиране на данни

Актуализацията на данните просто означава актуализация на стойността на която и да е колона в таблицата. Това може да се направи с помощта на израза „UPDATE“. Това изявление приема името на таблицата, името на колоната и стойността като вход и актуализира данните.

Синтаксис:

BEGIN UPDATE 
SET =,=,=WHERE ;END;
  • Горният синтаксис показва UPDATE. Ключовата дума 'SET' инструктира PL / SQL механизма да актуализира стойността на колоната с дадената стойност.
  • Клаузата „WHERE“ не е задължителна. Ако тази клауза не е дадена, тогава стойността на споменатата колона в цялата таблица ще бъде актуализирана.

Изтриване на данни

Изтриването на данни означава изтриване на един пълен запис от таблицата на базата данни. За тази цел се използва командата 'DELETE'.

Синтаксис:

BEGINDELETEFROM
WHERE ;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 : Показване на стойността на извлечените записи.