MJ's Blog
Mysql DB 생성, 수정, 레코드 관리 본문
들어가기 앞서 관계형 데이터베이스의 구조를 살펴보자면, 관계형 데이터베이스는 기본적으로 데이터가 저장되는 테이블들의 집합이고, 이러한 테이블들은 각각의 필드를 기반으로 구성되어 있다.
위 와 같이 테이블 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 |