MySQL Workbench를 사용하기 전에, CLI를 통해 MariaDB에 접근해서 데이터베이스를 생성하는 것을 먼저 해보자.
Docker 을 설치하고 컨테이너에 MariaDB를 올린 환경이라고 가정하겠다.
CMD창을 실행시킨 후,
docker exec -it mariadb /bin/bash 를 통해 mariaDB의 콘솔에 접근한다.
mariadb -u 아이디 -p, 비밀번호 입력 을 통해 세션에 로그인한다.
데이터베이스의 생성 과정은 다음과 같다.
1. 스키마(데이터베이스) 생성
└ CREATE DATABASE 데이터베이스명 ;
2. 테이블 생성
└ CREATE TABLE 테이블명 (
변수1 자료형,
변수2 자료형,
...
);
3. 데이터 삽입
└ INSERT INTO 테이블명 (컬럼명1, 컬럼명2) VALUES (값1, 값2);
2. 테이블생성과, 3.데이터 삽입 부분에서 알아두면 좋은 부분들이 있다.
테이블 생성에서는 단순히 자료형만 지정해주는 것이 아니라, 다음과 같은 추가적인 기능(제약 조건)들이 있다.
NULL / NOT NULL : NULL값을 허용할지, 안할지에 대한 속성이다. 디폴트는 NULL이다.AUTO_INCREMENT : 새로운 레코드(row, 행)이 추가될 때, 자동으로 증가한 값이 채워진다.Default : 아무런 값도 입력되지 않았을 때, 기본적으로 채워주는 값이다.UNIQUE : 중복된 값을 허용하지 않는다.PRIMARY KEY(컬럼명) : 현재 테이블의 컬럼에 기본키를 설정한다.FOREIGN KEY(컬럼명) REFERENCES 참조할테이블명(참조할컬럼명) : 현재 테이블의 컬럼에 외래키를 설정한다.데이터 삽입에서는 날짜 자료형에서 알아둬야 할 사항이 있다.
우선 날짜 자료형은, 다음과 같은 여러개의 자료형이 있다.
1. DATE : 날짜 만 표시. YYYY-MM-DD
2. DATETIME : 날짜+시간 표시 YYYY-MM-DD HH:MM:SS
3. TIME : 시간 만 표시. HH:MM:SS
4. TIMESTAMP : 시스템 시간대 정보에 맞게 시간(UTC)을 표시. 예를들어, time_zone이 미국이면 미국시간표시, 서울이면 서울 시간 표시.
특히 TIMESTAMP는 새로운 레코드가 추가될 때, 추가된 시각을 자동으로 입력해주는
DEFAULT CURRENT_TIMESTAMP() 옵션이 존재한다.
이 때, TIMESTAMP의 시간은 UTC(협정세계시)로 기록된다. 이것이 DATETIME과의 가장 큰 차이점이다. DATETIME으로 "2000-10-10 20:30:00" 을 입력한다고 해보자. 이것은 미국에서 사용하든, 한국에서 사용하든 모두 똑같은 문자열을 출력할 것이다.
하지만, TIMESTAMP를 이용하고, 세션에서 SET @@global.test_zone = "Asia/Korea"를 입력하면 UTC에서 한국시각으로 변경되어 문자열을 출력해준다.
데이터베이스에서 생성한 테이블에 대한 수정이 필요할 때가 있다.
컬럼을 설계하면서, 컬럼을 추가해야될 때가 있고, 필요가 없어진 컬럼을 삭제해야될 때도 있고, 컬럼명을 바꾸어야할 때도 있다.
이러한 명령이 ALTER를 통해서 수행된다.
컬럼 추가하기
ALTER TABLE 테이블명 ADD COLUMN 컬럼명 변수명 자료형
COLUMN이라는 단어는 생략할 수 있다.
컬럼 삭제하기
ALTER TABLE 테이블명 DROP COLUMN 컬럼명
컬럼 속성 수정하기
ALTER TABLE 테이블명 MODIFY 컬럼명 새로운자료형
컬럼명 수정하기
ALTER TABLE 테이블명 RENAME COLUMN 컬럼명 TO 신규컬럼명
분리된 두 테이블을 한 눈에 조회하고 싶을 때 사용한다.
사용 방법 :
SELECT * FROM 테이블1 LEFT JOIN 테이블2 ON 테이블1.컬럼명 = 테이블2.컬럼명
추가적으로, WHERE 조건식 을 뒤에 삽입해서, 조건을 덧붙일수도 있다.