Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Câu lệnh INSERT trong Oracle

Câu lệnh INSERT trong oracle là một lệnh DML (Ngôn ngữ thao tác dữ liệu). Nó được sử dụng để chèn các hàng mới vào bảng oracle trong cơ sở dữ liệu oracle

Syntax

INSERT INTO <table_name>
(col1, col2, ... column_n )
VALUES
(value1, value2, ... value_n );

Đây
tên_bảng :Bảng cần chèn các bản ghi mới
col1, col2 :là cột trong bảng
value1, value2…. :là các giá trị tương ứng với col1, col2… trong bảng

Chỉ một hàng được chèn với cú pháp này trong bảng

Giả sử bạn muốn nhập các bản ghi vào bảng EMP, sau đó

insert into emp (emp_id, emp_name,dept_id,first_name,last_name,salary)
values ('101','JOHN', 10,'JOHN' ,'ROGER', 3000);

Lưu ý quan trọng

  • Không cần thiết phải cung cấp tên cột trong trường hợp bạn đang chỉ định các giá trị theo đúng thứ tự và giá trị cho mỗi cột trong bảng được cung cấp
  • Bạn nên đặt dấu ngoặc kép xung quanh các giá trị ký tự.

Cách chèn giá trị Null vào bảng

Trong trường hợp chúng ta đặt giá trị null cho một vài cột, chúng ta có thể bỏ qua các cột trong lệnh insert

insert into emp (emp_id, emp_name,dept_id,salary)
values ('101','JOHN', 10, 3000);

Chèn bằng câu lệnh Chọn

Chúng ta cũng có thể chèn vào bảng bằng câu lệnh select

INSERT INTO <table_name>
(col1, col2, ... column_n ) select col1, col2, ... column_n from < table_name2>

Phương pháp này có thể được sử dụng để chèn vào nhiều hàng

  • Chúng tôi không cần sử dụng mệnh đề giá trị ở đây
  • Chúng tôi cần đối sánh cột trong phần chèn với truy vấn đã chọn để làm cho nó hoạt động
  • Không cần thiết phải cung cấp tên cột trong trường hợp bạn đang chỉ định các giá trị theo đúng thứ tự và giá trị cho mỗi cột trong bảng được cung cấp
Example
insert into emp_master (emp_id ,salary) 
select emp_id ,salary from emp;

INSERT INTO emp_master (emp_id ,salary) 
  WITH sal AS ( 
    SELECT 201,5000    FROM dual UNION ALL 
    SELECT 201, 10000   FROM dual UNION ALL 
    SELECT 204, 10004 FROM dual UNION ALL 
    SELECT 7, 5675476    FROM dual 
  ) 
  SELECT * FROM sal;


Chèn hàm ngày trong bảng

Giả sử chúng ta có một cột kiểu dữ liệu ngày oracle trong bảng, thì chúng ta có thể sử dụng hàm sysdate để nhập ngày vào câu lệnh insert

insert into emp (emp_id,emp_name,salary,hire_date) values 
( '10','JOHN',1000, sysdate);

insert into emp (emp_id,emp_name,salary,hire_date) values 
( '10','JOHN',1000, sysdate -1);

Hoặc nếu cần chỉ định ngày cụ thể, chúng ta có thể sử dụng định dạng chuẩn cho ngày ‘DD-MON-YYYY’.Với thời gian này được mặc định là nửa đêm

insert into emp (emp_id,emp_name,salary,hire_date) values 
( '10','JOHN',1000, '18-AUG-2018');

hoặc nếu chúng ta cần nhập dữ liệu ở định dạng khác trong một thời gian, chúng ta có thể sử dụng hàm to_date

insert into emp (emp_id,emp_name,salary,hire_date) values 
( '10','JOHN',1000, TO_DATE('2018/08/18 01:02:44', 'yyyy/mm/dd hh24:mi:ss'));

Oracle insert all statement

Câu lệnh chèn tất cả của Oracle giúp chúng ta thêm nhiều hàng trong bảng trong một lần hoặc chúng ta có thể thêm nhiều hàng trong các bảng khác nhau với cùng một câu lệnh chèn

Cú pháp cho một bảng

INSERT ALL INTO
<table_name> (col1, col2, ... column_n ) VALUES (value1, value2, ... value_n )
<table_name> (col1, col2, ... column_n ) VALUES (value1, value2, ... value_n )
<table_name> (col1, col2, ... column_n ) VALUES (value1, value2, ... value_n )
SELECT * FROM dual;

Cú pháp cho nhiều bảng

INSERT ALL INTO
<table_name1> (col1, col2, ... column_n ) VALUES (value1, value2, ... value_n )
<table_name2> (col1, col2, ... column_n ) VALUES (value1, value2, ... value_n )
<table_name3> (col1, col2, ... column_n ) VALUES (value1, value2, ... value_n )
SELECT * FROM dual;

Điều này tương đương với

INSERT  INTO <table_name> (col1, col2, ... column_n ) VALUES (value1, value2, ... value_n );
INSERT  INTO <table_name> (col1, col2, ... column_n ) VALUES (value1, value2, ... value_n )
INSERT  INTO <table_name> (col1, col2, ... column_n ) VALUES (value1, value2, ... value_n )

Ví dụ

insert all into
emp (emp_id, emp_name,dept_id,first_name,last_name,salary) values ('101','JOHN', 10,'JOHN' ,'ROGER', 2000)
emp (emp_id, emp_name,dept_id,first_name,last_name,salary) values ('102','SMITH', 10,'JOHN' ,'ROGER', 3000)
emp (emp_id, emp_name,dept_id,first_name,last_name,salary) values ('103','BILL', 10,'JOHN' ,'ROGER', 4000)
SELECT * FROM dual;

insert all into
emp (emp_id, emp_name,dept_id,first_name,last_name,salary) values ('101','JOHN', 10,'JOHN' ,'ROGER', 2000)
dept (dept_no, dept_name,dept_location) values ('20','BILLING', 'NEWYORK)
emp (emp_id, emp_name,dept_id,first_name,last_name,salary) values ('103','BILL', 10,'JOHN' ,'ROGER', 4000)
SELECT * FROM dual;

chèn tất cả các câu lệnh cũng có thể được sử dụng theo cách dưới đây

insert all 
 INTO emp (emp_id, emp_name,dept_id,salary) values (id,name, dept_no, sal)
 INTO dept (dept_no, dept_name,dept_location) values (dept_no,dept_name,location)
 WITH names AS ( 
     SELECT 4 id, 'John' name,10 dept_no,'LABOUR' dept_name,'INDIA' location, 45000 sal    FROM dual UNION ALL 
     SELECT 5 id, 'Mac' name,20 dept_no,'FIRE' dept_name,'INDIA' location, 567000 sal   FROM dual UNION ALL 
     SELECT 6 id, 'Ruth' name,30 dept_no,'HEALTH' dept_name,'INDIA' location, 5600 sal FROM dual UNION ALL 
     SELECT 8 id, 'bill' name,40 dept_no,'WATER' dept_name,'INDIA' location, 158750 sal     FROM dual 
   ) 
   SELECT * FROM names ;

Có thể sử dụng câu lệnh điều kiện trong câu lệnh insert all

insert all 
 WHEN 1=1 THEN 
 INTO emp (emp_id, emp_name,dept_id,salary) values (id,name, dept_no, sal)
 WHEN dept_no IS NOT NULL THEN 
 dept (dept_no, dept_name,dept_location) values (dept_no,dept_name,location)
 WITH names AS ( 
     SELECT 4 id, 'John' name,10 dept_no,'LABOUR' dept_name,'INDIA' location, 45000 sal    FROM dual UNION ALL 
     SELECT 5 id, 'Mac' name,20 dept_no,'FIRE' dept_name,'INDIA' location, 567000 sal   FROM dual UNION ALL 
     SELECT 6 id, 'Ruth' name,30 dept_no,'HEALTH' dept_name,'INDIA' location, 5600 sal FROM dual UNION ALL 
     SELECT 8 id, 'bill' name,40 dept_no,'WATER' dept_name,'INDIA' location, 158750 sal     FROM dual 
     SELECT 9 id, 'July' name,NULL dept_no,NULL dept_name,NULL location, 158750 sal     FROM dual 
   ) 
   SELECT * FROM names ;

Tôi hy vọng bạn thích nội dung này trên câu lệnh chèn trong oracle. Tôi đã giải thích nhiều cách khác nhau để thực hiện các thao tác chèn trong bảng với nhiều ví dụ.

Các bài viết có liên quan

Câu lệnh cập nhật trong oracle:Chúng tôi sử dụng câu lệnh Cập nhật trong oracle để sửa đổi các hàng hiện có trong bảng oracle trong cơ sở dữ liệu oracle. Cập nhật có thể được thực hiện theo nhiều cách
Xóa khỏi bảng trong Oracle:Xóa khỏi bảng trong oracle được sử dụng để xóa các hàng. XÓA các hàng có thể được thực hiện bằng mệnh đề EXISTS / NOT EXISTS, bảng dựa trên truy vấn con, phân tầng
Cách thay đổi bảng trong Oracle:Bảng thay thế trong oracle được sử dụng để sửa đổi một cột, thả và thêm các ràng buộc, thay đổi kiểu dữ liệu của cột trong bảng, thay đổi các thông số lưu trữ bảng
Cách thay đổi bảng thêm oracle cột:Thông tin chi tiết hữu ích về Cách thay đổi bảng thêm oracle cột. Thông tin chi tiết về tính năng thêm cột nhanh được giới thiệu trong oracle 11g cũng được cung cấp
tài liệu Oracle về chèn


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách di chuyển tệp từ thư mục này sang thư mục khác bằng PL SQL

  2. Phương pháp thu thập:Hàm LIMIT trong Cơ sở dữ liệu Oracle

  3. ORA-01830:hình ảnh định dạng ngày kết thúc trước khi chuyển đổi toàn bộ chuỗi đầu vào / Chọn tổng trong đó truy vấn ngày

  4. Oracle:Nếu bảng tồn tại

  5. Ví dụ về giao dịch tự trị của Oracle