**제 풀이는 개인적으로 푼 것이라 가장 알맞는 정답이 아닐 수 있습니다.
틀린 부분이 있다면 댓글로 살포시 알려주세요~**
1.1 데이터베이스 생성
데이터베이스 이름 : nation
- 데이터베이스
- 새 데이터베이스
- 이름 설정에서 nation
로그인 이름 : nation
암호 : hit
기본 데이터베이스 : nation
nation 데이터베이스 역할 : db_owner
- 보안
- 새 로그인
- 로그인 이름(nation) 설정
- SQL server 인증 선택 후 암호(hit) 설정
- 왼쪽의 사용자 매핑 클릭
- 해당 데이터베이스(nation)이름 체크박스
- 아래쪽 db_owner 체크
책에 앞 부분에 나와 있는 과정이지만 한 번 정리해보았습니다.
1.2 테이블 생성
테이블 이름 | 열 이름 | 데이터 형식 | 제약조건 | 기본키 | 외래키 | FK테이블 | FK열 |
국가 | 이름 | VARCHAR(60) | NOT NULL | PK | |||
영문이름 | VARCHAR(60) | ||||||
지역 | VARCHAR(60) | ||||||
인구 | DECIMAL(11) | ||||||
gdp | DECIMAL(14) |
CREATE TABLE 국가
(이름 VARCHAR(60) NOT NULL PRIMARY KEY
,영문이름 VARCHAR(60)
,지역 VARCHAR(60)
,인구 DECIMAL(11)
,gdp DECIMAL(14));
1.3 데이터 입력
데이터 입력 부분은 너무 길고 똑같은 패턴의 반복이라서 생략하겠습니다.
예시를 그대로 반복하시면 됩니다.
1.4 데이터 검색
① 지역 이름을 딱 한번만 출력하라.
SELECT DISTINCT 지역
FROM 국가;
② 인구가 2억명 이상인 국가의 이름을 검색하라. 여기서 2억명은 숫자 0이 8개인 200000000이다.
SELECT 이름
FROM 국가
WHERE 인구 >= 200000000;
③인구가 2억 이상인 국가의 이름과 1인당 GDP를 검색하라.
SELECT 이름, gdp/인구 AS '1인당 GDP'
FROM 국가
WHERE 인구 >= 200000000;
④ '중동' 지역에 위치하고 있는 국가의 이름과 백만명당 인구를 검색하되, 결과값이 정수가 아니면 반올림하라. 여기서 백만명은 숫자 0이 6개인 1000000이다.
SELECT 이름, ROUND(인구/1000000, 0) AS '백만명당 인구'
FROM 국가
WHERE 지역 = '중동';
⑤ '프랑스', '독일', '이탈리아'의 국가 이름과 인구를 검색하라.
SELECT 이름, 인구
FROM 국가
WHERE 이름 = '프랑스'
OR 이름 = '독일'
OR 이름 = '이탈리아';
⑥ 'United'라는 영문이 포함된 국가의 한글명과 영문명을 검색하라.
(영문이름을 영문으로 저장하여 그 부분이 조금 다릅니다.)
SELECT 이름, 영문
FROM 국가
WHERE 영문 LIKE 'United%';
⑦ 테이블에 저장된 국가들의 인구 합계를 검색하라.
SELECT SUM(인구) AS '총인구'
FROM 국가;
⑧ 각 지역에 속한 국가수를 지역과 함께 검색하라.
SELECT 지역, COUNT(지역) AS '국가수'
FROM 국가
GROUP BY 지역;
⑨ 천만명 이상 인구를 가진 지역별 국가수를 검색하라. 여기서 천만명은 숫자 0이 7개인 10000000이다.
SELECT 지역, COUNT(지역) AS '국가수'
FROM 국가
WHERE 인구 >= 10000000
GROUP BY 지역;
⑩ 전체 인구가 1억 이상인 지역을 검색하라. 여기서 1억명은 숫자 0이 8개인 100000000이다.
SELECT DISTINCT 지역
FROM 국가
WHERE 인구 >= 100000000;
⑪ 인구가 '러시아'보다 많은 국가의 이름을 검색하라.
SELECT DISTINCT 이름
FROM 국가
WHERE 인구 > (SELECT 인구
FROM 국가
WHERE 이름 = '러시아');
⑫ '그리스'와 '러시아'가 속한 지역에 속하는 국가의 모든 열을 검색하라.
SELECT *
FROM 국가
WHERE 지역 = (SELECT 지역
FROM 국가
WHERE 이름 = '러시아')
OR 지역 = (SELECT 지역
FROM 국가
WHERE 이름 = '그리스');
⑬ 1인당 GDP가 'United Kingdom'보다 많은 유럽 국가의 이름을 검색하라.
SELECT 이름
FROM 국가
WHERE 지역 = '유럽'
AND gdp/인구 > (SELECT gdp/인구
FROM 국가
WHERE 영문 = 'United Kingdom');
⑭ 인구가 사우디아라비아보다는 많고 캐나다보다는 적은 국가의 이름을 검색하라.
SELECT 이름
FROM 국가
WHERE 인구 > (SELECT 인구
FROM 국가
WHERE 이름 = '사우디아라비아')
AND 인구 < (SELECT 인구
FROM 국가
WHERE 이름 = '캐나다');
'데이터베이스' 카테고리의 다른 글
[MySQL] 날짜와 시간의 다양한 형식 (0) | 2022.05.15 |
---|---|
[기초가 든든한 데이터베이스] 실습문제풀이 03 (CHAPTER 09, 영화정보 데이터베이스 구축 및 활용) (0) | 2020.07.23 |
[기초가 든든한 데이터베이스] 실습문제풀이 02 (CHAPTER 09, 음악 데이터베이스 구축 및 활용) (0) | 2020.07.21 |