4 min to read
[MySQL] MySQL 기초 정리 [2]
MySQL 기초를 정리하며 데이터베이스 배우기

목차
MySQL 데이터 백업 및 복원
데이터베이스를 백업하고 백업 파일을 복원하는 기능을 사용해보자.
web이라는 DB의 grade 테이블을 백업시키는 과정이다.
먼저 exit
를 이용해 명령 프롬프트로 나가 실행해야한다.
mysqldump -uroot -p 데이터베이스명 [테이블명] > 백업파일명.sql
mysqldump -uroot -p web grade > backup.sql
이렇게 백업시켜놓은 파일을 저장해두고 만약 데이터베이스가 유실되거나 삭제된 경우에 복원할 수 있다.
mysql -uroot -picc 데이터베이스명 < 백업파일명.sql
mysql -uroot -picc web < backup.sql
외부파일에서 데이터 입력
Excel, 스프레드시트, 텍스트 파일에서 DB로 옮겨야 할 때 사용한다. insert into 명령은 한번에 많은 데이터를 입력하기 어렵기 때문이다.
load data local infile 'input.txt' into table 테이블명;
위의 명령으로 데이터를 옮길 수 있다. 하지만 저장된 데이터들은 TAB으로 구분되어야 한다.
TAB이 아닌 다른 구분자로 구분되어있을 경우, fields terminated by '구분자'
를 추가해야 한다.
input.txt 파일을 grade 테이블로 옮기는 명령이며 구분자는 버티컬 바로 되어있는 예시이다.
load data local infile 'input.txt' into table grade fields terminated by '|';
여기서 중요한 점은 테이블을 미리 만들어놔야하고 텍스트 파일의 컬럼 수와 테이블의 필드 수가 같아야만 데이터가 삽입된다.
MySQL 기능
모든 기능을 정리하진 않았지만 일부의 기능들을 정리해보았다.
auto_increment 속성
auto_increment 속성은 Num 컬럼의 경우, 자동 증가되도록 하는 속성이다.
num int auto_increment
alter table grade change num num int key auto_increment;
Num 데이터 입력 시, ‘null’로 빈 값 입력하면 자동으로 값을 생성하여 저장한다.
Order by
데이터를 검색할 때 특정 컬럼을 기준으로 정렬하는 명령이다. 오름차순으로 정리할 때 ASC라고 표기하지만 대부분 생략한다. 내림차순은 DESC로 표기하며 사용할 경우 표기한다.
select name, project from grade order by project;
//프로젝트 컬럼을 기준으로 오름차순 정렬하여 보여준다.
select name, project from grade order by project desc;
//프로젝트 컬럼을 기준으로 내림차순 정렬하여 보여준다.
여러 기준으로 정렬을 할 수도 있다. 같은 정렬 기준일 경우 두 번째 기준으로 정렬할 수 있다.
select name, project from grade order by project asc, quiz desc;
//프로젝트를 기준으로 오름차순 정렬하고, 같은 점수가 있을 시 퀴즈 점수로 내림차순 정렬
Select 명령에서의 연산
where을 사용하여 조건을 입력할 경우 ‘=’말고도 이상, 이하, 초과, 미만 등 표현할 수 있다.
테이블에서 연산을 하여 출력을 할 수 있다.
select (attendance + term + quiz) / 3 as total from grade;
//grade 테이블에서 attendance와 term, quiz 컬럼의 값을 연산하고, total로 출력한다.
데이터 패턴 검색
와일드카드 문자와 like, not like을 사용하여 검색을 할 수 있다. like는 참을 나타내며 not like은 거짓을 나타낸다.
select * from 테이블 where name like "와일드카드 문자";
- 이% : ‘이’로 시작하는 이름
- %이 : ‘이’로 끝나는 이름
- %이% : 중간이 ‘이’인 이름
언더바(_)를 이용하여 글자 수로 검색도 가능하다.
select * from 테이블 where name like "___";
MySQL 함수
레코드의 개수를 세는 함수
count()는 레코드의 수를 출력하는 함수이다.
select count(*) from student where gender = '남자';
distinct는 중복된 레코드를 출력하지 않도록 하는 함수이며, count()와 같이 사용할 수 있다.
select distinct address from students;
select count(distinct address) from students;
group by는 그룹을 설정하여 대표 값을 구하는 함수이다.
select address, count(*) from students group by address;
limit은 출력 개수를 제한하는 함수이다.
select * from students where address = '천안' limit 3;
수학 함수
avg()는 데이터의 평균을 출력하는 함수이다.
select avg(컬럼) from 테이블;
max(), min()은 데이터의 최대값과 최소값을 출력하는 함수이다.
select max(컬럼) from 테이블;
select min(컬럼) from 테이블;
round()는 소수점을 반올림 해주는 함수로, 출력할 데이터 뒤에 쓰는 숫자는 출력할 소수 밑의 자릿수이다.
select round(123.1234567, 1) from 테이블;
-> 123.1
sum()은 데이터의 합계를 출력하는 함수이다.
select sum(컬럼) from 테이블;
날짜 관련 함수
monthname()은 월을 나타내는 함수이다.
select * from 테이블 where monthname(birth) = march;
year(), month(), dayofmonth()은 각각 연도, 월, 일을 반환해주는 함수이다.
select * from 테이블 where month(birth) = dayofmonth(birth);
current_date, current_time, now()는 각각 현재 날짜, 현재 시간, 현재 날짜와 시간을 모두 반환해주는 함수이다.
select * from 테이블 where month(birth) = month(current_date);
to_days()는 date 날짜에 0년 이후 날의 365일에 합한 수를 반환해주는 함수이다.
select (to_days(now( )) – to_days(‘1980-3-20’))/365 as Age;
date_add(), date_sub()는 각각 현재 시간에서 시간을 더하고 빼는 함수이다. 초 부터 년 까지 더하고 뺄 수 있다. 현재시간은 2024-01-10 18:00:00 이다.
select date_add(now(), interval 1 second)
-> 2024-01-10 18:00:01
select date_sub(now(), interval 1 year)
-> 2023-01-10 18:00:00
Comments