● 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 |