Oracle PL / SQL Chèn, Cập nhật, Xóa & Chọn vào (Ví dụ)

Mục lục:

Anonim

Trong hướng dẫn này, chúng ta sẽ học cách sử dụng SQL trong PL / SQL. SQL là thành phần thực tế đảm nhận việc tìm nạp và cập nhật dữ liệu trong cơ sở dữ liệu trong khi PL / SQL là thành phần xử lý các dữ liệu này. Hơn nữa, trong bài viết này, chúng ta cũng sẽ thảo luận về cách kết hợp SQL trong khối PL / SQL.

Trong hướng dẫn này, bạn sẽ học-

  • Chèn dữ liệu
  • Cập nhật dữ liệu
  • Xóa dữ liệu
  • Lựa chọn dữ liệu

Giao dịch DML trong PL / SQL

DML là viết tắt của Data Manipulation Language . Các câu lệnh này được sử dụng chủ yếu để thực hiện hoạt động thao tác. Nó giải quyết các hoạt động dưới đây.

  • Chèn dữ liệu
  • Cập nhật dữ liệu
  • Xóa dữ liệu
  • Lựa chọn dữ liệu

Trong PL / SQL, chúng ta có thể thực hiện thao tác dữ liệu chỉ bằng cách sử dụng các lệnh SQL.

Chèn dữ liệu

Trong PL / SQL, chúng ta có thể chèn dữ liệu vào bất kỳ bảng nào bằng lệnh SQL INSERT INTO. Lệnh này sẽ lấy tên bảng, cột bảng và các giá trị của cột làm đầu vào và chèn giá trị vào bảng cơ sở.

Lệnh INSERT cũng có thể lấy các giá trị trực tiếp từ một bảng khác bằng cách sử dụng câu lệnh 'SELECT' thay vì đưa ra các giá trị cho mỗi cột. Thông qua câu lệnh 'SELECT', chúng ta có thể chèn nhiều hàng như bảng cơ sở chứa.

Cú pháp:

BEGININSERT INTO 
(,,… )VALUES(,… :);END;
  • Cú pháp trên hiển thị lệnh INSERT INTO. Tên bảng và giá trị là trường bắt buộc, trong khi tên cột không bắt buộc nếu câu lệnh chèn có giá trị cho tất cả cột của bảng.
  • Từ khóa 'VALUES' là bắt buộc nếu các giá trị được cung cấp riêng biệt như được hiển thị ở trên.

Cú pháp:

BEGININSERT INTO 
(,,… ,)SELECT ,,…  FROM 
;END;
  • Cú pháp trên cho thấy lệnh INSERT INTO lấy các giá trị trực tiếp từ bằng cách sử dụng lệnh SELECT.
  • Từ khóa 'VALUES' không được xuất hiện trong trường hợp này vì các giá trị không được cung cấp riêng biệt.

Cập nhật dữ liệu

Cập nhật dữ liệu chỉ đơn giản là cập nhật giá trị của bất kỳ cột nào trong bảng. Điều này có thể được thực hiện bằng cách sử dụng câu lệnh 'UPDATE'. Câu lệnh này lấy tên bảng, tên cột và giá trị làm đầu vào và cập nhật dữ liệu.

Cú pháp:

BEGIN UPDATE 
SET =,=,=WHERE ;END;
  • Cú pháp trên hiển thị CẬP NHẬT. Từ khóa 'SET' hướng dẫn công cụ PL / SQL đó cập nhật giá trị của cột với giá trị đã cho.
  • Mệnh đề 'WHERE' là tùy chọn. Nếu điều khoản này không được đưa ra, thì giá trị của cột được đề cập trong toàn bộ bảng sẽ được cập nhật.

Xóa dữ liệu

Xóa dữ liệu có nghĩa là xóa một bản ghi đầy đủ khỏi bảng cơ sở dữ liệu. Lệnh 'DELETE' được sử dụng cho mục đích này.

Cú pháp:

BEGINDELETEFROM
WHERE ;END;
  • Cú pháp trên hiển thị lệnh DELETE. Từ khóa 'FROM' là tùy chọn và có hoặc không có mệnh đề 'FROM' thì lệnh sẽ hoạt động theo cùng một cách.
  • Mệnh đề 'WHERE' là tùy chọn. Nếu điều khoản này không được đưa ra, thì toàn bộ bảng sẽ bị xóa.

Lựa chọn dữ liệu

Phép chiếu / tìm nạp dữ liệu có nghĩa là lấy dữ liệu cần thiết từ bảng cơ sở dữ liệu. Điều này có thể đạt được bằng cách sử dụng lệnh 'SELECT' với mệnh đề 'INTO'. Lệnh 'SELECT' sẽ lấy các giá trị từ cơ sở dữ liệu và mệnh đề 'INTO' sẽ gán các giá trị này cho biến cục bộ của khối PL / SQL.

Dưới đây là những điểm cần được xem xét trong câu lệnh "SELECT".

  • Câu lệnh 'SELECT' chỉ nên trả về một bản ghi trong khi sử dụng mệnh đề 'INTO' vì một biến chỉ có thể chứa một giá trị. Nếu câu lệnh 'SELECT' trả về nhiều hơn một giá trị thì ngoại lệ 'TOO_MANY_ROWS' sẽ được nâng lên.
  • Câu lệnh 'SELECT' sẽ gán giá trị cho biến trong mệnh đề 'INTO', vì vậy nó cần lấy ít nhất một bản ghi từ bảng để điền giá trị. Nếu nó không nhận được bất kỳ bản ghi nào, thì ngoại lệ 'NO_DATA_FOUND' sẽ được nâng lên.
  • Số lượng cột và kiểu dữ liệu của chúng trong mệnh đề "SELECT" phải khớp với số lượng biến và kiểu dữ liệu của chúng trong mệnh đề "INTO".
  • Các giá trị được tìm nạp và điền theo thứ tự như đã đề cập trong câu lệnh.
  • Mệnh đề 'WHERE' là tùy chọn cho phép có nhiều hạn chế hơn đối với các bản ghi sẽ được tìm nạp.
  • Câu lệnh 'SELECT' có thể được sử dụng trong điều kiện 'WHERE' của các câu lệnh DML khác để xác định các giá trị của điều kiện.
  • Câu lệnh "SELECT" khi sử dụng câu lệnh "INSERT", "UPDATE", "DELETE" không được có mệnh đề "INTO" vì nó sẽ không điền bất kỳ biến nào trong những trường hợp này.

Cú pháp:

BEGINSELECT ,…  INTO ,… FROM 
WHERE ;END;
  • Cú pháp trên hiển thị lệnh SELECT-INTO. Từ khóa 'FROM' là bắt buộc để xác định tên bảng mà từ đó dữ liệu cần được tìm nạp.
  • Mệnh đề 'WHERE' là tùy chọn. Nếu mệnh đề này không được đưa ra, thì dữ liệu từ toàn bộ bảng sẽ được tìm nạp.

Ví dụ 1 : Trong ví dụ này, chúng ta sẽ xem cách thực hiện các hoạt động DML trong PL / SQL. Chúng tôi sẽ chèn bốn bản ghi dưới đây vào bảng trống.

EMP_NAME EMP_NO TIỀN LƯƠNG GIÁM ĐỐC
BBB 1000 25000 AAA
XXX 1001 10000 BBB
YYY 1002 10000 BBB
ZZZ 1003 7500 BBB

Sau đó, chúng tôi sẽ cập nhật mức lương 'XXX' lên 15000 và chúng tôi sẽ xóa hồ sơ nhân viên 'ZZZ'. Cuối cùng, chúng tôi sẽ chiếu các chi tiết của nhân viên '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;/

Đầu ra:

Values InsertedValues UpdatedValues DeletedEmployee DetailEmployee Name:XXXEmployee Number:1001Employee Salary:15000Employee Manager Name:BBB

Giải thích mã:

  • Dòng mã 2-5 : Khai báo biến.
  • Dòng mã 7-14 : Chèn các bản ghi vào bảng trống.
  • Dòng mã 15 : Thực hiện các giao dịch chèn.
  • Dòng mã 17-19 : Cập nhật mức lương của nhân viên 'XXX' lên 15000
  • Dòng mã 20 : Đang thực hiện giao dịch cập nhật.
  • Dòng mã 22 : Xóa bản ghi của 'ZZZ'
  • Dòng mã 23 : Đang thực hiện giao dịch xóa.
  • Dòng mã 25-27 : Chọn bản ghi 'XXX' và điền vào biến l_emp_name, l_emp_no, l_salary, l_manager.
  • Dòng mã 28-32 : Hiển thị giá trị bản ghi đã tìm nạp.