데이터베이스 구조 (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";
: 두개의 출력결과를 합해서 출력 (한줄로 입력)
'Database > MySQL' 카테고리의 다른 글
SQL - JOIN의 종류 (inner join, outer join) (0) | 2020.12.15 |
---|---|
SQL - 복수행 함수 (0) | 2020.12.15 |
SQL - 단일행 함수 (3) : 일반 함수 (0) | 2020.12.14 |
SQL - 단일행 함수 (2) : 숫자 함수, 날짜 함수, 형변환 함수 (0) | 2020.12.14 |
SQL - 단일행 함수 (1) : 단일행 함수와 사용법 (0) | 2020.12.14 |