PostgresSQL/PostgresSQL 수강일지

[수강일지_22] Database,PostgreSQL 설치 , 함수, select 1(from)

jamk-diary 2026. 6. 10. 17:59

프로그램은 server, client 로 나눠진다. 

serve :  데이터를 받아서 넘겨주는 역할 -> 1개 

client:  데이터를 보내는 역할 -> 필요에 따라 계속해서 생성

 

그렇다면, 통신을 할 때 필요한 것은? 

바로 ip! -> internet Protocol 

 

 

cmp 명령 프롬포트 

ipconfig ->ip 주소확인 가능 

 

client 하나당 ip 주소 확인 가능 

 

thread

메모장을 입력할 때 아무것도 입력하지 않은 상태에서도 커서가 깜빡인다 

이때 컴퓨터는 멈춰있는 것이 아니라 계속해서 주고 받는 행위를 하고 있는 것이다. 

"언제 입력할 거예요 언제 입력할 거예요? 나 준비 됐어요!"

 

왜 ? 서버는 클라이언트가 언제 보낼지 모르는 상태이기 때문 그래서 thread를 계속 돌려주면서 상시 대기 상태에 있는 것이다 

 

ip주소, port 넘버, therad 가 어떻게 작용하는지 무엇인지 알아두는 것이 좋다.

 ip주소 -> z컴퓨터를 구별한다 

port 넘버-> 프로세스를 구별 

우선 wep 서버와 spring 서버만 다룰 예정 

 


https://blog.naver.com/kknd4444/224021321112
 

PostgreSQL 설치하기 가이드

먼저 PostgreSQL 공식 웹사이트에서 설치 파일을 다운로드해야 합니다. 아래 링크를 클릭하여 다운로드...

blog.naver.com


강사님 블로그 

 

 

PostgreSQL 설치하기 가이드

먼저 PostgreSQL 공식 웹사이트에서 설치 파일을 다운로드해야 합니다. 아래 링크를 클릭하여 다운로드...

blog.naver.com

강사님 블로그 

PostgreSQL 설치 

PostgreSQL: The world's most advanced open source database 

 

 

PostgreSQL

The world's most advanced open source database.

www.postgresql.org

Downlodad -> window -> Download the installer ->    Windows x86-64 클릭 후 다운로드 진행 

 

다운로드 확인 완료 -> 파일 우클릭 2번
next
next

 

next
next

 

pasword -> 1234 / retype pasword -> 1234

 

port -> 5432

 

local - default

 

next

 

next 누르면 설치 진행 된다

 

설치 진행 완료 -> 체크박스 해제 후 finsh

 

PostgreSQL 실행 

window -> 모든 앱 -> PostgreSQL 더보기 (아래쪽 화살표 클릭) -> pgAdmin 실행
정상적으로 실행 됨을 확인 할 수 있다
Severs 앞 > 기호 클릭

 

 

password 설치시 입력했던 1234 입력후 ok 클릭

데이터베이시스 -> 포스트 그레스 -> 스키마 (데이터 베이스 안에서 사용될 수 있는 오브젝트) 

procedures -> 피엘이라고 한다 : java 에서 언어(문법) 배우고 함수를 배우듯이 함수식으로 만들 수 있는 것 

functions -> 기능 

trigger functions->자동호출 되는 기능

tables -> 

a. Database sessions

서버 세션 또는 데이터베이스 세션 그래프는 서버 또는 데이터베이스에 대한 연결을 표시합니다. 서버 또는 데이터베이스의 총 세션 수, 활성 세션 수, 유휴 세션 수를 보여줍니다.



b. Transactions per seconds

초당 트랜잭션 그래프 는 서버나 데이터베이스에서 발생하는 커밋 , 롤백, 초당 총 트랜잭션을 보여줍니다 .



c. Tuples in

그래프의 튜플은 서버 나 데이터베이스에 삽입, 업데이트, 삭제된 튜플의 수를 표시합니다.



d. Tuples out

튜플 출력 그래프는 서버나 데이터베이스에서 가져와서 반환된 튜플의 수를 표시합니다.





e. Block I/O

블록 I/O 그래프는 서버 또는 데이터베이스에 대한 파일 시스템에서 읽은 블록 수 또는 버퍼 캐시(운영 체제의 파일 시스템 캐시는 아님)에서 가져온 블록 수를 표시합니다.
PostgreSQL 실행 - Table 만들기 

테이블스 클릭 -> 더미데이터 다운 -> c 드라이브 새파일 만들기 -> 새파일 : sql -> sql 안에 더미데이터 넣기 -> 

hr.sql
0.04MB

query tool -> 

c 드라이브 -> sql 파일 -> 옮겨놨던 더미데이터 파일 열기 

 

시프트로 잡고 스크롤 내리기 

--create indexes 부분만 따로 실행 

select * from employees; 만 따로 실행 

comit 부분만 따로 실행 

 

 

 

 

파일 새롭게 생성하기 

캡쳐본 아이콘 눌러서 새파일 생성 

포스트 그레이 마우스 우클릭 창나오면 -> 리프레쉬 

테이블 들어가면 7개 테이블 들어있는 걸 확인 할 수 있다

 

 파일 -> 프레퍼런스 -> 

에디터 -> 옵션 -> 폰트 사이즈 수정후 -> 저장 아이콘 클릭

 

select * from employees; 입력 후 play 버튼 혹은 f5  누르기 안 되면 hrsql 에서 그대로 복붙

 

sql shell 실행 

서버에 원래 ip 주소 넣음 Server [localhost]: 뒤에  localhost 넣기 

 

암호 입력시 보이지 않지만 입력되고 있는 것이 맞으니 무시하고 프로그램 설치시 입력한 password 1234  입력하기 

만약 위 화면 처럼 되지 않는다면 암호를 잘못 입력한 것 다시 입력하기 

 

select * from employees; 입력하면 위처럼 뜬다 에디터 창에서 입력한 정보가 콘솔에서 확인 된다 

 


posgres 외에 나만의 파일을 만들고 싶을 때 

마우스 우클릭 -> 크리에이트 

 

이클립스 연동하기 

Download | pgJDBC

 

Download | pgJDBC

Download Binary JAR file downloads of the JDBC driver are available here and the current version with Maven Repository. Because Java is platform neutral, it is a simple process of just downloading the appropriate JAR file and dropping it into your classpat

jdbc.postgresql.org

ja

씨드라이브> 프로그램파일 >자바> 새폴더 driver 만들기 >이상한 창 뜨면 계속 누르기

새폴더 완성후 다운로드 받은 postgressql 42.7.11  넣기 

 

이클립스 실행

데이터베이스 긴영어 

데이터 베이스 커넥션 우클릭 

포스트에스큐엘 > 플러스 버튼 > 에드 >이상한 영어 뜨면 리무브 >

 

오케이 버튼 활성화 확인 

datebase 자리에 postgres 입력 

유저네임도 postgres , password 에 1234 입력 

화면 뜨면 완료 

 

데이터베이스 커넥션 -> new PostgresSQl -> database -> catalog -> piblic -> tables 까지 들어가면 SQL 에서 

클릭된 아이콘 누르기 

Sql 하나 생성 됨 

파일 타입 포스트그레스 _8x 로 맞추기 , 네임 new posgresSQl  , 데이터 베이스 postgres (PostgreSQL 에서 이 데이터 베이스에만 더미 데이터 입력해뒀기 때문 ) 설정하기 

메인으로 뜬 sql창에 위처럼 입력하기 

 

입력한 구문 드래그 하고 알트 씨 하면 활성화 완료 되었는지 확인 가능

postgreSQL

 

 

테이블 생성 방법

Table 생성

create table 테이블명 ( //테이블명은 쿼리문으로 작성한다 
   calum1 자료형, -> 첫번째 컬럼명 자료형
   calum2 자료형,
);

 

--varchar == String 과 같다 -> mysQl 과 동일 -> 단, Oracle 의 경우 vachar2를 사용한다 

 

create table tb_varchar( 
colname varchar(10), -- 10바이트 
이름 varchar(20)
);

이렇게도 테이블 생성 가능 

드래그 하고 f5 하면 

 

테이블에 데이터 추가하는  방법

insert into 테이블명 (컬럼명1, 컬럼명2.....(등등등))
values(값1, 값...이렇게 추가 ))

 

insert into tb_varchar(colname, 이름)
values('ABC', '홍길동'); -- 문자열 쓸 때 작은 따옴표 ' '사용 

select * from tb_varchar;

insert into tb_varchar(colname, 이름)
values("ABD", "성춘향"); -- 큰 따옴표 " " 사용시 에러 발생 

작은 따옴표 사용 시 정상 작동 확인 

 

 

큰 따옴표 사용 시 정상 작동 확인 

 

-- 숫자형 자료형 
--int, numeric(자리수, 소수의 자리수)

 

carate table tb_ numeric (
  col1 int, -> 정수만 사용시 
  col2 integer, -> 정수만 사용시 
  col3 numeric, 
  col4 numeric(5),
  col5 numeric(5,2) -> 소수점 사용시 
)

 

insert into tb_numeric(col1,col2,col3,col4,col5)
values(123,234,345,678,789.12);

정상 작동 확인



select * from tb_numeric; --여기서 값 넣어주기 

드래그 하고 f5 넚어진 값 표로 확인 완료



insert into tb_numeric(col1,col2,col3,col4,col5)
values(123.1,234.1,345.45,678.1,789.12);

새로운 값 넣어주고 출력, 정상작동 확인 완료 됨
표로 잘 넣어진 걸 확인 할 수 있다

숫자자료형 이용시 에러 발생하는 경우 
--에러 발생 1- 
--구문 저장 가능하나 , 표로 출력했을 때 이상한 점 발견 될 때 


insert into tb_numeric(col1,col2,col3,col4,col5)
values(123.1,234.1,345.45,678.1,789.1234);

구문 저장은 성공적으로 가능하다
표로 출력했을 때 에러 발생 !

 

처음 tb_numeric 설정 시 항목 col4 에 정수는 5자리만 출력하도록 설정했고 col5는 정수 5자리, 소주점은 2자리수 까지만 출력되도록 설정했기 때문

 

col4를 보면 정수 678 까지만 출력되고 col5를 보면 소수점 두자리수 12까지만 출력되어있다

 

 --에러 발생 2- 
 --구문 저장 시부터 에러 발생하는 경우 


insert into tb_numeric(col1,col2,col3,col4,col5)
values(123.1,234.1,345.45,678.1,78901.1234);

에러 발생 ! 숫자가 자릿수를 넘어가면 이런 결과값이 나온다 나

날짜를 사용하는 경우 

 

 

 

 

 

 

--날짜와 시간 함께 사용하는 경우 
--timestamp 날짜 + 시,분, 초, 밀리 세컨(500/100) 단위들 
CREATE TABLE tb_timestamp(
col1 timestamp,
col2 timestamp default now()
);



insert INTO tb_timestamp(col1, col2)
values('2026-06-08 15:23:33', now());

select * from tb_timestamp;

insert into tb_timestamp(col1,col2)
VALUEs(now(), default);

insert INTO tb_timestamp(col1)
values('2026-06-08 15:23:33');

 

마지막 구문 까지 입력 후 출력한 결과
이렇게도 만들 수 있다

지우기

함수 사용 
새로 sql 열기 

 

문자 함수 
--문자 함수
--standard function //함수 기능 
--가상테이블 : 값을 간단히 확인해 볼 수 있는 (임시) 테이블 
--문자 함수
select 1;
select 1+2;
select 'Hello'; 

 

select 1;

 

select 1+2;

 

 

select 'Hello';

 

 

문자 함수 
SELECT chr(65); -- 숫자를 문자로 표현하는 것을 이야기 한다 

SELECT ascii('A')  --문자의 아스키코드 값을 출력한다 

SELECT chr(65);
SELECT ascii('A')

LPAD칸수 
--LPAD, RPAD : 칸수를 설정하고 특정 문자로 채운다
SELECT LPAD('HELLO', 10);  -- 칸을 10칸으로 잡고 그 안에  헬로로 채우기 -> 나머지는 빈칸으로 채워진다 
SELECT LPAD('HELLO',10,'+'); -- 칸을 10칸으로 잡고 그 안에  헬로로 채우기 -> 나머지는 +로 채워진다 

SELECT LPAD('HELLO', 10);
SELECT LPAD('HELLO',10,'+');

 

 

SELECT LPAD('HELLO',10,'+');

RPAD : 칸수: 칸수를 설정하고 특정 문자로 채운다
SELECT RPAD('120',10,'0'); -- 칸을 120칸으로 잡고 그 안에  헬로로 채우기 -> 나머지는 0로 채워진다

SELECT RPAD('120',10,'0');

--POSITION 문자열의 위치
SELECT POSITION('H' IN 'HELLO');    --INDEXOF
SELECT POSITION('E' IN 'HELLO');    --INDEXOF
SELECT POSITION('L' IN 'HELLO');    --INDEXOF

Java 와 다르게 1번부터 시작한다. 
 

SELECT POSITION('H' IN 'HELLO');
SELECT POSITION('E' IN 'HELLO');

 

SELECT POSITION('L' IN 'HELLO');

 

--REPLACE :  문자열 수정
--REPLACE :  문자열을 수정 
SELECT REPLACE('AAABBBCCC','B' , 'b'); -- B 를  소문자 b로 바꿔라 
SELECT REPLACE('AAABBBCCC','BBB' , 'b'); -- BBB 를  소문자 b로 바꿔라 

SELECT REPLACE('AAABBBCCC','B' , 'b');
('AAABBBCCC','BBB' , 'b');

 

--문자열 합치기 
--SELECT 'ABC' + 'DEF'; -> 안됨!
SELECT'ABC' || 'DEF'; -- ||는 앞 문자열과 뒤 문자열을 합친다 

SELECT 'ABC' + 'DEF';
SELECT'ABC' ❘❘ 'DEF';

--문자열의 길이 
SELECT LENGTH('HELLO');

SELECT LENGTH('HELLO');

--영문자의 대소문자 변경하기 
SELECT UPPER('ABC');
SELECT LOWER('ABC');

SELECT UPPER('abc');
SELECT LOWER('ABC');

--문자열 자르기 
SELECT SUBSTRING('HELLO WORLD',7, 3); -- 문자열의 7번째자리부터 잘라서  3글자만  사용하기 
SELECT SUBSTRING('HELLO WORLD',7); ---- 문자열의 7번째자리부터 잘라서 끝까지  사용하기 

SELECT SUBSTRING('HELLO WORLD',7, 3);
SELECT SUBSTRING('HELLO WORLD',7);

산술함수
--산술함수 
--절대값구하는 함수 ABS
SELECT ABS(-12);

SELECT ABS(-12);

 

--나누고 난 후 나머지를 구하는 함수 
--나누고 난 후 나머지를 구하는 함수 
SELECT MOD(5,3);

SELECT MOD(5,3);

--자리수에 대해서 반올림을 하는 함수 
SELECT ROUND(123.56);
SELECT ROUND(123.56, 1); -- 소수점 첫 번째 자리까지 반올림을 하라는 의미 ( 숫자, 소수점 원하는 자리 )

SELECT ROUND(124.56,-2); -- 2번째자리부터는 0으로 만들어줘! (숫자, 정수 원하는 자리)

SELECT ROUND(123.56);
SELECT ROUND(123.56, 1);
SELECT ROUND(124.56,-2);

--버림
SELECT TRUNC(123.456);  --뒤에 숫자 없으면 정수까지만 사용 
SELECT TRUNC(123.456, 2); --소수점 자리 2번째 이후부터는 날려 버려!
SELECT TRUNC(123.456, 3); --소수점 자리 3번째 이후부터는 날려 버려!
--올림 

--올림 
SELECT CEIL(13.1); -- 소수들은 날리고 정수에 1더해 !
SELECT CEIL(13.82);
SELECT CEIL(14.88);

SELECT CEIL(13.1);
SELECT CEIL(13.82);
SELECT CEIL(14.88);

--내림 

--내림 
SELECT FlOOR(14.9); -소수는 버리고 정수만 살려 ! 정수는 수 변화 없다!
SELECT FlOOR(14.18);
SELECT FlOOR(13.9);

SELECT FlOOR(14.9);
SELECT FlOOR(14.18);
SELECT FlOOR(13.9);

--양수 1,0이면 0, 음수 -1
양수 1,0이면 0, 음수 -1
SELECT SIGN(12.4);
SELECT SIGN(0);
SELECT SIGN(-12.4);

SELECT SIGN(12.4);
SELECT SIGN(0);
SELECT SIGN(-12.4);

--날짜 함수
날짜함수
--날짜 함수 
SELECT CURRENT_DATE;  --현재 날짜 
SELECT NOW(); --현재 날짜에 시간까지 나오는 함수 
SELECT CURRENT_TIME; -- 현재 시간만 나오는 함수 
SELECT CURRENT_TIMESTAMP; --현재 날짜 + 시간 나오는 함수 

SELECT CURRENT_DATE;
SELECT NOW();
SELECT CURRENT_TIME;
SELECT CURRENT_TIMESTAMP;

--날짜 및 시간의 요소
--날짜 및 시간의 요소 (연,월,일,시,분, 초 의 요소 (Eelement)를 잘라낸다)
SELECT NOW(), EXTRACT(YEAR FROM CURRENT_TIMESTAMP);
SELECT NOW(), EXTRACT(MONTH FROM CURRENT_TIMESTAMP);
SELECT NOW(), EXTRACT(DAY FROM CURRENT_TIMESTAMP);
SELECT NOW(), EXTRACT(HOUR FROM CURRENT_TIMESTAMP);
SELECT NOW(), EXTRACT(MINUTE FROM CURRENT_TIMESTAMP);
SELECT NOW(), EXTRACT(SECOND FROM CURRENT_TIMESTAMP);

SELECT NOW(), EXTRACT(YEAR FROM CURRENT_TIMESTAMP);
SELECT NOW(), EXTRACT(MONTH FROM CURRENT_TIMESTAMP);
SELECT NOW(), EXTRACT(DAY FROM CURRENT_TIMESTAMP);
SELECT NOW(), EXTRACT(HOUR FROM CURRENT_TIMESTAMP);
SELECT NOW(), EXTRACT(MINUTE FROM CURRENT_TIMESTAMP);
SELECT NOW(), EXTRACT(SECOND FROM CURRENT_TIMESTAMP);

값을 지정해주는 함수 
--만약 컬럼에 있는 값이 NULL 인 경우 , 지정한 값으로 대체하는 함수 
-- 값이 NULL 인 경우 , 지정한 값으로 대체하는 함수 
SELECT COALESCE(NULL, 1); --뒤에 설정한 것으로 대체 된다 (NULL, 지정값)
SELECT COALESCE(NULL, '안녕'); --숫자, 영어, 한글 가능
SELECT COALESCE(NULL, '!'); --문자열안에 넣어서 특수기호 가능 

SELECT COALESCE(NULL, 1);
SELECT COALESCE(NULL, '안녕');
SELECT COALESCE(NULL, '!')

원하는 형식 출력하는 함수 
--TO_CHAR
 원하는 형식으로 출력되는 함수 
SELECT CURRENT_DATE,TO_CHAR(CURRENT_DATE,'YYYY-MM-DD'); -- 연산 불가능
SELECT CURRENT_DATE,TO_CHAR(CURRENT_DATE,'MM-DD-YYYY');-- 연산 불가능
SELECT CURRENT_DATE,TO_CHAR(CURRENT_DATE,'MM/DD/YYYY');-- 연산 불가능
SELECT CURRENT_DATE,TO_CHAR(CURRENT_TIMESTAMP,'YYY/-MM/DD HH:MI;SS'); -- 연산 불가능

SELECT CURRENT_DATE,TO_CHAR(CURRENT_DATE,'YYYY-MM-DD');
SELECT CURRENT_DATE,TO_CHAR(CURRENT_DATE,'MM-DD-YYYY');

 

 

SELECT CURRENT_DATE,TO_CHAR(CURRENT_DATE,'MM/DD/YYYY');--
SELECT CURRENT_DATE,TO_CHAR(CURRENT_TIMESTAMP,'YYY/-MM/DD HH:MI;SS');

달러를 숫자 붙여서 출력하고 싶을 때 
--$10,000,000 형태 만들기 
--$10,000,000
SELECT TO_CHAR(10000000,'$') --: 이상하게 출력 됨 ! 
SELECT TO_CHAR(10000000,'$999,999,999') --달러를 붙여서 숫자로 표현할 때는 이렇게 

 

에러에러

SELECT TO_CHAR(10000000,'$') --: 이상하게 출력 됨 !
SELECT TO_CHAR(10000000,'$999,999,999') 정상출력 확인

문자열 ->날짜형으로 변환 
--문자열 -> 날짜형으로 변환 
SELECT TO_DATE('20260610', 'YYYYMMDD'); -- 하이픈 - 넣지 않아도 변횐 됨 

SELECT TO_DATE('20260610', 'YYYYMMDD');

--문자열을 숫자열로 변환 
--문자열을 숫자열로 변환 : 연산 가능
SELECT TO_NUMBER('12,345.67','99,999.99' );

SELECT TO_NUMBER('12,345.67','99,999.99' );

집에서 실행할 떄 서버 켜고 끄는 법 

윈도우 마우스 우클릭 -> 컴퓨터 관리
컴퓨터 관리 화면 확인됨 -> 서비스 및 응용 프로그램 클릭
서비스 클릭 -> 목록에서 postgresql -64-18 클릭

 

시스템 종료