1 . SQL 다운로드하기
- https://dev.mysql.com/downloads/installer/ 사이트 접속
- 8.0.46 버전의 파일 윈도우로 다운
- 'full' 선택 후 next를 눌러 나오는 것 전부 다운 받기
- ‘Authentication Method’ 창이 나오기 전까지 next 선택
- Use Legacy Authentication Method(Retain MySQL 5.x Compatibility) 체크 후 Next 선택
- 아이디 패스워드 설정 후 ‘Connect To Server’창이 나오기 전까지 next 선택
- ‘Connect To Server’ 창에서 패스워드에 본인이 설정한 비밀번호를 입력한 뒤 Status 칸이 초록색이 되면 next 선택
- next -> finish를 누르고 자동 생성되는 MySQL Workbench 창 하단에 Local instance MySQL80을 클릭 후 실행
2 . 테이블
- 데이터를 행과 열로 스키마에 따라 저장할 수 있는 구조
기본값:
create table 테이블명(
컬럼명1 데이터타입 제약조건,
컬럼명2 데이터타입 제약조건,
컬럼명3 데이터타입 제약조건,
. . . )
3 . 데이터 타입
- 정수 : int, bigint
- 실수 : float, double, decimal
- 문자형 : char, varchar, text, binary, varbinary
- 날짜형 : date, time, datatime, timestamp
=> 자세한 차이
3 - 1 . 정수 -> 저장 가능한 숫자 범위와 사용하는 저장 공간이 다름
- int : 보통 크기 정수(4바이트)
- bigint : 엄청 큰 정수(8바이트) - 대규모에 적합
3 - 2 . 실수
- float : 4바이트
- double : 8바이트
- decimal : 가변형
3 - 3 . 문자형
- char : 크기 고정 -> 크기를 다 채우지 않아도 char 크기 전부 다 사용됨
- varchar : 가변형
- text :매우 긴 문자열 저장
- binary : 고정 길이 바이트 저장, 컴퓨터가 바이트 그대로 저장(암호화, 파일처리, 해시저장)
- varbinary : 바이트 데이터를 필요한 만큼 저장, 컴퓨터가 바이트 그대로 저장(암호화, 파일처리, 해시저장)
3 - 4 . 날짜형
- date : 날짜만
- time : 시간만
- datatime : 날짜 + 시간 -> 적어놓은 그대로 저장
- timestamp : 날짜 + 시간(시간대 고려) -> 세계 표준시로 저장 후 변환
4 . 제약조건
- 데이터의 무결성을 지키기 위해 데이터를 입력받을 때 실행되는 검사 규칙
- not null : null값을 허용하지 않음
- unique : null값을 제외하고 중복값을 허용하지 않음
- default : null값 삽입 시 기본이 되는 값 설정
- primary key(pk) : null값, 중복값 허용하지 않음, 인덱싱 설정, 참조키(외래키)와 쌍으로 연결
- foreign key : 기본키와 쌍으로 연결
- auto_increment : 데이터를 직접 삽입하지 못함, 자동 증가되는 숫자 삽입
5 . 스키마
- 데이터베이스의 구조와 제약조건에 관한 명세를 기술한 집합
- 데이터베이스 안에서 테이블, 뷰, 인덱스와 같은 객체들을 묶어 관리하는 구조적 공간
- 테이블들을 논리적으로 그룹화
- 이름 충돌 방지
- 권한 관리 단위
- 데이터 구조의 설계도
6 . DDL - 데이터 정의어
- Data Definition Language
- 데이터베이스 구조(스키마)를 정의하거나 변경하는 명령어 => 테이블, 스키마, 인덱스와 같은 틀을 만드는 언어
- 역할 : 테이블 생성, 구조 변경, 삭제, 제약조건 추가 삭제, 인덱스 생성
- create : 데이터베이스, 테이블, 뷰 등을 생성
- alter : 기존 객체(테이블, 뷰 등)의 구조 변경
- drop : 객체(테이블, 뷰, 인덱스 등)를 완전히 삭제
- truncate : 테이블의 모든 데이터를 삭제하지만 구조는 남길 때(롤백 불가)
7 . DDL 활용
- 테이블 생성 전 데이터베이스를 선택해야 함 -> 어떤 곳에 만들 것인지

- 테이블 생성

- datetime default now() : 현재 시간으로 기본 값 설정
=> now()함수는 현재 시간으로 설정해 주는 함수
- 테이블 생성 확인하기
- desc 테이블명

- 테이블 삭제하기
- drop table 테이블명

- 테이블 안의 컬럼 삭제하기
- alter table 테이블명 drop 컬럼명

- 컬럼 추가하기
- alter table 테이블명 add 컬럼명 데이터타입 제약조건

- 컬럼 수정하기
- alter table 테이블명 modify column 컬럼명 데이터타입 제약조건 -> 컬럼 전체 정의 재작성

8 . DML - 데이터 조작어
- Data Manipulation Language
- 데이터베이스 안의 데이터(행, row)를 조작하는 명령어
- 역할 : 데이터 조회, 추가, 수정, 삭제
- select : 데이터 조회(검색)
- insert : 데이터를 테이블에 삽입
- update : 데이터 수정
- delete : 데이터 삭제
9 . DML 활용
- DML에 사용할 테이블 생성(DDL)
- desc 테이블명; => 만든 테이블 확인

- 데이터 삽입
- insert into 테이블명 values (데이터1, 데이터2, . . .)
=> 테이블 안에 있는 모든 컬럼에 데이터 삽입해야 함
- insert into 테이블명 (데이터 넣을 컬럼명1, 컬럼명2 . . .) values ( 데이터1, 데이터2, . . .)
=> 넣고 싶은 데이터의 컬럼명 작성, 데이터 작성

- select * from 테이블명
=> 해당 테이블의 모든 컬럼(*)과 행 조회
- 데이터 삭제
- 전체 삭제 : delect * from 테이블명
- 선택 삭제 : delect from 테이블명 where pki = '000'
=> where 뒤에는 프라이머리 키로 잡혀있거나 인덱싱으로 잡혀있는 걸 넣어주는 게 좋음

- 데이터 수정
- 전체 수정 : update 테이블명 set 수정 원하는 컬럼명 = '000'
- 부분 수정 : update 테이블명 set 수정 원하는 컬럼명 '000' where 조건

- 스키마 확인
- desc 테이블명

- 테이블에 컬럼 추가
- alter table 테이블명 add 추가 원하는 컬럼명 데이터타입 제약조건

- 새 테이블 만들기

- 해당 테이블의 pk = idx, uni = userid
- MySQL에서 pk는 테이블 당 하나
- 데이터 수정하기
- 해당 테이블의 pk를 조건의 기준으로 정하는 것이 좋음

- 검색, 조회하기

- 알아두면 좋은 것들

10 . MySQL 연산자
- 산술 연산자 : + , - , * , / , mod, div
- 비교 연산자 : = , < , > , <= , >= , <>
- 대입 연산자 : =
- 논리 연산자 : and, or, not, xor
- is : 양쪽의 피연산자가 모두 같으면 True 아니면 False
- between A and B : A 보다는 크거나 같고 B 보다는 작거나 같으면 True 아니면 False
- in : 매개변수로 전달된 리스트에 값이 존재하면 True 아니면 False
- like : 패턴으로 문자열을 검색하여 값이 존재하면 True 아니면 False
- 비교 연산자 사용, between A and B 사용

- 논리 연산자 사용

- null 값 찾기

- like 사용
- like '%0', like '0%' like '%0%'
- like '_'

- 오름차순, 내림차순 정렬
- order by 정렬기준
- 기본값 : 오름차순(asc)
- 내림차순 : desc

- limit
- 일부 로우(레코드)를 검색함
- limit 검색할 로우 개수, limit 시작 로우(인덱스) 가져올 로우의 개수
- ex) limit 5 => 위에서부터 5개
- ex) limit 2, 4 => 2번 인덱스부터 4개
- 보통 정렬한 상태로 사용

- group by
- select 그룹을 맺을 컬럼 또는 집계함수 from 테이블 group by 그룹을 맺을 컬럼

- group by 문제 1, 2

- order by => 항상 마지막에 기재
'DBMS' 카테고리의 다른 글
| 5 . 사용자 계정 (0) | 2026.06.08 |
|---|---|
| 6 . MySQL 함수 (0) | 2026.06.08 |
| 4 . 서브쿼리 (1) | 2026.06.08 |
| 3 . 정규화 (0) | 2026.06.08 |
| 1 . 데이터베이스 기초 (DB, DBMS, RDBMS, SQL) (0) | 2026.06.04 |