1.DataBase
기본연산 : 삽입, 삭제, 수정, 조회
DBMS
2. DBMS
1) Oracle
2) MS-SQL
3) Sybase
4) DB2
5) Infomix
6) My-sql -> Maria DB
3. 발전 단계
1) 파일처리
2) HDB : 계층형 DataBas4 : Tree
3) NDB : 네트워크형
4) RDB : 관계형
5) ODB : 객체형
6) ORDB : 객체 관계형 database
service.msc
==================================================================================================
***Oracle ( 8i/9i -> 10g/11g -> 12c )
1.Developer
2.DataBase Administrator DBA
3.네트워크 DB
1) 서버
2) 클라이언트
-SqlPlus ( 도스용 )
-SqlDeveloper ( 윈도우용 )
-Eclipse Plugin
-Toad
-SqlGate,....etc
[cmd]
sqlplus 아이디/비밀번호@ip주소
sqlplus system/1111@192.168.0.1
==잠겨있는 계정을 푸는 법==
[cmd] 관리자로그인 - alter user scott account unlock;
==계정 비밀번호 변경==
[cmd] 관리자로그인 - alter user scott identified by 1111l;
==
[alter] 해당사용자정보를 수정하겠다
[show user] 현재 사용자정보를 보여줌
[grant] 권한을 부여함
[drop] 삭제할떄
[connect 아이디/비밀번호] 해당사용자정보로 접속함
[create user 아이디 identified by 비밀번호] 사용자를 추가 생성함
[grant connect to testuser1;] 테스트유저1 에게 접속권한부여
[grant resource to testuser1;] 테스트유저1 에게 리소스를 관여할 권한 부여
[sqlplus system as sysdba;] 비밀번호를 까먹었을때 비밀번호재설정
[select tname from tab;] 해당 사용자의 정보를보여줌
4.몇가지 관리기능
5.SQL(Structed Query Language) -비 절차적, -표준SQL / ANSI SQL
(1) DDL ( Data Definition Language )
데이터 정의언어 / 실제로 데이터를 사용할수있게 준비해 주는 언어
- CREATE
- ALTER
- DROP
(2) DML ( Data Manipulation Language )
데이터 조작 언어 / 데이터를 저장하거나, 수정, 삭제, 조회 등을 해주는 언어
- INSERT
- UPDATE
- DELETE
[- SELECT]
(3) DCL ( Data Control Language )
데이터를 관리하기 위한 모든 권한
- 백업, 복원, 보안, 기타....
- GRANT, REVOKE, ....
(4) QL
- SELECT
필드 컬럼 속성
필드 < 레코드 < 테이블(파일) < DB < DataBank
데이터로서의 가치는 레코드부터
===========================================================================================
** SQL
---------
샘플 데이터 파악 ( scott )
TNAME
----------------------
BONUS : 직원들의 보너스에 대한 정보 ( 사용 X )
DEPT : 부서 정보
EMP : 사원 정보
SALGRADE : 급여 등급
이름 ( EMP )
------------------------------
EMPNO : 사번
ENAME : 사원 명
JOB : 업무명
MGR : 직속상사 사번
HIREDATE : 입사일
SAL : 급여
COMM : 보너스
DEPTNO : 부서코드
1.SELECT
(1) 데이터를 검색
(2) 기본문법
1) SELECT 필드명[, 필드명,....] FROM 테이블명
2) SELECT 필드명[, 필드명.....] FROM [소유자명.]테이블명
3) SELECT * FROM 테이블명
@:START 축약약명령어
4) 필드 가공 처리 가능
5) 필드에 alias 사용가능
- 필드명 as 별명
- 필드명 별명
- 필드명 "별명(공백포함)"
6) 중복된 레코드 제거
*****실습
SELECT empno, ename, sal FROM emp;
직원들의 사번, 이름. 급여를 조회,. 단, 급여는 100$를 추가하여 조회
SELECT empno, ename, sal, sal+100 FROM emp;
SELECT empno as 사번, ename 사원명, sal as 급여, sal+100 as "급여에 100$추가" FROM emp;
*. 이 회사에 어떤 업무가 있는지 조회
SELECT job FROM emp;
SELECT distinct job FROM emp; // 중복열외
(3) 추가 문법
1) 정렬 기능
-기본 문법 ORDER BY 필드명 [asc(오름차순), desc(내림차순)] 생략하면 오름차순
-ORDER BY 필드명[, 필드명, ...] 부분 정렬이 가능하다
2) 조건문(레코드 필터링)
-WHERE 조건식(필드명 연산자 변수 또는 값)
-기본 연산자
>, <, >=, <=, (<>, !=, ^=), =
-논리 연산자
and, or, not
-SQL 연산자
between and, in, is null, like
-like
% : 0개 이상의 문자 대체
- : 1개의 문자를 대체
****실습
*. 급여가 많은 순으로 직원들의 이름, 부서코드, 급여를 조회
SELECT ename, deptno, sal FROM emp ORDER BY sal asc;
* 각 부서 다른 직원들 중 가장 적게 받는 직원을 정렬
SELECT ename, deptno, sal FROM emp ORDER BY deptno, sal ASC;
*급여가 3000$이상되는 직원이름, 부서코드, 급여를 조회
SELECT ename, deptno, sal FROM emp WHERE sal >= 3000;
* 업무가 manager인 직원의 이름, 업무, 부서코드를 조회
SELECT ename, deptno, sal FROM emp WHERE job = 'MANAGER';
*1982년 1월 1일 이후에 입사한 직원의 이름, 부서, 입사일자 조회
SELECT ename, deptno, hiredate FROM emp WHERE hiredate > '82/01/01';
SELECT ename, deptno, hiredate FROM emp WHERE hiredate > '82-01-01';
SELECT ename, deptno, hiredate FROM emp WHERE hiredate > '82-1-1';
SELECT ename, deptno, hiredate FROM emp WHERE hiredate > '82,1,1';
SELECT ename, deptno, hiredate FROM emp WHERE hiredate > '82 1 1';
SELECT ename, deptno, hiredate FROM emp WHERE hiredate > '82+1+1';
SELECT ename, deptno, hiredate FROM emp WHERE hiredate > '1982/01/01';
SELECT ename, deptno, hiredate FROM emp WHERE hiredate > '1982-01-01';
SELECT ename, deptno, hiredate FROM emp WHERE hiredate > '1982-1-1';
SELECT ename, deptno, hiredate FROM emp WHERE hiredate > '1982,1,1';
SELECT ename, deptno, hiredate FROM emp WHERE hiredate > '1982 1 1';
SELECT ename, deptno, hiredate FROM emp WHERE hiredate > '1982+1+1';
* 부서가 20번이고 업무가 analyst인 직원의 이름, 부서, 업무를 조회
SELECT ename, deptno, job from emp where deptno=20 and job='ANALYST';
*급여가 1500이상 2500이하를 받는 직원의 이름, 부서, 업무, 급여를 조회
SELECT ename, deptno, job, sal from emp where sal>=1500 and <=2500;
SELECT ename, deptno, job sal from emp where sal between 1500 and 2500;
between 사이
*업무가 clerk, salesman, analyst 인 직원의 이름, 부서, 업무 조회
SELECT ename, deptno, job from emp where job = 'CLERK' and job= 'SALESMAN' OR job='ANALYST';
SELECT ename, deptno, job from emp where job in('CLERK', 'SALESMAN', 'ANALYST');
IN연산자 같은 조건에서만 사용가능 크다작다 불가능
* 이름이 s로 시작하는 직원의 이름, 부서, 업무 조회
SELECT ename deptno, job from emp where ename like 's';
*1981년도에 입사한 직원의 이름과 부서코드, 입사일자를 조회
SELECT ename, deptno, hiredate from emp where hiredate>= '81-01-01' and hiredate<='81-12-31';
SELECT ename, deptno, hiredate from emp where hiredate between '81-01-01' and '81-12-31';
SELECT ename, deptno, hiredate from emp where hiredate like '81%';
*커미션을 받지 못하는 직원의 이름, 업무, 급여, 커미션 조회
SELECT ename, deptno, job, sal, comm FROM emp WHERE job <> 'SALESMAN';
SELECT ename, deptno, job, sal, comm FROM emp WHERE NOT job = 'SALESMAN';
SELECT ename, deptno, job, sal, comm FROM emp WHERE comm is null;
============================================================================================================================================================
과제
1. 이름의 첫글자가 k보다 크고 y보다 작은 직원 이름, 부서, 업무 조회 단 이름순으로 정렬이
SELECT ename, deptno, job from emp where ename like>'K%' and like<'Y%';
2. 사번이 7902, 7788, 7566인 사원의 이름, 업무, 급여, 입사일자 조회
SELECT ename, job, sal, hiredate from emp where empno in(7902, 7788, 7566);
3. 업무가 manager, clerk, analyst가 아닌 직원의 이름, 업무, 급여, 부서번호 조회
select ename, job, sal ,deptno from emp where not job in('MANAGER','CLERK','ANALYST');
4. 업무가 president 또는 salesman이고 급여가 1500인 직원의 이름, 급여, 업무, 부서번호 조회
select ename, sal, job, deptno from emp where job in ('CLERK', 'SALESMAN','ANALYST') and sal>=1500;
5. 가장 최근에 입사한 사람을 조회(필드 자유선택)
select ename, hiredate from emp where hiredate '81-01-01' order by hiredate desc;
6. 같은 부서내에서 같은 업무를 하는 직원의 급여가 많은 순으로 조회
select ename, deptno, job, sal from emp order by deptno, job, sal desc;
7. 커미션이 급여보다 10%이상 많은 직원의 이름. 부서, 업무, 급여 , 커미션 조회
select ename, deptno, job, sal, comm from emp where sal*1.1<=comm;
8. 이름에 L자가 2개 있고 30번 부서이거나 직속상사가 7782인 직원의 이름.
부서, 직속상사 조회
select ename, deptno, mgr from emp where ename like '%LL%' mgr=7782, deptno=30;
****hr계정으로 접속
9. 부서번호가 100번인 직원의 이름, 부서, 급여를 조회
select first_name, last_name, department_id, salary from employees where department_id =100;
10. 업무가 IT프로그래머인 직원들의 조회(필드 자유)
select first_name, last_name, job_id from employees where job_id = 'IT_PROG';
11. 이름이 Luis인 직원의 정보를 조회(필드 자유)
select first_name, last_name, job_id, salary from employees where first_name = 'Luis';
12. 이름이 k로 시작되는 직원들을 조회(필드 자유)select first_name, last_name, job_id, salary from employees where first_name like 'K&'
13. 부서번호가 50, 80번을 제외한 모든 사람들을 조회(필드 자유)
select first_name, last_name, job_id, salary from employees where not department_id in ('50', '80');
14.이름의 두번째 문자가 n인 사람 조회(필드자유)
select first_name, last_name, job_id from employees where first_name like '_n%';
댓글 없음:
댓글 쓰기