처음 MySQL을 다운 받는 과정은 부스트코스 강의 중 웹 백엔드 과정과 코드라이언 강의 중 일단 만드는 Django 과정에서 외부 DB(Maria DB)를 연결하는 부분을 통해 이해할 수 있었다.
1. 실행법
MySQL 을 잘 다운로드 받았다면 터미널 앱에서 실행할 수 있다. 다음 명령어를 이용하면 된다.
$ mysql.server start

그럼 이런 문구가 나오면서 서버를 켠 것을 확인할 수 있다.
반대로 서버 종료는 다음과 같다.
$ mysql.server stop
데이터베이스를 생성하기 위해서는 user와 password를 설정해 주어야 한다.
$ mysql -uroot -p
위 코드는 MySQL 관리자 계정인 root로 DBMS에 접속하겠다는 것이다.
다음은 데이터베이스를 생성하는 과정이다. DB이름에는 자신이 설정하고 싶은 이름을 넣으면 된다.
$ mysql> create database DB이름;
DB 이름은 편의상 connectdb로 하겠다.
부스트코스 강의에서 알려준 것과는 달리, mysql8 이상부터는 grant all -- 로 시작하는 명령어로는 사용자를 생성할 수 없다. 그래서 다음과 같은 명령어를 작성해줘야 한다.
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON connectdb.* to 'username'@'%' WITH GRANT OPTION;
flush privileges;
MySQL 연결 끊기를 위해서는 다음 중 하나를 활용하면 된다.
$ mysql> Quit
$ mysql> exit
데이터베이스 리스트를 확인하려면 show 를 이용할 수 있다. 해당 데이터베이스 안으로 이동하기 위해서는 use를 사용하면 된다.
$ mysql> show databases;
$ mysql> use connectdb;
connectdb 데이터베이스 안에 존재하는 table을 확인하기 위해서는 다시 show를 이용한다.
$ mysql> show tables;
다운받은 sql 파일과 db를 연결시키고자 한다면 다운받은 파일이 있는 디렉토리로 가서 다음 명령어를 실행하면 된다.
$ mysql -uconnectuser -p connectdb < examples.sql
여기서 connectuser에는 내가 생성한 user의 username이 들어가면 된다.
이후에는 접속하는 명령어가 있다.
$ mysql –uconnectuser -p connectdb
이렇게 접속하고 나면 show tables;를 이용하여 데이터베이스 내부 테이블을 둘러 볼 수 있다.
만약 테이블의 스키마를 확인하고 싶다면 다음을 사용할 수 있다.
$ mysql> desc 테이블명;
여기서 desc는 describe을 의미한다.
2. 간단한 DML SQL문
SQL(Structured Query Language)은 관계형 데이터베이스에서 데이터를 관리하기 위해 설계된 프로그래밍 언어이다. SQL은 세 가지 종류로 나뉘는데, 데이터의 일부를 선택하고 추가, 삭제하는 등의 일을 하는 데이터 조작어(DML), 데이터 접근 권한을 통제하는 데이터 제어어(DCL), 각 데이터의 스키마(자료형 등)를 정의하는 데이터 정의어(DDL)이다. 이 중에서도 백엔드와 관련하여 가장 자주 사용되는 것은 DML인 듯 하다.
기본적으로 DML에는 select(검색), insert(등록), update(수정), delete(삭제)가 있다. select를 먼저 보면 select 에도 distinct(중복행 제거), alias (선택한 칼럼에 대해 다른 이름 부여), from(선택한 칼럼이 있는 테이블 명시), where(특정 행 검색), in 키워드, like 키워드 등이 있다.
예) select, alias, from, where, like, order by를 사용한 예시.
select name 이름, job 직업
from employee
where name like '%A%'
order by name desc;

결과는 위와 같이 employee 테이블에서 이름에 A가 포함되어 있는 사람들의 이름과 직업을 이름의 내림차순으로 정렬하여 알려준다.
이 외에도 UCASE, UPPER, LCASE, LOWER, substring, LPAD, RPAD, TRIM, LTRIM, RTRIM, ABS(x) :절대값, MOD(n, m) or % : n을 m으로 나눈 나머지 값, FLOOR(x), CEILING(x), ROUND(x) 등이 있다. substring의 예시는 다음과 같다.
select substring('Happy Day', 3, 2);
이렇게 하면 'PP' 값을 얻을 수 있다. 즉, 세번째 글자부터 두 글자를 불러오는 것이다. 이는 다른 프로그래밍 언어가 0번째 글자부터 시작한다는 점과 달리 첫 번째 글자는 1번째 글자이다.
그룹 합수로 사용할 수도 있다.
select round(AVG(salary)) as 평균임금, deptno 부서번호
from employee
group by deptno;

이렇게 하면 employee 테이블에서 부서 별로 나눠 평균 임금의 반올림값을 계산할 수 있다.
데이터 입력(insert)문은 테이블에 새로운 값을 추가해 준다.
만약 다음과 같은 role 테이블에 role_id는 200이고, description에는 'CEO'를 추가하고 싶다면 아래의 SQL문을 사용하면 된다.

insert into ROLE (role_id, description)
values ( 201, 'CEO');
이렇게 하고 다시 전체 테이블을 보면 추가된 것을 확인할 수 있다.

update도 가능하다. 만약 CTO를 CMO로 바꾸고 싶다면 다음과 같이 하면 된다.
update ROLE
set description= 'CMO'
where role_id = 200;

이렇게 간단한 DML들에 대해 알아봤다. SQLD 공부를 하면서 좀 더 깊게 알게 되면 추후에 더 많은 글들로 소개할 수 있을 것이다.
댓글