사용하는 DBMS : MySQL
사용하는 툴: Workbench 8.0 CE
사용하는 스키마: World (샘플 스키마)
사용하는 테이블: #1 city, #2 countrylanguage (샘플 테이블)
#1 테이블
#2 테이블
#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, ...)
예시:
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 필드이름=데이터값
예시:
1번 문법을 이용해서 첫번째1 데이터의 ISOFFICIAL 필드의 데이터를 T->F로 수정하고 싶다면
UPDATE COUNTRYLANGUAGE
SET ISOFFICIAL='F'
WHERE COUNTRYCODE='ABW' AND LANGUAGE='DUTCH' 로 하면 된다.
DELETE
특정 테이블 내 데이터의 전체, 또는 일부를 삭제 할 때
1. 전체삭제-> DELETE FROM 테이블이름;
2. 일부삭제-> DELETE FROM 테이블이름 WHERE 필드이름=데이터값
예시:
2번 문법을 이용해서 첫번째 튜플을 지워보도록 하자.
DELETE FROM COUNTRYLANGUAGE
WHERE COUNTRYCODE='ABW' AND LANGUAGE='DUTCH'
SELECT
특정 테이블내 데이터의 전체 또는 일부를 획득할 때
1. 전체선택-> SELECT * FROM 테이블이름
2. 일부선택-> SELECT * FROM 테이블이름 WHERE 조건
예시:
2번 문법을 이용해서 특정 튜플만 검색해오자.
SELECT * FROM COUNTRYLANGUAGE
WHERE LANGUAGE='ENGLISH'
영어를 사용하는 국가들에 대한 정보(국가코드, 언어, 공식언어 유무, 점유율)를 모두 가져오는 것
조금 응용을 해서 영어를 쓰는 국가들을 가져오는데 점유율이 높은 순으로 정렬된 값들을 보고 싶다고 가정해보자.
내림차순으로 정렬하는 커맨드를 추가로 적어줘야한다.
정렬 같은 경우는 ORDER BY 필드명 커맨드를 사용하면 되고 ORDER BY 자체가 오름차순이기 때문에
그 반대인 내림차순을 나타내는 DESCENDING -> DESC 를 적어줘야 한다.
SELECT * FROM COUNTRYLANGUAGE
WHERE LANGUAGE='ENGLISH'
ORDER BY PERCENTAGE DESC
다음에는 두 테이블을 이용해서 JOIN을 설명하겠다.
'개발자 전향 프로젝트' 카테고리의 다른 글
[DBMS] MySQL 자주 쓰이는 SELECT(조회) 관련 명령어 6개 (0) | 2022.08.25 |
---|---|
[DBMS] MySQL 의 기초 (2) JOIN (0) | 2022.08.22 |
API 와 REST API에 대해 (0) | 2022.07.27 |
[백준] [알고리즘 4344번: 평균은 넘겠지] JAVA (0) | 2022.07.11 |
[백준] [알고리즘 8958번: OX퀴즈] JAVA (0) | 2022.07.10 |