본문 바로가기
SQL/postgres

[DB/postgres] postgres 컬럼 업데이트 및 튜플 추가방법

by Pendine 2025. 1. 9.
728x90
postgres 간단요약
DB명이나 테이블명을 사용할때 어떤 컬럼의 자료형으로 들어갈때는 ' (작은따옴표).
컬럼으로써 호출할때는 " (큰따옴표) 를 사용하자

 

 

pgadmin4 이용하는데

데이터 추가하는데 데이터가 계속 추가가 안됌

INSERT INTO "스키마명"."테이블명"
( "id", "password", "del_YN", "initDate")
VALUES ( "test1", "testpw1", false, "2024-01-09");
//----------------------------------------------
ERROR:  "test1" 이름의 칼럼은 없습니다
LINE 3: VALUES ( "test1", "testpw1", false, "2024-01-09");
                 ^ 
오류:  "test1" 이름의 칼럼은 없습니다
SQL state: 42703
Character: 90
//----------------------------------------------


//----------------------------------------------
INSERT INTO "스키마명"."테이블명"
( "id", "password", "del_YN", "initDate")
VALUES ( 'test1', 'testpw1', false, '2024-01-09');
//----------------------------------------------
ERROR:  배열값은 "{" 또는 배열 깊이 정보로 시작되어야 합니다비정상적인 배열 문자: "test1" 

오류:  비정상적인 배열 문자: "test1"
SQL state: 22P02
Detail: 배열값은 "{" 또는 배열 깊이 정보로 시작되어야 합니다
Character: 90
//----------------------------------------------

//----------------------------------------------
INSERT INTO "스키마명"."테이블명"
( "id", "password", "del_YN", "initDate")
VALUES ( {test1}, {testpw1}, false, '2024-01-09');
//----------------------------------------------
ERROR:  구문 오류, "{" 부근
LINE 3: VALUES ( {test1}, {testpw1}, false, '2024-01-09');
                 ^ 
오류:  구문 오류, "{" 부근
SQL state: 42601
Character: 90
//----------------------------------------------

 

데이터 추가시 성공했던 쿼리

//----------------------------------------------
INSERT INTO "스키마명"."테이블명"
( "id", "password", "del_YN", "initDate")
VALUES ( '{test1}', '{testpw1}', false, '2024-01-09');

INSERT 0 1

Query returned successfully in 39 msec.
//----------------------------------------------
select result
1	"{t}"	"{t}"		false	"2024-01-09"

추가하고 보니 데이터 들어간 상태가 이상함

=> 예상 원인이 무료라고 무턱대고 처음 사용하는 postgres 의 생소한 pgAdmin4 이용해서 컬럼생성시

     컬럼 타입에 char[] 이라는걸 선택해서라고 생각함

 

 

컬럼 변경 시도 SQL

----------------------------------------------------

alter table "스키마명"."테이블명"
alter column id type VARCHAR(300);

alter table "스키마명"."USER"
alter column id type VARCHAR(300);

alter table "스키마명"."USER"
alter column password type VARCHAR(300);

alter table "스키마명"."USER" 
alter column "userDescript" type VARCHAR(300);

먼저 정보를 찾아보고 실행했던 쿼리라서 잘됐음

 

 

삽입했던 데이터 업데이트 SQL

//------------------------------------
update "스키마명"."테이블명"
set id='test1',
	password='testpw1'
where "userIndex"=1;
---------------------------------
UPDATE 1

Query returned successfully in 34 msec.
//---------------------------------------
update "스키마명"."테이블명"
set id="test1",
	password='testpw1'
where "userIndex"=1;
-----------------------------------------
ERROR:  "test1" 이름의 칼럼은 없습니다
LINE 2: set id="test1",
               ^ 

오류:  "test1" 이름의 칼럼은 없습니다
SQL state: 42703
Character: 41

업데이트도 한번에 잘 안됐음

 

스키마 사용하는것도 sql로 해보니까

use가 아니라 set schema '스키마 명'

이라고 써야함

성공
set schema '스키마명';
---------------------
 SET

 Query returned successfully in 43 msec.


--------------------------------------------------

실패
set schema "스키마명";
---------------------
 ERROR:  구문 오류, ""스키마명"" 부근
 LINE 1: set schema "스키마명";
                    ^ 

 오류:  구문 오류, ""스키마명"" 부근
 SQL state: 42601
 Character: 12

 


postgres 최종요약

입력한 문자열을 어떤 컬럼의 자료형으로 들어갈때는 ' (작은따옴표).

컬럼으로써 호출할때는 " (큰따옴표) 를 사용하는것 같다

 

 

컬럼명을 찾아보니까 기본적으로 모두 소문자로 취급한다고 한다.

컬럼명을 카멜케이스로 지어버려서 호출할때 부득이하게 큰따옴표, 작은따옴표를 사용하게 되면서

이부분을 확인하느라 시간을 많이 할애해버렸다.

포스트그레스 DB의 테이블 컬럼 정의시 카멜케이스보다는

스네이크케이스를 사용하는게 맞는 것 같다.

728x90

댓글