
문제 풀이를 진행하기 전에 MySQL 구문을 다시 정리해보자!
QUIT(서버와의 연결을 끊음)와 같은 경우를 제외한 일반적인 구문 뒤에는 세미콜론 ;을 붙이며, 세미콜론은 SQL 구문을 구분하는 기준이 된다.SELECT 필드명
FROM 테이블명
[WHERE 조건]
SELECT 문을 사용하여 테이블의 레코드(열)을 선택할 수 있다.FROM 절은 레코드를 선택할 테이블의 이름을 명시한다.WHERE 절을 사용하면 선택할 레코드의 조건을 상세히 설정할 수 있다.SELECT *
FROM 테이블명
* 기호를 사용하면, 해당 테이블의 모든 필드를 선택할 수 있다.SELECT 필드명
FROM 테이블명
WHERE 조건
SELECT 문과 함께 WHERE 절을 사용하면 검색할 레코드의 조건을 설정할 수 있다.WHERE 절은 테이블의 크기가 매우 크거나, 특정 조건에 맞는 레코드만을 선택하고 싶을 때 유용하게 사용된다.AND와 OR 연산자를 이용하여 여러 조건을 연결할 수도 있다.SELECT 필드명1, 필드명2, ...
FROM 테이블명
SELECT 키워드 다음에 필드명을 명시하면, 해당 테이블의 특정 필드만을 불러올 수 있다.,를 사용하면 여러 개의 필드명을 한번에 명시할 수 있다.SELECT DISTINCT 필드명
FROM 테이블명
DISTINCT 키워드를 사용하여 그 값이 한 번만 선택되도록 설정할 수 있다.SELECT 필드명
FROM 테이블명
ORDER BY 필드명 [ASC|DESC]
ORDER BY 절을 사용하여 SELECT 문으로 선택한 결과를 정렬할 수 있다.ASC)이며, 키워드를 이용하여 내림차순(DESC)으로 정렬할 수도 있다.,를 이용하여 필드마다 다른 설정으로 정렬할 수도 있다.SELECT 필드명 AS 별칭
FROM 테이블명
AS 키워드를 이용하여 해당 필드에 새로운 별칭을 부여할 수 있다.SELECT 필드명
FROM 테이블명 AS 별칭
AS 키워드를 이용하여 해당 테이블에 새로운 별칭을 부여할 수 있다.💡 문제마다 추가적으로 필요한 개념들은 따로 정리해보도록 하겠다!

Query all columns for all American cities in the CITY table with populations larger than 100000. The CountryCode for America is USA.
CITY 테이블에서 POPULATION 값이 100000을 초과하는 레코드의 모든 컬럼을 출력하라.COUNTRYCODE는 'USA'이다.SELECT *
FROM CITY
WHERE POPULATION > 100000
AND COUNTRYCODE = 'USA';
Query the NAME field for all American cities in the CITY table with populations larger than 120000. The CountryCode for America is USA.
CITY 테이블에서 POPULATION 값이 120000을 초과하는 레코드의 NAME 필드를 출력하라.COUNTRYCODE는 'USA'이다.SELECT NAME
FROM CITY
WHERE POPULATION > 120000
AND COUNTRYCODE = 'USA';
Query all columns (attributes) for every row in the CITY table.
CITY 테이블의 모든 컬럼을 출력하라.SELECT *
FROM CITY;
Query all columns for a city in CITY with the ID 1661.
CITY 테이블의 ID 필드 값이 1661인 레코드의 모든 컬럼을 출력하라.SELECT *
FROM CITY
WHERE ID = 1661;
Query all attributes of every Japanese city in the CITY table. The COUNTRYCODE for Japan is JPN.
CITY 테이블의 COUNTRYCODE 필드값이 'JPN'인 레코드의 모든 컬럼을 출력하라.SELECT *
FROM CITY
WHERE COUNTRYCODE = 'JPN';
Query the names of all the Japanese cities in the CITY table. The COUNTRYCODE for Japan is JPN.
CITY 테이블의 COUNTRYCODE 필드값이 'JPN'인 데이터의 NAME 컬럼을 출력하라.SELECT NAME
FROM CITY
WHERE COUNTRYCODE = 'JPN';

Query a list of CITY and STATE from the STATION table.
STATION 테이블의 CITY, STATE 컬럼을 출력하라.SELECT CITY, STATE
FROM STATION;
Query a list of CITY names from STATION for cities that have an even ID number. Print the results in any order, but exclude duplicates from the answer.
STATION 테이블의 짝수 ID 번호를 갖는 레코드의 CITY를 출력하라.SELECT DISTINCT CITY
FROM STATION
WHERE ID % 2 = 0;
Find the difference between the total number of CITY entries in the table and the number of distinct CITY entries in the table.
STATION 테이블의 CITY 컬럼 총 개수와 CITY 컬럼 중 고유한 값을 갖는 레코드 개수의 차이를 출력하라.SELECT COUNT(*) - COUNT(DISTINCT CITY)
FROM STATION;
✅ COUNT(컬럼명) 함수
- SELECT절에서 반환된
컬럼명레코드 개수를 가져온다.- 이때
NULL값은 제외하고 카운트한다.
Query the two cities in STATION with the shortest and longest CITY names, as well as their respective lengths (i.e.: number of characters in the name). If there is more than one smallest or largest city, choose the one that comes first when ordered alphabetically.
STATION 테이블의 CITY 필드값의 길이가 가장 짧은 값과 가장 긴 값의 길이를 CITY 필드의 값과 함께 출력하라. (CITY 필드 값, 필드 값의 길이)SELECT CITY, LENGTH(CITY)
FROM STATION
ORDER BY LENGTH(CITY), CITY
LIMIT 1;
SELECT CITY, LENGTH(CITY)
FROM STATION
ORDER BY LENGTH(CITY) DESC, CITY
LIMIT 1;
SELECT 절은 (가장 짧은 도시의 이름, 길이)를 출력한다.SELECT 절은 (가장 긴 도시의 이름, 길이)를 출력한다.✅ LIMIT number;
- 반환할 레코드 수를 지정할 때 사용되며, number개를 반환한다.
LIMIT절은 수천 개의 레코드가 있는 큰 테이블에 유용하다.
Query the list of CITY names starting with vowels (i.e., a, e, i, o, or u) from STATION. Your result cannot contain duplicates.
STATION 테이블에서 CITY 필드값 중 모음으로 시작하는(첫 글자가 모음) 레코드의 CITY를 출력하라.SELECT DISTINCT CITY
FROM STATION
WHERE LEFT(CITY, 1) IN ('a', 'e', 'i', 'o', 'u');
✅ LEFT
문자열에서 왼쪽부터개수만큼의 문자를 추출한다.- 예)
LEFT('MYSQL', 1)→ 왼쪽 첫 번째 글자인M추출
Query the list of CITY names ending with vowels (a, e, i, o, u) from STATION. Your result cannot contain duplicates.
STATION 테이블에서 CITY 필드값 중 모음으로 끝나는(끝 글자가 모음) 레코드의 CITY를 출력하라.SELECT DISTINCT CITY
FROM STATION
WHERE RIGHT(CITY, 1) IN ('a', 'e', 'i', 'o', 'u');
✅ RIGHT(문자열, 개수)
문자열에서 오른쪽부터개수만큼의 문자를 추출한다.- 예)
RIGHT('MYSQL', 1)→ 오른쪽 첫 번째 글자인L추출
Query the list of CITY names from STATION which have vowels (i.e., a, e, i, o, and u) as both their first and last characters. Your result cannot contain duplicates.
STATION 테이블에서 CITY 필드값 중 모음으로 시작하고 끝나는(첫 글자, 끝 글자가 모음) 레코드의 CITY를 출력하라.SELECT DISTINCT CITY
FROM STATION
WHERE LEFT(CITY, 1) IN ('a', 'e', 'i', 'o', 'u')
AND RIGHT(CITY, 1) IN ('a', 'e', 'i', 'o', 'u');
Query the list of CITY names from STATION that do not start with vowels. Your result cannot contain duplicates.
STATION 테이블에서 CITY 필드값 중 모음으로 시작하지 않는(첫 글자가 모음 ❌(즉, 자음)) 레코드의 CITY를 출력하라.SELECT DISTINCT CITY
FROM STATION
WHERE LEFT(CITY, 1) NOT IN ('a', 'e', 'i', 'o', 'u');
Query the list of CITY names from STATION that do not end with vowels. Your result cannot contain duplicates.
STATION 테이블에서 CITY 필드값 중 모음으로 끝나지 않는(끝 글자가 모음 ❌(즉, 자음)) 레코드의 CITY를 출력하라.SELECT DISTINCT CITY
FROM STATION
WHERE RIGHT(CITY, 1) NOT IN ('a', 'e', 'i', 'o', 'u');
Query the list of CITY names from STATION that either do not start with vowels or do not end with vowels. Your result cannot contain duplicates.
STATION 테이블에서 CITY 필드값 중 모음으로 시작하거나 끝나지 않는(첫 글자 자음 OR 끝 글자 자음) 레코드의 CITY를 출력하라.SELECT DISTINCT CITY
FROM STATION
WHERE LEFT(CITY, 1) NOT IN ('a', 'e', 'i', 'o', 'u')
OR RIGHT(CITY, 1) NOT IN ('a', 'e', 'i', 'o', 'u');
Query the list of CITY names from STATION that do not start with vowels and do not end with vowels. Your result cannot contain duplicates.
STATION 테이블에서 CITY 필드값 중 모음으로 시작하고 끝나지 않는(첫 글자 자음 AND 끝 글자 자음) 레코드의 CITY를 출력하라.SELECT DISTINCT CITY
FROM STATION
WHERE LEFT(CITY, 1) NOT IN ('a', 'e', 'i', 'o', 'u')
AND RIGHT(CITY, 1) NOT IN ('a', 'e', 'i', 'o', 'u');

Query the Name of any student in STUDENTS who scored higher than 75 Marks. Order your output by the last three characters of each name. If two or more students both have names ending in the same last three characters (i.e.: Bobby, Robby, etc.), secondary sort them by ascending ID.
STUDENTS 테이블에서 Marks 필드값이 75보다 높은 레코드의 Name 필드값을 출력하라.Bobby, Robby 등) ID를 기준으로 오름차순으로 정렬하라.SELECT NAME
FROM STUDENTS
WHERE MARKS > 75
ORDER BY RIGHT(NAME, 3), ID;

Write a query that prints a list of employee names (i.e.: the name attribute) from the Employee table in alphabetical order.
Employee 테이블에서 NAME 속성을 알파벳 순서로 출력하라.SELECT NAME
FROM EMPLOYEE
ORDER BY NAME;
Write a query that prints a list of employee names (i.e.: the name attribute) for employees in Employee having a salary greater than $2000 per month who have been employees for less than 10 months. Sort your result by ascending employee_id.
Employee 테이블에서 months 필드값이 10 보다 작으며 salary 필드값이 2000 보다 큰 레코드의 name 필드를 출력하라.employee_id를 기준으로 결과를 정렬하라.SELECT NAME
FROM EMPLOYEE
WHERE MONTHS < 10
AND SALARY > 2000
ORDER BY EMPLOYEE_ID;
http://tcpschool.com/mysql/mysql_basic_syntax
https://www.w3schools.com/sql/func_mysql_count.asp
https://www.w3schools.com/sql/func_mysql_right.asp
https://www.w3schools.com/mysql/mysql_limit.asp
https://www.w3schools.com/sql/func_sqlserver_round.asp