-
230201_24일차 : SQLD특강 / HTML,CSS스인개 데이터디자인(12.28-06.23)/기본진도 2023. 2. 1. 12:47
1교시, 2교시, 3교시, 4교시 - SQLD특강(문제풀이 - SQL기본 / 개념 - SQL활용)
1. 문제풀이 - SQL 기본(12-20)
①
해설 )
A는 집계함수가 쓰이나, GROUP BY가 없으므로 회원전체의 수를 나타냄 => 4
B에서 ON DELETE CASCADE처리되므로 등급ID가 2가 삭제되면서, 회원정보의 2의 내용도 함께 삭제(2행)된다.
C의 결과는 =>2
답은 4, 2
해설)
BEGIN TRANSACTION을 시작함으로써 'SQL SERVER'임을 알수있음. COMMIT한 부분까지는 영구반영.
하단의 ROLLBACK을 통해, DELETE와 UPDATE가 없던일이 되버림.
=> 답은 3 (COUNT가 * 아니므로 null을 포함하지않음/고데기,구두,에어팟=3개)
해설)
WHERE절에 하나의 행씩 집어넣어서 확인한다.
1번을 집어넣어서 확인했을때, F AND T => F / F OR F => F가나오게되므로 출력 안됨. 2번 X. 3번 O. 4번 O
=> 답은 2 ( 3,4,번이 COUNT처리되므로)
해설)
각각 +연산해주는데, NULL의 처리를 묻는 문제
1행은 60이고 2,3,4행은 모두 NULL이 되게 된다. NULL은 정상적으로 비교,연산할 수 없다
=> 답은 60 / NULL / NULL / NULL
해설)
CONCAT(가입일자,가입시간) => 둘을 붙여주는 함수
1번은 각 행을 WHERE절에 비교하면, 3개중 첫번째 1번만 출력이 된다 =>1
2번은 연월일로만 바뀌는데 시분초를 지정하지않았으므로 0시0분0초로 처리되며 첫번째는 위와 동일, 두번째는 2024.01.01 0시0분0초로 결과(<)는 23.12.31 23시59분59초까지를 의미하여 위와 동일하다. 그리고 AND 다음에 괄호로 컬럼이 두개가 들어가있는 경우 (+ WHERE (a, b) in ((1,2), (2,3)....) 꼴 => a가 1이면서 b가 2, a가 2이면서 b가 3인 데이터를 뽑아오는 것이다) 결과는 WHERE절을 모두 만족하는 것(AND로 이뤄져있어서)은 1번행 =>1
3번은 첫번째조건인 서비스종료일시를 문자형으로 변환했을때 202312인것은 1번이고, 나머지 조건 모두 1번해당=>1
4번은 기본적으로 0시0분0초로 처리되는데, 아무것도 출력되지 않음 => 0
=> 답은 4번
해설)
WHERE절에서 COL2가 50 - 350인것을 골라내면 100 - 300까지 10개의 행만처리됨.
GROUP BY로 COL2를 기준으로 3, 4, 3으로 묶인다
HAVING 에서는 COUNT(*)이 1보다 큰것으로 각각 3,4,3으로 모두 가능
SELECT에서 MIN(COL)은 각각 최소값으로 1, 4, 8이 출력 / COL은 100,200,300이 출력 / COUNT(COL3)은 각 개수인 3,4,3이 출력
ORDER BY 에서 COL3을 기준 오름차순이므로 3, 3, 4로 순서가 바뀌고, 동일한 3끼리는 COL2를 기준 오름차순이므로, 100, 300, 200 순으로바뀐다.
==> 답은 위의 우측과 같은 결과
해설)
GROUP BY 로 TEAM_ID를 기준한다.
CASE WHEN 함수를 사용(FW이면 1/ELSE가 없으므로 나머지는 NULL) => SUM 함수(null을 무시하고 나머지를 합산하는 특징을 가짐)를 처리하면 GROUP BY된 T001에서는 1의 결과값을 얻는다(1, null, null, null) / 모두 1, 1, 2의 행
NVL에서는 각각 1,1,2가 들어있어서, NVL(1,0) 꼴이 되며 null이 아니면 앞의 값, null인경우에 0이 출력되므로, 결국 그대로 해당숫자들이 출력된다. 1, 1, 2
AS가 빠진상태로 공격수라는 별칭을 넣는다
위는 simple케이스, 아래는 search케이스
=> 답은 아래의 테이블의 형태로 나오게된다
해설)
우선 FROM에서 카티션조인이 일어난 상태로 총 6개의 행/5개의 열이 생성됨(모든경우의수)
WHERE절은 =가 아니므로 '비동등조인조건'이라고 생각하면된다. LIKE를 이용하여 규칙내용의 %수, %현%을 각각 행마다 확인한다. 총 6개의 행중에서 비동등조인조건에 해당하는 3개의 행이 나오게되고
=> 답은 3 (COUNT(*)이므로)
1. 개념 - SQL 활용(21-28:22,20,21,24,25순서)
22) 집합 연산자
- 집합연산자란? 여러 SQL결과를 연결해 하나의 형태로 결합하는 문법
+ MINUS(EXCEPT)는 각각 오라클과 SQL SERVER에서 사용
+ UNION ALL은 교집합의 중복까지도 포함하여 모두 출력하는 개념
+ 우) 컬럼개수와 컬럼유형(숫자형끼리, 문자형끼리) / 두 컬럼이상을 모두 하나의 조합으로 처리
UNION ALL 만 중복포함 - 집합연산자 ORDER BY 주의사항 : 집한연산자를 사용시, ORDER BY는 항상 마지막에 쓰여야한다. 위아래를 합친 결과에 대해 ORDER BY가 실행된다
- 집합연산자 컬럼이름 주의사항 : 위아래 컬럼이름이 다를 경우, 위 컬럼의 이름을 따른다(단, 데이터유형과 컬럼개수는 위아래가 서로 동일해야한다)
- 유사문제
①
해설)
파랑-별칭은 앞의 AAA를 따른다
노랑-우선 SELECT에 AAA는 AS가 생략되어있음. UNION ALL은 중복제거없이 출력한다=> 문현철, 김철수
연두-ORDER BY 1, BBB => 1은 SELECT에서 첫번째인 AAA컬럼을 가리키며, 오름차순 / 이름이똑같은경우! BBB도 오름차순??
②
해설)
처리순서는 위에서부터 2개씩 순차적으로 실행된다. UNION ALL > UNION
COL1,COL2를 조합한다(위의 테이블과 동일하게 COL1 / COL2가 그대로 나옴-각각 중복되는것이 없으므로)
20) 조인(OUTER)
- OUTER JOIN : 특정테이블을 기준으로 조인에 성공한 대상 + 실패한 대상까지 출력해준다(INNER JOIN은 JOIN에 성공한 대상만 출력)
- OUTER JOIN의 + 기호
21) 표준 조인(ANSI)
- 표준조인이란? 어느 DBMS에서도 사용할 수 있는 표준방식의 조인
- 표준조인의 종류
① INNER JOIN(이너조인)
+ ANSI는 FROM절이 복잡해지며, WHERE절은 일반조건만 / INNER는 생략이 가능하다
+ USING ()안에 두 테이블의 공통된 컬럼을 입력해주면 자동으로 = (ON의 뒤와 동일내용) / 공통된 컬럼은 앞에 별칭없이 SELECT에 입력해야한다.
② NATURAL JOIN(자연조인) : 공통된 컬럼은 별칭사용이 안됨 / 공통된 컬럼을 표시하지않아도 자동으로 조인해줌.
(++SQL SERVER는 지원안함)
③ CROSS JOIN(카티션 조인) : 조인하려는 두 테이블간 모든 데이터조합(ON 사용불가)
④ OUTER JOIN(아우터 조인)
+ FULL OUTER JOIN : 양쪽 테이블 모두 OUTER JOIN을 하고자(오라클에는 존재 X)
- 추가설명
SELECT는 행, PROJECT는 열을 찾기위해 - 문제풀이①
보라색 <형태 반대로 문법오류 ㅇ 문법오류 문제풀이②
해설)
LEFT OUTER JOIN을 우선 실행하면, '사용자'테이블을 기준으로 카티션 조인. 기준은 '사용자'. ON에서 AND의 조건을 양쪽 모두 확인(C001이고 지점ID가 동일한경우만. )하여 한줄씩 비교한다. 그리고 결과는 일치하지않으면, 생겨난 4행중 한행만 null처리해서 출력해준다. 간혹 조건이 만족하는 경우 하나의 ID기준으로 여러행이 나오기도함(null처리하여)
LEFT OUTER JOIN을 우선 실행하면, 카티션 조인. 기준은 '사용자'. ON의 조건을 확인하여 한줄씩 비교한다. 그리고 결과는 일치하지않더라도 모두 출력한다(null처리하여)
문제풀이③
해설) 오라클에서 AND ~~에 들어가는 내용은, ANSI에서 ON으로 묶어서 처리하며, AND B>COL2(+)는 조인조건관 관련된 내용이므로 추가해주면서, +기호는 없앤다.
24) 서브쿼리
- 서브쿼리란? 작성된 쿼리 내부에 다른 쿼리를 삽입
- 서브쿼리의 종류
① 스칼라 서브쿼리 : SELECT에서 사용 / 하나의 컬럼(예.부서명)에대해 하나의 행만 반환 / 값이 없다면 NULL을 반환
+ 주의
위와 같은 경우, 스칼라서브쿼리가 출력하는 행의 개수만 6개(모든행)가 되어 오류발생 모든 행이 출력됨 ③ 인라인 뷰 : FROM 에서 사용 / 가상테이블을 동적으로 생성해 사용
+ 추가
그때그때사용/저장해놓고사용 ③ 중첩서브쿼리 : WHERE 부분에서 주로 사용. HAVING, ORDER BY 등에도 활용가능 / 메인쿼리와 관계여부에 따라 상관(연관)서브쿼리, 비상관(비연관)서브쿼리
+ 추가
중복값 처리 위와 같은 경우, 부서ID가 D001이면서 연봉이 7500일때 부터 순차적으로 확인한다. select 뒤에 컬럼을 쓰는 것은 문법적오류를 방지하기위해 단순히 사용. 사실상 값을 확인하여 조건에 해당하면 바로 출력하고 더이상 행의 비교없이 끝낸다 - 문제풀이
해설)
HAVING COUNT : null값이 들어간 것들은 모두 COUNT했을때 0개가되고, N인경우 1개출력이된다. 결론은 N이 하나라도 있는 경우를 그사람을 출력하라는 의미
=> 답은 아래 4번(틀림)
동의여부 N이 하나라도 있으면 출력(위와 동일) 비연관서브쿼리 / 동의여부 N이 하나라도 있으면 출력(위와 동일) 동의여부 N이 하나라도 있으면 출력(위와 동일) : 고객번호가 일치하면서 동일여부가 N인경우만 조인성공으로 출력이 됨. WHERE절 0<1의 결론으로, 모두 출력 해설)
UPDATE를 하겠다는 문제
① 담당자에 부서코드인 D001등이 들어가므로 잘못됨
③ WHERE절은 D001, D002가 IN안에 들어가게 됨(UPDATE는 특정 행만 수정하겠다는 조건을 줘야한다). 상관서브쿼리이므로 값을 하나씩 밖에서부터 집어넣어 순차적으로 처리하여 답.
④ 스칼라서브쿼리와 동일하게 값이 있으면 값, 없으면 NULL이 들어가게된다. 잘못됨.
=> 답은 3번
+ 테스트할 때 사용할 수 있는 쿼리 : 실행할때만 생성되었다가 사라짐
=> WITH 테이블명 AS (SELECT ~~꼴)
5교시, 6교시, 7교시, 8교시 - HTML/CSS(태그)
1. 태그
1) VSCODE Tip
- 한줄복사: 드래그 > Alt + shift + 아래방향키
- 하나의 태그를 여러개 생성하기 : 태그(hr) * 숫자 + Enter / ul>li*3
- 복수영역 지정 : 영역지정(클릭) > Alt + 클릭 => 반복- 경로 문제없는지 확인하는 방법 : ctrl + 경로 클릭(follow link)
- 코드정렬 : 드래그 > ctrl + k + F
2) 제목&본문태그
- <h> 제목 </h> : html문서 본문 내 제목을 표현하는 태그(h1 ~ h6) / header의 약자
- <p>본문</p> : 본문의 내용을 단락으로 표현할 때 사용하는 태그(가로 한줄 영역 전부 차지=>개행이 된 것 처럼 보인다) / Paragraph의 줄임말
- <span>본문</span> : 본문의 내용을 문장으로 표현할 때 사용하는 태그(컨텐츠만큼만 영역 차지 => 자리가 있다면 가로로 쭉 이어져서 배치가 된다) / 특별한 기능이 없다 => 공태그. 그럼에도 불구하고 태그를 사용하는 이유는 특정요소에만 접근하기 위함
- <br/> : 줄바꿈(개행) 태그 / break줄임말 / 내용을 필요로 하지 않기 때문에 끝태그를 생략할 수 있다(홀태그)
- <hr/> : 단락간의 구분을 위해 사용하는 태그 / 수평선(하나의 선)을 그어주는 태그
+ width는 px을 반드시 넣어줘야한다. 고유의 길이단위없음 / noshade는 값이 없고, size를 늘릴수록 음영효과가 보이는데 이러한 효과를 제거 3) 강조태그
- <b>텍스트</b> : 다른 텍스트와 구별할 때 사용하는 태그 / bold의 줄임말. 시각적 의미 강조(단순한 디자인효과. css로 대체)
- <strong>텍스트</strong> : 중요한 문구를 강조하는 태그 / 실질적 의미 강조(청각적으로 웹페이지 이용시, 강조해서 처리됨) / ex. naver사이트의 '개인정보처리방침'
4) 리스트태그
- <ul> : 번호없는 목록을 사용할 때 사용하는 태그 / unordered list(순서가 상관없는 list) / 리스트를 사용할 공간을 선언
+ type = "square" 로 다른형태로 변환
- <ol> : 번호있는 목록을 사용할 때 사용하는 태그 / ordered list(순서가 중요한 list) / 리스트를 사용할 공간을 선언
+ type = "A" , "a", "i" 로 숫자의 형태를 변환
- <li>: 공통적으로 사용되는 태그 / list-item / 리스트 내에 실질적 데이터
5) 이미지태그
- <img> : 웹페이지에 이미지를 보여주는 태그 / 필수속성 : src(source)
+ 절대경로 : 어떤 페이지나 파일이 가진 고유한 경로(외부 웹페이지로 연결할 때 사용) / 주소의 주인이 막아둔경우 사용불가, 외부의 영향을 많이 받으므로 많이 사용하지 않음
+ 상대경로 : 특정 위치를 기준으로 파일을 찾는 경로(내부자료를 연결할 때 사용)
① ./ : 현재를 기준으로 바로 접근(생략가능)
② ../ :상위를 기준으로 접근
③ / : 가장 최상위로 올라가야할 때 - ex) /폴더명/폴더/파일.jpg
+ 확장자(jpg,jpeg,gif,png) 가능
6) 앵커태그
<a href="url">텍스트</a> : 현재문서에서 다른문서로 즉시 접근가능한 하이퍼텍스트를 생성 / 필수속성:href
예) name = "bottom" / 다른 a태그의 href="#bottom" '스인개 데이터디자인(12.28-06.23) > 기본진도' 카테고리의 다른 글
230203_26일차 : SQLD특강 / HTML,CSS (0) 2023.02.03 230202_25일차 : SQLD특강 / HTML,CSS (0) 2023.02.02 230131_23일차 : SQLD특강 / JAVA시험 (0) 2023.01.31 230130_22일차 : SQLD특강 / HTML,CSS (0) 2023.01.30 230125,26,27_19,20,21일차 : 1차 프로젝트(미니) (0) 2023.01.25