본문 바로가기
개발자 전향 프로젝트

[DBMS] MySQL 의 기초 (1) 기본 CRUD 와 정렬 조회

by 샘오리 2022. 8. 22.
728x90
반응형

가로횡! 은 Tuple

사용하는 DBMS : MySQL

사용하는 툴: Workbench 8.0 CE

사용하는 스키마: World (샘플 스키마) 

사용하는 테이블: #1 city, #2 countrylanguage (샘플 테이블)

#1 테이블

city 테이블

#2 테이블

countrylanguage 테이블

#1 과 #2 테이블은 CountryCode라는 칼럼을 둘다 가지고 있다.

차이라면 #1 테이블은 1씩 순차적으로 늘어나는 ID가 Primary Key이며

#테이블은 CountryCode가 Primary Key 이다.

 

여기서 Primary Key란, 절대로 값이 null이 되서는 안되며 중복이 없는, 고유한 값이어야 한다.

그렇다면 #2 테이블의 Pk(Primary key) 값인 CountryCode는 어째서 중복이 있는걸까?

그것은 #2 테이블의 Pk는 하나지만 그 PK를 구성하는 칼럼 혹은 필드는 복수가 가능하기 때문이다.

쉽게 말해 CountryCode와 Language 둘다 하나의 PK를 절반씩 차지하고 있는셈이다. 

 

즉, ABW라는 CountryCode와 Dutch라는 Language를 하나의 세트로 묶어서 이와 동일한 값이 있으면 안되는 것으로

치기 때문에 각각의 중복은 있을 수 있는 것이다.

 

아무튼, 이 두 테이블을 사용해서 기본적인 CRUD를 설명하려 한다. 

만약 본인이 테이블을 어떻게 조작하는지 모른다면 아래 커맨드를 참고하길 바란다.

CREATE 테이블 생성
DROP 테이블 삭제
ALTER 테이블 속성 변경
RENAME 테이블 이름 변경
TRUNCATE 테이블 내 데이터 삭제

테이블 생성과 삭제 등의 커맨드를 다룰 수 있다면 이제 테이블의 내용을 추가하고, 읽고, 변경하고, 삭제할 수 있어야한다.

 

해당 CRUD 문법은  아래와 같다.

 

INSERT

특정 테이블에 데이터를 신규로 삽입할 때

 

1. 필드(칼럼) 순서대로 삽입->INSERT INTO 테이블이름

VALUES (데이터값1, 데이터값2, 데이터값3, ...)

 

2. 특정 필드에 삽입-> INSERT INTO 테이블이름(필드이름1, 필드이름2, 필드이름3, ...)

VALUES (데이터값1, 데이터값2, 데이터값3, ...)

 

예시:

countrylanguage 테이블

 

1번 문법을 이용해서 데이터를 입력하고 싶다면 아래와 같이 할 수 있다.

INSERT INTO COUNTRYLANGUAGE

VALUES ('KOR', 'KOREAN', 'T', 100)

 

2번 문법을 이용해서 특정 테이블에만 데이터를 입력하고 싶다면

INSERT INTO COUNTRYLANGUAGE ('COUNTRYCODE, 'LANGUAGE')

VALUES ('KOR', 'KOREAN')

 

UPDATE

특정 테이블 내 데이터의 전체, 또는 일부를 새로운 값으로 갱신 할 때

 

1. UPDATE 테이블이름

SET 필드이름1=데이터값1, 필드이름2=데이터값2, ...WHERE 필드이름=데이터값

 

예시: 

countrylanguage 테이블

 

1번 문법을 이용해서 첫번째1 데이터의 ISOFFICIAL 필드의 데이터를 T->F로 수정하고 싶다면

UPDATE COUNTRYLANGUAGE

SET ISOFFICIAL='F'

WHERE COUNTRYCODE='ABW' AND LANGUAGE='DUTCH' 로 하면 된다.

 

IsOfficial이 T -> F 로 변경되었다.

 

DELETE

특정 테이블 내 데이터의 전체, 또는 일부를 삭제 할 때

 

1. 전체삭제-> DELETE FROM 테이블이름;

 

2. 일부삭제-> DELETE FROM 테이블이름 WHERE 필드이름=데이터값

 

예시: 

countrylanguage 테이블

2번 문법을 이용해서 첫번째 튜플을 지워보도록 하자.

DELETE FROM COUNTRYLANGUAGE

WHERE COUNTRYCODE='ABW' AND LANGUAGE='DUTCH'

 

첫번째 튜플이 삭제되었다

 

SELECT

특정 테이블내 데이터의 전체 또는 일부를 획득할 때

 

1. 전체선택-> SELECT * FROM 테이블이름

2. 일부선택-> SELECT * FROM 테이블이름 WHERE 조건

 

예시: 

countrylanguage 테이블

2번 문법을 이용해서 특정 튜플만 검색해오자.

SELECT * FROM COUNTRYLANGUAGE

WHERE LANGUAGE='ENGLISH'

영어를 사용하는 국가들에 대한 정보(국가코드, 언어, 공식언어 유무, 점유율)를 모두 가져오는 것

선택된 값들의 LANGUAGE 필드가 ENGLISH라는 데이터만 포함하고 있는 것을 확인할 수 있다

조금 응용을 해서 영어를 쓰는 국가들을 가져오는데 점유율이 높은 순으로 정렬된 값들을 보고 싶다고 가정해보자.

내림차순으로 정렬하는 커맨드를 추가로 적어줘야한다.

정렬 같은 경우는 ORDER BY 필드명 커맨드를 사용하면 되고 ORDER BY 자체가 오름차순이기 때문에

그 반대인 내림차순을 나타내는 DESCENDING -> DESC 를 적어줘야 한다.

 

SELECT * FROM COUNTRYLANGUAGE

WHERE LANGUAGE='ENGLISH'

ORDER BY PERCENTAGE DESC

의도한대로 값을 출력하였다

다음에는 두 테이블을 이용해서 JOIN을 설명하겠다.

728x90
반응형