1. 데이터 조작 (INSERT, UPDATE, DELETE)
- INSERT (삽입): 테이블에 새 데이터를 삽입
- 기본: INSERT INTO 테이블 VALUES (값1, 값2, ...);
- 열 지정: INSERT INTO 테이블 (열1, 열2) VALUES (값1, 값2);
- 대량 삽입: INSERT INTO 테이블 SELECT ... 구문을 사용하여 다른 테이블의 데이터를 한 번에 삽입할 수 있음
- 테이블 생성 + 삽입: CREATE TABLE 새테이블 (SELECT ...)을 사용하면 SELECT 결과로 새 테이블을 바로 생성할 수 있음
- UPDATE (수정): 기존 데이터를 수정
- 구문: UPDATE 테이블 SET 열1=값1, 열2=값2 WHERE 조건;
- WHERE 절을 생략하면 테이블의 모든 행이 수정됨
- DELETE (삭제): 데이터를 행 단위로 삭제
- 구문: DELETE FROM 테이블 WHERE 조건;
- WHERE 절을 생략하면 테이블의 모든 데이터가 삭제됨
- LIMIT 절을 사용해 삭제할 행 수를 제한할 수 있음
2. MySQL 데이터 형식
- 숫자 형식:
- 정수: TINYINT(1바이트), SMALLINT(2바이트), INT(4바이트), BIGINT(8바이트)
- 실수: FLOAT(4바이트), DOUBLE(8바이트)
- 정밀 소수: DECIMAL(m, d) (전체 m자리 중 소수점 이하 d자리)
- 문자 형식:
- CHAR(n): 고정 길이 문자열 (1~255)
- VARCHAR(n): 가변 길이 문자열 (1~65535)
- TEXT / BLOB: 매우 긴 텍스트(문자) 또는 바이너리 데이터(이미지, 파일 등)를 저장
3. 내장 함수
- 형 변환 함수:
- CAST(expression AS 데이터형식)
- CONVERT(expression, 데이터형식)
- 예: SELECT CAST(AVG(amount) AS SIGNED INTEGER) ... (평균값을 정수로 변환)
- 문자열 함수:
- ASCII(문자) , CHAR(숫자): 아스키코드 변환
- LENGTH(문자열): 바이트 수 (UTF-8에서 한글은 3바이트)
- CHAR_LENGTH(문자열): 문자 수
- CONCAT(...) , CONCAT_WS(구분자, ...): 문자열 연결
- LOWER() , UPPER(): 대소문자 변환
- LEFT(문자열, 길이) , RIGHT(문자열, 길이): 문자열 자르기
- 수학 함수:
- ABS(숫자): 절댓값
- CEILING(숫자): 올림
- FLOOR(숫자): 내림
- ROUND(숫자): 반올림
- RAND(): 0 이상 1 미만의 난수
- TRUNCATE(숫자, 정수): 소수점 기준 버림
- 시스템 함수:
- SLEEP(초): 지정된 시간(초) 동안 실행을 멈춤
- VERSION(): MySQL 버전을 반환
4. 조인 (JOIN)
두 개 이상의 테이블을 묶어 하나의 결과 테이블로 만드는 기능
cookDB의 userTBL (회원)과 buyTBL (구매)처럼 '일대다' 관계 테이블을 연결할 때 유용
- INNER JOIN (내부 조인): 두 테이블에 모두 공통으로 존재하는 데이터만 결합
- 구문: ... FROM 테이블1 INNER JOIN 테이블2 ON 테이블1.열 = 테이블2.열
- 테이블 이름이 길 경우 userTBL U, buyTBL B와 같이 별칭(Alias)을 사용하면 쿼리가 간결해짐
- DISTINCT와 함께 사용하면 '구매 이력이 있는 회원 목록'을 중복 없이 조회할 수 있음
- OUTER JOIN (외부 조인): 조인 조건을 만족하지 않는(짝이 없는) 행까지 포함하여 출력
- LEFT OUTER JOIN: 왼쪽 테이블(먼저 쓴 테이블)의 모든 행을 포함 (오른쪽 테이블에 짝이 없으면 NULL로 표시됨)
- RIGHT OUTER JOIN: 오른쪽 테이블의 모든 행을 포함
- 외부 조인과 WHERE ... IS NULL 조건을 조합하면 '구매 이력이 없는 회원'을 찾을 수 있음
- CROSS JOIN (상호 조인): 한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 결합 (카티션곱) (결과 행 수 = A테이블 행 수 × B테이블 행 수)
- UNION / UNION ALL: 두 SELECT 문의 결과를 위아래로 합침
- UNION: 중복된 행은 제거하고 합침
- UNION ALL: 중복 여부와 상관없이 모두 합침
- NOT IN / IN: 서브쿼리와 함께 사용하여 특정 조건을 제외하거나 포함
- 예: ... WHERE userName NOT IN (SELECT ... WHERE mobile1 IS NULL) (휴대폰 번호가 없는 회원을 제외)
'공부 기록 > MySQL' 카테고리의 다른 글
| SQL 기본 문법 (1) (0) | 2025.11.09 |
|---|