패스트캠퍼스

[패스트캠퍼스] 데이터 분석 부트캠프 17기 - 8주차 (3) MySQL 조건,고급

geraedo 2025. 2. 4. 13:26

1. 조건 만들기 (IF)

SELECT name, IF(attack>=60, 'strong', 'weak') AS attack_class FROM mypokemon;

IFNULL : NULL이면 새로운 값을 반환하는 함수 : IFNULL([컬럼이름], NULL일 때 값)

 

2. 여러 조건 한번에 만들기 (CASE)

CASE (이 자리에 [컬럼이름]을 넣을 수 도 있음)

             WHEN 조건식1 THEN 결과값1

             WHEN 조건식2 THEN 결과값2

             ELSE 결과값3

END

- ELSE 문장을 생략 시 NULL 값을 반환합니다. 

 

3. 실습 (IF, CASE)

 

MISSION (1)

SELECT name, IF(number < 150, 'old', 'new' ) AS age

FROM mypokemon;

 

MITTION (2)

SELECT name, IF(attack+defense < 100, 'weak', 'strong') AS ability

FROM mypokemon;

 

MISSON (3)

SELECT type, IF(avg(attack) >= 60, True, False) AS is_strong_type

FROM mypokemon

GROUP BY type;

 

MISSION (4)

SELECT name, IF(attack>100 and defense>100, True, False) AS ace

FROM mypokemon;

 

MISSION (5)

SELECT CASE WHEN number < 100 THEN '<100'

                          WHEN number < 200 THEN '<200'

                          WHEN number < 500 THEN '<500'

                END AS 'number_bin'

FROM mypokemon;

 

MISSION (6)

SELECT CASE WHEN number>=150 and attack>=50 THEN 'new_strong'

                          WHEN number>=150 and attack <50 THEN 'new-weak'

                          WHEN number<150 and attack>=50 THEN 'old_strong'

                          ELSE 'old_weak' END AS 'age_attack'

FROM mypokemon;

 

MISSION (7)

SELECT type, CASE WHEN count(1)=1 THEN 'solo'

                                   WHEN count(1)<3 THEN 'minor'

                                   ELSE 'major' END AS 'count_by_type'

FROM mypokemon GROUP BY type;


4. 데이터 삭제, 수정하기 고급 (DELETE, UPDATE)

DELETE FROM [테이블 이름] WHERE 조건식;

UPDATE [테이블 이름] SET [컬럼 이름]=[새 값] WHERE 조건식;

 

Error Code: 1175 발생시 해결방안

메뉴 - Preferences  - SQL Editor 접속 - Safe Updates 해제 - OK - Local에 다시 접속

 

5. 제약 조건 (CONSTRAINTS)

 

CREATE TABLE [테이블 이름] (

                    [컬럼 이름] [데이터 타입] [제약 조건],

                    [컬럼 이름] [데이터 타입] [제약 조건],

                    ... );

 

 

6. 권한과 DCL (GRANT, REVOKE)

 

 

#MySQL 기본 데이터베이스인 mysql 데이터베이스 선택하기

USE mysql;

 

#사용자 목록 조회하기

SELECT user, host FROM user;

 

#권한 부여하기

GRANT [권한] ON [데이터베이스 이름].[테이블 이름] TO [사용자 이름]@[ip주소];

 

#권한 확인하기

SHOW GRANTS FOR [사용자이름]@[ip주소];

 

#권한 삭제하기

REVOKE [권한] ON [데이터베이스 이름].[테이블 이름] FROM [사용자 이름]@[ip주소];

 

#권한 적용하기

FLUSH PRIVILEGES; 

 

7. 트랜젝션과 TCL (COMMIT, ROLLBACK, SAVEPOINT)

 

트랜잭션 : 데이터베이스의 데이터 상태를 바꾸는 작업 묶음

 

#트랜잭션 시작하기

START TRANSACTION;

 

#트랜잭션 확정하기

COMMIT;

 

#트랜잭션 이전으로 돌아가기

ROLLBACK;

 

세이브포인트 : 트랜잭션 내 특정한 저장 지점

 

#세이브포인트 만들기

SAVEPOINT [세이브포인트 이름];

 

#세이브포인트로 돌아가기

ROLLBACK TO [세이브포인트 이름];