클러스터
여러 개의 노드로 구성된 하나의 분산 시스템을 의미하며, 각 노드에는 CPU, 메모리, 스토리지 등의 컴퓨팅 리소스가 있어 데이터 처리와 분석 작업을 병렬로 수행할 수 있다.
관계형 데이터베이스 사용자 / 세션
1) 사용자 ID(User ID):
- 사용자 ID는 데이터베이스에 저장된 각 사용자를 고유하게 식별하는 식별자(일반적으로 사용자 계정, 프로필, 인증 정보와 연관)
- 사용자 ID는 데이터베이스의 다른 테이블에도 참조될 수 있으며, 이를 통해 사용자 관련 데이터를 연결하고 추적할 수 있다.
2) 세션 ID(Session ID):
- 세션 ID는 사용자가 웹 사이트나 애플리케이션을 사용하는 동안 지속되는 인터랙션을 식별하기 위한 고유한 식별자
- 사용자가 로그인하거나 웹 사이트를 방문할 때, 서버는 세션 ID를 생성하고 이를 클라이언트에 전달한다.
- 보통 세션의 경우 세션을 만들어낸 접점(경유지)을 채널이란 이름으로 기록해 둔다.
- 세션 ID는 쿠키, URL 매개 변수, 또는 웹 스토리지와 같은 클라이언트 측 저장소에 저장된다.
- 사용자가 애플리케이션 내에서 이동할 때 서버에 전달되어 인증 및 인가를 유지할 수 있게 한다.
- 세션 ID는 사용자가 로그아웃하거나 일정 시간이 경과하면 만료된다.
간단하게 말하면, 사용자 ID는 사용자의 고유한 신원을 나타내는 반면, 세션 ID는 사용자가 웹 사이트나 애플리케이션에서 활동하는 동안의 인터랙션을 나타낸다.
* 인터렉션: 둘 이상의 물체나 대상이 서로 영향을 주고받는 일종의 행동
SQL 소개
관계형 데이터베이스 관리 시스템(RDBMS)에서 데이터를 생성, 조회, 수정 및 삭제하는 데 사용되는 프로그래밍 언어
1) DDL(Data Definition Language)
데이터베이스의 구조와 관련된 객체들을 정의, 변경, 삭제하는 데 사용된다.
주요 명령어
- CREATE
데이터베이스 객체를 생성하는 데 사용되며 예를 들어, 테이블, 인덱스, 뷰 등을 생성할 수 있다.
예시: CREATE TABLE users (id INT primary key, name VARCHAR(50), email VARCHAR(100));
- CTAS
데이터베이스 객체를 생성과 동시에 데이터를 가져와서 채우는 것에 사용되며 예를 들어, 테이블 생성과 삽입을 동시에 할 수 있다.
예시: CREATE TABLE users AS SELECT * FROM user_info WHERE name = "잠봉";
- ALTER
기존 데이터베이스 객체의 구조를 변경하는 데 사용되며 예를 들어, 테이블에 새로운 열을 추가하거나, 기존 열의 데이터 형식을 변경할 수 있다.
예시: ALTER TABLE users ADD COLUMN age INT;(새로운 칼럼 추가)
예시: ALTER TABLE users RENAME age to 잠봉;(기존 컬럼 이름 변경)
예시: ALTER TABLE users DROP COLLUMN age;(기존 컬럼 제거)
예시: ALTER TABLE users RENAME to 잠봉;(기존 테이블 이름 변경)
- DROP
데이터베이스 객체를 삭제하는 데 사용되며 예를 들어, 테이블, 인덱스, 뷰 등을 삭제할 수 있다.
예시: DROP TABLE users;
- DROP and IF EXISTS
데이터베이스 객체가 있다면 삭제하는 데 사용되며 예를 들어, 테이블을 조건에 따라 삭제할 수 있다.
예시: DROP TABLE IF EXISTS users;
2) DML
데이터베이스에 저장된 데이터를 효과적으로 읽고, 쓰고, 수정하고 삭제할 수 있다.
주요 명령어
- SELECT
데이터베이스에서 데이터를 검색하고 조회하는 데 사용
예시: SELECT id, name, email FROM users WHERE age > 30;
예시: SELECT * FROM users group by age;
예시: SELECT * FROM users order by age desc or asc;
- INSERT
데이터베이스에 새로운 데이터를 추가하는 데 사용
예시: INSERT INTO users (id, name, email) VALUES (1, 'John Doe', 'john@example.com');
- UPDATE
데이터베이스에 저장된 기존 데이터를 수정하는 데 사용
예시: UPDATE users SET email = 'john.doe@example.com' WHERE id = 1;
- DELETE
데이터베이스에서 데이터를 삭제하는 데 사용
예시: DELETE FROM users WHERE id = 1;
추가 구문
- CASE WHEN
조건부 로직을 사용할 때 사용되는 구문
예시:SELECT name, age, CASE WHEN age < 18 THEN 'Under 18' WHEN age >= 18 AND age <= 24 THEN '18-24' WHEN age >= 25 AND age <= 34 THEN '25-34' ELSE '35 and over' END AS age_group FROM users;
- COUNT
테이블의 행을 세는 함수
예시: SELECT count(1) or count(0) FROM users;
예시: SELECT count(NULL) FROM users;
- LEN
문자열의 길이를 반환하는 함수
예시: SELECT LEN('Hello, World!');
- UPPER
문자열의 모든 문자를 대문자로 변환하는 함수
예시: SELECT UPPER('Hello, World!');
- LOWER
문자열의 모든 문자를 소문자로 변환하는 함수
예시: SELECT LOWER('Hello, World!');
- LEFT
문자열의 왼쪽 부분에서 지정된 개수만큼의 문자를 반환하는 함수
예시: SELECT LEFT('Hello, World!', 5);
- LPAD
문자열의 왼쪽에 지정된 문자를 추가하여 총 길이가 지정된 길이와 같도록 만드는 함수
(추가할 문자, 전체 자릿수, 추가할 문자 이상일 때 추가 되는 값)
예시: SELECT LPAD('123', 6, '0');
- RPAD
문자열의 오른쪽에 지정된 문자를 추가하여 총 길이가 지정된 길이와 같도록 만드는 함수
예시: SELECT RPAD('123', 6, '0');
- SUBSTRING
문자열에서 지정된 시작 위치와 길이에 따른 부분 문자열을 반환하는 함수
예시: SELECT SUBSTRING('Hello, World!', 1, 5);
- REPLACE: 문자열에서 지정된 부분 문자열을 다른 문자열로 대체하는 함수입니다.
예시: SELECT REPLACE('Hello, World!', 'World', 'SQL');
3) NULL
NULL은 데이터베이스에서 값이 없거나 알 수 없는 값
주요 구문
- IS NULL
필드가 NULL인지 확인하는 연산자
예시: SELECT * FROM users WHERE phone_number IS NULL;
- IS NOT NULL
필드가 NULL이 아닌지 확인하는 연산자
예시: SELECT * FROM users WHERE phone_number IS NOT NULL;
- COALESCE
여러 값 중 첫 번째 NULL이 아닌 값을 반환하는 함수
예시: SELECT COALESCE(phone_number, email) AS contact_info FROM users;
- NULLIF
두 값이 동일한 경우 NULL을 반환하고, 그렇지 않은 경우 첫 번째 값을 반환하는 함수
예시: SELECT NULLIF(age, 0) AS corrected_age FROM users;
4) 시간 변환
날짜 및 시간 데이터를 처리하고 변환하는 데 사용되는 SQL 구문
주요 구문
- CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP
현재 날짜, 시간, 날짜 및 시간 값을 반환하는 함수
예시: SELECT CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP;
- EXTRACT
날짜 또는 시간 값에서 지정된 필드(년, 월, 일, 시간, 분, 초 등)를 추출하는 함수
예시: SELECT EXTRACT(YEAR FROM '2021-09-01');
- DATE_ADD, DATE_SUB
날짜에 지정된 시간 단위(일, 월, 년 등)를 더하거나 빼는 함수
SELECT DATE_ADD('2021-09-01', INTERVAL 1 MONTH); SELECT DATE_SUB('2021-09-01', INTERVAL 1 YEAR);
- DATEDIFF: 두 날짜 간의 차이를 지정된 시간 단위로 반환하는 함수
예시: SELECT DATEDIFF(day, '2021-01-01', '2021-12-31');
- DATE_FORMAT
날짜 및 시간 값을 지정된 형식의 문자열로 변환하는 함수
예시: SELECT DATE_FORMAT('2021-09-01 12:34:56', '%Y-%m-%d %H:%i:%s');
'Database & Data > 기초지식' 카테고리의 다른 글
개념적, 논리적, 물리적 모델(이해 위주) (0) | 2023.05.26 |
---|---|
고급 SQL 다루기 (0) | 2023.05.12 |
Join 소개 (0) | 2023.05.11 |
관계형 데이터베이스와 SQL 소개 (0) | 2023.05.08 |
Postgresql과 Mysql 중 선택시 고려해야 할 점 (0) | 2023.04.09 |