UMC
SQL 개념 정리
eunkyung
2023. 6. 14. 21:02
- SELECT데이터 정의어(DDL) ⇒ CREATE, DROP, TRUNCATE
select 속성명 from 테이블명; //가장 기본 형태. 해당 테이블의 속성들이 출력됨. ex) select * from 학생 where 학번 <= 20 order by 학번 DESC;
- where과 함께 사용하면 해당 조건에 해당하는 행만 출력 가능. where 조건식 형태로 from 뒤에 위치.
- Group by를 사용해 특정 그룹으로 묶어 질의할 수 있다.
- order by는 정렬을 해주는 역할로 기본은 ASC(오름차순)이다. 내림 차순으로 출력 원할 때는 order by 기준속성 DESC 로 사용하면 된다.
- SELECT → 데이터 질의, 검색을 위해 사용!
- 데이터 조작어(DML) ⇒ SELECT, INSERT, UPDATE, DELETE
- INSERT
Insert into 테이블명(속성명1, 속성명2 , ...) values(속성값1, 속성값2,..1); 모든 속성의 값을 명시적으로 삽입할 경우에는 속성명 목록을 생략해도 됨 ex) insert into 학생 values('배은경', '20200974', '동덕여대');
- INSERT → DB에 데이터 삽입 시 사용
- UPDATE
update 테이블명 set 필드명= 수정할 값, 필드명2 = 수정값2 where 조건;
- UPDATE → 원하는 조건에 따라 필드 값을 수정하기 위해 사용
- DELETE
delete 명령어를 사용해 조건에 해당하는 데이터를 삭제할 수 있다.delete from 테이블명where 조건;
- TRUNCATE : 이 명령어는 테이블의 스키마만 제외한 테이블 내의 데이터 전체를 삭제해주는 명령어이다. 즉 delete from 테이블명과 같은 결과이다.
- where 조건이 없다면? → 테이블의 모든 데이터가 삭제된다.
- DELETE → 데이터를 삭제하는데 사용
- WHERE데이터 조작시 조건에 맞는 데이터만 조작 가능하게 해준다.연산자를 사용해 여러 조건을 사용 가능하다.
- 조건을 사용할때는 대부분 where절이 사용되니 잘 알아둬야 한다!
- Where 학번 BETWEEN 202097 ex)select 학과명 from 학교 where 학생수 >= 70;
- https://yozm.wishket.com/magazine/detail/1747/
- JOIN*그렇다면 3개의 테이블을 조인하고 싶다면?→ 한번에 가능할까? 아니다. 조인은 무조건 2개씩만 가능!! N개의 테이블을 조인하기 위해서는 N-1번 조인해야 함!
- Inner Join가장 많이 사용되는 조인으로 그냥 조인이라고 쓰기도 한다.
SELECT 속성명 FROM 테이블1 INNER JOIN 테이블2 ON <조인 조건> [WHERE 검색 조건]
- 두 테이블 조인 시 두 테이블에 모두 지정한 열의 데이터가 있어야 결과에 나온다. 즉 쉽게 설명하면 조인 조건에 해당하는 행들만 조인되어서 출력된다. 조건에 해당하지 않으면 아예 행이 출력되지 않는게 내부 조인!
- Left Join종류: left, right, full outer join
- SELECT 속성명 FROM 테이블1 <LEFT | RIGHT | FULL> OUTER JOIN 테이블2 ON <조인 조건> [WHERE 검색 조건]
- Outer Join은 한쪽에만 데이터가 있어도 출력이 된다.
- Right Join
- right는 left Join의 반대로 테이블2의 모든 행이 출력됨
- Full OUTER Join 등 더 찾아보기
- right 조인과left 조인 결과물을 합친 형태로 양쪽 데이터가 있어 조인된 행들 + 테이블 1 나머지 행들 + 테이블2 나머지 행들이 출력된다.
- Inner Join가장 많이 사용되는 조인으로 그냥 조인이라고 쓰기도 한다.
- 테이블2에 데이터가 없는 경우에는? 그냥 NULL값이 출력된다.
- *조인은 두 개의 테이블을 묶어 하나의 결과를 만들어 내는 것으로 Inner, Outer, self, cross Join이 있다. 두 테이블이 합쳐져 한 테이블처럼 결과가 출력된다.
- GROUP BY
-조건절 HAVING과 함께 많이 사용된다.SELECT job , SUM(sal) FROM emp WHERE deptno IN (20, 30) GROUP BY job; //이 sql문은 emp 테이블에서 deptno가 20,30인 데이터에서 job이 같은것끼리 그룹으로 묶어 job, sal의 합을 출력하는 것이다.
SELECT job , SUM(sal) FROM emp WHERE deptno IN (20, 30) GROUP BY job HAVING SUM(sal) > 5000 //sal의 합이 5000이상인 job만 출력된다.
- 해당 조건에 해당하는 데이터만 출력된다.
- group by는 그룹별 집계를 위해 사용하는 것으로 집계함수와 함께 많이 사용된다. 집계함수는 count, sum, avg, min, max등을 말한다.
- ORDER BY
- order by 정렬시 기준으로 할 속성;
- order by는 데이터의 정렬을 해주는 역할로 기본은 ASC(오름차순)이다.
- 서브쿼리서브쿼리는 괄호로 감싸 사용되고 서브쿼리를 사용 가능한 곳은 select절, from절, where, having, order by, insert문의 values절, update 문의 set절에 올 수 있다.
- 단일행 서브쿼리 서브쿼리의 결과가 1건이하인 쿼리를 말한다. 결과가 2건 이상일 때는 오류가 발생하기에 주의해야 한다. 단일행 비교 연산자인 =, >, <, ≥ 등과 함께 사용한다.
SELECT 이름 FROM 학생 WHERE 이름 = (SELECT 이름 FROM 전학생 WHERE 학년 = '3') ORDER BY 나이;
- 다중행 서브쿼리 서브쿼리의 결과가 2건 이상 반환할 때는 다중행 비교 연산자를 사용하는 다중행 서브쿼리를 사용한다. 다중행 연산자는 IN, ALL, ANY, EXISTS가 있다.
- IN(서브쿼리 결과의 임의 값과 동일조건), ALL(서브쿼리 결과의 모든 값을 만족하는 조건), ANY(결과값의 어느 하나라도 만족하는 조건), EXISTS(서브쿼리의 결과를 만족하는 값의 존재 여부 확인 조건)
- 다중칼럼 서브쿼리
- 연관 서브쿼리
- 단일행, 복수행 연산자와 함께 사용 가능하다. 서브쿼리에 order by는 사용할 수 없다.
- 하나의 sql문에 포함되어 있는 또다른 SQL문을 말한다.