Programing_Java
[SQL] MySQL - 생성한 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값
;
: 위와 같이 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이면서, Score가 80점 이상인 학생들만 출력
: WHERE 명령어를 사용할 때 and 을 사용하여 조건 1개를 더 추가하여 정보를 찾을 수 있음
: 점수가 70~90점 사이인 학생을 찾고 싶을 경우 BETWEEN을 사용하여 정보를 찾을 수 있음
※ 특정 단어로 시작하는 정보 찾기
: 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 | 출력할 데이터 개수 표시, 시작번지, 개수 ⇒ 시작번지부터 개수만큼 추출 |
: 위와 같이 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문을 사용하여 값들을 집어 넣을 수 있음
'SQL_' 카테고리의 다른 글
[SQL] MySQL - Foreign Key & Join (0) | 2025.02.14 |
---|---|
[SQL] Table 속에 저장된 데이터를 출력하고 수정하기 (0) | 2025.02.13 |
[SQL] MySQL - User & Table(Attribute)까지 만들어보기 (0) | 2025.02.11 |
[SQLD] 속성과 엔터티 식별자 (0) | 2025.02.10 |
[SQLD] 스키마와 엔터티 (0) | 2025.02.10 |