포켓몬 테이블 만들기
DROP DATABASE IF EXISTS pokemon; CREATE DATABASE pokemon; USE pokemon; CREATE TABLE mypokemon ( number INT, name VARCHAR(20), type VARCHAR(10), attack INT, defense INT, capture_date DATE ); INSERT INTO mypokemon (number, name, type, attack, defense, capture_date) VALUES (10, 'caterpie', 'bug', 30, 35, '2019-10-14'), (25, 'pikachu', 'electric', 55, 40, '2018-11-04'), (26, 'raichu', 'electric', 90, 55, '2019-05-28'), (125, 'electabuzz', 'electric', 83, 57, '2020-12-29'), (133, 'eevee', 'normal', 55, 50, '2021-10-03'), (137, 'porygon', 'normal', 60, 70, '2021-01-16'), (152, 'chikoirita', 'grass', 49, 65, '2020-03-05'), (153, 'bayleef', 'grass', 62, 80, '2022-01-01');
포켓몬의 이름을 마지막 3개 문자만, ‘last_char’이라는 별명으로 가져와 주세요
SELECT RIGHT(name,3) AS last_char FROM mypokemon;
포켓몬 이름을 왼쪽에서 2개 문자를 ‘left2’라는 별명으로 가져와 주세요.
SELECT LEFT(name,2) AS left2 FROM mypokemon;
포켓몬 이름에서 이름에 o가 포함된 포켓몬만 모든 소문자 o를 대문자 O로 바꿔서 ’bigO’라는 별명으로
가져와 주세요.
Ex) 이름이 ‘pokemon’일 경우, ’bigO’ 값은 ’pOkemOn’이 됩니다.SELECT REPLACE(name, 'o', 'O') AS bigO FROM mypokemon WHERE name LIKE "%o%";
- LIKE 함수 기억하기
포켓몬 타입을 가장 첫번째 글자 1자, 가장 마지막 글자 1자를 합친 후, 대문자로 변환해서
‘type_code’라는 별명으로 가져와 주세요. 이 때, 이름도 함께 가져와 주세요.
Ex) 타입이 ‘water’일 경우, ‘type_code’ 값은 ‘w’와 ‘r’를 대문자로 바꾼 ‘WR’이 됩니다.SELECT UPPER(CONCAT(RIGHT(type,1), LEFT(type,1))) AS type_code, name FROM mypokemon;
SELECT DISTINCT UPPER(CONCAT(RIGHT(type,1), LEFT(type,1))) AS type_code, name FROM mypokemon;
DISTINCT 함수 = 중복제거 기억하기
포켓몬 이름의 글자 수가 8보다 큰 포켓몬의 데이터를 전부 가져와 주세요.
SELECT * FROM mypokemon WHERE LENGTH(name) > 8;
모든 포켓몬의 공격력 평균을 정수로 반올림해서 ‘avg_of_attack’이라는 별명으로 가져와 주세요.
SELECT ROUND(AGB(attack)) AS avg_of_attack FROM mypokemon;
모든 포켓몬의 방어력 평균을 정수로 내림해서 ‘avg_of_defense’이라는 별명으로 가져와 주세요.
SELECT FLOOR(AGB(defense)) AS avg_of_defense FROM mypokemon;
FLOOR 함수 = 정수로 내림해서 반환한다. 기억하기
이름의 길이가 8미만인 포켓몬의 공격력의 2 제곱을 ‘attack2’라는 별명으로 가져와 주세요. 이 때, 이름
도 함께 가져와 주세요.SELECT POWER(attack,2) AS attack2, name FROM mypokemon WHERE LENGTH(name) < 8;
모든 포켓몬의 공격력을 2로 나눈 나머지를 ‘div2’라는 별명으로 가져와 주세요. 이 때, 이름도 함께 가져
와 주세요.SELECT name, MOD(attack,2) AS div2 FROM mypokemon;
MOD 함수 리마인드
공격력이 50 이하인 포켓몬의 공격력을 방어력으로 뺀 값의 절댓값을 ‘diff’라는 별명으로 가져와 주세요.
이 때, 이름도 함께 가져와 주세요.SELECT name, ABS(attack-denfense) AS diff FROM mypokemon WHERE attack <= 50;
ABS 함수 = 절댓값
현재 날짜와 시간을 가져와 주세요. 각각 now_date, now_time이라는 별명으로 가져와 주세요.
SELECT CURRENT_DATE()AS now_date, CURRENT_TIME()AS now_time;
CURRENT_DATE ()
CURRENT_TIME ()
포켓몬을 포획한 달(월, MONTH)을 숫자와 영어로 가져와 주세요. 숫자는 month_num, 영어는
month_eng이라는 별명으로 가져와 주세요.SELECT MONTH(capture_date) AS month_num, MONTHNAME(capture_date) AS month_eng FROM mypokemon;
MONTH() = 숫자로 월을 반환
MONTHNAME() = 숫자를 영어로 반환
기억하기
포켓몬을 포획한 날의 요일을 숫자와 영어로 가져와 주세요. 숫자는 day_num, 영어는 day_eng이라는
별명으로 가져와 주세요.SELECT DAYOFWEEK(capture_date) AS day_num, DAYNAME(capture_date) AS day_eng FROM mypokemon;
DAYOFWEEK() = 요일을 숫자로 반환
DAYNAME() = 요일을 영어로 반환
포켓몬을 포획한 날의 연도, 월, 일을 각각 숫자로 가져와 주세요. 연
도는 year, 월은 month, 일은 day라는 별명으로 가져와 주세요.SELECT YEAR(capture_date) AS year, MONTH(capture_date) AS month, DATE(capture_date) AS day FROM mypokemon;