본문 바로가기
DataBase/mysql

맥 터미널로 mysql 사용하기

by GGShin 2022. 6. 12.

Mac Terminal로 mysql을 접속하는 방법기본 SQL기본 query문을 알아보도록 하겠습니다.

 

1. mysql 접속하기

mysql이 설치되어 있는 상태에서, terminal을 통해 mysql에 접속하려면 아래와 같이 명령어를 사용하면 됩니다.

그러면 password 입력하는 라인이 생성되고, 설정해 둔 password를 입력하여 접속하면 됩니다. 

mysql -u root -p
//설정한 비밀번호 입력

 

2. data base 만들기

 

mysql을 설치만 하고 아무 작업도 하지 않은 상태라면 mysql 안에는 아무런 데이터가 존재하지 않을 것입니다.

그렇기 때문에 data를 관리할 data base를 먼저 만들어 주어야 합니다.

 

CREATE DATABASE ggdatabase;

 

이렇게 db를 만들어 주면 앞으로 db에 들어가서 data를 관리할 수 있게 됩니다!

 

3. 작업할 data base로 들어가기(선택하기)

 

이미 만들어 둔 db가 있는 경우에는 mysql을 재시작했을 때 작업할 db를 알려주어야 합니다.

 

USE ggdatabase;
//use 다음에 사용할 db name을 적으면 됩니다

 

작업할 data base를 선택한 다음에야 그 db 안에 있는 table들의 정보를 이용할 수 있게 됩니다.

 

4. table 만들기

 

data를 관리할 table을 만들때는 CREATE TABLE이라는 쿼리를 사용합니다.

 

CREATE TABLE user (
  //field명 datatype
  name varchar(255),
  email varchar(255)
);

이렇게 하면 user라는 table이 생성됩니다. 한 데이터베이스 내에서 같은 이름의 table은 생성이 제한됩니다. 

 

5. 현재 만들어진 table 확인하기

 

이미 만들어져 있는 table이 어떤 것들이 있는지 확인하고 싶다면 아래와 같이 사용하면 됩니다.

 

SHOW tables;

 

6. table의 field 수정하기 

 

table을 만든 다음에 field를 추가/삭제하거나 field명 또는 데이터 타입을 수정하고 싶을 때는 ALTER 를 사용합니다.

 

field를 추가할 때는 ADD를 사용하고

ALTER TABLE user
ADD dateAdded timestamp;

 

삭제할 때는 DROP을 사용합니다. 

 

ALTER TABLE user
DROP COLUMN dateAdded;

 

field명을 수정할 때는 CHANGE를 사용합니다. 

 

ALTER TABLE user 
//CHANGE 이전 이름 새로운 이름 데이터타입
CHANGE dateAdded date timestamp;

 

field의 데이터 타입을 수정할 때는 MODIFY를 사용합니다.

 

ALTER TABLE user
MODIFY COLUMN date varchar(255);

 

7. table에 record 추가하기

 

Table이 있다면 안에 데이터를 추가할 수 있겠죠. 데이터를 추가할 때는 INSERT INTO table이름(field1, field2, ...) VALUE (value2, value2,...) 를 사용합니다.

 

INSERT INTO user(name, email) 
VALUES("Kim", "kim@gmail.com");

 

만약에 여러 records를 한번에 추가하고 싶다면 이렇게 작성하면 됩니다.

 

INSERT INTO user(name, email) 
VALUES
("Kim", "kim@gmail.com"),
("Lee", "lee@gmail.com"),
("Park", "park@gmail.com"),
("Han", "han@gmail.com")
;

 

 

8. 조건에 맞는 데이터 필터링하기

 

필드 값이 10보다 큰 데이터만, 필드 값이  a로 시작하는 데이터만 등등 조건에 맞게 데이터를 필터링 하여 열람할 때는 WHERE 를 사용합니다. 

 

user table에서 name이 kim인 경우만을 필터링해보도록 하겠습니다.

SELECT * FROM user 
WHERE user.name = "Kim";

 

만약에 반대로 name이 kim이 아닌 경우만 필터링 하려면 어떻게 할까요?

이때는 = 등호 대신에 <> 다이아몬드를 사용하면 됩니다.

 

SELECT * FROM user 
WHERE user.name <> "Kim";

 

9. AND, OR , IN 사용하기

 

조건이 다수일 때는 AND나 OR operator를 사용할 수도 있습니다.

 

SELECT * FROM user
//이름이 Kim 또는 Lee인 유저 레코드만
WHERE user.name = "Kim" OR user.name = "Lee";

 

만약에 user.name이 Kim 이거나, Lee 이거나, Park 이거나, Han 인 레코드를 뽑아오라고 말하고 싶다면 

WHERE user.name = "Kim" OR user.name = "Lee" OR ... 

이렇게 OR를 여러번 명시해야 하는 번거로움이 있습니다. 그럴 때는 IN을 사용해주면 됩니다. 

SELECT * FROM user
WHERE user.name IN("Kim", "Lee", "Park", "Han");

 

IN을 사용하니 훨씬 깔끔하고 가독성 있게 작성할 수 있게 되었죠?

 

10. LIKE 으로 패턴 찾기

 

앞서 5번에서 이야기한 것처럼 'a'로 시작하는 레코드만 찾고 싶다면 LIKE를 이용해주면 됩니다.

a로 시작하는 패턴을 찾아달라고 요청하는 것입니다.

 

SELECT * FROM user 
WHERE email LIKE 'a%';

 

user table에는 a로 시작하는 email이 없으니 그런 데이터가 없다고 나오겠죠?

만약에 '@gmail' 이라는 패턴이 포함된 email이 있는 레코드를 뽑아오라고 하고 싶다면 어떻게 할까요?

 

SELECT * FROM user
WHERE email LIKE '%@gmail%';

 

이렇게 두개의 % 기호 사이에 원하는 패턴인 @gmail을 넣어주면 됩니다. 

만약에 .com으로 끝나는 레코드를 뽑아오게 하려면 어떻게 할까요?

 

SELECT * FROM user
WHERE email LIKE '%.com';

 

이렇게 패턴을 만들어서 요청하면 됩니다. 

보면 % 부분이 와일드카드 같이 작용하는 것을 알 수 있습니다. %대신 _를 사용하기도 하는데, %는 해당 부분에 character가 0개 또는 그 이상이 존재할 때 사용하고 _는 character가 한개만 존재할 때 사용합니다. 

 

바로 위의 예시인 %.com대신 _.com을 사용하면 아무런 값도 가져오지 못하겠죠? 왜냐면 현재 있는 데이터에는 .com 앞에 다수의 character가 들어가 있으니까요.

 

11. 값 범위 지정하기 

 

만약에 b와 p 사이의 데이터를 찾고 싶거나 5와 9 사이의 데이터를 찾고 싶을 때는 BETWEEN A AND B를 사용해 범위를 지정해 줍니다.  (이때 A와 B도 결과에 포함됩니다.)

 

SELECT email
FROM user
WHERE email BETWEEN 'kim@gmail.com' AND 'park@gmail.com';

 

 

12. 레코드 수정하기

 

수정을 위해서는 UPDATE query statement를 사용합니다.

 

UPDATE user
SET email = 'lee2@gmail.com'
WHERE name = 'Lee';

 

name이 Lee인 레코드를 찾아 email을 lee2@gmail.com으로 업데이트 하였습니다. 

만약에 WHERE로 조건을 명시하지 않으면 모든 레코드의 email이 업데이트 되니 주의하여야 합니다!

 

13. 레코드의 최대, 최소값 찾기

 

원하는 field(column)의 최대값 혹은 최소값을 찾을 때는 MAX(column name) 또는 MIN(column name)을 사용합니다. Java에서도 사용하는 단어라 친숙하게 느껴지는 쿼리문입니다. ㅎㅎ

만약 구하고자 하는 값이 문자형태일 때는 알파벳 순서로 찾아집니다. 

 

SELECT MIN(email)
FROM user;
//han@gmail.com

SELECT Max(email) 
FROM user;
//park@gmail.com

 

14. 레코드 갯수 카운트 하기

 

COUNT 문을 사용해서 원하는 조건의 레코드가 몇개 있는지 확인할 수도 있습니다. 

 

//SELECT 뒤에 바로 column name을 명시하지 않고
//COUNT() 괄호 안에 명시해줍니다.
SELECT COUNT(email)
FROM user;
//4

 

15. 레코드 삭제하기

 

특정 조건에 해당하는 레코드를 삭제하려면 DELETE 을 사용하면 됩니다.

 

DELETE FROM user 
WHERE user.name = 'Kim';

 

이렇게 하면 name이 'Kim'인 레코드가 삭제됩니다.

 

16. table 삭제하기

만약에 table 자체를 삭제하고 싶다면 drop 문을 사용하면 됩니다.

 

DROP TABLE user;

 

17. database 삭제하기

database를 통째로 삭제할 때도 drop문을 이용합니다.

 

DROP DATABASE ggdatabase;

 

다음번에는 RDBMS의 핵심인 table 간 관계 형성을 만들어주는 primary key와 foreign key에 대해서 알아보도록 하겠습니다.


참고 자료

https://www.javatpoint.com/mysql-describe-table

 

MySQL Describe Table - javatpoint

MySQL Describe Table with mysql tutorial, examples, functions, programming, mysql, literals, procedure, regexp_like(), regexp_replace operator, regular expression, crud etc.

www.javatpoint.com

 

반응형

'DataBase > mysql' 카테고리의 다른 글

Spring 사용 시 DB를 H2에서 MySQL로 변경하기(JPA사용)  (0) 2022.08.31
Join 알아보기  (4) 2022.06.13
Primary key & Foreign key 설정하기  (0) 2022.06.12