값이 Postgresl에 이미 존재하지 않는 경우 행 삽입

Insert Row If Values Don T Already Exist Postgresl



데이터베이스 관리 시스템을 알고 조작함으로써 우리는 데이터베이스에 대한 변경에 익숙해졌습니다. 여기에는 일반적으로 특정 테이블에 적용된 함수 생성, 삽입, 업데이트 및 삭제가 포함됩니다. 현재 기사에서는 삽입 방법으로 데이터를 관리하는 방법을 살펴보겠습니다. 삽입을 원하는 테이블을 생성해야 합니다. Insert 문은 테이블 행에 새 데이터를 추가하는 데 사용됩니다. PostgreSQL 삽입 문은 쿼리의 성공적인 실행을 위한 몇 가지 규칙을 다룹니다. 먼저 테이블 이름 다음에 행을 삽입하려는 열 이름(속성)을 언급해야 합니다. 둘째, VALUE 절 뒤에 쉼표로 구분하여 값을 입력해야 합니다. 마지막으로 모든 값은 특정 테이블을 생성하는 동안 제공되는 속성 목록의 순서와 동일한 순서여야 합니다.

통사론

>> 끼워 넣다 안으로TABLENAME(열 1,) 가치 ('값1', '값2');

여기서 열은 테이블의 속성입니다. 키워드 VALUE는 값을 입력하는 데 사용됩니다. '값'은 입력할 테이블의 데이터입니다.







PostgreSQL 셸(psql)에 행 함수 삽입

postgresql을 성공적으로 설치한 후 데이터베이스 이름, 포트 번호 및 비밀번호를 입력합니다. Psql이 시작됩니다. 그런 다음 각각 쿼리를 수행합니다.





예 1: INSERT를 사용하여 테이블에 새 레코드 추가
구문에 따라 다음 쿼리를 생성합니다. 테이블에 행을 삽입하기 위해 customer라는 테이블을 생성합니다. 각 테이블에는 3개의 열이 있습니다. 특정 열의 데이터 유형은 해당 열에 데이터를 입력하고 중복을 피하기 위해 언급되어야 합니다. 테이블 생성 쿼리는 다음과 같습니다.





>> 창조하다 테이블고객(ID정수,이름 바르차르 (40), 국가바르차르 (40));

테이블을 만든 후에는 별도의 쿼리에 수동으로 행을 삽입하여 데이터를 입력합니다. 먼저 속성과 관련된 특정 열의 데이터 정확도를 유지하기 위해 열 이름을 언급합니다. 그런 다음 값이 입력됩니다. 값은 변경 없이 삽입되어야 하므로 단일 쉼표로 인코딩됩니다.



>> 끼워 넣다 ~ 안으로고객(ID,이름, 국가) 가치 ('1','알리아', '파키스탄');

삽입에 성공할 때마다 출력은 0 1이 되며, 이는 한 번에 1개의 행이 삽입됨을 의미합니다. 앞서 언급한 쿼리에서는 데이터를 4번 삽입했습니다. 결과를 보기 위해 다음 쿼리를 사용합니다.

>> 선택하다*~에서고객;

예 2: 단일 쿼리에 여러 행을 추가할 때 INSERT 문 사용
동일한 접근 방식이 데이터를 삽입하는 데 사용되지만 삽입 문을 여러 번 도입하지 않습니다. 특정 쿼리를 사용하여 한 번에 데이터를 입력합니다. 한 행의 모든 ​​값은 다음 쿼리를 사용하여 필요한 출력을 얻습니다.

예 3: 다른 테이블의 숫자를 기반으로 한 테이블의 여러 행 INSERT
이 예는 한 테이블에서 다른 테이블로 데이터를 삽입하는 것과 관련이 있습니다. 두 개의 테이블, 및 b를 고려하십시오. 테이블 a에는 2개의 속성, 즉 이름과 클래스가 있습니다. CREATE 쿼리를 적용하여 테이블을 소개합니다. 테이블 생성 후 삽입 쿼리를 사용하여 데이터를 입력합니다.

>> 창조하다 테이블에게(이름 바르차르 (30),수업 바르차르 (40));
>> 끼워 넣다 ~ 안으로에게가치 ('암나',1),('비슈마','2'),('자베드',''),('아래에',4');

초과 이론을 사용하여 4개의 값이 테이블에 삽입됩니다. select 문을 사용하여 확인할 수 있습니다.

유사하게, 우리는 모든 이름과 주제의 속성을 갖는 테이블 b를 생성할 것입니다. 동일한 2개의 쿼리가 해당 테이블에서 레코드를 삽입하고 가져오는 데 적용됩니다.

>> 창조하다 테이블NS(모든 이름 varchar(30), 주제 varchar(70));

이론을 선택하여 레코드를 가져옵니다.

>> 선택하다*~에서NS;

테이블의 값을 삽입하려면 NS 표에서는 다음 쿼리를 사용합니다. 이 쿼리는 테이블의 모든 이름이 NS 테이블에 삽입됩니다 에게 테이블의 각 열에서 특정 숫자의 발생 횟수를 나타내는 숫자 계산 NS . b.allnames는 테이블을 지정하는 객체 함수를 나타냅니다. Count(b.allnames) 함수는 총 발생 횟수를 계산하는 기능을 합니다. 모든 이름이 한 번에 발생하므로 결과 열에는 1개의 숫자가 있습니다.

>> 끼워 넣다 ~ 안으로에게(이름,수업) 선택하다b.allnames, 개수(b.allnames) ~에서NS그룹 ~에 의해b.모든 이름;

예 4: 존재하지 않는 경우 행에 데이터 INSERT
이 쿼리는 행이 없는 경우 행을 입력하는 데 사용됩니다. 먼저 제공된 쿼리는 행이 이미 존재하는지 여부를 확인합니다. 이미 존재하는 경우 데이터가 추가되지 않습니다. 데이터가 행에 없으면 새 삽입이 보류됩니다. 여기서 tmp는 일정 기간 동안 데이터를 저장하는 데 사용되는 임시 변수입니다.

>> 끼워 넣다 ~ 안으로NS(이름, 주제) 선택하다*~에서 (선택하다'킨자'같이모든 이름, '이슬라미아트'같이주제) 같이시간어디 ~ 아니다 존재 ( 선택하다모든 이름~에서NS어디모든 이름='순두스'한계 1);

예 5: INSERT 문을 사용한 PostgreSQL Upsert
이 함수에는 두 가지 종류가 있습니다.

  • 업데이트: 충돌이 발생하면 레코드가 테이블의 기존 데이터와 일치하면 새 데이터로 업데이트됩니다.
  • 충돌이 발생하면 아무 조치도 취하지 마십시오. : 레코드가 테이블의 기존 데이터와 일치하면 레코드를 건너뛰거나 오류가 발견되면 무시됩니다.

처음에는 몇 가지 샘플 데이터로 테이블을 구성합니다.

>> 창조하다 테이블tbl2(ID지능 일 순위 열쇠,이름 다양한 캐릭터);

테이블을 생성한 후 쿼리를 사용하여 tbl2에 데이터를 삽입합니다.

>> 끼워 넣다 안으로tbl2가치 (1,'우즈마'),(2,'압둘'),(,'함나'),(4,'파티마'),(5,'shiza'),(6,'자베리아');

충돌이 발생하면 업데이트:

>>끼워 넣다 안으로tbl2가치 (8,'타다') 갈등(ID) 하다 업데이트 세트 이름=제외 된.이름;

먼저 id 8의 충돌 쿼리와 Rida라는 이름을 사용하여 데이터를 입력합니다. 동일한 ID 다음에 동일한 쿼리가 사용됩니다. 이름이 변경됩니다. 이제 테이블의 동일한 ID에서 이름이 어떻게 변경되는지 알 수 있습니다.

>> 끼워 넣다 안으로tbl2가치 (8,'일하다') 갈등(ID) 하다 업데이트 세트 이름 =제외 된.이름;

ID 8에 충돌이 있음을 발견하여 지정된 행이 업데이트되었습니다.

충돌이 발생하면 아무 조치도 취하지 마십시오.

>> 끼워 넣다 안으로tbl2가치 (9,'Hira') 갈등(ID) 하다 아무것도 아님;

이 쿼리를 사용하여 새 행이 삽입됩니다. 그런 다음 동일한 쿼리를 사용하여 발생한 충돌을 확인합니다.

>>끼워 넣다 안으로tbl2가치 (9,'Hira') 갈등(ID) 하다 아무것도 아님;

위의 이미지에 따르면 INSERT 0 0 쿼리를 실행한 후 입력된 데이터가 없음을 알 수 있습니다.

결론

데이터베이스 관계의 중복성을 줄이기 위해 데이터가 존재하지 않거나 레코드가 발견된 경우 삽입이 완료되지 않은 테이블에 행을 삽입하는 개념을 간략하게 살펴보았습니다.