Programing_Java

[SQL] MySQL - 생성한 Table 수정 및 값 집어넣기 본문

SQL_

[SQL] MySQL - 생성한 Table 수정 및 값 집어넣기

Joyfullyever 2025. 2. 12. 20:45

기본 Table

위에 미리 만들어둔 테이블에서 데이터를 변경해보자!

 

#1 Data 수정

1) Table명 변경

: 기본적으로 테이블의 이름을 바꾸는 것은 가능하지만, DB 자체의 이름을 바꾸는 것은 불가능

: ALTER 명령어로는 테이블의 이름을 변경할 수 없고, 테이블 안의 데이터만 변경이 가능

RENAME TABLE `기존의 테이블명` to `바꿀 테이블명`;

테이블명 변경 성공!
변경된 이름으로 테이블 불러오기

2) Table 안에 있는 Data 값 변경

2-1) 원하는 정보 변경

: Table 안에 저장된 모든 데이터는 변경이 가능하며, UPDATE 명령어를 사용하게 됨

: UPDATE를 할 때는 Key 값을 사용하는데, 그 이유는 중복된 값이 없기 때문.

// 기본 구조

UPDATE 테이블명 SET
바꿀 정보가 있는 칼럼명 = 바꿀 내용
WHERE 바꿈당할 내용을 포함한 Key값의 칼럼명 = 해당 Key값
;

Ex) leesunsin → 이성계 / sunny → 을지문덕

테이블 안의 값 변경

위 명령어를 통해 1003번, 1005번의 이름이 성공적으로 바뀐 것을 확인할 수 있음

 

※ 2개의 값을 동시에 바꾸고 싶다면?

: IN 또는 OR 연산자를 통해 바꿀 수 있으며, IN 연산자의 속도가 OR 연산자보다 빠름

IN / OR 연산자 모두 위의 기본 구조와 비슷하나 WHERE 구문에서 변화가 있음.

IN 연산자
WHERE 바꿈당할 내용을 포함한 Key값의 칼럼명 IN (바꿀 Key값1, 바꿀 Key값2)
;

OR 연산자
WHERE 바꿈당할 내용을 포함한 Key값의 칼럼명 = 해당 Key값 or 바꿈당할 내용을 포함한 Key값의 칼럼명 = 해당 Key값
;

IN 연산자 예제

: 위와 같이 Age가 21, 23에서 모두 20으로 바뀐 것을 알 수 있음

2-2) 동일한 값 더하기

: Age, Grade와 같이 같은 컬럼에 있는 값들에 동일한 값을 한번에 더하기

: Java와 같이 컬럼명 += 1 같은 형식은 사용할 수 없음...

UPDATE 테이블명 SET
AGE = AGE + 1
;

위 코드와 같이, 컬럼명을 다시 한번 입력해줘야 모든 데이터들에 동일한 값이 적용이 됨

공통된 값 연산

 

2-3) 데이터 삭제

: 원하는 데이터를 삭제하기 위해서는 DELETE 명령어가 필요

// 기본 구조
DELETE FROM 테이블명
WHERE Primary Key 컬럼명 = 삭제할 데이터의 Key값
;

데이터 삭제

: Num 5555 아래 줄에 생성되어있던 Num 6666번줄이 모두 사라진 것을 확인할 수 있음

 

#2 별칭

Alias 별칭 설정 : as (약자)

: 별칭 설정은 생략이 가능

: 칼럼, 테이블, 서브쿼리,++ 에서 사용이 가능

: 칼럼명에선 생략을 잘 하지 않고, 테이블명에서 생략을 함

// 기본 구조
SELECT NAME AS '별칭명', AGE AS '별칭명' FROM 테이블명
;

: 구문 자체만 잠시 바꿔주는 것으로, TABLE에 이미 지정되어 있는 이름을 바꿔주지는 않음

: 한글로 작성할 경우에는 ' '를 꼭 표기해야하지만, 영어로 작성할 경우 ' '를 생략할 수 있음

: 같이 사용된 SELETE 코드는 테이블에 저장되어 있는 값들 중 본인이 원하는 값들만 불러올 수 있음

// 기본 구조
SELECT 컬럼명, 컬럼명, 컬럼명 FROM 테이블명
;

// 모든 내용 확인
SELECT * FROM 테이블명
;

출력되는 컬럼명 별칭 설정 & 해당 컬럼 정보 출력

2-1) 원하는 정보 출력하기

Major가 Compter인 학생들 정보 출력하기

Major가 Computer 학생들의 정보만 출력

Major가 Computer이면서, Score가 80점 이상인 학생들만 출력

: WHERE 명령어를 사용할 때 and 을 사용하여 조건 1개를 더 추가하여 정보를 찾을 수 있음

: 점수가 70~90점 사이인 학생을 찾고 싶을 경우 BETWEEN을 사용하여 정보를 찾을 수 있음

 

Major가 Computer 이면서 Score가 80점 이상인 학생 정보 출력
Score 가 70~90 사이인 학생 정보 출력

※ 특정 단어로 시작하는 정보 찾기

: WHERE 명령어와 LIKE를 동시에 사용하여 정보를 찾을 수 있음

: 서칭할 때 많이 사용

WHERE 컬럼명 LIKE '정보의 시작 단어 %'
;

: 단어를 % 앞에 둘 경우 → 단어로 시작하는 정보 찾아서 출력

: 단어를 % 뒤에 둘 경우 → 단어로 끝나는 정보 찾아서 출력

: 단어를 % 앞,뒤로 둘 경우 → 앞 단어로 시작해서 뒷 단어로 끝나는 정보를 찾아서 출력

특정 단어로 시작하는 정보 찾아서 출력

 

#3 중복 제거

: 값을 출력할 때, DISTINCT를 사용하여 중복되는 값들은 제외하고 출력할 수 있음

: 해당 칼럼 하나만 출력을 해야하며, 다른 칼럼을 같이 출력한다면 값이 의미를 가져버리기 때문에 어떤 정보를 남겨야할지 모름

// 기본 구조
SELECT DISTINCT 칼럼명 as '별칭' FROM 테이블명
;

중복된 값 제거 후 출력

: Computer를 Major로 가지는 학생이 4명 존재하지만, 중복된 값을 전부 제거하고 1개만 출력이 됨

 

#4 집약과 정렬

: 집약 → 열의 데이터 합계, 평균 같은 집계값을 구하기 위한 함수

COUNT 검색된 행의 개수
SUM 합계
AVG 평균
MAX 최대값
MIN 최소값
GROUP BY 그룹별로 묶음
HAVING 그룹에 조건
ORDER BY 정렬(기준을 여러개 줄 수 있음) → ASC, DESC ⇒ 아무것도 입력안할 시 ASC로 자동 설정
LIMIT 출력할 데이터 개수 표시, 시작번지, 개수 ⇒ 시작번지부터 개수만큼 추출

 

전공이 English인 학생들의 Score 평균

: 위와 같이 COUNT, SUM, AVG, MAX, MIN 을 사용할 때는 소괄호 ()를 붙이고, 소괄호 안에 구하고 싶은 값을 넣어주면 됨

// GROUP BY, HAVING, ORDER BY, LIMIT 을 사용할 때 기본 구조

SELECT 칼럼명 FROM 테이블명
Where 조건
Group by 칼럼
Having 조건
Order by 칼럼
limit 시작번지, 개수
;

4-1) 예제

: 1,2,3등 출력하기

점수 순서에 따라 원하는 개수의 정보 출력

: 위와 같이 6명의 학생이 존재하지만 0,3 을 입력하여 3명의 정보만 내림차순(DESC)으로 출력

 

#5 논리 함수

: IF문과 CASE~WHEN~THEN 문이 있음

: CASE~WHEN~THEN문은 JAVA의 SWITCH문과 같음

// IF문 기본 구조
IF(조건식, 참, 거짓)
IF(조건식, 참, IF(조건식, 참, 거짓));
거짓의 자리에 또 다른 IF문을 여러개 집어 넣을 수 있음

// CASE문 기본 구조
Case
When 조건 then 값 → 변수 or 상수
When 조건 then 값 → 변수 or 상수
When 조건 then 값 → 변수 or 상수
Else 값 → 없어도 됨
End;

 

이미 저장되어 있는 값을 통해 새로운 데이터 삽입

: 위와 같이 이미 저장되어있는 Score 데이터들과 CASE~WHEN~THEN문을 사용하여 값들을 집어 넣을 수 있음