[DB(2)]SQL 소개

이유정·2024년 6월 26일
0

데이터베이스

목록 보기
21/25

SQL-Join 연산


3-Way join은 FROM절에 테이블에 3개 나오는 절임.

  • WHERE 조건 3개을 만족하는 세 테이블의 튜플 들을 찾아서 SELECT 단위에 나오는 필드를 보여달라.

  • PLOCATION="Stafford" : join 조건이 아니라 selection 조건임.
  • 프로젝트의 관리 부서를 찾고 => 그 관리 부서의 매니저를 찾는 조건임.

SQL - 모호한 속성이름과 별명


집합으로서의 테이블


테이블을 튜플의 집합으로 간주.

Bag of tuples

중복된 튜플들.

  • 튜플들의 집합이 아니라, 튜플들의 Bag이다.
  • 튜플들의 멀티 Set이다.

동일한 salary 값을 하나로 표시하고, 나머지는 다 제거하기 위해서는 DISTINCT 키워드를 붙여야 한다. => Set of tuples

  • DISTINCT를 사용함으로써 Set 집합이 된다.

또 다른 집합의 개념으로서 집합 연산이 가능합니다.

  • SELECT 질문 두개가 UNION으로 연결됨.
  • 위의 질문의 결과도 PNUMBER, 아래 질문의 결과도 PNUMBER이므로, 두개를 UNION 했을 때 의미가 있음.
  • UNION 호환성 (= UNION compatibility)
  • UNION(합집합), EXCEPT(차집합), INTERSECT(교집합) 연산 가능

  • Union ALL 은 아까 본 multiple set 이다.

부분 문자열 비교, 산술 연산자, 정렬

  • 반드시 문자열 필드에서 적용이 가능함.
  • LIKE 연산자는 비슷한걸 찾는다의 의미.
  • *: 0~more 0개 이상의 문자가 덧붙을 수 있다.

Date 함수를 이용한 질의

  • 연도 파트만 뽑아내라.

SQL - Order By


: 질문의 결과가 어떤 튜플을 기준으로 정렬되게 해서 나오게 하고 싶을 때 사용

SQL에서 삽입, 삭제, 갱신 구문

INSERT 명령

  • 필드이름이 아닌, 테이블 이름만을 명시하면
    : 모든 필드의 값을 다 제공해야한다.
  • 만약, 필드 이름을 주면, 해당하는 필드에 대한 값만 주면됨.

  • CREATE TABLE 명령어로 DEPTS_INFO라는 테이블을 만들고,
  • 그 테이블의 다른 테이블로부터 질문을 한다음에,
  • 질문한 결과를 질의의 결과를, 저장한다. 여기서는 (DEPT_NAME, NO_OF_EMPS, TOTAL_SAL)
  • SELECT 결과 포맷하고, INSERT할 TABLE의 포맷이 똑같아야 호환성이 있음. (DEPT_NAME, NO_OF_EMPS, TOTAL_SAL)


다른 테이블에서 데이터를 가져와서 DEPTS_INFO에 넣은 경우에

  • 원본(Employee)이 바뀌면, DEPTS_INFO은 원본 데이터와 일치하지 않다.
  • 원본 데이터 변경을 반영하고 싶으면, DEPTS_INFO를 view로 정의한다.

DELETE 명령

  • DELETE 어떤 명령의 조건을 만족하는 레코드를 DELETE해라.
  • (1)는, 한 레코드 DELETE
  • 만약, 키 이외에 다른 조건을 주면 여러개의 조건을 만족하는 코드를 만족하는 레코드들이 DELETE됨.

UPDATE 명령

  • WHERE : 어떤 조건을 만족하는 튜플을 찾아서
  • SET: 그 튜플의 값을 바꿔라 ~


SELECT: Research 부서의 DNUMBER를 찾고,
WHERE: Research 부서의 DNUMBER에 해당하는 WHERE 조건을 만족하는 값을 찾아서
SET: Employee 월급을 올려라 ~

SQL 질의에 대한 논의와 요약

profile
강의 기록 블로그

0개의 댓글