본문 바로가기
개발자로 가는 길(국비지원과정)/2. Oracle

[210518화] 오라클 조회 명령문 SELECT 복습, 테이블 생성(create) 및 데이터 삽입(insert into.. values)

by 레아Leah 2021. 5. 18.
반응형

[SQL_조회 명령문 SELECT]

더보기

SELECT [DISTINCT] 컬럼명,... 

FROM 테이블명(DUAL)

WHERE 조건절

ORDER BY 컬럼명 [DESC | ASC], 컬럼명[DESC | ASC] 

 

DISTINCT: 중복제거

DUAL: 가상의 테이블, 실제로 테이블이 존재하면 필요 없다. 

 

[비교연산자]

= 같다 

!= 같지 않다 

>= 크거나 같다

<= 작거나 같다 

> 크다 

< 작다 

IS NULL 

IS NOT NULL

 

 

[타입]

1. 문자열

: 고정길이 문자열(CHAR(n), 메모리가 낭비되는 단점이 있다.)

: 가변길이 문자열(VARCHAR(n), 남은 데이터를 세이브할 수 있다.)

: 자바와 달리 문자열을 나타낼 때는 '홍길동',  '작은 따옴표', 'T'와 같이 ' ' 를 사용해야 한다. 

 

2. 숫자

: NUMBER(n)            n이 2라면 2자리 숫자까지 가능 12, 56

: NUMBER(n, p)       p는 소수점 아래 몇 자리까지 나타낼지에 대한 것이다. 

: NUMBER 

 

3, 날짜 DATE                   

: '21/05/18' --YY/MM/DD

: SYSDATE 

 

 

 

[SELECT 명령문 복습]

조건을 걸고 싶을 때는 WHERE절에 비교연산자를 사용하여 조건문을 만든다. 

정렬이 필요할 경우, ORDER BY와 내림차순 DESC,  오름차순 ASC을 이용해 정렬하고 1개 이상의 컬럼으로 정렬할 수 있지만 일반적으로 기준으로 2개 이상의 컬럼을 설정하지는 않는다. 

날짜 쓸 때 ' '하는 것 잊지말기!  

 

 

[수업 진도]

[논리연산자]

: and, or, not 

 

[산술연산자]

+, -, *, /

: 연산을 할 경우 무조건 실수형으로 나온다는 것! 

 

별칭을 줄 때특수문자가 있을 경우, 혹은 문자열의 띄어쓰기가 있을 경우에만 "큰 따옴표"를 사용하고 그외에는 그냥 사용해도 된다. 

 

 

[2교시]

[논리연산자]

[AND]

10000~11000 사이의 급여를 받는 사람들을 조회 

위의 코드처럼 겹치는 것이 싫고 예쁘게 바꾸고 싶다면 ↓

 

[BETWEEN A AND B]

WHERE  컬럼명 between A and B 

 

[OR]

 

[IN]

: ~이거나 ~이다 

: WHERE 컬럼명 in (값1, 값2)

 

[NOT]

: 모든 연산자를 쓰고 나서 가장 맨 앞에 NOT을 쓰면 된다

 

[문자열]

: 문자열 데이터가 영문자일 경우, 조건(where절)에서 대소문자를 완벽하게 맞춰야 한다그렇지 않으면 컴퓨터가 인식하지 못한다. 

 

 

[Like]

: 와일드 카드와 함께 사용

 

와일드 카드란? 치트키, 글자수를 모를 경우 사용할 수 있는 치트키 

: 0개부터 시작해 여러 개의 문자열

_ : 글자 한 개를 의미 

 

 

[와일드 카드 % 의 예]

<s로 시작하는 문자열> 

이름을 내림차순으로 정렬

select first_name, salary, department_id 

from employees 

where first_name like 'S%'

order by first_name desc; 

 

 

<a로 끝나는 문자열> 

 

[%]: 0개부터 시작해 여러 개의 문자열

소문자 l이 들어가는 경우 %l% : 문자열 안에 해당 문자가 있는지 확인할 수 있다. 

보통 단어를 찾아줌 ex) 카카오톡에서 자바책추천 

%코로나% → '%' || subject || '%'

여기서 subject는 변수 

 

 

[와일드 카드 _ 의 예]

_ : 글자 한 개를 의미 

 

 

[연습문제]

1번) 부서번호가 30, 50, 70 부서인 사람들 조회 이름, 직급, 급여, 부서번호

or를 사용해 부서번호가 30이거나 50이거나 70인 사람을 찾을 수 있지만 in을 사용할 수도 있다. 

 

2번) 이름이 't'로 끝나는 사람의 이름 부서 직급 조회

Like는 "%"이나 "_"와 같은 와일드카드와 함께 사용한다.

 

 

3번)  커미션의 액수가 2000 이상인 사람의 이름, 급여, 커미션비율, 커미션 액수 조회

산수연산자를 이용해 기존의 컬럼의 정보의 데이터를 연산해 새로운 컬럼으로 만들어 낼 수도, 그 새로운 컬럼에 별칭을 줄 수도 있다.  

만약 새로운 컬럼에 붙여준 별칭을 조건식 안에서 컬럼으로 쓰고 싶다면 서브쿼리로 해야 한다. 새로운 컬럼을 기준으로 조건을 주고 싶다면 commission_pct*salary와 같이 조건절에 그대로 사용해도 된다. 

 

 

4번) 직급이 'ACCOUNT'이거나 'CLERK'인 직원의 이름, 직급, 부서 조회 

조건절에서 where job_id like '%ACCOUNT%' or job_id like '%CLERK%;와 같이 조건 하나에 컬럼명 + Like를 각각 써줘야 한다

문자열이기 때문에 대소문자를 맞춰줘야 함 

'%'와 같은 와일드 카드를 사용하기 위해서는 like를 사용해야 한다. 

 

 

5번) 입사일이 07년도인 직원이름, 부서, 입사일 조회를 입사일 순으로 오름차순 

날짜 역시 문자열처럼 사용 가능하다.  like '07%';

정렬 시 최근 입사일 순으로 하는 조건이 있다면 desc 내림차순을 해주면 된다.

 

 

[집합 연산자]

- 합집합(Union,), 교집합(Intersect), 차집합(Minus) 

원 A, B

합집합(Union,) : A ∪ B

교집합(Intersect) : A ∩ B 

차집합(Minus) : A - B or B - A

원 하나가 select  

합집합(Union,), 교집합(Intersect), 차집합(Minus)을 사용할 때는 컬럼명이 같아야 한다. 

실제로 많이 사용하지는 않는다. 

정처리 기사 시험에 나온다. 

 

 

[정리]

SQL :

▶ DDL(create, alter, drop)

- Object : table, view, index, sequence, user, synonym와 같은 것을 생성, 수정, 삭제할 때 사용하는 명령어 

DML(I, U, D, S) : 데이터의 삽입, 수정, 삭제 조회 시 사용하는 명령어 

→ SELECT의 경우에는 쿼리문을 저장할 뿐 데이터를 저장할 것은 없다. 

▶ DCL(grant, revoke) : 데이터 접근 권한을 주거나 뺏는 것

▶ TCL(commit, rollback, savepoint) 

 

 

[테이블 생성 및 삭제]

더보기

create table 테이블명

(

컬럼명1 데이터 타입 constraint constraint_name 제약 조건,

컬럼명2 데이터 타입 constraint constraint_name 제약 조건,

컬럼명3 데이터 타입 constraint constraint_name 제약 조건,

); 

 

 

[제약조건을 부여해서 만들기(pk, fk, uq, nn, ch, defalut]

[제약조건 6가지(Constraints)] Constraints(제약)

- PK

- FK

- NN : ex) 이메일을 보낼 때 제목을 작성하지 않은 경우 비어있지 않게  "제목없음" 입력해주세요. 

- Check : 데이터를 한정시키는 것(남자, 여자, 남, 여, W, M)

- Unique

- defalut : 사용자가 값을 입력하지 않으면 자동으로 들어가는 값! 

 

스키마 : 특정 테이블이 가지고 있는 상태 정보를 가지고 있는 것

내가 만든 제약 조건을 스키마가 기억한다. 

메타 테이블 : 정보를 위한 정보 

메타 테이블을 만들 때 주의할 것 

 

 

[select * from user_constraints;] 

: 제약 조건을 조회하는 명령문 

위의 코드로 조회해보면 나열됨 

constraint_name는 내가 넣든 안넣든 반드시 존재하고, 컴퓨터가 준 constraint_name은 데이터의 특징을 알 수 없기때문에 직접 넣는 것이 더 유리하다.  

내가 넣지 않으면 위와 같이 임의의 constraint_name가 주어진다. 

 

[constraint_name 규칙]

- constraints를 코드 삽입시 컬럼명 타입 constraints + 테이블명_컬럼의 특징_제약조건

DDL(create, alter, drop)의 명령문 drop을 이용해 생성한 테이블을 삭제할 수도 있다.  drop table + 테이블명 

constraint_name이 수정된 것을 아래에서 확인할 수 있다. 컬럼명 타입 테이블명 제약조건을 적은 후 컬럼명과 제약조건을 참고하여 constraint_name를 부여한다. 

 

특정테이블의 제약조건을 조회하고 싶다면 아래와 같이 조회할 수 있다. 

select * from user_constraints where table_name = ‘MYTABLE’; 

 

 

[데이터 삽입 insert] DML 중 하나 : 

열어보기 ↓ 

더보기

insert into 테이블명

    (컬럼명1, 컬럼명2, 컬럼명3, 컬럼명4...

values

    (value1, value2, value3, value4... );

문자열과 날짜를 적을 때는 '작은 따옴표' 표시해주기, 자바랑 헷갈리지 말기!  

"1행이 삽입되었습니다."라는 코멘트가 있어야 데이터 삽입 완료! 

저장할 때는 commit하는 것 잊지말기! 

 

아래와 같이 테이블 카테고리 안에 mytable이 생성되어 있는 것을 확인할 수 있다. 

반응형