??-SQL 방식으로 비표준언어도 사용함.
IBM에서 처음으로 만들어져 있다. 만들자마자 바로 공개되어서 ANSI/ISO에서 표준화되었다.
기능은 똑같지만, 명령어는 다르다.
DDL(데이터 정의 언어) : 테이블 또는 객체 단위
생성 : create
삭제 : drop
수정 : alter
DML (데이터 언어) : 데이터 단위
insert : 입력
delete : 삭제
update : 수정
select : 검색
식별자 칼럼의 사용 : 테이블을 사용
record , row : 행에 저장
column : 테이블의 각 컬럼은 데이터를 구별할 수 있는 속성을 표현
오라클은 대소문자를 구별하지 않는다.
/*
select * from emp;
select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp;
select empno,ename,sal from emp;
select ename from emp;
*/
/*
알리아스 : 별칭
알리아스 부여시 "" 사용하는 경우
1. 대소문자 구별을 원할때
2. 공백 포함시
3. _,# 특수문자 사용시
4. 숫자로 시작할 경우
*/
select sal*12 asal from emp;
select sal*12 as asal from emp;
select sal*12 "Annual Salary" from emp;
/*
컬럼 또는 문자(숫자)연결
*/
SELECT ename || ' (은)는 소유 $'|| ename sname from emp;
/*
where절 : 조건을 부여한다. 위치를 어떻게 사용하냐?
*/
select * from emp;
select * from emp where deptno = 10;
/* 같지 않은 조건 */
select * from emp where hiredate>'81-12-03';
select * from emp where hiredate <> '81-11-17';
select * from emp where hiredate = '81-11-17';
select * from emp where hiredate != '81-11-17';
select * from emp where hiredate ^= '81-11-17';
/* 범위 설정 */
select * from emp where sal > 2000 and sal < 5000 ;
select * from emp where sal >= 2000 and sal <= 5000 ;
/* 문자열을 사용하여 */
select * from emp where sal between 1000 and 1500;
select * from emp where sal not between 1000 and 1500;
/* 한 개, 두 개 이상 데이터 지정하기 */
select * from emp where sal in (1300,2450,3000) ;
select * from emp where sal not in (1300,2450,3000) ;
/* 검색어 : 포함된 문자 검색
% : 앞뒤에 문자 포함 여부를 검색한다
*/
select * from emp where ename like '%S';
select * from emp where ename like 'S%';
select * from emp where ename like '%S%';
/*
문제 : emp 테이블에서 사원이름과 월급을 출력하는데 각각의 칼럼명을
이 름 , 월 급 으로 바꿔서 출력
*/
/*
문제2 : emp 테이블에서 7566 , 7782 , 7788인 사원을 제외한 사람들의
사원번호, 이름 월급을 출력
*/
select * from emp;
select ename "이 름",sal "월 급" from emp; /* 문제 1 완료 */
select empno,ename from emp where empno not in (7566,7782,7788); /* 문제 2 완료 */
select empno,ename,sal from emp where empno not in (7566,7782,7788);
select empno,ename from emp where empno in (7566,7782,7788);
/*
3 : emp 테이블에서 사원 이름 중 S가 포함되지 않은 사람들 중
부서 번호가 20번인 사원들만 출력
*/
select * from emp where ename not in like '%S%' and deptno=20;
select ename,deptno from emp where ename not in ('S') and deptno=20;
select ename,deptno from emp where ename not like '%S%' and deptno=20; /* 문제 3 완료 */
/*
4번 문제 : emp 표 에서 직책이 'SALESMAN' 이고 월급이 1000이상인
사원의 이름과 월급을 출력
*/
select ename,sal from emp where job like 'SALESMAN' and sal > 1000; /* 문제 4 완료 */
select ename,job,sal from emp where job like 'SALESMAN' and sal > 1000;
select ename,job,sal from emp where job in 'SALESMAN' and sal > 1000;
select ename,job,sal from emp where job='SALESMAN' and sal > 1000;
select ename,job,sal from emp where job='SALESMAN' and sal >= 1000;
/*
null : 데이터 없음
*/
select * from emp where comm is not null;
select * from emp where comm <> null; /* null 명령어에는 != , <> , ^= 기호를 사용할수 없다 */
select * from emp where comm is null;
/*
order by 절(정렬)
*/
select * from emp order by sal asc; /*오름차순 : asc 생략 가능 */
select * from emp order by sal ; /* 숫자는 0~Max 까지 */
select * from emp order by sal desc; /*내림차순 = desc */
select * from emp order by ename desc; /* Z~A까지 */
select * from emp order by ename ;
select ename,sal from emp order by sal asc , ename asc; /* 2차 정렬 : 겹치는 요소가 있다면 2차 정렬이 가능하다 */
select ename,sal from emp order by sal, ename;
select ename,sal from emp order by sal desc, ename;
/*
문제
1) emp 테이블에서 10번 부서에서 근무하는 사원의 이름과 입사일, 급여를
구할 때 급여가 급여가 많은 사람에서 적은 사람순으로 정렬(내림차순)
*/
select ename,hiredate,sal from emp where deptno=10 order by sal desc; /* 정렬 1문제 완료 */
/*
2번 문제 : emp 테이블에서 직책이 'MANAGER'인 사원을 뽑는데 월급이 낮은 사람
순으로 이름, 직책, 월급 출력(오름차순)
*/
select ename,job,sal from emp where job='MANAGER' order by sal; /* 정렬 2문제 완료 */
/*
dual : 가상의 테이블 , 사용자 데이터가 있는 테이블에서 유래하지 않은 상수 값
날짜,산술,연산 등에 주로 이용
*/
select sysdate from emp;
select sysdate from dual;
select ascii('-') from dual; /* 문자열이나 특수문자는 ''를 사용한다 */
/*
함수
대소문자 조작 함수
*/
select lower('HELLO WOrld') from dual; /* 대문자 -> 소문자 */
select upper('HELLO WOrld') from dual; /* 소문자 -> 대문자 */
select lower(ename) from emp;
select initcap('hello world') from dual; /* 문자열과 문자열 연결*/
select initcap(ename) from emp;
/* 문자 조작 함수 : 문자 , 문자열 */
/* 문자열 인덱스(숫자) */
select concat('Hello',' World') from dual; /* 문자열과 문자열 연결 */
select substr('Hello World',3) from dual; /* 부여된 인덱스부터 마지막 인덱스까지 문자열 추출 */
select substr('Hello World',3,3) from dual; /* 부여된 인덱스부터 문자 3개만 추출 */
select substr('Hello World',-3,3) from dual; /* 문자열 뒤에서부터 3번쨰에서 시작해서 문자 3개 추출*/
select length('Hello World') from dual; /* 문자열의 길이를 구한다 */
/*대상문자열 검색문자 검색인덱스:해당 위치부터 검색*/
select instr('Hello World','e') from dual; /*문자열에서 지정한 문자위 위치 탐색*/
select instr('Hello World','E') from dual; /*탐색이 안되면 0으로 표시*/
select instr('Hello World','o') from dual; /*처음으로 탐색한 위치를 표시*/
/*대상문자열 검색문자 검색인덱스:해당 위치부터 검색*/
select instr('Hello World','o',6) from dual; /*해당 위치부터 검색*/
/*대상문자열 검색문자 검색인덱스,반복횟수*/
select instr('Hello World','o',1,2) from dual; /*특정 문자의 위치를 몰라도 검색가능*/
오라클 4,5일간합니다. JSP 배울때 연동 실습에 대비해서 미리 SQL배우는것이지요.
ps. 최근 근황 - 국비지원 교육 받고 있습니다. 이번에는 자바랑 기타등등 배우는중입니다 ㄷ
'스터디 티스토리' 카테고리의 다른 글
2012/11/30 SQL강의 (0) | 2012.11.30 |
---|---|
12/11/29 SQL 및 JAVA (2) | 2012.11.29 |
이런 글은 계속 메모하고 두고 봐야 합니다!! (0) | 2012.03.14 |
안드로이드 어플 개발 툴 공부하면서 오류를 뛰어넘었던적 (2) | 2010.02.26 |
서브넷 나누기 표 (10) | 2009.12.02 |