<MySQL 2탄. 기본 명령어부터 응용 명령어~>

강민수·2021년 12월 17일
0

백엔드

목록 보기
14/21

이전 포스팅에서 분명 우리는 설치부터 실행까지 일련의 과정에 대해서 배웠다.
하지만, 설치와 실행만 한다고 해서 db를 바로 만들 수는 없다. 즉, mysql 상에서 사용하는 문법을 활용해 터미널에 해당 명령어를 적용해 줘야만 한다. 이에 대해 한 번 차근 차근 살펴보자~

1. DDL

DDL= Data Define Language의 약자로, 데이터 베이스의 스키마(형태)를 정의할 수 있는 쿼리문을 의미한다.

즉, 데이터베이스를 정의하는 언어이며, 데이터리를 생성, 수정, 삭제하는 등의 데이터의 전체의 골격을 결정하는 역할을 하는 언어다.

다음은 쿼리문의 대표적인 종류다.

단순한 설명보다는 직접적인 예제를 통해 이 부분의 설명을 대체한다.

1. CREATE DATABASE

먼저 우리는 테이블을 정의하기 이전에 Database부터 만들어야 한다.

$ mysql -u root -p

또는

$ mycli -u root
명령어로 mysql 데이터베이스에 접속.

CREATE DATABASE my_favourite_artists; # Database 를 생성하는 명령어
SHOW DATABASES; # 현재 MySQL 에 저장되어있는 데이터베이스를 보는 명령어

기존에 설치 시에 입력한 비밀번호 입력 후 mysql에 접속하면 해당 명령어 구조가 mysql> 로 바뀐 것을 확인할 수 있다. 이미 필자는 데이터 베이스를 만들었기에, 데이터 베이스를 만드는 명령어는 생략하겠다. 만약 새로운 db를 만든다면 꼭 크리에이트를 통해 새로 만들어줘야겠다.

이제 본인이 만들어 둔 db의 목록이 쭉 위의 그림처럼 나열이 될 것이다. 이제 여기서 어떤 db를 사용할 것인지 선택을 해야 한다.

이때 명령어는,
USE db명; 이런 식으로 사용한다.

db 선택 후,
테이블을 보는 명령어를 입력한다.

show tables;
그러면 현재 만들어진 테이블 명들이 보일 것이다.

드디어 이제 테이블을 만들 시간이다.
명령어로 create table 테이블 명
(들어갈 컬럼명/ 컬럼의 속성,
.......);-> 이렇게 칼럼명 처음과 끝은 소괄호로 묶어주고, 마지막에는 세미콜론을 찍어야만 반영된다.

아래는 참고 예제다.

CREATE TABLE artists
(
id INT NOT NULL AUTO_INCREMENT, # id 칼럼을 정수, NULL 을 허락하지 않으며 값을 자동증가하게 설정.
name VARCHAR(100) NOT NULL, # name 칼럼을 100의 크기를 가지는 문자열, NULL 을 허락하지 않는다.
PRIMARY KEY (id) # 이 테이블의 Primary Key 를 id 로 설정합니다.
); # 쿼리문은 ; 로 구분되기 때문에 엔터를 쳐서 쿼리문을 멀티라인으로 작성할 수 있다.

CREATE TABLE songs
(
id INT NOT NULL AUTO_INCREMENT,
title VARCHAR(100) NOT NULL,
lyrics VARCHAR(2000),
artist_id INT,
PRIMARY KEY (id),
FOREIGN KEY (artist_id) REFERENCES artists (id) # 외래키를 걸어줄 칼럼과 참조할 테이블과 칼럼을 순서대로 적어줍니다.
);

이제 만들어진 데이터 테이블 각각의 프레임을 보기 위해서는
desc 테이블 명; 을 춰줘야 한다.


위의 표에서 Key에 MUL 이 들어있는 것을 확인할 수 있다. 다른 테이블의 기본 키를 참조하는 외래키는 이처럼 MUL 로 표현 된다. MULTIPLE 이라는 뜻. 여러 행이 동일한 값을 가질 수 있음을 의미한다. (ex. 여러 상품이 동일한 allergy_id 를 가질 수 있습니다. 즉, 하나의 알러지에 다수의 상품이 동일한 알러지를 가지고 있을 수 있기 때문.)

다음 포스팅에는 이제 본격적으로 테이블에 데이터를 삽입하는 과정을 본격적으로 알아 보겠다.

==================to be continued========================

profile
개발도 예능처럼 재미지게~

0개의 댓글