TIL

[TIL/SQL] 2025/01/21

Overview ✍️프론트엔드 작업을 하다 보니 백엔드가 필요해졌고, 백엔드 작업을 하다 보니 DB 지식이 필요해졌다. 결국 이 모든 과정이, 데이터로 구성되는 무언가를 만들어내는 작업이라, 테이블 설계(=데이터 모델링)가 되지 않아 계속 막히는 지점이 생겼다.필요하면

2025년 1월 21일3min read

Overview ✍️

프론트엔드 작업을 하다 보니 백엔드가 필요해졌고, 백엔드 작업을 하다 보니 DB 지식이 필요해졌다. 결국 이 모든 과정이, 데이터로 구성되는 무언가를 만들어내는 작업이라, 테이블 설계(=데이터 모델링)가 되지 않아 계속 막히는 지점이 생겼다.

필요하면 그냥 하는 것이다. 책을 샀고 환경을 설정했다. 책에서는 window 환경을 기준으로 설명해서, ``mac에 대한 설정 방법`을 정리할 예정이다. 그리고 환경 설정으로만 글을 마무리하기 아쉬워서 `SELECT``에 관한 이야기까지 해보려 한다.

보통 정규화와 반정규화에 대한 내용을 먼저 설명하는 경향이 있는데, 반대로 가보겠다. 직접 코드를 작성해 보고, 정규화와 반정규화에 대한 '아하 모먼트'를 만들고자 한다.

구체적인 코드와 설명이 필요하다면 다음 교재를 구매할 것을 권장한다.

https://product.kyobobook.co.kr/detail/S000212969036

MySQL 설치 for MAC 🐳

https://www.mysql.com/

1. DOWNLOADS 탭으로 이동

2. MySQL Community (GPL) Downloads 클릭

3. MySQL Community Server 클릭

4. macOS 14 (ARM, 64-bit), DMG Archive 설치

- ARM인지 x86인지 모를 때에는 맥 터미널에 ``uname -p``를 입력 후 확인할 것

5. No thanks, just start my download. 클릭

6. 계속 or 허용 클릭 - root 사용자가 사용할 password를 지정해야 하는데 별도로 확인하는 법이 없으니 자주 사용하는 비밀번호로 설정하거나 따로 메모할 것

7. MAC 시스템 설정에서 돌고래 체크

주의사항 - / 등 설정 방법이 개인의 환경마다 상이하기에 주의해서 설치할 것 - 시간이 지남에 따라 설정 방법이 변경되었을 수 있으므로, 최신의 reference를 참고할 것

DBeaver 설치 for MAC 🦫

DBeaver는 데이터베이스 시스템을 사용하기 위한 관리 도구 중 하나이다. MySQL뿐만이 아니라 Oracle, PostgreSQL, MariaDB 등 다양한 DBMS를 지원한다는 장점이 있다.

https://dbeaver.io/download/

1. DOWNLOAD 탭으로 이동

2. 노트북 좌측 상단 사과 클릭 -> 이 Mac에 관하여 - M1 or M2라면 Apple Silicon을 클릭 - intel이라면 intel 클릭

3. 비버를 옮겨드림

4. 최초에 sample database를 설치할 것이냐는 알림창이 뜨는데 '아니오'를 클릭하면 다음 화면이 나온다. - MySQL과 연동하기 위해 해당하는 로고를 클릭한다.

5. password 란에 MySQL 설치 시 설정했던 패스워드를 입력한다.

6. Test Connection을 해본다.

두 번째 에러, 실패는 좋은 것!

딱 봐도 얘가 범인이라 바꿔줌

ㅋㅋ 완전 이지피지 레몬스퀴지임

테스트용 Database 생성 완료

SELECT ✍️

code
-- 1. 데이터베이스 선택
USE mydb;

-- 2. customer 테이블 생성
CREATE TABLE customer (
    cno    VARCHAR(4),           -- 고객 번호 (4자리 문자열)
    name   VARCHAR(10),          -- 고객 이름 (최대 10자리 문자열)
    birth_date VARCHAR(8),       -- 고객 생년월일 (8자리 문자열, 예: YYYYMMDD)
    mobile VARCHAR(11),          -- 고객 전화번호 (최대 11자리 문자열)
    reg_date DATE                -- 가입일 (DATE 형식)
);

-- 3. customer 테이블에 데이터 삽입
INSERT INTO customer VALUES('1001', '손흥민', '19920708', '01000001111', '20230403');
INSERT INTO customer VALUES('1002', '유재석', NULL, '01011112222', '20230501');
INSERT INTO customer VALUES('1003', '이지은', '19930516', '01022223333', '20230612');
INSERT INTO customer VALUES('1004', '김연아', '19900905', NULL, '20230820');
INSERT INTO customer VALUES('1005', '차은우', '19970330', '01044445555', '20231225');

-- 4. 트랜잭션 커밋
COMMIT;

-- 5. customer 테이블에서 모든 데이터 조회
SELECT * FROM customer;

-- 6. customer 테이블에서 고객 번호, 이름, 생년월일만 조회
SELECT cno, name, birth_date FROM customer;

-- 7. 고객 번호, 이름, 생년월일을 명시적으로 조회
SELECT customer.cno , customer.name, customer.birth_date  FROM customer;

-- 8. 고객 번호, 이름, 생년월일을 별칭을 이용해 조회 (별칭 'btdt' 사용)
SELECT c.cno, c.name, c.birth_date AS btdt FROM customer c;

-- 9. 열의 별칭을 이용하여 결과를 조회 (한글 별칭 사용)
SELECT cno AS "회원번호", name AS "이름", birth_date AS "생년월일" FROM customer;

-- 10. NULL 값을 가진 컬럼 조회
SELECT NULL AS col;

-- 11. NULL과 문자열 'NULL' 값을 가진 두 개의 컬럼 조회
SELECT NULL AS col1, 'NULL' AS col2;

1. SELECT ~ FROM 절 🚀

- 테이블로부터 column을 조회할 때 사용 - 전체 데이터 조회 시 column 명 대신 (asterisk) 사용 - SELECT 절에 표기된 순서대로 데이터가 출력됨 - 테이블명.column명 표기로, 출처를 명시적으로 표현할 수 있음

2. ALIAS 🚀

- 테이블이나 컬럼에 지정할 수 있는 별칭 - AS 키워드를 통해 정의할 수 있으나, 생략해도 무방 - 결과 데이터의 헤더명을 한글로 표기해야 할 때에는 ""(큰 따옴표)로 표기

3. NULL 🚀

- '값이 존재하지 않음' 또는 '알 수 없음'에 대한 명시적 표현 - 숫자 0이나 빈 문자열과는 다른 개념 - NULL과 문자 'NULL'은 표면적으로는 같지만 전혀 다른 데이터

회고 ✍️

보이지 않아서 헛수고가 아닐까, 너무 높아서 무모한 게 아닌가 생각하며 끙끙 앓았던 수많은 날들. 300편으로 [증명] 해버렸다는거~. 매일매일 부족함을 느끼며 앞으로 더 열심히 할랍니다.