[SQL] DML, SELECT-1

유은선·2023년 5월 6일
0

SQL

목록 보기
2/3
post-thumbnail

📖 DML

🍀 삽입문(INSERT INTO~)

삽입문은 기본 테이블에 새로운 튜플을 삽입할 때 사용한다.

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

💡 예제1 <사원> 테이블에 (이름-홍승현, 부서-인터넷)을 삽입하시오.

INSERT INTO 사원(이름,부서) VALUES ('홍승현','인터넷')

💡 예제2 <사원> 테이블에 (장보고, 기획, 05/03/73, 홍제동, 90)을 삽입하시오.

INSERT INTO 사원 VALUES ('장보고', '기획', #05/03/73#, '홍제동', 90);

🍀 삭제문(DELETE FROM~)

삭제문은 기본 테이블에 있는 튜플들 중에서 특정 튜플(행)을 삭제할 때 사용한다.

DELETE
FROM 테이블명
[WHERE 조건];

  • 모든 레코드를 삭제할 때는 WHERE절을 생략한다.
  • 모든 레코드를 삭제하더라도 테이블 구조는 남아 있기 때문에 디스크에서 테이블을 완전히 제거하는 DROP과는 다르다.

💡 예제1 <사원> 테이블에서 "임꺽정"에 대한 튜플을 삭제하시오.

DELETE
FROM 사원
WHERE 이름="임꺽정";

💡 예제2 <사원> 테이블에서 "인터넷" 부서에 대한 모든 튜플을 삭제하시오.

DELETE
FROM 사원
WHERE 부서="인터넷";

💡 예제3 <사원> 테이블의 모든 레코드를 삭제하시오.

DELETE
FROM 사원;

🍀 갱신문(UPDATE~ SET~)

갱신문은 기본 테이블에 있는 튜플들 중에서 특정 튜플의 내용을 변경할 때 사용한다.

UPDATE 테이블명
SET 속성명=데이터 [, 속성명=데이터, ... ][**WHERE** 조건];

💡 예제1 <사원> 테이블에서 "홍길동"의 주소를 "수색동"으로 수정하시오.

UPDATE 사원
SET 주소="수색동"
WHERE 이름="홍길동";

💡 예제2 <사원> 테이블에서 "황진이"의 부서를 "기획부"로 변경하고 기본급을 5만원 인상시키시오.

UPDATE 사원
SET 부서="기획부", 기본급=기본급+5
WHERE 이름="황진이";

📖 DML-SELECT-1

SELECT [PREDICATE][테이블명.]속성명 [AS 별칭], [테이블명.]속성명, ...]
FROM 테이블명 [, 테이블명, ...]

[WHERE 조건]

[ORDER BY 속성명 [ASC|DESC]];

PREDICATE

  • ALL : 모든 튜플을 검색할 때 지정하는 것으로, 주로 생략
  • DISTINCT : 중복된 튜플이 있으면 그 중 첫번째 한 개만 검색
  • DISTINCTROW : 중복된 튜플을 제거하고 한 개만 검색하지만 선택된 속성의 값이 아닌, 튜플 전체를 대상으로 한다.

🍀 기본 검색

SELECT 절에 원하는 속성을 지정하여 검색한다.

💡 예제1 <사원> 테이블의 모든 튜플을 검색하시오.

SELECT * FROM 사원;
SELECT 사원.* FROM 사원;
SELECT 이름, 부서, 생일, 주소, 기본급 FROM 사원;
SELECT 사원.이름, 사원.부서, 사원.생일, 사원.주소, 사원.기본급 FROM 사원;

💡 예제2 <사원> 테이블에서 '주소'만 검색하되 같은 '주소'는 한 번만 출력하시오.

SELECT DISTINCT 주소 
FROM 사원;

💡 예제3 <사원> 테이블에서 '기본급'에 특별수당 10을 더한 월급을 "XX부서의 XXX의 월급 XXX" 형태로 출력하시오.

SELECT 부서+'부서의' AS 부서2, 이름+'의 월급' AS 이름2, 기본급 + 10 AS 기본급2
FROM 사원;

🍀 조건 지정 검색

WHERE 절에 조건을 지정하여 조건에 만족하는 튜플만 검색한다.

💡 예제1 <사원> 테이블에서 '기획'부의 모든 튜플을 검색하시오.

SELECT *
FROM 사원
WHERE 부서='기획';

💡 예제2 <사원> 테이블에서 "기획" 부서에 근무하면서 "대흥동"에 사는 사람의 튜플을 검색하시오.

SELECT *
FROM 사원
WHERE 부서='기획' AND 주소='대흥동';

💡 예제3 <사원> 테이블에서 '부서'가 "기획" 이거나 "인터넷" 인 튜플을 검색하시오.

SELECT *
FROM 사원
WHERE 부서='기획' OR 부서='인터넷';

SELECT *
FROM 사원
WHERE 부서 IN ('기획','인터넷');

💡 예제4 <사원> 테이블에서 성이 '김'인 사람의 튜플을 검색하시오.

SELECT *
FROM 사원
WHERE 이름 LIKE "김%";

💡 예제5 <사원> 테이블에서 '생일'이 '01/01/69'에서 '12/31/73' 사이인 튜플을 검색하시오.

SELECT *
FROM 사원
WHERE 생일 BETWEEN #01/01/69# AND #12/31/73#;

💡 예제6 <사원> 테이블에서 '주소'가 NULL인 튜플을 검색하시오.

SELECT *
FROM 사원
WHERE 주소 IS NULL;

🍀 정렬 검색

ORDER BY 절에 특정 속성을 지정하여 지정된 속성으로 자료를 정렬하여 검색한다.

💡 예제1 <사원> 테이블에서 '주소'를 기준으로 내림차순 정렬시켜 상위 튜플만 검색하시오.

SELECT TOP 2 *
FROM 사원
ORDER BY 주소 DESC;

💡 예제2 <사원> 테이블에서 '부서'를 기준으로 오름차순으로 정렬하고, 같은 '부서'에 대해서는 '이름'을 기준으로 내림차순 정렬시켜서 검색하시오.

SELECT *
FROM 사원
ORDER BY 부서 ASC, 이름 DESC;

🍀 하위 질의

하위 질의는 조건절에 주어진 질의를 먼저 수행하여 그 검색 결과를 조건절의 피연산자로 사용한다.

💡 예제1 '취미'가 '댄스스포츠'인 사원의 '이름과 '주소'를 검색하시오.

SELECT 이름, 주소
FROM 사원
WHERE 이름 = (SELECT 이름 FROM 여가활동 WHERE 취미='댄스스포츠');

💡 예제2 취미활동을 하지 않는 사원들을 검색하시오.

SELECT *
FROM 사원
WHERE 이름 NOT IN (SELECT 이름 FROM 여가활동);

💡 예제3 취미활동을 하는 사원들의 부서를 검색하시오.

SELECT 부서
FROM 사원
WHERE EXISTS (SELECT 이름 FROM 여가활동 WHERE 여가활동.이름 = 사원.이름);

🍀 복수 테이블 검색

여러 테이블을 대상으로 검색을 수행한다.
💡 예제 '경력'이 10년 이상인 사원의 '이름','부서','취미','경력'을 검색하시오.

SELECT 사원.이름, 사원.부서, 여가활동.취미, 여가활동.경력
FROM 사원, 여가활동
WHERE 여가활동.경력 >= 10 AND 사원.이름=여가활동.이름;
profile
뭐든지 난 열심히 하지

0개의 댓글