
인프런에서 유명한 김영한님의 JPA 강의를 듣고 사이드 프로젝트를 진행하는데 JPA 강의를 들으며 뭔가 시원하게 이해되지 않는 아쉬운 부분들이 있었다.
DB 공부를 제대로 하는게 필요하구나 뼈저리게 느끼고 DB 공부를 시작한다.
DB tool은 RDBMS에서 유명한 PostgreSQL로 정하고 유데미에서 가장 평이 좋고 유명한 강의를 사서 공부하고 정리해보는 시간을 가지려고 한다.
with SQL and PostgreSQL: The Complete Developer's Guide
(https://www.udemy.com/course/sql-and-postgresql/)
DB 디자인 프로세스
1. 무엇을 저장할 것 인가?
2. 저장할 대상이 가진 특성들은 무엇인가?
3. 각 특성들은 어떤 타입의 데이터인가?
CREATE TABLE cities (
name VARCHAR(50), // VARCHAR(50) : 문자열, (50)은 최대 50글자 허용이라는 뜻이다.
country VARCHAR(50),
population INTEGER, // INTEGER : -20억 ~ 20억 의 정수
area INTEGER
);
DB 디자인 프로세스에 입각해서 설명하자면,
1. 무엇을 저장할 것인가? -> cities -> Table Name
2. 저장할 대상의 특성들은 무엇인가? -> name, country, area->Table Column
3. 각 특성들의 데이터 타입? -> 문자, 숫자 -> VARCHAR, INTEGER
INSERT INTO cities (name, country, population, area)
VALUES // Column 순서에 맞춰서 VALUES 리스트의 순서를 맞추는게 중요하다.
('Delhi', 'India', 28125000, 2450),
('Shanghai', 'China', 22150000, 4015),
('Sao Paulo', 'Brazil', 2093500, 3043);
SELECT * FROM cities; // 모든 Column 데이터 가져오기
SELECT name, country FROM cities; // 특정 Column 데이터 가져오기
SELECT name, name, name FROM cities; // 한개의 Column 여러번 가져오기
SELECT name, population / area FROM cities;
//컬럼 계산하기(+, - 등 다양한 연산 가능).
이 문장의 결과는 무명의 새로운 컬럼으로 보여줌 (ex. ?column?)
SELECT name, population / area AS density FROM cities;
// 계산 결과의 컬럼에 density 라는 이름을 붙여줘서 가져옴
SELECT name || ', ' || country FROM cities;
SELECT CONCAT(UPPER(name), ', ', UPPER(country)) AS location FROM cities;
대표적 문자열 연산자
1. || : 두 문자열 붙이기
2. CONCAT() : 문자열 붙이기
3. LOWER() : 문자열 전부 소문자로 만들기
4. UPPER() : 문자열 전부 대문자로 만들기
5. LENGTH() : 문자열 길이 가져오기