반응형
SELECT 문
테이블에서 특정 튜플들을 검색할 때 사용하는 질의어 입니다..
[기본 형태]
SELECT <attribute list>
FROM <table list>
WHERE <condition>;
FROM -> WHERE -> SELECT 순서로 작동합니다.
대상 테이블을 찾고 특정 조건에 맞는 튜플들을 찾은 후 원하는 애트리뷰트를 추출합니다.
- WHERE 절을 생략하는 경우에는 FROM 절의 테이블들을 cartesian product한 결과를 보여줍니다.
- 테이블의 모든 애트리뷰트들을 검색하고 싶다면 * 을 사용하면 됩니다.
- SQL 에서 table은 꼭 집합이 필요가 없습니다. 중복을 허용합니다.
- 중복 제거를 위해 정렬이 필요한데 정렬 연산을 굉장히 비싼 연산이기 때문입니다.
- 유저가 중복을 원하는 경우도 있습니다.
- 집단 함수에소 중복을 제거해 버리면 결과가 달라져 버립니다.
- 따라서 유저가 중복을 선택할 수 있도록 ALL, DISTINCT 키워드를 제공합니다.
집합 연산
- UNION: 합집합 연산자
- EXCEPT: 차집합 연산자
- INTERSECT: 교집합 연산자
UNION -> {a, b} ∪ {b, c} = {a, b, c}
UNION ALL, EXCEPT ALL, INTERSECT ALL
UNION ALL -> {a, b} ∪ {b, c} = {a, b, b, c}
ex) Lname이 'Wong'인 직원이 직원으로 또는 부서의 매니저로 참여한 프로젝트의 번호를 검색하라
(SELECT DISTINCT Pno
FROM WORKS_ON, EMPLOYEE
WHERE Essn=Ssn AND Lnam='Wong')
UNION
(SELECT DISTINCT Pnumber
FROM PROJECT, DEPARTMENT, EMPLOYEE
WHERE Dnum=Dnumber AND Mgr_ssn=Ssn AND Lnam='Wong');
패턴 매칭 (LIKE)
%: 여러 글자로 패턴 매칭합니다.
WHERE address LIKE '%Houston,TX%';
_: 한 글자로 패턴 매칭합니다.
WHERE Bdate LIKE '__5_______';
BETWEEN ... AND 구문
특정 범위의 값을 조회할 때 사용하면 더 가독성이 좋게 구문을 작성할 수 있습니다.
SELECT *
FROM EMPLOYEE
WHERE (Salary BETWEEN 30000 AND 40000 ) AND Dno = 5;
ORDER BY 구문
- 검색 결과에 순서를 부여합니다.
- ORDER BY 절에는 반드시 SELECT 절에 있는 필드만 사용할 수 있습니다.
- ASC : 오름차순 (기본) , DESC : 내림차순
SELECT Fname, Lname, Dno
FROM EMPLOYEE
ORDER BY Dno, Lname, Fname;
INSERT 문
테이블에 데이터를 삽입하는 질의어 입니다.
INTERT INTO EMPLOYEE(Fname, Lname, Dno, Ssn)
VALUES ('Richard', 'Marini', 4, '654298653');
특정 필드에만 데이터를 삽입하는 것도 가능합니다. 이때 나머지 필드에는 null 로 셋팅됩니다.
VALUES 절 대신에 SQL 문이 들어가는 것도 가능합니다.
INSERT INTO WORKS_ON_INFO(Emp_name, Proj_name, Hours_per_week)
SELECT E.Lname, P.Panem, W.Hours
FROM PROJECT P, WORKS_ON W, EMPLOYEE E
WHERE P.Pnjmber=W>Pno AND W.Essn=E.ssn;
DELETE 문
테이블에서 특정 튜플을 삭제하는 질의어 입니다.
DELETE FROM EMPLOYEE
WHERE Lname='Brown';
이때 연쇄 삭제가 일어날수 있기 때문에 테이블의 CASCADE 옵션을 주의해야 합니다.
UPDATE 문
테이블의 특정 튜플의 내용을 수정하는 질의어 입니다.
UPDATE PROJECT
SET Plocation='Bellaire', Dnum=5
WHERE Pnumber=10;
위 질의어 내용을 해석해보면 "테이블 명이 PROJECT인 테이블에서 Pnumber가 10인 튜플들을 찾아 Plocatioin 값은 'Bellaire' 로 수정하고 Dnum 도 5로 수정해라" 입니다.
반응형
'CS > 데이터베이스' 카테고리의 다른 글
데이터베이스 설계와 정규화 (0) | 2024.02.06 |
---|---|
SQL 집단함수와 GROUP BY 절, HAVING 절 정리 (0) | 2024.02.02 |
SQL 중첩 쿼리와 조인 쿼리 (0) | 2024.02.02 |
SQL의 DDL문 정리 (1) | 2024.02.02 |
관계형 데이터 모델 정리 (0) | 2024.02.02 |