본문 바로가기

DataBase/MySQL

데이터베이스 관리

1. 데이터베이스 생성

데이터베이스는 create database 구문을 통해 생성할 수 있다.

  • create database 데이터베이스명 character set = 'utf8' collate = 'utf8_general_ci';
create database test_db
character set = 'utf8'
collate = 'utf8_general_ci';

 

2. 테이블 생성

테이블 생성은 create table 구문을 통해 생성할 수 있다.

  • create table 테이블명 (컬럼명 자료형 제약조건, 컬럼명 자료형 제약조건 .... );
자료형 의미 비고
char(n) 고정길이 문자열 속도가 빠르다. 그러나 최대길이 지정 후 최대 공간을 무조건 할당 하기 때문에, 불필요한 공간을 차지할 수 있음.
varchar(n) 가변길이 문자열 속도가 느리다. 하지만 최대길이 지정 후 불필요한 공간을 절약하기 때문에 불필요한 공간이 낭비되지 않는다.
int 정수형 타입  
bigint 정수형 타입  
float 부동소수점 타입  
double 부동소수점 타입  
date 날짜  
datetime 날짜 및 시간  
create table test_table1(
data1 int,
data2 varchar(10),
data3 float
);

desc test_table1;
select * from test_table1;

 

서브쿼리문이 테이블 생성에 사용될 수 있다.

select문을 통해 가져온 결과에 기반하여 테이블을 생성할 때 사용된다.

  • create table 테이블명 as select문;
-- select문을 통해 가져온 데이터까지 생성 테이블에 적용. 
use employees;
create table dept1
as
select * from departments;
desc dept1;
select * from dept1;

-- select문을 통해 가져온 테이블 구조만 생성 테이블에 적용.
create table dept2
as
select * from departments
where 1=0;
desc dept2;
select * from dept2;

 

 

3. 데이터 저장

insert문을 통해 데이터를 저장할 수있다.

이때 데이터는 로우 단위로 저장된다.

특정 컬럼에 저정될 값을 지정하지 않으면 null 값이 저장된다.

  • insert into 테이블명 (컬럼명) values (값);
  • insert into 테이블명 values (값);
insert into test_table1 (data1, data2, data3) values (100, '문자열', 11.11);
select * from test_table1;

-- 컬럼명을 지정해줄때는 컬럼의 기존 순서를 지키지 않아도 됌.
insert into test_table1 (data2, data3, data1) values ('문자열2', 22.22, 200); 
select * from test_table1;

-- 컬럼명을 제외한다는 것은 모든 컬럼에 대해 데이터를 추가한다는 말임. 원래 컬럼 순서대로 데이터를 삽입해야함.
insert into test_table1 values (300, '문자열3', 33.33); 
select * from test_table1;

-- 숫자를 문자열 타입으로 삽입해도 정상적으로 저장됨. 숫자 문자열이 자동적으로 int와 float으로 변환되어 삽입됨.
insert into test_table1 values ('500', '문자열4', '44.44'); 
select * from test_table1;

 

서브쿼리문을 사용하여 데이터를 저장할 수 있다.

-- 서브쿼리문을 통해 데이터 삽입.
create table test_table2
as
select * from test_table1
where 1=0;

insert into test_table2
select data1, data2, data3 
from test_table1;
select * from test_table2;

 

4. 데이터 수정하기

update문을 통해 데이터를 새롭게 갱신할 수 있다.

  • update 테이블명 set 컬럼명=값, 컬럼명=값 where 조건식;
-- 모든 로우의 값을 갱신
update test_table1 set data2='새로운문자열', data3=77.77;
select * from test_table1;

-- 조건에 맞는 로우의 값을 갱신
update test_table2 
set data2='새로운문자열', data3=77.77
where data1 = 100;
select * from test_table2;

 

5. 데이터 삭제하기

delete문을 통해 데이터를 삭제할 수 있다.

  • delete from 테이블명 where 조건식;
-- 모든 데이터 삭제
delete from test_table1;
select * from test_table1;

-- 조건에 맞는 데이터를 삭제
delete from test_table2
where data1 = 100;
select * from test_table2;

 

[출처]윤재성의 처음 시작하는 MySQL DataBase - 인프런 | 강의 (inflearn.com)

'DataBase > MySQL' 카테고리의 다른 글

constraint  (0) 2021.08.09
transaction  (0) 2021.08.07
set  (0) 2021.08.04
서브 쿼리문  (0) 2021.08.03
join문  (0) 2021.08.02