2주차 강의 목표
1. 하나의 싱글 쿼리를 만드는데 "GROUP BY" 를 사용하지 않고, WHERE 조건문을 이용해서
OR, AND, NOT and NULL 을 만들어 보기.
2. 'Natural Join" 연산자가 필요한 쿼리, WHERE 조건문과 OR, AND, NOT and NULL을 이용해보기.
3. 2번과 동일하지만 cross product (곱 연산자) 를 사용하기.
솔직히 위에 목표만 봐서는 뭘 어쩌라는 건지 이해가 안간다.. (영어를 못해서 일듯)
강의 내용 중 중요한 내용만 요약해보자.
위의 표는 SHR 테이블이고, 기억해야 할 포인트는 shrcode 이다.
해당 글자 밑에 언더라인이 있는 이유는 해당 셀이 고유 키(Primery Key) 이기 때문이다.
SQL로 아래의 코드를 입력하면
SELECT shrfirm, shrpe FROM shr;
해당 셀이 SELECT 된다는 기본적인 내용.
또한 WHERE을 이용해서 ex) SELECT * FROM shr WHERE shrpe < 12;
를 입력하면 shr 전체 셀에서 shrpe행의 크기가 12 이하인 것만 추출,
WHERE 조건문 이용하는 방법에 대한 내용.
Comparison Operator
* Project and restrict combo
SELECT a, b, c, d
FROM shr
WHERE a >= 10000;
위와 같은 식으로 조건문을 설정하여 a,b,c,d의 행만 가져올 수 있음.
* IN을 활용한 조건문
SELECT * FROM shr WHERE shrcode IN ('FC', 'AR', 'SLG' );
SELECT * FROM shr
WHERE shrcode = 'FC' OR shrcode = 'AR' or shrcode = 'SLG';
위의 코드로 아래의 셀 불러온다.
IN 은 뒤에 나오는 ('a' , 'b') 값을 포함한 값을 선택해서 불러온다.
-> OR로 풀어 쓴것과 같은 작동.
위와 반대로 NOT IN은 해당 값을 포함하지 않음.
WHERE shrcode NOT IN ('a' , 'b') 는 WHERE shrcode <> 'a' AND shrcode <> 'b'와 같다.
그리고 내림차순, 오름차순 설정하는
ORDER BY abcd DESC 이다
SELECT * FROM shr WHERE shrpe >= 12 ORDER BY shrpe DESC, shrfirm;
SELECT * FROM shr WHERE shrpe >= 12 ORDER BY shrpe DESC;
위의 두 코드는 모두 shrpe를 기준으로 내림차순으로 정렬한다, 하지만 두 코드의 차이는
만약 shrpe 의 값이 같을 경우 shrfirm 이라는 조건을 비교하여 차순을 결정한다.
Calculating
SELECT shrfirm, shrprice, shrqty, shrdiv/shrprice*100 AS yield FROM shr;
위와 같은 코드로 직접 계산 후 셀 생성 후 삽입이 가능하다. 위의 코드는 식 그대로
앞의 3개의 행을 부르고 마지막 행에 AS 로 yield 라는 새로운 행을 만들고
shrdiv/shrprice*100 을 한 값을 yield에 넣는 코드이다.
하지만 내장 되어있는 Built-in functions 으로 쉽게 사용할 수 있는데
COUNT(전체 행 개수 세기) , AVG(평균) , SUM(합), MIN, MAX 등으로 사용 가능하다.
ex) SELECT AVG (shrdiv) AS avgdiv FROM shr;
이라는 식으로 shrdiv의 값들을 평균내서 avgdiv에 집어넣어 띄울 수 있다.
그렇다면 SELECT AVG (shrdiv/shrprice*100) AS avgyield 는 무엇을 나타낼까?
-> 말 그대로 괄호 안의 값을 계산 한 후 그 값에 대한 평균을 내서 avgyield에 넣어준다.
LIKE - Pattern matching
SELECT shrfirm FROM shr WHERE shrfirm LIKE 'F%';
위의 코드는 F로 시작하는 단어를 나타낸다.
%F% -> F가 들어간 단어를 다 찾는게 된다.
하지만 만약에 LIKE '____e%" 이런 식으로 쓴다면 언더바의 수 만큼 앞에 글자 있다는 것이다.
현재 언더바가 ____ 4개 이므로 Apple 가 될 수 있다.
그리고 또한 e 뒤에 %가 있기 때문에 Apple mango 도 될 수있다.
DISTINCT
SELECT DISTINCE shrpe FROM shr;
로 예를 들면 해당 항목의 라인을 지워버리는 코드이다.
그렇다면 shr 테이블에 있는 shrpe의 행이 사라지게 된다.
Natural Join
쉽게 left join을 하면 되는데 왜 Natural Join으로 하는지 잘 이해는 가지 않지만
강의에서 알려준대로 써본다.
SELECT * FROM stock, nation
WHERE stock.natcode = nation.natcode;
코드는 위와 같다. stock 시트와 nation 시트에서 natcode 부분이 고유 값으로 서로 일치하기 때문에
두개의 키를 붙혀서 하나의 표로 나타낸다.
Left Join의 기능과 아주 흡사해 보인다.
ERD for Academic Enrollment Database
다음은 데이터 베이스의 꽃 ERD 이다.
일단 ERD를 읽는 방법을 알아보자.
의외로 아주 간단하다. ARdefree 시트에서 degreeCode 에 언더라인을 확인하고
해당 attribute 가 고유키인 PK 임을 알 수 있고
아래의 막대 두개는 적어도 ARdegree 가 ARstudent의 값을 하나 이상 포함 하고 있다는 뜻이다.
또한 ARstudent에 삼각형 표시는 ARstudent가 ARdegree의 key를 하나 이상 가지고 있다는 뜻이다.
그래서 ARstudent의 drgreeCode*를 보면 *라는 기호를 가지고 있는데 해당 표시가 외래키로 쓰인다는 뜻이다.
결론적으로, ARdegree의 PK는 degreeCode, ARstudent의 PK는 studentNO , FK는 degreeCode가 된다.
위의 그래프로 더 자세히 알 수 있다. 위에서 나오는 O 표시는 B가 A에서 고유 키를 공유해서
사용하고 있지만 실제로는 쓰지 않고 있음을 나타낸다.
-> 예를 들면 사원 시트는 부서 시트에서 기본 키 값을
사용하고 있지만 사원 시트에서 이를 사용하지 않는 것을
확인 할 수 있다.
ex) 하나의 부서는 여러명의 사원을 포함할 수 있음.
다음 수업에서 좀 더 자세하게 ERD를 다루는 듯..
'UTS study' 카테고리의 다른 글
DATABASE # (0) | 2024.03.10 |
---|---|
DATABASE #3강 _ Entities and Relationships (0) | 2024.03.04 |
DATABASE 수업 #0 _ PSQL 커맨드 모음 (0) | 2024.03.03 |
DATABASE 수업 # 1강_ 기초 PSQL 문법 정리 (0) | 2024.03.03 |