본문 바로가기
카테고리 없음

SQL

by 하겐모아 2024. 4. 22.

DDL (Data Definition Language, 데이터 정의어)

 

CREATE

CREATE TABEL 테이블명 (
    이름 CHAR(5) NOT NULL,     //NULL 값을 갖지 않는다.
    번호 CHAR(5) UNIQUE,       // 각 행의 해당 컬럼 값이 유일해야 한다.
    학번 CHAR(5) PRIMARY KEY,  //기본키로 사용
    FOREIGN KEY (전공) REFERENCES 학과(코드)    // 전공 속성은 학과TB의 코드 속성을 참조하는 외래키
        ON DELETE SET [NO ACTION | NULL | DEFAULT] //튜플이 삭제되면 [값이 안바뀜 | NULL | 기본값] 로 변경
        ON UPDATE CASCADE, // 업데이트되면 같은 값으로 변경
    CONSTRAINTS 생년월일제약 CHECK (생년월일 >= '1999-01-01') //생년월일 속성에 1999 값만 저장할수 있으며, 이 제약 조건의 이름은 '생년월일제약'이다.
)

 

 

ALTER TABEL

ALTER TABLE 테이블명 ADD 속성명 CHAR(20)   //속성 추가
ALTER TABLE 테이블명 ALTER 속성명 CHAR(20) //특정 속성의 DEFAULT 값을 변경
ALTER TABLE 테이블명 MODIFY 속성명 CHAR(20)//속성 변경
ALTER TABLE 테이블명 DROP COLUMN 속성명 CHAR(20)  //속성 삭제

DROP

DROP TABLE 테이블명 [CASCADE | RESTRICT]
DROP VIEW 뷰명 [CASCADE | RESTRICT]
  • CASCADE : 제거할 요소를 참조하는 다른 모든 개체를 함께 제거
  • RESTRICT : 다른 개체가 제거할 요소를 참조중일 때는 제거를 취소함

 

TRUNCATE

TRUNCATE TABLE 회원 //회원 테이블 내용 삭제

 

  • TRUNCATE : 테이블의 모든 데이터를 삭제하는 명령어로, 구조는 남기고 데이터만 비운다.

 

DELETE 데이터 삭제 / 되돌릴 수 있다.
DROP 테이블 전체 삭제
TRUNCATE 모든 데이터 삭제 / 컬럼 남겨져 있다.

 

DCL (Data Control Language, 데이터 제어어)

 

GRANT ~ ON ~ TO ~

GRANT [권한] ON [객체명(테이블)] TO [사용자] WITH GRANT OPTION
  • WITH GRANT OPTION : 부여받은 권한을 다른 사용자에게 다시 부여할 수 있는 권한을 부여함

 

REVOKE ~ ON ~ FROM ~

REVOKE [GRANT OPTION FOR] [권한] ON [객체명(테이블)] TO [사용자] CASCADE
  • GRANT OPTION FOR : 다른 사용자에게 권한을 부여할 수 있는 권한을 취소함
  • CASCADE : 다른 사용자에게 부여한 권한도 연쇄적으로 취소

 

 

 

 

DML (Data Manipulation Language, 데이터 조작어)

 

삽입문 (INSERT INTO ~)

INSERT INTO 테이블명(속성1 , 속성2) VALUES (데이터1, 데이터2)

 

삭제문 (DELETE FROM ~)

DELETE FROM 테이블명 WHERE 조건

 

갱신문 (UPDATE ~ SET ~)

UPDATE 테이블명
SET 속성명1 = 데이터1, 속성명2 = 데이터2  //(변경 내용 작성)
WHERE 조건

 

 

검색 (SELECT)

SELECT [DISTINCT] 속성 [AS 별칭],
FROM 테이블명
WHERE 조건
GROUP BY 속성
HAVING 조건
ORDER BY 속성 DESC

 

  • DISTINCT : 중복된 튜플 제거
  • count(*) 함수에서 NULL값은 제외하고 카운트

 

 

LIKE 연산자

% _ #
모든 문자를 대표 문자 하나를 대표 숫자 하나를 대표

 

 

검색 (SELECT) - NULL

SELECT [DISTINCT] 속성 [AS 별칭],
FROM 테이블명
WHERE 조건 IS NULL	//NULL인 튜플 검색 
WHERE 조건 IS NOT NULL	//NULL이 아닌 튜플 검색

 

  • IS NULL          //NULL인 튜플 검색
  • IS NOT NULL //NULL이 아닌 튜플 검색

 

하위 질의

SELECT 속성
FROM 테이블명
WHERE 이름  = (SELECT 이름 FROM ~~~)

WHERE 이름  NOT IN (SELECT 이름 FROM) // 포함되지 않는 데이터
WHERE 이름  IN (SELECT 이름 FROM ~~~) // 포함되는 데이터
WHERE 이름  ALL (SELECT 이름 FROM ~~~) //

 

  • 하위 질의 영역이 먼저 실행
NOT IN 서브쿼리의 결과값을  포함하지 않으면 출력
IN 서브쿼리의 결과값을  포함하고 있으면 출력
ALL 서브퀴리 결과값이 여러 개 나온 경우, 서브퀴리의 결과값을 모두 만족하는 값을 출력
EXISTS 서브퀴리 결과값의 행 존재 여부를 확인하여 출력
ANY(SOME) 서브퀴리 결과값이 여러 개 나온 경우, 서브퀴리의 결과값을 하나라도 만족하면 값을 출력

 

 

검색 (SELECT) - 윈도우 함수

SELECT 속성,
ROW_NUMBER() OVER(PARTITION BY 이름 ORDER BY 학번 DESC) AS 번호 //'이름' 별로 '학번'에 대한 '일련번호'를 구하기 (학번은 내림차순)
RANK() OVER(ORDER BY 학번 DESC) AS 번호 //순위를 반환하고, 공동 순위를 반영
DENSE_RANK() OVER(ORDER BY 학번 DESC) AS 번호 //순위를 반환하고, 공동 순위를 무시하고 순위 반영

FROM 테이블명
  • ROW_NUMBER() : 각 레코드에 대한 일련번호를 반환
  • RANK() : 순위를 반환하고, 공동 순위를 반영
  • DENSE_RANK() 순위를 반환하고, 공동 순위를 무시하고 순위 반영
  • PARTITION BY 절 : 해당 구에 지정된 컬럼으로 데이터를 자른다. (EX. '이름' 별로)
  • ORDER BY 절

 

검색 (SELECT) - GROUP BY

SELECT 속성
FROM 테이블명
GROUP BY ROLLUP(부서, 상여내역)
GROUP BY CUBE(부서, 상여내역)
  • ROLLUP() : 그룹별 소계 / 소계가 하위에
  • CUBE() : 그룹별 소계 / 소계가 먼저

 

검색 (SELECT) - 통합 질의

SELECT 속성
FROM 테이블명

UNION | UNION ALL | INTERSECT | EXCEPT

SELECT 속성
FROM 테이블명
  • UNION : 중복된 행은 한 번만
  • UNION ALL : 중복된 행도 그대로
  • INTERSECT : 교집한 / 공통된 행만 출력
  • EXCEPT (MINUS) : 차집합 / 첫 번째 SELECT에서 두 번째 SELECT 결과값 제외한 행 출력

 

검색 (SELECT) - INNER JOIN

SELECT 속성
FROM A INNER JOIN B
ON A.학번 = B.학번
  • 두 테이블에 공통으로 존재하는 데이터만 추출

 

검색 (SELECT) - FULL OUTER JOIN (전체 외부 조인)

SELECT 속성
FROM A FULL OUTER JOIN B
ON A.학번 = B.학번
  • 좌측 및 우측 테이블의 데이터를 모두 포함하고, 중복된 데이터는 하나로 표시

 

검색 (SELECT) - LEFT OUTER JOIN (왼쪽 외부 조인)

SELECT 속성
FROM A LEFT OUTER JOIN B
ON A.학번 = B.학번
  • 좌측 테이블을 기준으로 조인하고, 우측 테이블에 일치하는 데이터가 없으면 NULL로 표시

 

검색 (SELECT) - RIGHT OUTER JOIN (오른쪽 외부 조인)

SELECT 속성
FROM A RIGHT OUTER JOIN B
ON A.학번 = B.학번
  • 좌측 테이블을 기준으로 조인하고, 우측 테이블에 일치하는 데이터가 없으면 NULL로 표시

 

검색 (SELECT) - CROSS JOIN (교차 조인)

SELECT 속성
FROM A CROSS JOIN B
ON A.학번 = B.학번
  • 모든 조합을 반환