일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 스타터스부트캠프
- 데이터드리븐
- Tableau
- 태블로
- 데이터시각화
- 넘파이
- 정렬
- 데이터프레임
- 그리디 알고리즘
- 유데미
- 유데미코리아
- 판다스
- 시각화
- 브루트포스 알고리즘
- Leetcode
- 백준
- 부트캠프후기
- 코딩테스트
- 취업부트캠프
- matplotlb
- python
- DataFrame
- numpy
- 데이터분석
- 파이썬
- pandas
- 유데미큐레이션
- ndarray
- 유데미부트캠프
- Til
- Today
- Total
Diary, Data, IT
[TIL] 8일차 TIL(20230215) - DBMS이론 및 SQL기초, 조건절 본문
[TIL] 8일차 TIL(20230215) - DBMS이론 및 SQL기초, 조건절
1. 데이터베이스
- 목적에 맞도록 관련된 데이터를 저장하고 처리하기 위한 방법
- 동시성: 여러 명의 사용자가 동시에 접근 가능
- DBMS: 데이터베이스를 관리/운영하는 역할, 동시 사용 가능한 데이터 저장공간을 위한 시스템
- 관계형 DBMS(RDBMS)는 정형화된 키, 값의 테이블의 집합, SQL언어를 통해 처리할 수 있음
2. 데이터베이스의 기능적 특징
- 데이터 정의: 데이터의 구조를 정의하고 데이터 구조에 대한 삭제 및 변경기능을 수행
- 데이터 조작: 데이터를 조작하는 소프트웨어(응용 프로그램)가 요청하는 데이터의 삽입, 수정, 삭제 작업을 지원
- 데이터 추출: 사용자가 조회하는 데이터 혹은 응용 프로그램의 데이터를 추출
- 데이터 제어: 데이터베이스 사용자를 생성하고 모니터링하며 접근을 제어하며, 백업과 회복, 동시성 제어 등의 기능을 지원
3. Schema(스키마)
- DBMS에 테이블을 여러개 저장하는 공간
4. Table
- DBMS의 기본 저장구조로서 column과 row단위로 구성됨
- Entity: 데이터로 저장하고자 하는 관심이 있는 명사 단위의 개체
ex) 엔티티: 학생/ 속성: 이름, 학과, 학번, 학점 등
- Entity Relation에 의해 테이블 사이의 관계를 불필요한 낭비를 줄이고 효율적으로 저장하게 함
- 테이블 사이의 관계: 기본 키(Primary Key)와 외래 키(Foreign Key)를 사용해 관계를 맺어줌
- 추후에 SQL의 join기능을 통해 테이블을 묶을 수 있음
5. SQL 명령어 구분
- DML(Data Manipulation Language): 데이터 조작어로 검색 및 수정기능 제공
SELECT, INSERT, UPDATE, DELETE, MERGE
- DDL(Data Definition Language): 데이터 구조를 생성, 변경, 삭제 등의 기능 제공
CREATE, ALTER, DROP, RENAME
- DCL(Data Control Language): 데이터에 대한 권한 관리 및 트랜잭션 제어, 보안과 관련된 사항
GRANT, REVOKE
6. 데이터 자료형 종류
데이터 타입 | 설명 |
INTEGER, INT | 4바이트 정수형 |
NUMERIC(m,d) DECIMAL(m, d) |
전체자리수 m, 소수점이하 자리수 d를 가진 숫자형 |
CHAR(n) | 문자형 고정길이, 문자를 저장하고 남은 공간은 공백으로 채움 |
VARCHAR(n) | 문자형 가변길이 |
DATE | 날짜형/ 연도, 월, 날, 시간을 저장 |
7. 테이블 생성 및 삭제
- CREATE TABLE 테이블명 (속성명 자료형);
CREATE TABLE BookLibrary (
bookid INTEGER,
bookname VARCHAR(20),
publisher VARCHAR(20),
price INTEGER
);
- DROP TABLE 테이블명: 테이블의 구조와 데이터를 모두 삭제
7.1 제약조건
- 테이블을 생성할 때 예상치 못한 데이터의 손실이나 일관성을 어기는 데이터의 추가, 변경 등을 예방하기 위해 제약조건을 설정
- NOT NULL: NULL값을 가질 수 없음
- UNIQUE: 중복된 값을 저장할 수 없음
- PRIMARY KEY/FOREIGN KEY
- CHECK: 조건을 만족하지 않으면 오류 반환
- DEFAULT: 값을 입력하지 않으면 기본값으로 설정
7.2 PRIMARY KEY, FOREIGN KEY
- PRIMARY KEY: 기본키(인덱스)로 지정하여 테이블을 검색할 때 기준으로 사용, 기본키의 지정 유무가 검색 속도에 영향을 주기 때문에 지정하는 것이 좋음
- FOREIGN KEY: 다른 테이블들과의 관계를 나타낼 수 있는 외래키
CREATE TABLE BookLibrary (
bookname VARCHAR(20) NOT NULL,
publisher VARCHAR(20) UNIQUE,
price INTEGER DEFAULT 10000 CHECK(price > 5000),
PRIMARY KEY (bookname, publisher)
);
8. ALTER문
- ALTER TABLE 테이블명 ADD 칼럼명 자료형: 테이블에 해당 자료형을 가진 칼럼(속성)을 추가
- ALTER TABLE 테이블명 MODIFY 칼럼명 자료형: 테이블에 해당 칼럼(속성)의 자료형을 변경
- ALTER TABLE 테이블명 DROP COLUMN 칼럼명: 테이블의 해당 칼럼을 삭제
-- booklibrary 테이블에 VARCHAR(30)의 자료형을 가진 inventory속성 추가
ALTER TABLE booklibrary ADD inventory VARCHAR(30);
-- booklibrary 테이블의 inventory속성의 데이터 타입을 INTEGER로 변경
ALTER TABLE booklibrary MODIFY inventory INTEGER;
-- booklibrary 테이블의 inventory속성 삭제
ALTER TABLE booklibrary DROP COLUMN inventory;
9. SELECT FROM절
SELECT [ALL┃DISTINCT] 컬럼이름[,] | *
FROM [dbname.]테이블이름[,]
[WHERE 검색조건(들)]
[GROUP BY 속성이름]
[HAVING 검색조건(들)]
[ORDER BY 속성이름 [ASC┃DESC]]
- ORDER BY에 칼럼 번호로 지시 가능
10. INSERT
- INSERT는 새로운 값을 추가하는 명령
- 값을 추가할 때 테이블의 자료형에 부합하는 형식으로 넣어줘야 함
INSERT INTO 테이블명(칼럼1, 칼럼2, 칼럼3, ...)
VALUES (값1, 값2, 값3, ...);
11. UPDATE
- 특정 칼럼(속성) 값을 수정하는 명령어
- *주의*: 조건을 걸어주지 않으면 해당 테이블의 모든 값을 수정하게 됨.
UPDATE 테이블명
SET 칼럼명1=값1, 칼럼명2=값2, ...
WHERE 조건;
12. WHERE 조건 구문
술어 | 연산자 | 예 |
비교 | =, <, >, <=, >= | price < 20000 |
범위 | BETWEEN AND | price BETWEEN 10000 AND 20000 |
집합 | IN, NOT IN | price IN (10000, 20000, 30000) |
패턴 | LIKE | bookname LIKE '%이%' |
NULL | IS NULL, IS NOT NULL | price IS NULL |
복합조건 | AND, OR, NOT | (price < 20000) OR (bookname LIKE '철학의 역사') |
12.1 LIKE절
- LIKE '문자열 조건': 문자열 조건과 일치하는 것들만 선택
연산자 | 기능 | 예 | 설명 |
% | 여러 문자와 일치하는 패턴 | %학% | ‘학’이 포함된 문자열 |
_ | 한 문자와 일치하는 패턴 | _학 | ‘학’ 앞에 임의의 한 문자가 들어간 문자열 |
[] | 1개의 문자와 일치 | '[0-9]%' | 0-9 사이 숫자로 시작하는 문자열 |
[^] | 1개의 문자와 불일치 | '^[0-9]%' | 0-9 사이 숫자로 시작하지 않는 문자열 |
13. NULL
- NULL값은 비교가 불가능하며, 연산을 수행하면 결과 역시 NULL값으로 반환됨
- 집계 함수 계산 시 NULL이 포함된 행은 집계에서 빠짐
- 해당되는 행이 하나도 없을 경우 SUM, AVG 함수의 결과는 NULL이 되며, COUNT 함수의 결과는 0
- IFNULL(칼럼, '대체할 값'): 해당 칼럼에 NULL이 있을 경우 다른 값으로 대체해줌
14. DISTINCT/LIMIT
- DISTINCT: 조회된 결과에서 중복된 데이터를 제외하고 출력(unique)
- LIMIT: 쿼리문의 결과의 출력 개수를 제한, 쿼리문의 제일 마지막에 사용
LIMIT s, n: s번째 행부터 n개를 출력
15. CASE WHEN
CASE
WHEN 조건
THEN '반환 값'
WHEN 조건
THEN '반환 값'
ELSE 'WHEN 조건에 해당 안되는 경우 반환 값'
END
- ELSE가 존재하지 않고, 조건에 맞지 않아서 반환 값이 없으면 NULL를 반환
소감 및 정리
데이터베이스에 대한 개념 설명과 간단한 SQL문을 작성하는 시간을 가졌다. SQL문 자체를 처음 다뤄보는 것은 아니지만 배운지 시간이 꽤 지났고 직접 쓸 일이 많지는 않았어서 잊어버리고있던 구문이 생각보다 많았다. 당분간 수업을 통해 해당 구문들에 익숙해지는 시간을 가져야할 것 같다.
'STARTERS > TIL' 카테고리의 다른 글
[TIL] 10일차 TIL(20230217) - RANK, ROLL UP, 공공데이터를 이용한 SQL 실습 (0) | 2023.02.19 |
---|---|
[TIL] 9일차 TIL(20230216) - 집계함수, 문자열/날짜 자료형, 서브쿼리, JOIN (0) | 2023.02.16 |
[TIL] 7일차 TIL(20230214) - 데이터 전처리 및 다중막대그래프 (0) | 2023.02.14 |
[TIL] 6일차 TIL(20230213) - 데이터 시각화 및 활용 (0) | 2023.02.13 |
[TIL] 5일차 TIL(20230210) - Matplotlib를 이용한 데이터 시각화 (0) | 2023.02.10 |