공부/TIL

[SQL 첫걸음] 14강 - 16강

2024. 1. 5. 09:03
목차
  1. 14강 : 날짜 연산
  2. 15강 : CASE 문으로 데이터 변환하기
  3. 4장 : 데이터의 추가, 삭제, 갱신
  4. 16강 : 행 추가하기 - INSERT

14강 : 날짜 연산

1. SQL에서의 날짜

DB에 있는 날짜 데이터는 서식 지정 가능

mysql> select current_timestamp;
+---------------------+
| current_timestamp   |
+---------------------+
| 2024-01-05 08:43:19 |
+---------------------+
1 row in set (0.00 sec)

 

2. 날짜의 덧셈과 뺄셈

# 1일 후
mysql> select current_date + interval 1 day;
+-------------------------------+
| current_date + interval 1 day |
+-------------------------------+
| 2024-01-06                    |
+-------------------------------+
1 row in set (0.00 sec)

# 뺄셈
DATEDIFF('2014-02-24', '2024-01-01')

 

 

15강 : CASE 문으로 데이터 변환하기

1. CASE 문

간단한 함수를 작성하는 대신 CASE 문으로 처리 가능

mysql> select a from sample37;
+------+
| a    |
+------+
|    1 |
|    2 |
| NULL |
+------+
3 rows in set (0.01 sec)

# null -> 0
mysql> select a, case when a is null then 0 else a end "a(null=0)" from sample37;
+------+-----------+
| a    | a(null=0) |
+------+-----------+
|    1 |         1 |
|    2 |         2 |
| NULL |         0 |
+------+-----------+
3 rows in set (0.00 sec)

 

COALESCE

null 값 변환 시 사용

인수 여러개 지정 가능

mysql> select a, coalesce(a, 0) from sample37;
+------+----------------+
| a    | coalesce(a, 0) |
+------+----------------+
|    1 |              1 |
|    2 |              2 |
| NULL |              0 |
+------+----------------+
3 rows in set (0.00 sec)

 

2. 또 하나의 CASE 문

디코드 : 숫자인 코드를 알아보기 좋게 문자열로 변환

인코드 : 디코드와 반대로 문자열을 수치화 하는 것

CASE 사용 시 ELSE 생략하면 NULL 반환 -> 생략 지양

WHEN NULL THEN '데이터 없음' -> 데이터 = NULL -> 해당 비교 연산자(=)로는 비교 불가능 -> IS NULL 사용

# 검색 CASE
mysql> select a as '코드',
    -> case
    -> when a = 1 then '남자'
    -> when a = 2 then '여자'
    -> else '미지정'
    -> end as '성별' from sample37;
+------+--------+
| 코드 | 성별   |
+------+--------+
|    1 | 남자   |
|    2 | 여자   |
| NULL | 미지정 |
+------+--------+
3 rows in set (0.00 sec)

# 단순 CASE
mysql> select a as '코드',
    -> case a
    -> when 1 then '남자'
    -> when 2 then '여자'
    -> else '미지정'
    -> end as '성별' from sample37;
+------+--------+
| 코드 | 성별   |
+------+--------+
|    1 | 남자   |
|    2 | 여자   |
| NULL | 미지정 |
+------+--------+
3 rows in set (0.00 sec)

 

 

4장 : 데이터의 추가, 삭제, 갱신

16강 : 행 추가하기 - INSERT

1. INSERT로 행 추가하기

mysql> select * from sample41;
Empty set (0.01 sec)

mysql> desc sample41;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| no    | int         | NO   |     | NULL    |       |
| a     | varchar(30) | YES  |     | NULL    |       |
| b     | date        | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)

mysql>  insert into sample41 values(1, 'abc', '2014-02-02');
Query OK, 1 row affected (0.01 sec)

mysql> select * from sample41;
+----+------+------------+
| no | a    | b          |
+----+------+------------+
|  1 | abc  | 2014-02-02 |
+----+------+------------+
1 row in set (0.00 sec)

# 열 지정
mysql> insert into sample41(a, no) values('xyz', 2);
Query OK, 1 row affected (0.00 sec)

mysql> select * from sample41;
+----+------+------------+
| no | a    | b          |
+----+------+------------+
|  1 | abc  | 2014-02-02 |
|  2 | xyz  | NULL       |
+----+------+------------+
2 rows in set (0.00 sec)

# null 추가
mysql> insert into sample41(no, a, b) values(null, null, null);
ERROR 1048 (23000): Column 'no' cannot be null

mysql> insert into sample41(no, a, b) values(3, null, null);
Query OK, 1 row affected (0.00 sec)

mysql> select * from sample41;
+----+------+------------+
| no | a    | b          |
+----+------+------------+
|  1 | abc  | 2014-02-02 |
|  2 | xyz  | NULL       |
|  3 | NULL | NULL       |
+----+------+------------+
3 rows in set (0.00 sec)

 

2. DEFAULT

mysql> desc sample411;
+-------+------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------+------+-----+---------+-------+
| no    | int  | NO   |     | NULL    |       |
| d     | int  | YES  |     | 0       |       |
+-------+------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql> insert into sample411(no, d) values(1, 1);
Query OK, 1 row affected (0.01 sec)

mysql> select * from sample411;
+----+------+
| no | d    |
+----+------+
|  1 |    1 |
+----+------+
1 row in set (0.00 sec)

mysql> insert into sample411(no, d) values(2, default);
Query OK, 1 row affected (0.00 sec)

mysql> select * from sample411;
+----+------+
| no | d    |
+----+------+
|  1 |    1 |
|  2 |    0 |
+----+------+
2 rows in set (0.00 sec)

# 암묵적으로 생략 시 default 저장
mysql> insert into sample411(no) values(3);
Query OK, 1 row affected (0.00 sec)

mysql> select * from sample411;
+----+------+
| no | d    |
+----+------+
|  1 |    1 |
|  2 |    0 |
|  3 |    0 |
+----+------+
3 rows in set (0.00 sec)

'공부 > TIL' 카테고리의 다른 글

[SQL 첫걸음] 20강 - 22강  (1) 2024.01.08
[SQL 첫걸음] 17강 - 19강  (0) 2024.01.06
[SQL 첫걸음] 3장 11강 ~ 13강  (1) 2024.01.04
[SQL 첫걸음] 2장 07강 조건 조합하기  (0) 2023.11.21
[SQL 첫걸음] 2장 06강 검색 조건 지정하기  (0) 2023.11.13
  1. 14강 : 날짜 연산
  2. 15강 : CASE 문으로 데이터 변환하기
  3. 4장 : 데이터의 추가, 삭제, 갱신
  4. 16강 : 행 추가하기 - INSERT
'공부/TIL' 카테고리의 다른 글
  • [SQL 첫걸음] 20강 - 22강
  • [SQL 첫걸음] 17강 - 19강
  • [SQL 첫걸음] 3장 11강 ~ 13강
  • [SQL 첫걸음] 2장 07강 조건 조합하기
Ail_
Ail_
Ail_
log
Ail_
  • 분류 전체보기 (181)
    • 사설 (11)
      • 강연 (5)
      • * (3)
      • 회고 (3)
    • 공부 (161)
      • Just do it (3)
      • TIL (66)
      • [TIL] Game Bootcamp (31)
      • [Project] Game Bootcamp (1)
      • [TIL] Digital Twin Bootcamp (39)
      • [Project] Digital Twin Boot.. (21)
    • 노션 (3)

인기 글

최근 글

태그

  • 유니티
  • SQL 첫걸음
  • 회고
  • 오블완
  • 템플릿
  • TypeScript
  • 인터랙티브 웹 UX·UI
  • 멋쟁이사자처럼
  • 데이터베이스
  • 대시
  • 플레이어
  • Chat
  • C#
  • unity
  • 배포
  • Do it! 자료구조와 함께 배우는 알고리즘 입문 : 파이썬 편
  • SQL첫걸음
  • 노션
  • 티스토리챌린지
  • 유니티 게임 개발
  • node.js
  • 부트캠프
  • 피격
  • 이펙트
  • 공격
  • 한입 크기로 잘라 먹는 타입스크립트
  • mysql 설치
  • 개발일지
  • 개발회고
  • notion

최근 댓글

전체
오늘
어제
hELLO · Designed By 정상우.
Ail_
[SQL 첫걸음] 14강 - 16강
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.