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 [세이브포인트 이름];
'패스트캠퍼스' 카테고리의 다른 글
[패스트캠퍼스] 데이터 분석 부트캠프 17기 - 9주차 (2) MySQL 서브쿼리 (0) | 2025.02.07 |
---|---|
[패스트캠퍼스] 데이터 분석 부트캠프 17기 - 9주차 (1) MySQL JOIN (0) | 2025.02.04 |
[패스트캠퍼스] 데이터 분석 부트캠프 17기 - 8주차 (2) MySQL CRUD (0) | 2025.02.04 |
[패스트캠퍼스] 데이터 분석 부트캠프 17기 - 8주차 (1) MySQL 기본 (0) | 2025.01.31 |
[패스트캠퍼스] 데이터 분석 부트캠프 17기 - 7주차 (1) MySQL (0) | 2025.01.31 |