1. 열 / 행
- 열(column): 속성(attribute) 혹은 필드(field) 라고도 불림. 테이블의 세로 방향 데이터.
- 행(row): 레코드(record) 또는 튜플(tuple)이라고도 불림. 테이블의 가로 방향 데이터.
- 예를들어 html에서 테이블은 tr(table-row)의 리스트로 구성된다.
테이블 헤더부분을 제외한 각 tr태그 안에는 td(table-data)태그들이 포함되어 있는 형태를 볼 수 있다.
즉, 테이블은 여러 필드로 구성되고, 그 틀을 채우는 한줄한줄의 레코드는 속성마다의 데이터를 갖는 객체로 생각할 수 있다.
2. 데이터베이스 구조
- 데이터베이스 > 스키마 > 테이블(=릴레이션=RDBS)
- 데이터베이스는 여러 스키마로 구성됨.
- 스키마는 테이블을 포함하며, 테이블은 데이터를 저장하는 구조화된 단위임.
3. 주요 테이블 용어
- 도메인: 어떤 속성이 가질 수 있는 값의 범위.
예) 속성 '나이'의 도메인이 0~150이라면, '나이'는 0에서 150 사이 값만 가질 수 있음. - 기수(cardinality): 행의 개수. => 비행기
예) 학생 테이블에 10명의 학생 데이터가 있다면 기수는 10. - 차수(degree): 열의 개수. => 열차
예) 학생 테이블에 '이름', '나이', '학번' 열이 있다면 차수는 3. - Primary Key (PK): 기본키. 각 행을 고유하게 식별하게 해줌. 즉, 정체성을 구분지어주는 중복되지 않는 속성(= unique, not null).
- Foreign Key (FK): 외래키. 다른 테이블의 기본키를 참조하는 속성.
SQL 언어 분류 (CDM)
1. DCL (Data Control Language) - 제어어
- GRANT, REVOKE, ROLLBACK, COMMIT: 권한 관련, 쿼리 실행 결과 컨트롤
시스템관리자 계정으로 유저에게 DB에 특정 ROLL 부여. (ex) 특정 테이블에 대한 SELECT 권한만 부여하기) /
실행한 쿼리 최종 적용 여부 결정.(auto commit시 쿼리 실행시 바로 결과를 db에 적용) /
(정보처리산업기사 시험때도 요거 중요했었음.)
2. DDL (Data Definition Language) - 정의어
- CREATE, DROP, ALTER: 테이블의 구조(틀) 관련된 명령어.
3. DML (Data Manipulation Language) - 조작어
- SELECT, INSERT, UPDATE, DELETE: 데이터를 조회하거나 삽입, 수정, 삭제.
가장 많이 사용하게 되는 명령어들(CRUD). - SELECT는 데이터를 조회만 하므로 COMMIT/ROLLBACK 대상이 아님.
데이터 형식(Data Types)
1. 정수형
- TINYINT, SMALLINT, INT(INTEGER), BIGINT
- Java와 대응: byte, short, int, long (1, 2, 4, 8바이트로 크기 동일)
2. 실수형
- FLOAT, DOUBLE
- Java와 동일. 부동소수점 숫자를 표현.
3. 문자형
- CHAR(N), VARCHAR(N)
- CHAR(N): 고정 길이 문자형. N글자 크기 고정.
- VARCHAR(N): 가변 길이 문자형. 저장된 데이터의 실제 길이만큼 메모리를 사용(N 글자 이하).
- 일반적으로 VARCHAR를 사용하는 것이 효율적임.
예) CHAR(10)에 "abc" 저장 시, 10바이트를 모두 차지하지만 VARCHAR(10)은 3바이트만 사용. 숫자 범위도 더 큼.
4. 날짜형
- DATE, TIME, DATETIME, TIMESTAMP
- DATE: YYYY-MM-DD 형식.
- TIME: HH:MM:SS 형식.
- DATETIME: 이름처럼 DATE와 TIME의 결합(YYYY-MM-DD HH:MM:SS).
- TIMESTAMP: 어딘지(time-zone)를 반영하여 시간 저장. 환경에 따라 출력 값이 달라질 수 있음.
(프로그래밍 언어랑 다르게 날짜형이 있는 것이 좀 특이한 점.)
- 숫자 데이터 외에는 작은따옴표('') 사용. 날짜형은 숫자 데이터 아님.
- 타 언어와의 연동시 데이터 타입 확인 잘 해서 정확히 매칭하기.
'sql' 카테고리의 다른 글
SQL 특정 옵션이 포함된 자동차 리스트 구하기 (LIKE) (1) | 2024.12.20 |
---|---|
SQL 프로그래머스 과일로 만든 아이스크림 고르기 ( JOIN ) (2) | 2024.12.11 |
SQL 프로그래머스 흉부외과 또는 일반외과 의사 목록 출력하기 (DATE_FORMAT(), AS) (2) | 2024.12.07 |
SQL 프로그래머스 재구매가 일어난 상품과 회원 리스트 구하기 (GROUP BY, HAVING, ORDER BY) (1) | 2024.12.07 |
SQL 프로그래머스 최댓값 구하기 (GROUP BY, 집계함수) (1) | 2024.12.06 |