Notice
Recent Posts
Recent Comments
Link
«   2025/09   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Archives
Today
Total
관리 메뉴

MJ's Blog

Mysql DB 생성, 수정, 레코드 관리 본문

DB

Mysql DB 생성, 수정, 레코드 관리

minje_kim 2022. 9. 30. 14:23

들어가기 앞서 관계형 데이터베이스의 구조를 살펴보자면, 관계형 데이터베이스는 기본적으로 데이터가 저장되는 테이블들의 집합이고, 이러한 테이블들은 각각의 필드를 기반으로 구성되어 있다. 

<관계형 데이터베이스 예시>

위 와 같이 테이블 3개의 집합이 '데이터베이스', 위 각각 표가 '테이블', 각 테이블의 한 행 이 '레코드' 이다.

 

아래는 위에서 설명된 관계형 데이터베이스 구조의 순서대로 Mysql에서 생성 하는법을 다룬다. 

 

1. 데이터베이스

기본적으로 spl 명령어는 'mysql command line client'를 통해 입력한다.

 

1) 존재하는 데이터베이스 확인

show databases;

 

2) 데이터베이스 생성

create database '데이터베이스 명';
데이터베이스 생성 예시
------------------------
create table 데이터베이스 명( 
필드명1 타입,
필드명2 타입,
...
primary key(필드명)
);

 

3) 데이터베이스 삭제

drop databases '데이터베이스 명';

 

4) 원하는 데이터베이스에 접속

use '데이터베이스 명'

 

5) 데이터베이스 구조 확인

desc '데이터베이스 명';

 

+) 데이터 타입

 

● 문자형 데이터 타입

데이터 유형 정의
CHAR(n) 고정 길이 데이터 타입(최대 2000byte) - 지정된 길이보다 짧은 데이터가 입력될 시 나머지 공간은 공백으로 채워짐
VARCHAR2(n) 가변 길이 데이터 타입(최대 4000byte) - 지정된 길이보다 짧은 데이터가 입력될 시 나머지 공간은 채우지 않는다.
NCHAR(n) 고정 길이 유니코드 데이터 타입(최대 2000byte)
NVARCHAR2(n) 가변 길이 유니코드 데이터 타입(최대 4000byte)
LONG 가변 길이 데이터 타입(최대 2Gbyte)
CLOB 대용량 텍스트 데이터 타입(최대 4Gbyte)
NCLOB 대용량 텍스트 유니코드 데이터 타입(최대 4Gbyte)
* char 와 varchar의 차이점

char는처음부터 80바이트를 할당하지만 varchar는 필드에 저장된 데이터에 따라 유연하게 바이트를 조절함.

정리하자면 varchar는 char에 비해 메모리 공간을 효율적으로 쓸 수 있지만, 데이터 검색 및 쓰기가 느리다는 단점이 있고 반대로 char는 메모리는 비효율적이지만 데이터 검색이나 쓰기가 빠름. 즉 상황에 따라 맞는 타입을 선택해주면 됨.

 

● 숫자형 데이터 타입

 

데이터 유형 정의
BINARY_FLOAT 부동 소수형 데이터 타입(4byte) - 32bit 부동 소수
BINARY_DOUBLE 부동 소수형 데이터 타입(4byte) - 64bit 부동 소수
NUMBER(P,S) P, S로 표현 숫자 데이터 타입 P: 1 ~ 38, S: -84 ~ 127 P(Precision): 유효자리수, S(Scale):소수점 유효자리

 

● 날짜형 데이터 타입

데이터 유형 정의
DATE 고정 길이 날짜
INTERVAL_YEAR 날짜(년도, )형태의 기간 표현 데이터 타입
INTERVAL_DAY 날짜 및 시간(요일, , , )형태의 기간 표현 데이터 타입
TIMESTAMP 밀리초(ms)까지 표현 데이터 타입
TIMESTAMP_WITH TIME ZONE 날짜 및 시간대 형태의 데이터 타입
TIMESTAMP_WITH LOCAL TIME ZONE 저장 시 데이터베이스 시간대를 준수, 조회시 조회하는
클라이언트 시간 표현 데이터 타입

 

● 이진 데이터 타입

데이터 유형 정의
RAW(n) 가변 길이 이진 데이터 타입(최대 2Gbyte)
LONGRAW 가변 길이 이진 데이터 타입(최대 4Gbyte)
BLOB 대용량의 바이너리 데이터를 저장하기 위한 데이터 타입(최대 4Gbyte)
BFILE 대용량의 바이너리 데이터를 파일형태로 저장하기 위한 데이터 타입(최대 4Gbyte)

2. 테이블

1) 새로운 필드 추가

alter table '테이블 명' add '필드명' '필드 타입';


#특정 필드 뒤에 추가
alter table '테이블 명' add '필드명' '필드타입' after '필드명;
ex) alter table user add name varchar(20) after id;


#맨 처음의 필드로 추가
alter table '테이블 명' add '필드명' '필드타입' first;
ex) alter table user add name varchar(20) first;

 

2) 필드 삭제

alter table '테이블 명' drop '삭제할 필드명';

 

3) 필드 데이터 타입 수정

alter table '테이블 명' modify '필드명' '데이터 타입';

 

4) 테이블 명 변경

alter table '이전테이블 명' rename '새로운 테이블 명';

 

5) 테이블 삭제

drop table '테이블 명';

3. 레코드

1) 레코드 삽입

insert into '테이블 명' (필드명1, 필드명2, ...) values (필드1의 값, 필드2의 값, ...);

 

2) 레코드 조회

select * from '테이블 명';


#특정 필드만 조회
select 필드명1, 필드명2 from '테이블 명';


#특정 필드만 조회 (조건식 활용)
select 필드명1, 필드명2 from '테이블 명' where 조건식;
ex1) select age from table_name where age>=20 and age<30;
ex2) select * from table_name where address like '경기도%';

 

3) 레코드 수정

update '테이블 명' set 필드명=필드값 where 조건식

ex) update table_name set address='경기도 화성시 시청로' where name='김민제'
# 위 예제의 경우 이름이 '김민제'인 레코드의 주소를 '경기도 화성시 시청로'로 변경하게 된다.

 

4) 레코드 오름차순/내림차순 정렬

#오름차순 정렬
select '필드명1', '필드명2', ... from '테이블명' order by '필드명';
ex) select * from table_name order by age;


#내림차순 정렬
select '필드명1', '필드명2', ... from '테이블명' order by '필드명' desc;
ex) select * from table_name order by age desc;

 

5) 레코드 삭제

delete from '테이블 명' where 조건식
ex) delete from table_name where name='김민제'


#전체 레코드 삭제
delete from '테이블 명';

 

 

 

참고 포스팅

'DB' 카테고리의 다른 글

SQL 연습  (2) 2025.06.04
Indexing, ACID properties, Eventual Consistency  (0) 2025.06.04