오라클에서 주석처리는 --로 한다.
데이터베이스 : 원하는 데이터를 추출하는데 목적.
--WHERE절
select --컬럼
from --테이블명
where --조건
--조건 = 컬럼명 연산자 데이터
-- 이름 = 홍길동
-- [ WHERE]
select * from emp
where deptno=10
select * from emp
where sal >=2000
--날짜데이터 :수치자료형의 특징과 문자 자료형의 특징을 가지고 있다.
select *
from emp
where hiredate >='1980-01-01'-- ' '를 붙이지 않으면 에러. 뺄셈으로 인식하기때문.
--[문자 처리 연산자 LIKE] - 와일드카드 (%,_f)를 사용할 수 있음
--(% : 글자수 상관 없음. , _ : 한글자자리수 가짐.)
select *
from emp
where ename like 'FORD'
select *
from emp
--where ename like 'M%' --M으로 시작하는
--where ename like '%N' --N으로 끝나는
where ename like '%A%' --A가 들어있는
--사원의 이름에 두번째가 A가 들어 있는 사원들을 검색.
select * from emp
where ename like '_A%'
--10번 부서에 근무하고 clerk인 사원을 검색
select *from emp
where deptno =10 and job ='CLERK'
--[BETWEEN AND 연산자]
select *from emp
--where sal >= 1000 and sal <=2000
where sal between 1000 and 2000
--[In 과 or 연산자]
select *from
--where comm =300 or comm = 500 or comm=1400
where comm in (300,500,1400)
--[부정 연산자(not, i=,<>)
select * from emp
--where not deptno =10
--where deptno <> 10
where deptno !=10 -- 원래는 안됐지만 오라클이 업데이트가 돼서 실행됨. 다른 DBMS에서는 안될 수 있음.
--[not 컬럼명 between , not 컬럼명 in()// not between, not in()은 다른 부정이다.
select *from emp
--where not sal between 1000 and 2000
where sal not between 100 and 2000
select *from emp
--where not comm in (200,500,1400)
where comm not in (200,500,1400)
--[is null // NULL인 값 불러오기]
select *from emp
where comm is null
--where comm is not null // null이 아닌값 불러오기
--[정렬하여 출력하기 위한 ORDER BY절]
--오름 차순일 경우 asc, 내림차순일 경우 desc
select *from emp
order by sal desc
--order by deptno, sal desc --다중 정렬
-단일 따옴표 안에 문자열 데이터는 대소문자를 구분하므로 소문자로 사원명을 기술하면 해당 데이터 찾지 못함.
-날짜 데이터는 수치자료형과 문자자료형의 특징 모두가지고 있다.
| 특정 데이터를 추출하기 | ||||
| 절 | WHERE | where 컬럼명 연산자 데이터 | 특정데이터 추출 | 컬럼명 연산자 데이터 |
| ORDER BY | order by 컬럼명 연산자 생략 가능(asc 또는 desc) |
정렬하여 출력 (다차정렬 가능) |
오름차순 : asc (기본) 내림차순 : desc |
|
| 연산자 | 비교연산자 | <,>,<=,>=,= | ||
| 논리 연산자 | AND,OR,NOT(부정연산자) | NOT : not , <>, != | ||
| LIKE | 와일드카드 ( % , _) | % : 어떤 글자든지, 몇글자든지 상관 없음. _ : 어떤 글자든 상관없으나 한글자만 가능. |
||
| IN | 다중 OR | 부정 : not in | ||
| BETWEEN AND | 범위 표현 | 부정 : not between and | ||
| IS NULL | NULL인 값 불러오기 | 부정 : is not null | ||
좋은 프로그램 : 데이터베이스에 있는 데이터를 가져와서 뿌려만 주는 프로그램. (데이터구조는 데이터베이스에서 잡는것)
select
from
where
order by-- 마지막의 위치.
SQL 주요 함수.
메서드와 함수는 모두 기능(function)이다.
메서드 : 종속되어있는 기능
함수 : 독립되어있는 기능
메서드와 함수는 전혀 다른 기능을 의미한다.
C : 함수만 있음, C++ : 메서드와 함수를 사용.
함수는 바로 접근해서 사용 가능
DUAL 테이블 (테스트 할때 사용할 테이블)
- SYS 사용자가 소유하는 것으로 모든 사용자가 사용할 수 있다.
- DUAL 테이블은 DUMMY라는 단 하나의 컬럼으로 구성. 이 컬럼에는 길이가 1인 문자 한개를 저장할 수 있음.
--[ROUND ( , ) 반올림 함수]
select round(45.256,2)-- 인덱스 번호. 자리수 라고 생각하면 안됨.
from dual
--[TRUNC (,) 버림 함수]
select trunc(45.256,2)
from dual
--[MOD(,) 나머지 구하는 함수]
select *
from emp
where mod(empno,2)=1
--[UPPER (대문자로 변환) 함수.]
select upper('welcom to java')
from dual
--[LOWER (소문자로 변환) 함수.]
select lower('WELCOM TO JAVA')
from dual
--[INITCAP(첫 이니셜 대문자로 변환)함수]
select inicap(name)
from emp
--[LENGTH (문자열 길이를 알려주는) 함수] // 공백도 포함.
select ename, length(ename)
from emp
--[INSTR (특정문자 출현하는 위치 알려주는)함수]
select ename, instr(ename,'A')
from emp
select ename, instr(ename, 'A',3,1) --세번째 자리시작하여 첫번째로 나타나는 함수의 위치
from emp
--[SUBSTR (문자의 일부분 추출) 함수]
select empno, ename, hiredate, substr(hiredate,1,4) -- (데이터, 시작 위치, 시작위치에서 몇자리를 가져올건지)
from emp
--[lPAD (오른쪽 정렬, 왼쪽에 생긴 빈 공백 특정문자 채움) 함수]
select lpad('java',10,'#')-- (데이터, 몇개의 자리, 채울문자)
from dual
--[RPAD ( 왼쪽 정렬 , 오른쪽에 생긴 빈 공백 특정문자 채움) 함수]
select rpad('JAVA',10,'#')
from dual
--[LTRIM (왼쪽에서 특정 문자 삭제) 함수] -- 공백 제거때문에 사용.
select ltrim('#####java#####', '#') -- (데이터, 삭제하고자하는 문자값)
from dual
--[RTRIM (오른족에서 특정 문자 삭제) 함수]
select rtrim('#####java#####', '#')
from dual
| SQL 주요 함수 | ||
| 함수 | ROUND(데이터, 반올림 위치) | 반올림 위치는 인덱스 번호 매치 ( 자리수X) |
| TRUNC(데이터, 버림 위치) | " 마찬가지로 인덱스 번호로 | |
| MOD(데이터, 나눌값) | ||
| 문자 처리 함수 | UPPER(데이터) | 대문자로 변환 |
| LOWER(데이터) | 소문자로 변환 | |
| INITCAP(데이터) | 첫 이니셜 대문자로 변환 | |
| LENGTH(데이터) | 문자열의 길이를 알려줌 (공백도 포함) |
|
| INSTR(데이터, 문자) INSTR(데이터, 문자 , 시작위치, 몇번째) |
특정문자가 출현하는 위치 알려줌. | |
| SUBSTR(데이터, 시작위치, 몇자리) | 문자의 일부분 추출(인덱스 X, 자리로 ) | |
| LPAD(데이터, 자리수, 채울내용) | 오른쪽 정렬 후 왼쪽에 생긴 빈 공백에 특정문자를 채움. | |
| RPAD(데이터, 자리수, 채울내용) | 왼쪽 정렬 후 오른쪽에 생긴 빈 공백에 특정 문자를 채움. | |
| LTRIM(데이터, 삭제하고자하는 문자값) | 왼쪽에서 특정 문자 삭제 (공백 제거때문에 사용) |
|
| RTRIM(데이터, 삭제하고자하는 문자값) | 오른쪽에서 특정문자 삭제 (공백 제거때문에 사용) |
|
실습
1. 이름의 세번째 자리가 N인 직원 검색
2. 이름의 끝자리가 N으로 끝나는 직원 검색
3. and나 between 연산자를 사용하지 않고 80년도에 입사한 직원검색
4. 직원 중 이름이 5글자인 직원 검색, 이름을 소문자로 출력
'개발자 > 백엔드 웹 개발자 과정(국비)' 카테고리의 다른 글
| [DB]정리 (0) | 2022.12.14 |
|---|---|
| [DB]날짜데이터, 형변환,NVL,DECODE,GROUP BY (0) | 2022.12.14 |
| [DB] 데이터 베이스,SQL,물리/논리 (0) | 2022.12.12 |
| 2022년 12월 09일 _ 23회차 (종속 Thread,독립 Thread,동기화) (0) | 2022.12.09 |
| 2022년 12월 08일 _ 22회차 (Thread 스레드) (0) | 2022.12.08 |