본문 바로가기

웹 개발/DBMS

[Web_DBMS] 07

● AS(ALIAS) : 별칭

- 결과 테이블에 표현할 컬럼명을 변경하고자 할 때 사용한다.

- 길고 복잡한 컬럼명을 쉽게 사용하기 위해 사용한다.

 

1. SELECT절

- 컬럼명 뒤에 AS 또는 한 칸 띄어쓰고 작성한다.

 

 

 

● CONCATENATION : 연결

(ex) '안녕' || '하세요'

 

 

 

● LIKE

- 포함된 문자열 값을 찾고, 문자의 개수에 제한을 줄 수 있다.

- % : 모든 것

- _ : 글자 수

(ex) '%A' : A로 끝나는 모든 값(FDNMSKA, 123FNDSA, ...)

(ex) 'A%' : A로 시작하는 모든 값(ADSF, A2193DK, AAA, ADD, ...)

(ex) 'A__' : A로 시작하면서 3글자인 값(ABC, AAA, ADD, ...)

(ex) '_A' : A로 끝나면서 2글자인 값(FA, VA, DA, ...)

(ex) '%A%' : A가 포함된 값(APPLE, BANANA, TASK, ...)

 

 


 

● NULL

- 정의되지 않은 값

- 빈 값 대신 미정 값을 부여할 때 사용

- PK는 불가능, FK 가능, UK 가능

 

 

 

● NOT NULL 제약조건

ALTER TABLE [테이블명] MODIFY ([컬럼명] NOT NULL);

 

 

 

● 제약조건 삭제

ALTER TABLE [테이블명] DROP CONSTRAINT [제약조건 이름];

 

 

 

● 조건식

- 컬럼명 IS NULL : 컬럼 값이 NULL이면 참

- 컬럼명 IS NOT NULL : 컬럼 값이 NULL이 아니면 참

 

 

 

● NULL 값을 다른 값으로 변경

1. NVL(컬럼명, '값')

- NULL 값 대신 다른 값으로 변경 후 조회

 

2. NVL2(컬럼명, 'NULL이 아닐 때 값', 'NULL일 때 값')

- NULL일 때의 값, NULL이 아닐 때의 값을 각각 설정

 

 

 

 

실습(ALIAS)

1. 선수이름과 생일 조회

SELECT PLAYER_NAME AS 선수이름, BIRTH_DATE 생년월일 FROM PLAYER;

 

 

※ 오류 발생

- SELECT절에서 사용한 ALIAS는 다른 절에서 사용할 수 없다.

/*
 * SQL 실행 순서
 * 1 : FROM
 * 2 : WHERE
 * 3 : SELECT
 * */

SELECT PLAYER_NAME AS 선수이름, BIRTH_DATE 생년월일
FROM PLAYER
WHERE 선수이름 = '김성환';

 

 

 

2. PLAYER 테이블에서 BACK_NO를 "등 번호"로, NICKNAME을 "선수 별명"으로 변경하여 검색

SELECT BACK_NO "등 번호", NICKNAME "선수 별명" FROM PLAYER;

 

 

 

 

실습(CONCATENATION)

1. PLAYER 테이블에서 이름과 영어이름을 조회한다.

SELECT PLAYER_NAME || '의 영어 이름은' || E_PLAYER_NAME || '입니다.' AS 자기소개 FROM PLAYER;

 

 

 

2. 누구누구의 별명은 머머이다.

SELECT PLAYER_NAME || '의 별명은 ' || NICKNAME || '이다.' AS 별명 FROM PLAYER;

 

 

 

3. 누구누구의 포지션은 머머이다.

SELECT PLAYER_NAME || '의 포지션은 ' || "POSITION" || '이다.' AS 포지션 FROM PLAYER;

 

 

 

 

실습(LIKE)

1. '천마'로 끝나는 팀 이름 찾기

SELECT TEAM_NAME FROM TEAM
WHERE TEAM_NAME LIKE '%천마';

 

 

 

2. '천마'로 끝나지 않는 팀 이름 찾기

SELECT TEAM_NAME FROM TEAM;
WHERE NOT TEAM_NAME LIKE '%천마';
 

 

 

3. PLAYER 테이블에서 김씨 두 자(외 자) 찾기

SELECT * FROM PLAYER
WHERE PLAYER_NAME LIKE '김_';

 

 

 

4. PLAYER 테이블에서 김씨와 이씨 찾기

SELECT * FROM PLAYER
WHERE PLAYER_NAME LIKE '김%' OR PLAYER_NAME LIKE '이%';

 

 

 

5. PLAYER 테이블에서 이씨가 아닌 사람 찾기

SELECT * FROM PLAYER
WHERE PLAYER_NAME NOT LIKE '이%';

 

 

 

6. PLAYER 테이블에서 세 자가 아닌 김씨 찾기

SELECT * FROM PLAYER
WHERE NOT PLAYER_NAME LIKE '___' AND PLAYER_NAME LIKE '김%';

 

 

 

 

실습(NULL)

1. NOT NULL 제약 조건

ALTER TABLE TBL_FLOWER MODIFY (FLOWER_PRICE NOT NULL);

 

 

 

2. 제약조건 삭제

ALTER TABLE TBL_FLOWER DROP CONSTRAINT SYS_C007066;

 

 

 

3. 조건식

- PLATER 테이블에서 POSITION이 NULL인 선수 검색

SELECT * FROM PLAYER
WHERE "POSITION" IS NULL;

 

 

- 별명이 NULL이 아닌 선수들만 조회

SELECT PLAYER_NAME || '의 별명은 ' || NICKNAME || '이다.' AS 별명 FROM PLAYER
WHERE NICKNAME IS NOT NULL;

 

 

 

4. NVL, NVL2

- PLAYER 테이블에서 POSITION이 NULL이면 '미정'으로 결과 출력하기

SELECT NVL("POSITION", '미정') FROM PLAYER
WHERE "POSITION" IS NULL;

 

 

- PLAYER 테이블에서 NATION이 NULL이 아니면 '등록', NULL이면 '미등록'으로 변경한다.

▶선수 이름과 선수 별명도 조회한다.

SELECT PLAYER_NAME, NVL(NICKNAME, '별명 없음') AS NICKNAME, NVL2(NATION, '등록', '미등록') NATION 
FROM PLAYER;

 

 

 

 

 

'웹 개발 > DBMS' 카테고리의 다른 글

[Web_DBMS] 09  (0) 2022.04.07
[Web_DBMS] 08  (0) 2022.04.06
[Web_DBMS] 06  (0) 2022.04.04
[Web_DBMS] 05  (0) 2022.04.03
[Web_DBMS] 04  (0) 2022.04.02