전체 글 245

SQLD 문제 푸는데 필요한 지식 ++++++

SELECT구에는 GROUP BY절에 있는 칼럼이 나와야 한다. 구분 설명 뷰개념 VIEW 테이블은 실제로 데이터를 가지고 있는 반면, 뷰는 실제 데이터를 가지고 있지 않다. 질의에서 뷰가 사용되면 뷰 정의를 참조해서 DBMS 내부적으로 질의를 재작성하여 질의를 수행 뷰는 실제 데이터를 가지고 있지 않지만 테이블이 수행하는 역할을 수행하기 때문에 가상 테이블이라고도 한다. 독립성 테이블 구조가 변경되어도 뷰를 사용하는 응용 프로그램은 변경하지 않아도 된다. 편리성 복잡한 질의를 뷰로 생성함으로써 관련 질의를 단순하게 작성할 수 있다. 보안성 숨기고 싶은 정보가 존재하는 경우, 뷰를 생성할 때 해당 컬럼을 빼고 생성하여 정보를 숨길 수 있다.

카테고리 없음 2023.09.01

SQLD 문제 푸는데 필요한 지식 +++++

연결 연산자: || 중복 제거: DISTINCT 데이터 정렬: ORDER BY(ASC, DESC) asc: 오름차순 desc: 내림차순 특정 철자 추출: SUBSTR 길이 출력: LENGTH 특정 철자 위치 출력: INSTR 다른 철자로 변경: REPLACE 반올림해서 출력: ROUND 버림해서 출력: TRUNC 나눈 나머지값 출력: MOD NULL 값대신 다른 데이터 출력: NVL, NVL2 IF 문 구현: DECODE (= 비교만 가능) : CASE (=,>, 1등,1등, 3등, 4등 : DENSE_RANK -> 1등,1등, 2등,3등 전행 출력하기: LAG 다음행 출력하기: LEAD COLIMN을 ROW로 출력하기: (SUM+DECODE) : PIVOT ROW를 COLIMN으로 출력하기: UNPIV..

SQL 2023.08.31

📌 301과 302 상태 코드의 의미와 차이는?

301과 302는 HTTP 응답 상태 코드 중 리다이렉션(redirect)을 나타내는 코드 301 Moved Permanently: 이 상태 코드는 리소스가 영구적으로 새로운 위치로 이동되었음을 나타냄. 검색 엔진 및 브라우저는 이 리소스를 새 위치로 기억하고, 이후에 해당 리소스에 대한 요청을 바로 새 위치로 보냄 301 리다이렉션은 주로 웹페이지나 리소스의 URL을 변경하거나 삭제하고 싶을 때 사용 302 Found (또는 302 Moved Temporarily): 이 상태 코드는 리소스가 임시적으로 다른 위치로 이동했음을 나타냄. 요청을 보낸 클라이언트는 임시적으로 새 위치로 이동하되, 검색 엔진과 브라우저는 이 리소스를 캐시하지 않고, 이후에도 원래 위치로 요청을 보낼 수 있다. 302 리다이렉션..

SQLD 문제 푸는데 필요한 지식 ++

USING 절은 지정한 열로 테이블을 등가 조인한다 지정한 열은 조인할 테이블에 동일한 이름으로 존재해야함 create table T1(c1 number, c2 varchar(10)); create table T2(c1 number, c3 varchar(10)); select A.c1,B.c3 from T1 A join T2 B using (c1)' -> 오류 why? using절 사용 시 using절에 지정한 칼럼을 기준으로 두 테이블을 등가 조인 단 usingㅈ절에 지정한 칼럼을 alias등으로 한정 불가 위 쿼리는 using절에 지정한 c1칼럼을 select절에서 한정하여 기술했기에 오류..! => select c1,B.c3 from T1 A join T2 B using (c1)'

SQL 2023.08.28

SQLD 문제 푸는데 필요한 지식 +

NULL의 사칙 연산 규칙 NULL + 숫자: NULL과 숫자를 더하면 결과는 항상 NULL. 어떠한 숫자와도 더해지지 않고 그냥 NULL을 유지 NULL - 숫자: NULL에서 숫자를 빼도 결과는 NULL. NULL에서 무엇이든 빼도 결과가 정의되지 않기 때문 NULL * 숫자: NULL과 숫자를 곱하면 결과는 항상 NULL. 어떠한 숫자와도 곱해지지 않고 그냥 NULL을 유지 NULL / 숫자: NULL을 숫자로 나누면 결과는 항상 NULL. 어떤 숫자로도 나눌 수 없기 때문 decode FLOOR : 입력된 인자 값보다 작거나 같은 정수 값을 반환 CEIL: 입력된 인자 값보다 크거나 같은 정수 값을 반환 TRUNC: 첫번째 인자값을 소수점 N번째 자리(두번째 인자값)로 버림하여 반환 ROUND: ..

SQL 2023.08.25

📌 throw와 throws의 차이가 있는걸까?

throw: "throw"는 프로그램 내에서 직접 예외를 발생시킬 때 사용되는 키워드 예외 상황이 발생한 경우, 직접 예외 객체를 생성하고 "throw" 키워드와 함께 해당 예외 객체를 던질 수 있다 이렇게 던진 예외는 해당 메소드 내에서 처리되어야 하는데, 메소드 내에서 예외를 처리하지 않으면, 호출한 곳으로 예외가 전파되어 호출자가 처리하게 된다 throws: "throws"는 메소드 선언 시 예외가 발생할 수 있는 상황을 나타내는 키워드 메소드 선언 시 "throws" 키워드를 사용하여 해당 메소드에서 처리하지 않는 예외를 명시할 수 있다 이는 해당 메소드를 호출한 곳에서 해당 예외를 처리하도록 하는 역할을 하고, 해당 메소드를 호출할 때 예외가 발생할 수 있음을 알려줌 => "throw"는 예외를..

🧾 JSP도 서블릿으로 변환되서 실행되는데 왜 JSP는 서버 재시작 없이 반영되고, 서블릿은 서버 재시작이 필요한걸까?

JSP 파일은 요청이 들어올 때마다 서블릿 코드로 변환되고 컴파일되는데, 수정사항이 발생하면 해당 JSP 파일이 다시 변환되고 컴파일되어 새로운 서블릿 클래스가 생성된다 따라서 서버 재시작 없이도 수정된 내용 반영 가능 서블릿은 웹 애플리케이션 서버가 시작될 때 미리 컴파일되고 클래스로 로딩되는데 서블릿 클래스가 한 번 로딩되면 서버 재시작이나 재컴파일 없이 내용이 변경되지 않는다. 수정사항이 있을 경우 새로운 버전의 서블릿 클래스를 생성하고 서버를 재시작해야만 변경 내용이 적용 결국 컴파일 시점이 달라서 가능한 일

📌 의존성 주입 방법은 무엇이 있을까 ++ ?

Field Injection (필드 주입): 필드 주입은 클래스의 필드에 직접 의존성을 주입하는 방식 클래스의 필드에 @Autowired 애노테이션을 사용하여 의존성을 주입 간결하고 편리하지만, 테스트 시에 의존성을 모의(mock) 객체로 대체하기 어렵다는 단점이 존재 @Service public class UserService { @Autowired private UserRepository userRepository; // ... } Setter based Injection (Setter 주입): Setter 주입은 클래스의 Setter 메서드를 통해 의존성을 주입하는 방식 클래스의 필드는 private으로 선언되어 있고, 각 필드에 대응하는 Setter 메서드에 @Autowired 애노테이션을 사용 ..

📌 XSS 공격이 무엇이고, 어떻게 피할 수 있을까!?!?

XSS(크로스 사이트 스크립팅): 웹 보안 취약점 중 하나로, 공격자가 악의적인 스크립트를 웹 페이지에 삽입하여 사용자들의 브라우저에서 실행시키는 공격 형태, 공격자는 사용자의 세션 정보를 탈취하거나 악성 행동을 수행할 수 있다. Stored XSS (영구 저장형 XSS): 악의적인 스크립트가 웹 서버에 저장되어 다른 사용자들이 해당 스크립트를 불러와 실행하게 된다. 댓글, 포럼 게시물, 프로필 설명 등 사용자 생성 콘텐츠에 주로 발생 Reflected XSS (반사형 XSS): 사용자가 악의적인 링크를 클릭하거나 악의적인 데이터를 서버로 보낼 때 발생 서버는 해당 데이터를 동적으로 웹 페이지에 포함시키고, 이로 인해 악성 스크립트가 사용자의 브라우저에서 실행된다 DOM-based XSS: Documen..