Chèn hàng nếu giá trị chưa tồn tại trong Postgresl

Insert Row If Values Don T Already Exist Postgresl



Biết và sử dụng các hệ quản trị cơ sở dữ liệu đã làm cho chúng ta quen thuộc với các thay đổi về cơ sở dữ liệu. Thường liên quan đến việc tạo, chèn, cập nhật và xóa các chức năng được áp dụng trên các bảng cụ thể. Trong bài viết hiện tại, chúng ta sẽ xem cách dữ liệu được quản lý bằng phương pháp chèn. Chúng ta phải tạo một bảng mà chúng ta muốn chèn. Câu lệnh Insert được sử dụng để bổ sung dữ liệu mới trong các hàng của bảng. Câu lệnh chèn PostgreSQL bao gồm một số quy tắc để thực hiện thành công một truy vấn. Đầu tiên chúng ta phải đề cập đến tên bảng, sau đó là tên cột (thuộc tính) nơi chúng ta muốn chèn hàng. Thứ hai, chúng ta phải nhập các giá trị, được phân tách bằng dấu phẩy sau mệnh đề GIÁ TRỊ. Cuối cùng, mọi giá trị phải theo thứ tự giống như chuỗi danh sách thuộc tính được cung cấp trong khi tạo một bảng cụ thể.

Cú pháp

>> CHÈN VÀO TRONGTABLENAME(cột1,cột) GIÁ TRỊ ('Value1', 'value2');

Ở đây, một cột là các thuộc tính của bảng. Từ khóa VALUE được sử dụng để nhập giá trị. ‘Giá trị’ là dữ liệu của các bảng được nhập.







Chèn các hàm hàng trong trình bao PostgreSQL (psql)

Sau khi cài đặt thành công postgresql, chúng ta sẽ nhập tên cơ sở dữ liệu, số cổng và mật khẩu. Psql sẽ được khởi tạo. Sau đó chúng tôi sẽ thực hiện các truy vấn tương ứng.





Ví dụ 1: Sử dụng INSERT để thêm bản ghi mới vào bảng
Theo cú pháp, chúng tôi sẽ tạo truy vấn sau. Để chèn một hàng trong bảng, chúng ta sẽ tạo một bảng có tên là khách hàng. Bảng tương ứng chứa 3 cột. Kiểu dữ liệu của các cột cụ thể nên được đề cập để nhập dữ liệu vào cột đó và tránh dư thừa. Truy vấn để tạo bảng là:





>> tạo ra bànkhách hàng(TôiNS,Tên varchar (40), Quốc giavarchar (40));

Sau khi tạo bảng, bây giờ chúng ta sẽ nhập dữ liệu bằng cách chèn các hàng theo cách thủ công trong các truy vấn riêng biệt. Đầu tiên, chúng tôi đề cập đến tên cột để duy trì tính chính xác của dữ liệu trong các cột cụ thể liên quan đến thuộc tính. Và sau đó, các giá trị sẽ được nhập. Các giá trị được mã hóa bằng các dấu phẩy đơn lẻ, vì chúng sẽ được chèn vào mà không có bất kỳ thay đổi nào.



>> chèn vào trongkhách hàng(Tôi,Tên, Quốc gia) giá trị ('1',‘Alia’, ‘Pakistan’);

Sau mỗi lần chèn thành công, kết quả đầu ra sẽ là 0 1, nghĩa là mỗi lần chèn 1 hàng. Trong truy vấn như đã đề cập trước đó, chúng tôi đã chèn dữ liệu 4 lần. Để xem kết quả, chúng tôi sẽ sử dụng truy vấn sau:

>> lựa chọn*từkhách hàng;

Ví dụ 2: Sử dụng câu lệnh INSERT để thêm nhiều hàng trong một truy vấn
Cách tiếp cận tương tự được sử dụng trong việc chèn dữ liệu nhưng không giới thiệu các câu lệnh chèn nhiều lần. Chúng tôi sẽ nhập dữ liệu cùng một lúc bằng cách sử dụng một truy vấn nhất định; tất cả các giá trị của một hàng được phân tách bằng cách Sử dụng truy vấn sau, chúng tôi sẽ đạt được kết quả đầu ra cần thiết

Ví dụ 3: CHÈN nhiều hàng trong một bảng dựa trên các số trong bảng khác
Ví dụ này liên quan đến việc chèn dữ liệu từ bảng này sang bảng khác. Hãy xem xét hai bảng, a và b. Bảng a có 2 thuộc tính, tức là tên và lớp. Bằng cách áp dụng truy vấn CREATE, chúng tôi sẽ giới thiệu một bảng. Sau khi tạo bảng, dữ liệu sẽ được nhập bằng cách sử dụng truy vấn chèn.

>> tạo ra bànđến(Tên varchar (30),lớp varchar (40));
>> Chèn vào trongđếngiá trị ('Amna',1),('bhishma', '2'),('Javed', '3'),('Xuống',4');

Bốn giá trị được chèn vào bảng bằng lý thuyết vượt quá. Chúng tôi có thể kiểm tra bằng cách sử dụng các câu lệnh chọn lọc.

Tương tự, chúng ta sẽ tạo bảng b, có các thuộc tính của tất cả các tên và chủ thể. 2 truy vấn giống nhau sẽ được áp dụng để chèn và tìm nạp bản ghi từ bảng tương ứng.

>> tạo ra bànNS(allnames varchar(30), chủ đề varchar(70));

Tìm nạp bản ghi theo lý thuyết chọn.

>> lựa chọn*từNS;

Để chèn các giá trị của bảng NS trong bảng, chúng tôi sẽ sử dụng truy vấn sau. Truy vấn này sẽ hoạt động theo cách mà tất cả các tên trong bảng NS sẽ được chèn vào bảng đến với việc đếm các số hiển thị số lần xuất hiện của một số cụ thể trong cột tương ứng của bảng NS . b. tất cả các tên đại diện cho chức năng đối tượng để chỉ định bảng. Hàm Count (b.allnames) hoạt động để đếm tổng số lần xuất hiện. Vì mọi tên được xuất hiện cùng một lúc nên cột kết quả sẽ có 1 số.

>> Chèn vào trongđến(Tên,lớp) lựa chọnb. tất cả các tên, số lượng(b. tất cả các tên) từNStập đoàn quab. tên gọi;

Ví dụ 4: CHÈN dữ liệu trong các hàng nếu không tồn tại
Truy vấn này được sử dụng để nhập các hàng nếu nó không có. Trước hết, truy vấn được cung cấp sẽ kiểm tra xem hàng đã có hay chưa. Nếu nó đã tồn tại, thì dữ liệu sẽ không được thêm vào. Và nếu dữ liệu không có trong một hàng, việc chèn mới sẽ được giữ lại. Ở đây tmp là một biến tạm thời được sử dụng để lưu trữ dữ liệu trong một thời gian nào đó.

>> chèn vào trongNS(tất cả các tên, chủ đề) lựa chọn*từ (lựa chọn‘Kinza’nhưtất cả các tên, 'islamiat'nhưchủ thể) nhưtmpở đâu không phải tồn tại ( lựa chọntất cả các têntừNSở đâutất cả các tên=‘Sundus’giới hạn 1);

Ví dụ 5: PostgreSQL Upsert bằng câu lệnh INSERT
Chức năng này có hai loại:

  • Cập nhật: nếu xung đột xảy ra, nếu bản ghi khớp với dữ liệu hiện có trong bảng, nó được cập nhật với dữ liệu mới.
  • Nếu xung đột xảy ra, không làm gì cả : Nếu một bản ghi khớp với dữ liệu hiện có trong bảng, nó sẽ bỏ qua bản ghi hoặc nếu lỗi được tạo ra, nó cũng bị bỏ qua.

Ban đầu, chúng ta sẽ tạo một bảng với một số dữ liệu mẫu.

>> TẠO RA BÀNtbl2(TÔINS SƠ CẤP CHÌA KHÓA,Tên CHỮA NHÂN VẬT);

Sau khi tạo bảng, chúng tôi sẽ chèn dữ liệu vào tbl2 bằng cách sử dụng truy vấn:

>> CHÈN VÀO TRONGtbl2GIÁ TRỊ (1,'uzma'),(2,'bắt cóc'),(3,'Hamna'),(4,'fatima'),(5,'shiza'),(6,'javeria');

Nếu xung đột xảy ra, Cập nhật:

>>CHÈN VÀO TRONGtbl2GIÁ TRỊ (số 8,'Lái') TRÊNCUỘC XUNG ĐỘT(TÔI) LÀM CẬP NHẬT BỘ Tên=Đã loại trừ.Tên;

Đầu tiên, chúng tôi sẽ nhập dữ liệu bằng cách sử dụng truy vấn xung đột của id 8 và tên Rida. Cùng một truy vấn sẽ được sử dụng theo cùng một id; tên sẽ được thay đổi. Bây giờ bạn sẽ nhận thấy tên sẽ được thay đổi như thế nào trên cùng một id trong bảng.

>> CHÈN VÀO TRONGtbl2GIÁ TRỊ (số 8,'Công việc') TRÊNCUỘC XUNG ĐỘT(TÔI) LÀM CẬP NHẬT BỘ Tên =Đã loại trừ.Tên;

Chúng tôi nhận thấy rằng đã có xung đột trên id 8, vì vậy hàng được chỉ định được cập nhật.

Nếu xung đột xảy ra, không làm gì cả

>> CHÈN VÀO TRONGtbl2GIÁ TRỊ (9,'Hira') TRÊNCUỘC XUNG ĐỘT(TÔI) LÀM KHÔNG CÓ GÌ;

Sử dụng truy vấn này, một hàng mới được chèn vào. Sau đó, chúng tôi sẽ sử dụng nếu cùng một truy vấn để xem xung đột đã xảy ra.

>>CHÈN VÀO TRONGtbl2GIÁ TRỊ (9,'Hira') TRÊNCUỘC XUNG ĐỘT(TÔI) LÀM KHÔNG CÓ GÌ;

Theo hình trên, bạn sẽ thấy rằng sau khi thực hiện truy vấn INSERT 0 0 hiển thị không có dữ liệu nào được nhập vào.

Phần kết luận

Chúng ta đã xem qua khái niệm hiểu biết về việc chèn các hàng trong bảng mà dữ liệu không có mặt hoặc việc chèn không được hoàn thành, nếu tìm thấy bất kỳ bản ghi nào, để giảm dư thừa trong các quan hệ cơ sở dữ liệu.