SlideShare une entreprise Scribd logo
1  sur  59
Télécharger pour lire hors ligne
PostgreSQL로 배우는 SQL
기초
PgDAY 2018 Seoul
PostgreSQL 설치
PostgreSQL은 다음과같은 운영체제용으로배포되고있습니다.
- Windows
- Linux (RPM Based, DEB Based, Source Compile)
- Mac OSX
SQL의 종류
DDL (Data Definition Language)
DML(Data Manipulation Language)
그리고DCL(Data Control Language)
DDL
테이블과같은 데이터구조를정의하는데사용하는명령어와그들의실행 구조
주요 SQL 명령
CREATE, ALTER, DROP, RENAME, TRUNCATE
DML
데이터베이스에들어있는데이터를조회하고조작하는명령
주요 명령어
SELECT, INSERT, UPDATE, DELETE
DCL
데이터베이스에접근하고객체들을사용하도록권한을주고 회수하는명령어
주요 명령어
GRANT
REVOKE
TCL
논리적인작업의단위를묶어서DML에 의해 조작된결과를작업 단위(트랜잭션) 별로 제어하는명령어
주요 명령어
COMMIT
ROLLBACK
SAVEPOINT
SQL 표준
각 데이터베이스별로조금씩다른 SQL 문장을일원화하기위해 표준화가일부 이루어져있음
SQL-92가 ISO 9075로 메이저개정되어있고 SQL:2011 까지 이루어져있고 대부분의데이터베이스가
SQL-92를 호환한다고볼 수 있음
DDL Create Table
CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ]
table_name ( [
{ column_name data_type [ COLLATE collation ] [ column_constraint [ ... ] ]
| table_constraint
| LIKE source_table [ like_option ... ] }
[, ... ]
] )
[ INHERITS ( parent_table [, ... ] ) ]
[ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]
[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
[ TABLESPACE tablespace_name ]
전국 공원 정보 CREATE
create table korea_park(
no INT GENERATED ALWAYS AS IDENTITY,
manage_no varchar(20),
park_name varchar(100),
park_type varchar(50),
park_addr_road varchar(200),
park_lat double,
park_long double,
park_area double,
insert_date timestamp
)
CREATE INDEX
CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ [ IF NOT EXISTS ] name ] ON table_name [ USING
method ]
( { column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [ ASC | DESC ] [ NULLS {
FIRST | LAST } ] [, ...] )
[ WITH ( storage_parameter = value [, ... ] ) ]
[ TABLESPACE tablespace_name ]
[ WHERE predicate ]
CREATE INDEX
create unique index park_name_unique on
korea_park;
create index idx_lat_long on korea_park
(park_lat, park_long);
제약 조건 추가
ALTER TABLE korea_park add CONSTRAINT korea_park_primary_constraint
check(char_length(park_name) > 0);
제약조건 - 주 키
ALTER TABLE korea_park add primary key(manage_no);
제약조건 - 외부키
ALTER TABLE distributors ADD CONSTRAINT diskless FOREIGN
KEY (address) REFERENCES addresses (address);
테이블 컬럼 특징
데이터 타입
NULL
NOT NULL
DEFAULT
번호 자동 증가(SQL 표준)
INT GENERATED ALWAYS AS IDENTITY
CREATE TABLE color (
color_id INT GENERATED BY DEFAULT AS IDENTITY
(START WITH 10 INCREMENT BY 10),
color_name VARCHAR NOT NULL
);
데이터 입력
1) insert
- into, select
2) select into
3) copy
4) create table as
insert into
INSERT INTO table_name [ AS alias ] [ ( column_name [, ...] ) ]
{ DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [,
...] | query }
[ ON CONFLICT [ conflict_target ] conflict_action ]
[ RETURNING * | output_expression [ [ AS ] output_name ] [, ...]
]
insert into
insert into korea_park (manage_no, park_name, park_type,
park_addr_road, park_lat, park_long, park_area) values (
'201811-221930', 'PG마당', '수변공원', 'PG시 PG구 PG동 1번지',
51.516510, 9.919632, now())
insert select
insert into korea_park2 select * from
korea_park where park_type='수변공원'
select into
select * from into korea_park3 from korea_park
where park_type = '수변공원'
copy
COPY table_name [ ( column_name [, ...] ) ]
FROM { 'filename' | PROGRAM 'command' | STDIN }
[ [ WITH ] ( option [, ...] ) ]
COPY { table_name [ ( column_name [, ...] ) ] | ( query ) }
TO { 'filename' | PROGRAM 'command' | STDOUT }
[ [ WITH ] ( option [, ...] ) ]
url: https://www.postgresql.org/docs/9.6/static/sql-copy.html
copy 실전
copy korea_park (manage_no, park_name, park_type,
park_addr_road, park_lat, park_long, park_area) from
'test2.csv' with format csv DELIMITER ','
create table as
create table korea_park4 as select * from korea_park
데이터 조회
[ WITH [ RECURSIVE ] with_query [, ...] ]
SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]
* | expression [ [ AS ] output_name ] [, ...]
INTO [ TEMPORARY | TEMP | UNLOGGED ] [ TABLE ] new_table
[ FROM from_item [, ...] ]
[ WHERE condition ]
[ GROUP BY expression [, ...] ]
[ HAVING condition [, ...] ]
[ WINDOW window_name AS ( window_definition ) [, ...] ]
[ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] select ]
[ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ]
[ LIMIT { count | ALL } ]
[ OFFSET start [ ROW | ROWS ] ]
[ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]
[ FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ]
데이터 조회 실전
select * from korea_park where park_type = '어린이공원'
select count(*) from korea_park where park_type = '근린공원'
select part_type, count(park_type) from korea_park group by
park_type
데이터 조회 실전
select * from korea_park limit 10 offset 0;
select * from korea_park order by park_type asc
window 함수
row_number, rank 등과 같은 함수가 window 함수에 속합니다.
추가적인 함수는
https://www.postgresql.org/docs/9.6/static/functions-window.
html 에서 살펴볼 수 있습니다.
JOIN
SQL의 조인은 기본적으로 테이블과 테이블의 행을 서로 묶는데 사용합니다. 조인의
가장 기본적인 형태는 카테시안 조인으로 조인 조건을 지정하지 않는 조인을
일컫습니다.
no name created
1 jiho 201
2 postgres 202
no article_no content
3 1 c01
4 1 c02
1 jiho 201 3 1 c01
1 jiho 201 3 1 c02
2 postgres 202 3 1 c01
2 postgres 202 3 1 c02
LEFT JOIN
테이블 조인시 왼쪽 테이블의 행이 우선시
되는 조인
RIGHT JOIN
테이블 조인시 오른쪽 테이블의 행이 우선시
되는 조인
ANSI JOIN(INNER JOIN)
테이블 조인시 테이블간의
조인 조건이 서로
일치하는 것만 뽑는 조인
EXPLAIN
쿼리가 데이터베이스에서
실행될때 실행 비용 등을
알아보기 위해 사용합니다.
보통 쿼리 최적화를 위해
사용합니다.
EXPLAIN SELECT * FROM korea_park
WHERE park_type = '근린공원';
ALTER TABLE
ALTER TABLE은 테이블의 정의에 변경사항을 가하기 위해
사용하는 DDL 문입니다.
주요 기능은 아래와 같습니다.
테이블 제약사항 추가/수정/삭제
테이블 컬럼의 추가/이름 변경/데이터 타입 변경/컬럼 제거
테이블 이름 변경
alter table korea_park rename to
south_korea_park;
테이블 컬럼 추가
alter table korea_park add column park_city
varchar(20);
테이블 컬럼 이름 변경
alter table korea_park rename park_city to
city_park;
alter table south_korea_park rename to
korea_park;
테이블 컬럼 타입 변경
alter table korea_park alter column city_park
type integer;
테이블 컬럼 제거
alter table korea_park drop column city_park;
insert 충돌을 해결하기
테이블에 데이터 입력시 이미 있는 레코드를 추가하면 레코드
충돌로 데이터가 입력되지 않습니다. conflict 옵션을 사용하면
데이터 충돌시 해결책을 제시할 수 있습니다.
insert into korea_park(manage_no, park_name, park_type)
values ('29170-00001', '문화근린공원', '근린공원')
insert 충돌시 아무것도 안하기
insert into korea_park(manage_no, park_name,
park_type) values ('29170-00001', '문화근린공원',
'근린공원') on conflict (manage_no) do nothing;
데이터 충돌시 데이터 덮어쓰기
insert into korea_park(manage_no, park_name,
park_type) values ('29170-00001', '문화근린공원',
'어린이공원') on conflict (manage_no) do update
set park_type=excluded.park_type;
데이터 변경
update korea_park set park_name = 'MBC
어린이공원' where manage_no = '29170-00001'
update시 다른 테이블과 조인
UPDATE employees SET sales_count =
sales_count + 1 FROM accounts
WHERE accounts.name = 'Acme Corporation'
AND employees.id = accounts.sales_person;
데이터 삭제
delete from korea_park where
manage_no='29170-00001';
데이터 삭제 시 다른 테이블과 조인하기
DELETE FROM films USING producers
WHERE producer_id = producers.id AND
producers.name = 'foo';
역할 생성과 제거
create role reader1 login password 'reader1';
create role reader2 login password 'reader2';
권한 부여
grant select (park_name, park_addr_road) on
korea_park to reader1;
grant select (park_name, park_lat, park_long)
on korea_park to reader2;
권한 제거
revoke select (park_name, park_addr_road) on
korea_park from reader1;
revoke select (park_name, park_lat, park_long)
on korea_park from reader2;
truncate
truncate는 테이블의 모든 행을 한 번에 지우는 명령입니다.
TRUNCATE korea_park;
truncate korea_park RESTART IDENTITY;
트랜잭션
데이터베이스 조작의 일관성을 보장하기 위한 행동 묶음을
트랜잭션이라고 부릅니다
begin transaction;
commit;
rollback;
end;
트랜잭션
트랜잭션이 시작된 이후 에러가 발생하면 에러가 발생한 이후의
SQL 문장은 유효한 SQL 문장이라고 해도 실행되지 않습니다.
PostgreSQL 데이터 타입
bigint, boolean
character, character varying
date, integer
json, numeric
text
timestamp
vacuum
1) 변경 또는 삭제된 자료들이 차지 하고 있는 디스크 공간을 다시 사용하기 위한 디스크
공간 확보 작업이 필요하다.
2) PostgreSQL 쿼리 실행 계획기가 사용할 자료 통계 정보를 갱신할 필요가 있다.
3) 인덱스 전용 검색 성능을 향상하는데 이용하는 실자료 지도(visibility map, vm) 정보를
갱신하는 작업이 필요하다.
4) 트랜잭션 ID 겹침이나, 다중 트랙잭션 ID 겹침 상황으로 오래된 자료가 손실 될
가능성을 방지해야할 필요가 있다.
베이큠 작업의 실행
-- DB 전체 풀 실행
vacuum full analyze;
-- DB 전체 간단하게 실행
vacuum verbose analyze;
-- 해당 테이블만 간단하게 실행
vacuum analyse [테이블 명];
-- 특정 테이블만 풀 실행
vacuum full [테이블명];
PostgreSQL Management Tool
● PgAdmin 4
● Datagrip
● DBeaver
● RazorSQL
● Aqua Data Studio
● SQLDeveloper
DDL Drop Table
DROP TABLE korea_park;
끝!
지금까지들어주셔서감사합니다.

Contenu connexe

Tendances

[오라클교육/SQL교육/IT교육/실무중심교육학원추천_탑크리에듀]#4.SQL초보에서 Schema Objectes까지
[오라클교육/SQL교육/IT교육/실무중심교육학원추천_탑크리에듀]#4.SQL초보에서 Schema Objectes까지[오라클교육/SQL교육/IT교육/실무중심교육학원추천_탑크리에듀]#4.SQL초보에서 Schema Objectes까지
[오라클교육/SQL교육/IT교육/실무중심교육학원추천_탑크리에듀]#4.SQL초보에서 Schema Objectes까지탑크리에듀(구로디지털단지역3번출구 2분거리)
 
오라클 커서(Cursor) 개념 및 오라클 메모리 구조_PL/SQL,오라클커서강좌,SGA, PGA, UGA, Shared Pool, Sha...
오라클 커서(Cursor) 개념 및 오라클 메모리 구조_PL/SQL,오라클커서강좌,SGA, PGA, UGA, Shared Pool, Sha...오라클 커서(Cursor) 개념 및 오라클 메모리 구조_PL/SQL,오라클커서강좌,SGA, PGA, UGA, Shared Pool, Sha...
오라클 커서(Cursor) 개념 및 오라클 메모리 구조_PL/SQL,오라클커서강좌,SGA, PGA, UGA, Shared Pool, Sha...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
효율적인Sql작성방법 2주차
효율적인Sql작성방법 2주차효율적인Sql작성방법 2주차
효율적인Sql작성방법 2주차희동 강
 
[PHPFest 2013] Real mysql
[PHPFest 2013] Real mysql[PHPFest 2013] Real mysql
[PHPFest 2013] Real mysqlphpkorea
 
데이터베이스 시스템 chapter4_STG박하은
데이터베이스 시스템 chapter4_STG박하은데이터베이스 시스템 chapter4_STG박하은
데이터베이스 시스템 chapter4_STG박하은ETRIBE_STG
 
#6.SQL초보에서 Schema Objects까지_구로IT학원/오라클교육/자바교육/국비지원/재직자환급교육/내일배움카드/사업주위탁
#6.SQL초보에서 Schema Objects까지_구로IT학원/오라클교육/자바교육/국비지원/재직자환급교육/내일배움카드/사업주위탁#6.SQL초보에서 Schema Objects까지_구로IT학원/오라클교육/자바교육/국비지원/재직자환급교육/내일배움카드/사업주위탁
#6.SQL초보에서 Schema Objects까지_구로IT학원/오라클교육/자바교육/국비지원/재직자환급교육/내일배움카드/사업주위탁탑크리에듀(구로디지털단지역3번출구 2분거리)
 
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천탑크리에듀(구로디지털단지역3번출구 2분거리)
 
JPA Study - 1주차(SLIPP)
JPA Study - 1주차(SLIPP)JPA Study - 1주차(SLIPP)
JPA Study - 1주차(SLIPP)Jeong-gyu Kim
 
(쿼리 변환, Query Transformation,서브쿼리푸시,SubQuery Pushing)SQL튜닝을 위해 서브쿼리의 드라이빙을 제어...
(쿼리 변환, Query Transformation,서브쿼리푸시,SubQuery Pushing)SQL튜닝을 위해 서브쿼리의 드라이빙을 제어...(쿼리 변환, Query Transformation,서브쿼리푸시,SubQuery Pushing)SQL튜닝을 위해 서브쿼리의 드라이빙을 제어...
(쿼리 변환, Query Transformation,서브쿼리푸시,SubQuery Pushing)SQL튜닝을 위해 서브쿼리의 드라이빙을 제어...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[Pgday.Seoul 2018] PostgreSQL 11 새 기능 소개
[Pgday.Seoul 2018]  PostgreSQL 11 새 기능 소개[Pgday.Seoul 2018]  PostgreSQL 11 새 기능 소개
[Pgday.Seoul 2018] PostgreSQL 11 새 기능 소개PgDay.Seoul
 
(SQL힌트튜닝,온라인화상교육#3회차,강의자료,12/22)중첩루프조인개요,USE_NL, ORDERED, USE_NL_WITH_INDEX_오...
(SQL힌트튜닝,온라인화상교육#3회차,강의자료,12/22)중첩루프조인개요,USE_NL, ORDERED, USE_NL_WITH_INDEX_오...(SQL힌트튜닝,온라인화상교육#3회차,강의자료,12/22)중첩루프조인개요,USE_NL, ORDERED, USE_NL_WITH_INDEX_오...
(SQL힌트튜닝,온라인화상교육#3회차,강의자료,12/22)중첩루프조인개요,USE_NL, ORDERED, USE_NL_WITH_INDEX_오...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
TABLE ACCESS 패턴을 이용한 SQL 튜닝_Wh oracle
TABLE ACCESS 패턴을 이용한 SQL 튜닝_Wh oracleTABLE ACCESS 패턴을 이용한 SQL 튜닝_Wh oracle
TABLE ACCESS 패턴을 이용한 SQL 튜닝_Wh oracle엑셈
 

Tendances (20)

[오라클교육/SQL교육/IT교육/실무중심교육학원추천_탑크리에듀]#4.SQL초보에서 Schema Objectes까지
[오라클교육/SQL교육/IT교육/실무중심교육학원추천_탑크리에듀]#4.SQL초보에서 Schema Objectes까지[오라클교육/SQL교육/IT교육/실무중심교육학원추천_탑크리에듀]#4.SQL초보에서 Schema Objectes까지
[오라클교육/SQL교육/IT교육/실무중심교육학원추천_탑크리에듀]#4.SQL초보에서 Schema Objectes까지
 
[구로국비지원IT학원/재직자환급/오라클교육/SQL기초]#21.SQL초보에서 Schema Objects까지
[구로국비지원IT학원/재직자환급/오라클교육/SQL기초]#21.SQL초보에서 Schema Objects까지[구로국비지원IT학원/재직자환급/오라클교육/SQL기초]#21.SQL초보에서 Schema Objects까지
[구로국비지원IT학원/재직자환급/오라클교육/SQL기초]#21.SQL초보에서 Schema Objects까지
 
오라클 커서(Cursor) 개념 및 오라클 메모리 구조_PL/SQL,오라클커서강좌,SGA, PGA, UGA, Shared Pool, Sha...
오라클 커서(Cursor) 개념 및 오라클 메모리 구조_PL/SQL,오라클커서강좌,SGA, PGA, UGA, Shared Pool, Sha...오라클 커서(Cursor) 개념 및 오라클 메모리 구조_PL/SQL,오라클커서강좌,SGA, PGA, UGA, Shared Pool, Sha...
오라클 커서(Cursor) 개념 및 오라클 메모리 구조_PL/SQL,오라클커서강좌,SGA, PGA, UGA, Shared Pool, Sha...
 
효율적인Sql작성방법 2주차
효율적인Sql작성방법 2주차효율적인Sql작성방법 2주차
효율적인Sql작성방법 2주차
 
[PHPFest 2013] Real mysql
[PHPFest 2013] Real mysql[PHPFest 2013] Real mysql
[PHPFest 2013] Real mysql
 
데이터베이스 시스템 chapter4_STG박하은
데이터베이스 시스템 chapter4_STG박하은데이터베이스 시스템 chapter4_STG박하은
데이터베이스 시스템 chapter4_STG박하은
 
Sql기초강좌2_SET AUTOTRACE_SQL교육
Sql기초강좌2_SET AUTOTRACE_SQL교육Sql기초강좌2_SET AUTOTRACE_SQL교육
Sql기초강좌2_SET AUTOTRACE_SQL교육
 
#6.SQL초보에서 Schema Objects까지_구로IT학원/오라클교육/자바교육/국비지원/재직자환급교육/내일배움카드/사업주위탁
#6.SQL초보에서 Schema Objects까지_구로IT학원/오라클교육/자바교육/국비지원/재직자환급교육/내일배움카드/사업주위탁#6.SQL초보에서 Schema Objects까지_구로IT학원/오라클교육/자바교육/국비지원/재직자환급교육/내일배움카드/사업주위탁
#6.SQL초보에서 Schema Objects까지_구로IT학원/오라클교육/자바교육/국비지원/재직자환급교육/내일배움카드/사업주위탁
 
Xe hack
Xe hackXe hack
Xe hack
 
MySQL JOIN
MySQL JOINMySQL JOIN
MySQL JOIN
 
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
 
JPA Study - 1주차(SLIPP)
JPA Study - 1주차(SLIPP)JPA Study - 1주차(SLIPP)
JPA Study - 1주차(SLIPP)
 
(스프링JDBC와 Spring Data JPA비교)Spring JDBC와 JPA를 간단한 CRUD 예제로 만들면서 비교해보자.
(스프링JDBC와 Spring Data JPA비교)Spring JDBC와 JPA를 간단한 CRUD 예제로  만들면서 비교해보자.(스프링JDBC와 Spring Data JPA비교)Spring JDBC와 JPA를 간단한 CRUD 예제로  만들면서 비교해보자.
(스프링JDBC와 Spring Data JPA비교)Spring JDBC와 JPA를 간단한 CRUD 예제로 만들면서 비교해보자.
 
(쿼리 변환, Query Transformation,서브쿼리푸시,SubQuery Pushing)SQL튜닝을 위해 서브쿼리의 드라이빙을 제어...
(쿼리 변환, Query Transformation,서브쿼리푸시,SubQuery Pushing)SQL튜닝을 위해 서브쿼리의 드라이빙을 제어...(쿼리 변환, Query Transformation,서브쿼리푸시,SubQuery Pushing)SQL튜닝을 위해 서브쿼리의 드라이빙을 제어...
(쿼리 변환, Query Transformation,서브쿼리푸시,SubQuery Pushing)SQL튜닝을 위해 서브쿼리의 드라이빙을 제어...
 
[Pgday.Seoul 2018] PostgreSQL 11 새 기능 소개
[Pgday.Seoul 2018]  PostgreSQL 11 새 기능 소개[Pgday.Seoul 2018]  PostgreSQL 11 새 기능 소개
[Pgday.Seoul 2018] PostgreSQL 11 새 기능 소개
 
Any(some),all,exists(2)
Any(some),all,exists(2)Any(some),all,exists(2)
Any(some),all,exists(2)
 
6.테이블만들기
6.테이블만들기6.테이블만들기
6.테이블만들기
 
(추천오라클힌트교육)해시조인, Hash join, use_hash, ordered
(추천오라클힌트교육)해시조인, Hash join, use_hash, ordered(추천오라클힌트교육)해시조인, Hash join, use_hash, ordered
(추천오라클힌트교육)해시조인, Hash join, use_hash, ordered
 
(SQL힌트튜닝,온라인화상교육#3회차,강의자료,12/22)중첩루프조인개요,USE_NL, ORDERED, USE_NL_WITH_INDEX_오...
(SQL힌트튜닝,온라인화상교육#3회차,강의자료,12/22)중첩루프조인개요,USE_NL, ORDERED, USE_NL_WITH_INDEX_오...(SQL힌트튜닝,온라인화상교육#3회차,강의자료,12/22)중첩루프조인개요,USE_NL, ORDERED, USE_NL_WITH_INDEX_오...
(SQL힌트튜닝,온라인화상교육#3회차,강의자료,12/22)중첩루프조인개요,USE_NL, ORDERED, USE_NL_WITH_INDEX_오...
 
TABLE ACCESS 패턴을 이용한 SQL 튜닝_Wh oracle
TABLE ACCESS 패턴을 이용한 SQL 튜닝_Wh oracleTABLE ACCESS 패턴을 이용한 SQL 튜닝_Wh oracle
TABLE ACCESS 패턴을 이용한 SQL 튜닝_Wh oracle
 

Similaire à PostgreSQL로 배우는 SQL 기초

#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Clean code
Clean codeClean code
Clean codebbongcsu
 
04주차 ddl- table을 만들자-2
04주차 ddl- table을 만들자-204주차 ddl- table을 만들자-2
04주차 ddl- table을 만들자-2Yoonwhan Lee
 
[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQL
[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQL[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQL
[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQLPgDay.Seoul
 
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3Seok-joon Yun
 
Federated Engine 실무적용사례
Federated Engine 실무적용사례Federated Engine 실무적용사례
Federated Engine 실무적용사례I Goo Lee
 
[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1
[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1
[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1Seok-joon Yun
 
제8장 테이블 생성 수정 제거하기
제8장 테이블 생성 수정 제거하기제8장 테이블 생성 수정 제거하기
제8장 테이블 생성 수정 제거하기sang doc Lee
 
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle엑셈
 
Web vulnerability seminar2
Web vulnerability seminar2Web vulnerability seminar2
Web vulnerability seminar2Sakuya Izayoi
 
From MSSQL to MySQL
From MSSQL to MySQLFrom MSSQL to MySQL
From MSSQL to MySQLI Goo Lee
 
Fundamentals of Oracle SQL
Fundamentals of Oracle SQLFundamentals of Oracle SQL
Fundamentals of Oracle SQLJAEGEUN YU
 
[오픈소스컨설팅]MyBatis Basic
[오픈소스컨설팅]MyBatis Basic[오픈소스컨설팅]MyBatis Basic
[오픈소스컨설팅]MyBatis BasicJi-Woong Choi
 
스프링처럼 JDBC 리팩터링하기
스프링처럼 JDBC 리팩터링하기 스프링처럼 JDBC 리팩터링하기
스프링처럼 JDBC 리팩터링하기 Chanwook Park
 
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기Kenu, GwangNam Heo
 

Similaire à PostgreSQL로 배우는 SQL 기초 (20)

#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
 
Clean code
Clean codeClean code
Clean code
 
04주차 ddl- table을 만들자-2
04주차 ddl- table을 만들자-204주차 ddl- table을 만들자-2
04주차 ddl- table을 만들자-2
 
[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQL
[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQL[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQL
[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQL
 
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
 
Federated Engine 실무적용사례
Federated Engine 실무적용사례Federated Engine 실무적용사례
Federated Engine 실무적용사례
 
[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1
[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1
[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1
 
제8장 테이블 생성 수정 제거하기
제8장 테이블 생성 수정 제거하기제8장 테이블 생성 수정 제거하기
제8장 테이블 생성 수정 제거하기
 
7.데이터수정
7.데이터수정7.데이터수정
7.데이터수정
 
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
 
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle
 
1.8 튜닝의도구 dbms xplan
1.8 튜닝의도구 dbms xplan1.8 튜닝의도구 dbms xplan
1.8 튜닝의도구 dbms xplan
 
Scala for play
Scala for playScala for play
Scala for play
 
Web vulnerability seminar2
Web vulnerability seminar2Web vulnerability seminar2
Web vulnerability seminar2
 
From MSSQL to MySQL
From MSSQL to MySQLFrom MSSQL to MySQL
From MSSQL to MySQL
 
1.7 튜닝의도구 sql autorace
1.7 튜닝의도구 sql autorace1.7 튜닝의도구 sql autorace
1.7 튜닝의도구 sql autorace
 
Fundamentals of Oracle SQL
Fundamentals of Oracle SQLFundamentals of Oracle SQL
Fundamentals of Oracle SQL
 
[오픈소스컨설팅]MyBatis Basic
[오픈소스컨설팅]MyBatis Basic[오픈소스컨설팅]MyBatis Basic
[오픈소스컨설팅]MyBatis Basic
 
스프링처럼 JDBC 리팩터링하기
스프링처럼 JDBC 리팩터링하기 스프링처럼 JDBC 리팩터링하기
스프링처럼 JDBC 리팩터링하기
 
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
 

Plus de Jiho Lee

Pg 클러스터 기반의 구성 및 이전, 그리고 인덱스 클러스터링
Pg 클러스터 기반의 구성 및 이전, 그리고 인덱스 클러스터링Pg 클러스터 기반의 구성 및 이전, 그리고 인덱스 클러스터링
Pg 클러스터 기반의 구성 및 이전, 그리고 인덱스 클러스터링Jiho Lee
 
게임으로 배우는 코딩 - 마인크래프를 중심으로
게임으로 배우는 코딩 - 마인크래프를 중심으로게임으로 배우는 코딩 - 마인크래프를 중심으로
게임으로 배우는 코딩 - 마인크래프를 중심으로Jiho Lee
 
개발자, 그 이상 그리고 그 이하
개발자, 그 이상 그리고 그 이하개발자, 그 이상 그리고 그 이하
개발자, 그 이상 그리고 그 이하Jiho Lee
 
20111025 Excel의 VBA, 매크로. 그리고 파이썬으로 함께하는 반복작업
20111025 Excel의 VBA, 매크로. 그리고 파이썬으로 함께하는 반복작업20111025 Excel의 VBA, 매크로. 그리고 파이썬으로 함께하는 반복작업
20111025 Excel의 VBA, 매크로. 그리고 파이썬으로 함께하는 반복작업Jiho Lee
 
암호화폐로 시작하는 블록체인 이야기 - 2018년 10월의 하늘. 목포어린이도서관
암호화폐로 시작하는 블록체인 이야기 - 2018년 10월의 하늘. 목포어린이도서관암호화폐로 시작하는 블록체인 이야기 - 2018년 10월의 하늘. 목포어린이도서관
암호화폐로 시작하는 블록체인 이야기 - 2018년 10월의 하늘. 목포어린이도서관Jiho Lee
 
사물 인터넷과 인공지능이 만나는 세계
사물 인터넷과 인공지능이 만나는 세계사물 인터넷과 인공지능이 만나는 세계
사물 인터넷과 인공지능이 만나는 세계Jiho Lee
 
인간이 아이에게 줄 수 있는 가장 최선의 것
인간이 아이에게 줄 수 있는 가장 최선의 것인간이 아이에게 줄 수 있는 가장 최선의 것
인간이 아이에게 줄 수 있는 가장 최선의 것Jiho Lee
 
파이콘 2017 그만퇴근합시다_이지호
파이콘 2017 그만퇴근합시다_이지호파이콘 2017 그만퇴근합시다_이지호
파이콘 2017 그만퇴근합시다_이지호Jiho Lee
 
소물 2017 네트워크로 감성 나누기
소물 2017 네트워크로 감성 나누기소물 2017 네트워크로 감성 나누기
소물 2017 네트워크로 감성 나누기Jiho Lee
 
10월의 하늘_2016_진도 공공도서관_이지호
10월의 하늘_2016_진도 공공도서관_이지호10월의 하늘_2016_진도 공공도서관_이지호
10월의 하늘_2016_진도 공공도서관_이지호Jiho Lee
 
생각과 프로그램 개발 - 10월, 소프트웨어에 물들다
생각과 프로그램 개발 - 10월, 소프트웨어에 물들다생각과 프로그램 개발 - 10월, 소프트웨어에 물들다
생각과 프로그램 개발 - 10월, 소프트웨어에 물들다Jiho Lee
 
책을 쓰기 위한 환경과 책을 잘 쓰기 위한 도구(이렇게 책쓰면 성공...
책을 쓰기 위한 환경과 책을 잘 쓰기 위한 도구(이렇게 책쓰면 성공...책을 쓰기 위한 환경과 책을 잘 쓰기 위한 도구(이렇게 책쓰면 성공...
책을 쓰기 위한 환경과 책을 잘 쓰기 위한 도구(이렇게 책쓰면 성공...Jiho Lee
 
2016 py con2016_lightingtalk_php to python
2016 py con2016_lightingtalk_php to python2016 py con2016_lightingtalk_php to python
2016 py con2016_lightingtalk_php to pythonJiho Lee
 
Django와 flask
Django와 flaskDjango와 flask
Django와 flaskJiho Lee
 
라이트닝 토크 2015 파이콘
라이트닝 토크 2015 파이콘라이트닝 토크 2015 파이콘
라이트닝 토크 2015 파이콘Jiho Lee
 

Plus de Jiho Lee (15)

Pg 클러스터 기반의 구성 및 이전, 그리고 인덱스 클러스터링
Pg 클러스터 기반의 구성 및 이전, 그리고 인덱스 클러스터링Pg 클러스터 기반의 구성 및 이전, 그리고 인덱스 클러스터링
Pg 클러스터 기반의 구성 및 이전, 그리고 인덱스 클러스터링
 
게임으로 배우는 코딩 - 마인크래프를 중심으로
게임으로 배우는 코딩 - 마인크래프를 중심으로게임으로 배우는 코딩 - 마인크래프를 중심으로
게임으로 배우는 코딩 - 마인크래프를 중심으로
 
개발자, 그 이상 그리고 그 이하
개발자, 그 이상 그리고 그 이하개발자, 그 이상 그리고 그 이하
개발자, 그 이상 그리고 그 이하
 
20111025 Excel의 VBA, 매크로. 그리고 파이썬으로 함께하는 반복작업
20111025 Excel의 VBA, 매크로. 그리고 파이썬으로 함께하는 반복작업20111025 Excel의 VBA, 매크로. 그리고 파이썬으로 함께하는 반복작업
20111025 Excel의 VBA, 매크로. 그리고 파이썬으로 함께하는 반복작업
 
암호화폐로 시작하는 블록체인 이야기 - 2018년 10월의 하늘. 목포어린이도서관
암호화폐로 시작하는 블록체인 이야기 - 2018년 10월의 하늘. 목포어린이도서관암호화폐로 시작하는 블록체인 이야기 - 2018년 10월의 하늘. 목포어린이도서관
암호화폐로 시작하는 블록체인 이야기 - 2018년 10월의 하늘. 목포어린이도서관
 
사물 인터넷과 인공지능이 만나는 세계
사물 인터넷과 인공지능이 만나는 세계사물 인터넷과 인공지능이 만나는 세계
사물 인터넷과 인공지능이 만나는 세계
 
인간이 아이에게 줄 수 있는 가장 최선의 것
인간이 아이에게 줄 수 있는 가장 최선의 것인간이 아이에게 줄 수 있는 가장 최선의 것
인간이 아이에게 줄 수 있는 가장 최선의 것
 
파이콘 2017 그만퇴근합시다_이지호
파이콘 2017 그만퇴근합시다_이지호파이콘 2017 그만퇴근합시다_이지호
파이콘 2017 그만퇴근합시다_이지호
 
소물 2017 네트워크로 감성 나누기
소물 2017 네트워크로 감성 나누기소물 2017 네트워크로 감성 나누기
소물 2017 네트워크로 감성 나누기
 
10월의 하늘_2016_진도 공공도서관_이지호
10월의 하늘_2016_진도 공공도서관_이지호10월의 하늘_2016_진도 공공도서관_이지호
10월의 하늘_2016_진도 공공도서관_이지호
 
생각과 프로그램 개발 - 10월, 소프트웨어에 물들다
생각과 프로그램 개발 - 10월, 소프트웨어에 물들다생각과 프로그램 개발 - 10월, 소프트웨어에 물들다
생각과 프로그램 개발 - 10월, 소프트웨어에 물들다
 
책을 쓰기 위한 환경과 책을 잘 쓰기 위한 도구(이렇게 책쓰면 성공...
책을 쓰기 위한 환경과 책을 잘 쓰기 위한 도구(이렇게 책쓰면 성공...책을 쓰기 위한 환경과 책을 잘 쓰기 위한 도구(이렇게 책쓰면 성공...
책을 쓰기 위한 환경과 책을 잘 쓰기 위한 도구(이렇게 책쓰면 성공...
 
2016 py con2016_lightingtalk_php to python
2016 py con2016_lightingtalk_php to python2016 py con2016_lightingtalk_php to python
2016 py con2016_lightingtalk_php to python
 
Django와 flask
Django와 flaskDjango와 flask
Django와 flask
 
라이트닝 토크 2015 파이콘
라이트닝 토크 2015 파이콘라이트닝 토크 2015 파이콘
라이트닝 토크 2015 파이콘
 

PostgreSQL로 배우는 SQL 기초

  • 2. PostgreSQL 설치 PostgreSQL은 다음과같은 운영체제용으로배포되고있습니다. - Windows - Linux (RPM Based, DEB Based, Source Compile) - Mac OSX
  • 3. SQL의 종류 DDL (Data Definition Language) DML(Data Manipulation Language) 그리고DCL(Data Control Language)
  • 7. TCL 논리적인작업의단위를묶어서DML에 의해 조작된결과를작업 단위(트랜잭션) 별로 제어하는명령어 주요 명령어 COMMIT ROLLBACK SAVEPOINT
  • 8. SQL 표준 각 데이터베이스별로조금씩다른 SQL 문장을일원화하기위해 표준화가일부 이루어져있음 SQL-92가 ISO 9075로 메이저개정되어있고 SQL:2011 까지 이루어져있고 대부분의데이터베이스가 SQL-92를 호환한다고볼 수 있음
  • 9. DDL Create Table CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name ( [ { column_name data_type [ COLLATE collation ] [ column_constraint [ ... ] ] | table_constraint | LIKE source_table [ like_option ... ] } [, ... ] ] ) [ INHERITS ( parent_table [, ... ] ) ] [ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT OIDS ] [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ] [ TABLESPACE tablespace_name ]
  • 10. 전국 공원 정보 CREATE create table korea_park( no INT GENERATED ALWAYS AS IDENTITY, manage_no varchar(20), park_name varchar(100), park_type varchar(50), park_addr_road varchar(200), park_lat double, park_long double, park_area double, insert_date timestamp )
  • 11. CREATE INDEX CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ [ IF NOT EXISTS ] name ] ON table_name [ USING method ] ( { column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] ) [ WITH ( storage_parameter = value [, ... ] ) ] [ TABLESPACE tablespace_name ] [ WHERE predicate ]
  • 12. CREATE INDEX create unique index park_name_unique on korea_park; create index idx_lat_long on korea_park (park_lat, park_long);
  • 13. 제약 조건 추가 ALTER TABLE korea_park add CONSTRAINT korea_park_primary_constraint check(char_length(park_name) > 0);
  • 14. 제약조건 - 주 키 ALTER TABLE korea_park add primary key(manage_no);
  • 15. 제약조건 - 외부키 ALTER TABLE distributors ADD CONSTRAINT diskless FOREIGN KEY (address) REFERENCES addresses (address);
  • 16. 테이블 컬럼 특징 데이터 타입 NULL NOT NULL DEFAULT
  • 17. 번호 자동 증가(SQL 표준) INT GENERATED ALWAYS AS IDENTITY CREATE TABLE color ( color_id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 10 INCREMENT BY 10), color_name VARCHAR NOT NULL );
  • 18. 데이터 입력 1) insert - into, select 2) select into 3) copy 4) create table as
  • 19. insert into INSERT INTO table_name [ AS alias ] [ ( column_name [, ...] ) ] { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query } [ ON CONFLICT [ conflict_target ] conflict_action ] [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]
  • 20. insert into insert into korea_park (manage_no, park_name, park_type, park_addr_road, park_lat, park_long, park_area) values ( '201811-221930', 'PG마당', '수변공원', 'PG시 PG구 PG동 1번지', 51.516510, 9.919632, now())
  • 21. insert select insert into korea_park2 select * from korea_park where park_type='수변공원'
  • 22. select into select * from into korea_park3 from korea_park where park_type = '수변공원'
  • 23. copy COPY table_name [ ( column_name [, ...] ) ] FROM { 'filename' | PROGRAM 'command' | STDIN } [ [ WITH ] ( option [, ...] ) ] COPY { table_name [ ( column_name [, ...] ) ] | ( query ) } TO { 'filename' | PROGRAM 'command' | STDOUT } [ [ WITH ] ( option [, ...] ) ] url: https://www.postgresql.org/docs/9.6/static/sql-copy.html
  • 24. copy 실전 copy korea_park (manage_no, park_name, park_type, park_addr_road, park_lat, park_long, park_area) from 'test2.csv' with format csv DELIMITER ','
  • 25. create table as create table korea_park4 as select * from korea_park
  • 26. 데이터 조회 [ WITH [ RECURSIVE ] with_query [, ...] ] SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] * | expression [ [ AS ] output_name ] [, ...] INTO [ TEMPORARY | TEMP | UNLOGGED ] [ TABLE ] new_table [ FROM from_item [, ...] ] [ WHERE condition ] [ GROUP BY expression [, ...] ] [ HAVING condition [, ...] ] [ WINDOW window_name AS ( window_definition ) [, ...] ] [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] select ] [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ] [ LIMIT { count | ALL } ] [ OFFSET start [ ROW | ROWS ] ] [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ] [ FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ]
  • 27. 데이터 조회 실전 select * from korea_park where park_type = '어린이공원' select count(*) from korea_park where park_type = '근린공원' select part_type, count(park_type) from korea_park group by park_type
  • 28. 데이터 조회 실전 select * from korea_park limit 10 offset 0; select * from korea_park order by park_type asc
  • 29. window 함수 row_number, rank 등과 같은 함수가 window 함수에 속합니다. 추가적인 함수는 https://www.postgresql.org/docs/9.6/static/functions-window. html 에서 살펴볼 수 있습니다.
  • 30. JOIN SQL의 조인은 기본적으로 테이블과 테이블의 행을 서로 묶는데 사용합니다. 조인의 가장 기본적인 형태는 카테시안 조인으로 조인 조건을 지정하지 않는 조인을 일컫습니다. no name created 1 jiho 201 2 postgres 202 no article_no content 3 1 c01 4 1 c02 1 jiho 201 3 1 c01 1 jiho 201 3 1 c02 2 postgres 202 3 1 c01 2 postgres 202 3 1 c02
  • 31. LEFT JOIN 테이블 조인시 왼쪽 테이블의 행이 우선시 되는 조인
  • 32. RIGHT JOIN 테이블 조인시 오른쪽 테이블의 행이 우선시 되는 조인
  • 33. ANSI JOIN(INNER JOIN) 테이블 조인시 테이블간의 조인 조건이 서로 일치하는 것만 뽑는 조인
  • 34. EXPLAIN 쿼리가 데이터베이스에서 실행될때 실행 비용 등을 알아보기 위해 사용합니다. 보통 쿼리 최적화를 위해 사용합니다. EXPLAIN SELECT * FROM korea_park WHERE park_type = '근린공원';
  • 35. ALTER TABLE ALTER TABLE은 테이블의 정의에 변경사항을 가하기 위해 사용하는 DDL 문입니다. 주요 기능은 아래와 같습니다. 테이블 제약사항 추가/수정/삭제 테이블 컬럼의 추가/이름 변경/데이터 타입 변경/컬럼 제거
  • 36. 테이블 이름 변경 alter table korea_park rename to south_korea_park;
  • 37. 테이블 컬럼 추가 alter table korea_park add column park_city varchar(20);
  • 38. 테이블 컬럼 이름 변경 alter table korea_park rename park_city to city_park; alter table south_korea_park rename to korea_park;
  • 39. 테이블 컬럼 타입 변경 alter table korea_park alter column city_park type integer;
  • 40. 테이블 컬럼 제거 alter table korea_park drop column city_park;
  • 41. insert 충돌을 해결하기 테이블에 데이터 입력시 이미 있는 레코드를 추가하면 레코드 충돌로 데이터가 입력되지 않습니다. conflict 옵션을 사용하면 데이터 충돌시 해결책을 제시할 수 있습니다. insert into korea_park(manage_no, park_name, park_type) values ('29170-00001', '문화근린공원', '근린공원')
  • 42. insert 충돌시 아무것도 안하기 insert into korea_park(manage_no, park_name, park_type) values ('29170-00001', '문화근린공원', '근린공원') on conflict (manage_no) do nothing;
  • 43. 데이터 충돌시 데이터 덮어쓰기 insert into korea_park(manage_no, park_name, park_type) values ('29170-00001', '문화근린공원', '어린이공원') on conflict (manage_no) do update set park_type=excluded.park_type;
  • 44. 데이터 변경 update korea_park set park_name = 'MBC 어린이공원' where manage_no = '29170-00001'
  • 45. update시 다른 테이블과 조인 UPDATE employees SET sales_count = sales_count + 1 FROM accounts WHERE accounts.name = 'Acme Corporation' AND employees.id = accounts.sales_person;
  • 46. 데이터 삭제 delete from korea_park where manage_no='29170-00001';
  • 47. 데이터 삭제 시 다른 테이블과 조인하기 DELETE FROM films USING producers WHERE producer_id = producers.id AND producers.name = 'foo';
  • 48. 역할 생성과 제거 create role reader1 login password 'reader1'; create role reader2 login password 'reader2';
  • 49. 권한 부여 grant select (park_name, park_addr_road) on korea_park to reader1; grant select (park_name, park_lat, park_long) on korea_park to reader2;
  • 50. 권한 제거 revoke select (park_name, park_addr_road) on korea_park from reader1; revoke select (park_name, park_lat, park_long) on korea_park from reader2;
  • 51. truncate truncate는 테이블의 모든 행을 한 번에 지우는 명령입니다. TRUNCATE korea_park; truncate korea_park RESTART IDENTITY;
  • 52. 트랜잭션 데이터베이스 조작의 일관성을 보장하기 위한 행동 묶음을 트랜잭션이라고 부릅니다 begin transaction; commit; rollback; end;
  • 53. 트랜잭션 트랜잭션이 시작된 이후 에러가 발생하면 에러가 발생한 이후의 SQL 문장은 유효한 SQL 문장이라고 해도 실행되지 않습니다.
  • 54. PostgreSQL 데이터 타입 bigint, boolean character, character varying date, integer json, numeric text timestamp
  • 55. vacuum 1) 변경 또는 삭제된 자료들이 차지 하고 있는 디스크 공간을 다시 사용하기 위한 디스크 공간 확보 작업이 필요하다. 2) PostgreSQL 쿼리 실행 계획기가 사용할 자료 통계 정보를 갱신할 필요가 있다. 3) 인덱스 전용 검색 성능을 향상하는데 이용하는 실자료 지도(visibility map, vm) 정보를 갱신하는 작업이 필요하다. 4) 트랜잭션 ID 겹침이나, 다중 트랙잭션 ID 겹침 상황으로 오래된 자료가 손실 될 가능성을 방지해야할 필요가 있다.
  • 56. 베이큠 작업의 실행 -- DB 전체 풀 실행 vacuum full analyze; -- DB 전체 간단하게 실행 vacuum verbose analyze; -- 해당 테이블만 간단하게 실행 vacuum analyse [테이블 명]; -- 특정 테이블만 풀 실행 vacuum full [테이블명];
  • 57. PostgreSQL Management Tool ● PgAdmin 4 ● Datagrip ● DBeaver ● RazorSQL ● Aqua Data Studio ● SQLDeveloper
  • 58. DDL Drop Table DROP TABLE korea_park;