320x100
320x100

 

데이터베이스 구조 (humanlist)

name

age

gender

job

홍길동

21

M

soldier

김춘자

33

F

CEO

방태순

18

F

student

윤호상

23

M

nurse

장지태

27

M

doctor

 

 

 

SQL 출력환경 설정

- 숫자 데이터 출력 자릿수 설정

: col name for 9999

- 문자 데이터 바이트 수 설정 (영문 1글자당 1바이트, 한글 1글자당 2바이트)

: col name for a8 (8바이트 까지 출력)

- 한 화면에 출력가능한 줄 길이

: set line 200 (한줄에 200바이트)

- 한 페이지에 출력 가능한 줄 수

: set pages 50 (50줄)

 

 

열(속성, col)에 표현식(expression) 사용

- select name, '사람' "종족" from human_list;

: name 종족

홍길동 사람

김춘자 사람 (이하 생략)

- select name, 'who''s not? : ', gender "sex" from human_list;

: name 'WHO''SNOT? :?' sex

홍길동 who's not? : M

- select name "이름", age "나이", gender "성별" from human_list;

: 이름 나이 성별

홍길동 21 M (이하 생략)

 

 

중복 값 제거 후 출력

- select distinct name, gender from human_list;

: 홍길동 M

김춘자 F

: 중복된 값중 가장 처음에 나오는 값만 출력됨

반드시 select distinct 순서로 작성해야함

 

 

연결 연산자

- select name || job from human_list;

: NAME||JOB

홍길동soldier (이하생략)

- select name||' ''s job is'|| job "name and job" from emp;

: NAME AND JOB

홍길동 's job is soldier (이하생략)

 

 

원하는 조건의 데이터만 출력 (where)

- select name, age, job from human_list where age>=20;

: age가 20 이상인 데이터 출력

- select name, age, job from human_list where name = '윤호상';

: name이 윤호상인 데이터 출력

※ where 뒤의 조건이 text이거나 날짜 일때는 반드시 ' '안에 값을 입력해야함

ex) where name = '윤호상', where birth = '17-DEC-97'

 

 

SQL에서 연산자 사용

- select name, age + 10 "10년뒤 나이" from human_list;

: name 10년뒤 나이

홍길동 31 (이하생략)

 

- 연산자는 +, -, *, /, =, >=, !=, <, > 사용 가능

- between a and b : a와 b사이의 범위 값

- in(a,b,c) : a이거나 b이거나 c인 값

- like : 특정 패턴을 가진 값

- is null / in not null

: null 인 값 / null이 아닌 값

- a and b / a or b / not a

: and / or / not

 

- select name, age from human_list where age between 20 and 30;

- select name, age from human_list where age >= 20 and age <=30;

: 두 식 모두 동일한 결과

- select name, age from human_list where age in(20,30);

: age가 20이거나 30인 값 출력

- select name, age from human_list where age like '2%';

: age가 2로 시작하는 데이터 (뒤 글자수 제한 없음, 200 이든 2000이든 212424든 모두 가능)

- select name, age from human_list where age like '2_';

: age가 2로 시작하는 데이터 (_의 갯수만큼만, 200 안됨 무조건 2*이여야함)

 

 

외부에서 값 입력 받기

- select name, age, job from human_list where age=&age;

: age를 입력받으면 그에 맞는 값이 출력됨

: = 대신 >=와 같은 연산자를 사용할 수 있음

 

 

정렬하고 출력

- select name, age, job from human_list order by age;

: age를 기준으로 오름차순 정렬

- select name, age, job from human_list order by age desc;

: age를 기준으로 내림차순 정렬

- select name, age, job from human_list order by age asc, name desc;

: age를 기준으로 오름차순, name을 기준으로 내림차순 정렬

- select name, age, job from human_list where age >= 20 order by age asc;

: age가 20이상인 데이터중 age를 기준으로 오름차순 정렬

- select name, age, job from human_list order by 1 asc, 2 desc;

: 첫번째 열을 기준으로 오름차순, 두번째 열을 기준으로 내림차순 정렬

 

 

집합 연산자

- union : 두 집합의 결과를 합쳐서 출력 (중복값 제거) <합집합>

- union all : 두 집합의 결과를 합쳐서 출력 (중복값 유지)

- intersect : 두 집합의 공통된 값을 출력 (정렬 후 출력) <교집합>

- minus : 두 집합의 서로 다른 값을 출력 (정렬 후 출력, 쿼리순서 중요) <차집합>

 

- select name, age from human_list where age >= 20

union select name, age from human_list where gender = "M";

: 두개의 출력결과를 합해서 출력 (한줄로 입력)

 

300x250
728x90