본문 바로가기
Database/MySQL, SQL

MySql 의 기본 사용법과 주요 명령어들 총정리

by Developer88 2020. 5. 21.
반응형

오늘은 Mysql의 기본 사용법과 주요 명령어들에 대해서 정리해 보도록 하겠습니다.

 

1. MySql접속

MySQL을 이용하기 위해서는 접속을 해 주어야 하는데요.

먼저 Terminal을 이용해서 접속하는 방법부터 알아보겠습니다.

 

1-1. Terminal 이용한 접속

MySql이 설치된 디렉토리로 먼저 찾아가야 하는데요.

저의 Mac기준으로는, 

/usr/local/mysql-5.7.10/bin 여기에 있네요.

버전별로는 상이하나, 

앞의 /usr/local정도만 기억해도 나머지는 찾을 수 있을 것 같네요.

mysql디렉토리의 bin디렉토리에 있는 mysql을 

아래와 같이 실행시켜주면 됩니다

 

./mysql -u root -p 

 

(앞에 ./를  붙인것은 제가 리눅스기반인, mac에서 작업을 하기 때문입니다.)

User는 root라는 것이고, 위 명령어를 입력하고 비밀번호를 입력해주면 됩니다.

 

1-2. Workbench이용한 접속

Mysql접속은 UI 툴을 사용해도 되는데요.

아래사진과 같은 mysqlWorkBench를 설치하시면 됩니다.

아래의 링크를 눌러주시면 다운로드 페이지로 이동할 수 있습니다.

 

>>>MySQL Workbench 다운로드<<<

 

 

2. Database

2-1. Database 생성

가장 큰 단위인 Database를 생성하기 위해서는,

create명령어를 사용하구요.
character set은 아래와 같이 초기에 utf8_general_ci로 설정해 놓는 것이 좋습니다.

CREATE DATABASE <데이터베이스 명> CHARACTER SET utf8 COLLATE utf8_general_ci;

 

 

2-2. Database 보기

MySQL내의 Database들을 모두 보여주는 명령어는 아래와 같습니다.

show databases;

 

2-3. Database 선택(사용)하기

원하는 Database를 사용하기 위해서는 USE 명령어를 사용해 줍니다.

USE <데이터베이스 명>;

 

아래에서는 world 데이터베이스를 사용한다고 하고 있습니다.

 

 

2-4. Database 삭제하기

Database를 삭제하는 명령어는 Drop인데요.

다음과 같이 사용할 수 있습니다.

연습할 때는 Database 를 만들었다 삭제했다 하는 연습을 하기 때문에,

CREATE와 DROP을 종종 사용하게 되겠네요.

DROP DATABASE <데이터베이스 명>;

 

 

3. Table

3-1. Table의 생성

테이블을 생성할 때는, CREATE명령어를 사용하는데요.
테이블 생성시에 각 컬럼의 data_type을  결정하는 것이 매우 중요합니다.

CREATE TABLE <테이블 이름> (컬럼명1 data_type, 컬럼명2 data_type...)

 

data_type은 크게 아래 세가지 타입으로 나눌 수 있는데요.

  • Text데이터 타입
  • Number 데이터 타입
  • Date 데이터 타입

먼저 text데이터 타입부터 표로 보겠습니다.

 

A. Text 데이터 타입

영어로 복잡하게 쓰여있으나, 최대 몇자까지 쓸수 있는지 나와있는 숫자에 집중해서 보면 됩니다.

예를 들면, TINYTEXT같은 경우 255자 까지 사용할 수 있네요.

TEXT가 65,535자 이구요.

( https://www.w3schools.com/sql/sql_datatypes.asp)

 

B. NumberType

TinyInt가 -128~127까지 이네요. 양수만 하는경우, 0~255까지구요.

나머지 타입들도 몇부터 몇까지인지 숫자를 보면 될 것 같습니다.

DOUBLE같은 경우는 double(10,2)과 같이 소수점의 자리수를 두번째 인자로 지정해 줄 수 있습니다.

 

C. DateType

DateType은 비교적 간단한데요.

Format들에서 각기 다른 포맷을 사용하는 것을 볼 수 있습니다.

 

type들을 정리해 보았는데요.

실제로 test라는 table을 아래와 같이 생성해 볼 수 있습니다.

 

CREATE TABLE 'test' (
    'id'  tinyint NOT NULL ,
    'tester_name'  char(12) NOT NULL ,
    'sex'  enum('남자','여자') NOT NULL ,
    'place'  varchar(50) NOT NULL ,
    'score' INT NOT NULL,
    'test_date'  datetime NOT NULL ,
    PRIMARY KEY (`id`)
);

 

 

3-2. Table 보기

데이터베이스를 선택했으니, 데이터베이스 아래에 있는 테이블들도 보아야 겠지요.

아래 명령어로 가능합니다.

show tables;

 

 

아래에서는 city, city_kor, country, countrylanguage 테이블 들이 존재하는 것을 볼 수 있습니다.

 

 

해당 Table의 구조를 보고 싶을 때가 있을텐데요.

desc 명령어로 가능합니다.

describtion의 약자인것 같은데요.

어떤 Type을 썻고, PrimaryKey는 무엇인지 확인할 수 있습니다.

 

 desc city;

 

city테이블의 구조는 아래와 같이 생겼군요.

 

 

3. CRUD 명령어

Create, Read, Update, Delete의 약자인 CRUD 사용에 대해서 알아보겠습니다.

테이블 데이터를 조작하는 명령어여서, 자주 사용하다보면 자연스럽게 익숙해지는데요.

 

3-1. Read

먼저 Read에 해당하는 Select부터 보시죠.

 

A. 기본 조회

아래와 같이 SQL문을 사용할 수 있는데요.

첫번째 줄에서는 WHERE절을 이용해서 조건을 붙여서 읽어오는 것 이구요.

두번째 줄에서는 LIMIT을 붙여서 조회할 레코드 수의 제한을 두고 있습니다.

SELECT <컬럼 명1, 컬럼 명2> FROM <테이블 명> WHERE <조건>
SELECT <컬럼 명> FROM <테이블 명> WHERE <조건> LIMIT <조회할 레코드 수>

 

아래와 같이 Where절 조건을 달지않고 모든 데이터를 가져올수도 있구요.

select * from city;

 

 

아래는 실제로 where절을 붙여서 조건을 만들어 보았습니다.

SELECT * FROM 'test' WHERE name = '박' limit 3;

 

"<컬럼명=값">과 같은 형태를 사용할수도 있겠지만, 아래와 같이도 표현할 수 있습니다.

select * from city where Population > 90000;

 

B. GROUP BY 조회

필요에 따라, GROUP BY를 사용해서 데이터를 조회할 수 있는데요.

SELECT * FROM <테이블 명> GROUP BY <그룹핑 할 기준 칼럼명>

아래는 city테이블의 데이터들을 CountryCode로 국가별로만 그룹핑해서 조회한 것 입니다.

 

아래와 같이 응용하는 것도 가능합니다.

도시들의 데이터에서 국가들의 평균값을 추출해 내는 것 이지요.

 

 

 

C. ORDER BY

오름차순과 내림차순을 정의할 수 있는데요.

아래와 같이 사용할 수 있습니다.

SELECT * FROM <테이블 명> ORDER BY <정렬의 기준이 될 컬럼> <DESC 또는 ASC>

 

3-2. Crate & Update

A. Create

Create에 해당하는 SQL명령어는 Insert인데요.

아래와 같이 사용할 수 있습니다.

insert into city(Name, Population) values('nananan", 230000)

 

 

 

Insert문은 nodejs 의 mysql 코드에서도 아래와 같이 사용합니다.

조금 복잡해보이지만 set 이라는 것을 써서 sqlParams과 같은 객체 형태로 가져올 수 있다는 것입니다.

 

 

B. Update

update는 아래와 같이 사용하는데요.

set뒤에 변경할 "컬럼명 = 값" 을 넣어주고,

where절에 변경하고자 하는 row를 찾기 위한 조건을 붙여주면 됩니다.

매칭이 되는 컬럼이 없다면, 당연히 업데이트 되는 레코드도 없게 됩니다.

update city set name = "test_name" where id = 38;

 

 

C. ON DUPLICATE KEY UPDATE

ON DUPLICATE KEY UPDATE는
지시어 뒤에 컬럼과 값을 넣어주고, 그것이 기존에 존재하면,
VALUE뒤에 있는 값으로 바꾸어주고,
없으면 VALUE뒤의 값으로 생성하도록 하는 것입니다.

 

INSERT INTO <테이블 명>(해당 컬럼 명1, 해당 컬럼명2....)
VALUES(해당 값1, 해당 값2...)
ON DUPLICATE KEY UPDATE 컬럼 명1 = 해당 값1, 컬럼 명2 = 해당 값2

 

 

실제 SQL문은 아래와 같이 쓸 수 있겠지요.

INSERT INTO 'test' (name, place)
VALUES('김삼돌', '올레플라자')
ON DUPLICATE KEY UPDATE name = '김삼돌', place = '종로5가';

 

3-3. DELETE

마지막 delete는 너무 쉽지만 조심스럽게 사용해야 하는데요.

역시 delete 명령어와 함께 삭제하고자 하는 row를 찾기위한 조건을 where절로 찾아줍니다.

delete from city where id = 38;

 

 

where절을 붙이지 않으면, 테이블의 모두 데이터가 삭제되므로 주의해야 하겠지요.

 

MySql의 간단한 사용법에 대해서 정리해보았구요.

다음 블로그글에서, Join에 대해서 정리해보겠습니다~.

 

728x90

댓글