DBMS

2 . SQL

imysydesu 2026. 6. 5. 14:41

 

 

 

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