MySQL 기초 —
CREATE DATABASE · USE · SELECT · SHOW
MySQL에서 처음 데이터베이스를 만들 때 반드시 쓰는 명령어들이다. 데이터베이스를 삭제 → 생성 → 선택하고, 테이블 구조를 확인하거나 전체 목록을 조회하는 기초 흐름이다.
실습 코드를 여러 번 반복 실행하면 "이미 같은 이름의 DB가 존재한다"는 오류가 난다. DROP DATABASE IF EXISTS sqldb는 "있으면 지우고, 없으면 그냥 넘어가라"는 의미다. 덕분에 코드를 몇 번이고 다시 실행해도 오류 없이 처음부터 재시작된다.
IF NOT EXISTS와 반대 개념으로, CREATE 시에는 CREATE DATABASE IF NOT EXISTS sqldb처럼 쓰기도 한다.CREATE DATABASE sqldb는 DB를 "공간만" 만드는 것이다. 만들었다고 자동으로 그 안에서 작업하지 않는다. 반드시 USE sqldb로 "이 공간에 들어가겠다"고 선언해야 이후 CREATE TABLE, SELECT 등이 sqldb 안에서 실행된다.
No database selected 오류가 보이면 USE를 빠뜨린 것이다.SHOW DATABASES;는 MySQL 서버에 존재하는 모든 데이터베이스 이름을 목록으로 보여준다. 내가 만든 sqldb 외에 MySQL이 기본으로 가지고 있는 시스템 DB(information_schema, mysql 등)도 함께 표시된다.
DESC usertbl;은 usertbl 테이블의 컬럼 이름, 데이터 타입, NULL 허용 여부, 키 여부 등을 한눈에 보여준다. 테이블을 만든 후 "제대로 만들어졌나?" 확인할 때 제일 먼저 쓰는 명령이다.
- information_schema
- mysql
- performance_schema
- sqldb ← 내가 만든 것
- sys
- Field / Type / Null / Key
- userID / CHAR(8) / NO / PRI
- name / VARCHAR(10) / NO /
- birthYear / INT / NO /
- height / SMALLINT / YES /
MySQL은 저장 공간을 아끼기 위해 범위에 맞는 적절한 타입을 고르게 설계되어 있다. 나이처럼 0~127 범위면 TINYINT, 키(cm)처럼 0~32767 범위면 SMALLINT를 쓰면 INT보다 적은 용량으로 같은 데이터를 저장할 수 있다.
| 타입 | 크기 | 범위 (signed) | 범위 (unsigned) | 사용 예 |
|---|---|---|---|---|
TINYINT |
1 byte | -128 ~ 127 | 0 ~ 255 | 나이, 등급, 플래그 |
SMALLINT |
2 bytes | -32,768 ~ 32,767 | 0 ~ 65,535 | 키(cm), 연도, 점수 |
MEDIUMINT |
3 bytes | 약 -838만 ~ 838만 | 0 ~ 약 1678만 | 중간 규모 ID |
INT |
4 bytes | 약 -21억 ~ 21억 | 0 ~ 약 42억 | 일반 ID, 수량 |
BIGINT |
8 bytes | 약 -922경 ~ 922경 | 0 ~ 약 1844경 | SNS 글 ID, 대용량 |
SELECT * FROM usertbl;은 usertbl의 모든 행(row)과 모든 열(column)을 조회하라는 뜻이다. *는 "전부"를 의미하는 와일드카드다. 데이터를 INSERT한 후 "잘 들어갔나?" 확인할 때 제일 먼저 쓰는 명령이다.
- SELECT — "무엇을" 보여줄지 (컬럼 지정, *는 전부)
- FROM — "어느 테이블에서" 가져올지 (테이블 지정)
- 이 두 절이 SELECT 구문의 핵심 뼈대. WHERE, ORDER BY 등은 모두 여기에 붙는 부가 조건
| 실수 | 증상 | 해결 |
|---|---|---|
| USE 없이 CREATE TABLE 실행 | No database selected 오류 |
반드시 USE sqldb; 먼저 실행 |
| DROP 없이 CREATE DATABASE 재실행 | database exists 오류 |
DROP DATABASE IF EXISTS 선행 |
| 세미콜론(;) 빠뜨림 | 명령이 끝나지 않고 다음 줄 대기 | 모든 SQL 명령 끝에 ; 필수 |
| TINYINT로 범위 초과 값 저장 | 데이터 잘림(truncate) 또는 오류 | 범위 계산 후 적합한 타입 선택 |
| DESC를 SELECT처럼 사용 | 오류 또는 원하지 않는 결과 | DESC는 구조 확인용, 데이터 조회는 SELECT |
핵심 한 줄 요약
Tags
'php' 카테고리의 다른 글
| MySQL CTE WITH — 공통 테이블 식 완전 정리 (0) | 2026.06.27 |
|---|---|
| MySQL CAST — 형 변환(Casting) 완전 정리 (0) | 2026.06.27 |
| 시즌2 7편 — 이제, 그 'AI 부서'를 직접 만들어 봅시다 (0) | 2026.06.27 |
| 시즌2 8편 — GitHub이 뭔지부터, 머지 한 번에 자동 배포까지 (0) | 2026.06.27 |
| 시즌2 9편 — 24시간 꺼지면 안 되는 시스템, 그래서 클라우드에 서버를 빌렸다 (3) | 2026.06.26 |
왕진 블로그

댓글