59doit
[ SQL ] Oracle sql문 #3 _ 데이터 질의어 select 문 (2) 본문
(3) 데이터의 할당
① 리터럴의 할당
select column1, column2, … columnN from table
where column 비교 연산자 '문자[날짜]';
- 문자와 날짜 리터럴은 반드시 '(싱글 쿼터)를 사용하지만, 숫자 상수는 싱글 쿼터를 사용하지 않아도 된다.
- 문자 리터럴의 경우에는 대소문자를 구별하며 조회 시 대문자로 입력한 내용을 소문자로 조회하면 조회가 되지 않는다.
- 날짜 리터럴은 내부 날짜 형식으로 날짜를 저장하며 기본 날짜 표시 형식은 YYYY-MMDD 이다.
ex 1 ) emp 테이블에서 이름이 FORD 인 사원의 정보를 조회한다
SELECT * FROM EMP WHERE ENAME = 'FORD'; |
ex 2 ) emp 테이블에서 입사일이 1982 년 1 월 1 일 이후에 입사한 사원의 정보를 조회한다.
SELECT * FROM EMP WHERE HIREDATE >= '1982/01/01' ; |
② null 의 확인
select column1, column2, … columnN from table
where column is [not] null;
- is null 문은 null 을 테스트하고 null 값의 존재 여부를 확인한다.
- null 값의 의미
* null 값은 사용할 수 없는 값이다.
* null 값은 할당되지 않은 값이다.
* null 값은 알 수 없는 값이다.
* null 값은 적용할 수 없는 값이다. - null 은 =(이퀄) 연산자를 사용하여 검사할 수 없다.
- not 명령어를 사용하면 null 을 테스트하지 않고 null 값의 존재 여부를 확인하지 않는다.
ex 1 ) emp 테이블에서 커미션이 null 인 사원의 정보를 조회한다.
SELECT * FROM EMP WHERE COMM IS NULL; |
ex 2 ) emp 테이블에서 커미션이 null 이 아닌 사원의 정보를 조회한다.
SELECT * FROM EMP WHERE COMM IS NOT NULL; |
(4) 테이블의 복사
- 기존에 존재하는 테이블을 이용한 새로운 테이블을 생성하며 ctas(Creating a Table from Query Results)라고 한다.
- ctas 는 기존 테이블의 구조와 데이터를 그대로 복사하여 생성하지만, 제약조건은 복사가 안 되므로 ctas 로 테이블을 생성한 경우에는 제약조건을 추가하는 작업이 필요하다.
① 전체 테이블 복사
테이블의 구조와 데이터를 모두 복사하여 새로운 테이블을 생성한다.
create table 새로운 테이블명
as
select * from 기존 테이블명;
- create table 새로운 테이블명
create table 문으로 지정한 테이블명의 새로운 테이블을 생성한다.
테이블명은 중복을 허용하지 않는다. - as
as 명령어는 복사할 새로운 테이블을 지정한다. - select 명령어
select 명령어는 표시할 컬럼이나 명령어를 지정한다.
컬럼은 하나 이상의 컬럼으로 이루어진 리스트이다. - *(애스터리스크) 기호
*(애스터리스크) 기호는 모든 컬럼을 선택한다. - from 기존 테이블명
from 명령어는 컬럼을 포함하는 기존 테이블을 지정하며 ;(세미콜론)으로 종료한다.
ex ) 테이블의 구조와 데이터를 모두 복사하여 새로운 테이블을 생성한다.
CREATE TABLE SONBOARD AS SELECT*FROM BOARD_COPY; --Table SONBOARD이(가) 생성되었습니다. |
② 테이블 구조만 복사
테이블의 데이터는 복사하지 않고 테이블의 구조만 복사한 새로운 테이블을 생성한다.
create table 새로운 테이블명
as
select * from 기존 테이블명
where 만족하지 않는 조건식;
- create table 새로운 테이블명
create table 문으로 지정한 테이블명의 새로운 테이블을 생성한다.
테이블명은 중복을 허용하지 않는다. - as
as 명령어는 복사할 새로운 테이블을 지정한다. - select 명령어
select 명령어는 표시할 컬럼이나 명령어를 지정한다.
컬럼은 하나 이상의 컬럼으로 이루어진 리스트이다. - *(애스터리스크) 기호
*(애스터리스크) 기호는 모든 컬럼을 선택한다. - from 기존 테이블명
from 명령어는 컬럼을 포함하는 기존 테이블을 지정한다. - where 만족하지 않는 조건식;
where 만족하지 않는 조건식은 조회할 조건을 만족하지 않는 조건으로 지정한다.
조건식은 조회할 조건에 대한 조건이나 표현식으로 ;(세미콜론)으로 종료한다
ex ) 테이블의 데이터는 복사하지 않고 테이블의 구조만 복사한 새로운 테이블을 생성한다
CREATE TABLE BOARD AS SELECT*FROM SONBOARD WHERE 2=1; |
WHERE 1=1은 항상 참 TRUEF 의미한다. 즉, 의미 없는 조건
무작정 1=1을 쓸 경우 입력값을 잘못 입력해도 결과를 리턴하는 경우가 발생하므로 정확한 로직에서만 사용해야한다.
WHERE 1=2은 거짓 FALSE 의미한다. 아무런 결과를 받아올 수 없다.
'Programming > SQL 기초' 카테고리의 다른 글
[ SQL ] Oracle sql문 #5 _ 데이터 조작 & 처리 & 제어 (0) | 2022.12.09 |
---|---|
[ SQL ] Oracle sql문 #4 _ 데이터 질의어 select…where…order by 문 (0) | 2022.12.09 |
[ SQL ] Oracle sql문 #2 _ 데이터 질의어 select 문 (1) (0) | 2022.12.08 |
[ SQL ] Oracle sql문 #1 _ 데이터 정의어 (0) | 2022.12.08 |
[ SQL ] 데이터베이스 #6 다중행함수 (0) | 2022.12.08 |