Daily Coding Summary
2023. 11. 14. 23:16ㆍDaily Codig Reminder
데이터베이스
데이터베이스 개요
- 데이터베이스 : 대용량의 데이터 모임
DBMS: 데이터베이스 관리시스템(프로그램)
EX) ORACLE, MYSQL, MARLADB...
- 데이터베이스 정리
데이터베이스 관리시스템(DBMS) -> 오라클
데이터베이스 -> DEPT EMP SALGRADE BONUS
관계형 데이터베이스(DBMS) => RDBMS
관계형 데이터 베이스 시스템
테이블과 테이블 간의 관계가 연결 relation
관계형 데이터모델은 2차원 테이블 형태
column (컬럼) = 열 (성명, 주소, 전화번호 등)
row(로우) = 행 = 레코드 (성명 - 주소- 전화번호)
테이블: 전체 (로우와 컬럼으로 구성) - SQL 언어
기능별로 구분 -> 외울 필요X
기본적으로 테이블이나 컬럼이름은 대문자로
SQL문은 여러줄에 걸쳐 작성가능하고 반드시 세미콜론으로 끝남
SQL 문은 자바언어와 마찬가지로 키워드가 있으며 대문자로 사용권장 - SQL 특징
DQL | select |
DML | insert, update, delete |
DDL | create, alter, drop, rename, truncate |
TCL | commit, rolback, savepoint |
DCL | grant, revoke |
SELECT 문
- select deptno from dept; -> dept 에서 deptno 만 추출
select dname from dept; -> DEPT 에서 DNAME 만 추출
select dname, loc, deptno from dept; -> dept에서 dname, loc, deptno 추출
=> 테이블 내의 특정 컬럼 데이터 보기
SELECT 뒤에 해당컬럼을 차례대로 기술, 쉼표로 구분해서 여러개 지정가능 - select *from dept; -> dept 전체 테이블 추출
select*from emp; -> emp 전체 테이블 추출
select * from emp; -> 대문자여도 상관 X
select DNAME, loc ,deptno from dept; -> 대문자여도 상관 X - SELECT [DISTINCT]{8, COLUMN [ALIAS],..} FROM TABLE;
NOT NULL 은 비우면 안되는 칸
비어있는 칸은 비어있어도 됨. - SQL 문장 내의 숫자 및 날짜 타입에는 +,-,*,/,() 사용가능.
select sal +100 from emp;
select sal -100 from emp;
select sal *100 from emp;
select sal /100 from emp; - 연산식을 컬럼명으로 표시
-> select empno, ename, sal*1.1 from emp;
컬럼의 내용이 추가되는 것이 아니라 가상의 컬럼이 있어 계산 결과가 나옴(원본데이터유지).
-> select empno, ename, sal , sal*12 from emp;
sal*12는 연봉 - 컬럼에 별칭 (ailas) 사용
-> select EMPNO AS 사번, ENAME AS 성명, sal AS 급여, sal*12 AS 연봉 from emp;
as 붙이지 않아도 쓸 수 있음 - select 10/3 from dual; -> 3.33333..
select mod(10,3) from dual; ->1 - 별칭에 공백문자 사용시 쌍따옴표 "" 필요
select ename " 사원 이름" from emp;
에러 -> select ename 사원 이름 from emp;
NULL 값
- 오라클은 기본적으로 null 값을 허용하며 제약조건을 이용하려 null 값을 허용하지 않을 수도 있다.
- select * from emp where empno = 7369;
사원번호가 7369번 인 사람을 찾기 위한 - select * from emp where job ='SALASMAN';
원하는 문자를 작은 따옴표로 묶어야 ''select * from emp where job ='salesman';-> error
테이블에 써있는 대소문자를 구분하여 적어야 작동 - = 같다 ,,, 자바, 자바스크립트 == 사용
- select ename, comm from emp where comm is null;
IS NULL, IS NOT NULL 만 사용가능.
select ename, comm from emp where comm = null;
null 에는 = 사용 불가능 - select empno, ename, comm, comm+100 from emp;
NULL 값에 100을 더해도 NULL - null 값을 가진 컬럼을 연산하기 위해서는 NVL 또는 NVL2 함수를 사용할 수 있다.
NVL(컬럼명, 기본값) NVL2(컬럼명, A,B)
select empno, ename, comm. NVL(comm,0) + NVL2(컬럼명,A,B) from emp;
null 값을 0으로 변경하여 100 을 더함
-> null 일 경우 값이 100으로 나오고 , 기본값이 100이면 200이 나옴 - 여러개의 문자열을 연결하여 하나의 문자열로 생성
select ename || job as "이름 직업" from emp;
-> SMITHCLERK - 리터럴 :
select 문장에 포함된 컬럼명 또는 별칭 이외의 문자값
반드시 문자값, 날짜 값에는 '' 을 붙인다.
select ename|| '의 직급은' ||JOB '이다' AS "사원별 직급" from emp;
-> SMITH 의 직급은 CLERK이다
큰 따옴표는 별칭에서만!!!!
나머지는 작은 따옴표 - select empno 사변, ename 이름, sal 월급, sal*12+NVL(comm,0) 연봉 from emp;
-> 7369 SMITH 800 9600 - SELECT empno 사번, ename|| '사원' 이름 from emp;
->7369 SMITH사원 - 중복행제거
SELECT distinct job from emp; - WHERE
!= | 같지 않다 |
>= | 크거나 같다 |
<= | 작거나 같다 |
- select empno 사번, ename 이름, hiredate 입사일 from emp WHERE ename = 'KING';
KING 그대로 대문자에 작은 따옴표 사용 필수!!
-> 7839 KING 81/11/17 - SELECT ename 이름, hiredate 입사날짜 from emp WHERE hiredate >='81/01/01';
-> 81년도부터 입사 가급적으로 01/01 로 작성
ALLEN 81/02/20 - select * from emp where sal > 1000 and sal <2000;
월급이 1000 에서 2000 사이인 것을 추출. - >= ,<= 임
= select * from emp where sal between '81/02/01' and '81/02/28';
꼭 작은 따옴표를!!! - select ename, deptno from emp where deptno = 10 or deptno = 20;
10번 부서나 20번 부서에 해당하는 - select ename, deptno from emp where deptno in(10); 10번 부서에 해당..
- select ename, deptno from emp where ename in('SMITH', 'KING');
이름이 스미스나 킹 인 사람 - select ename 이름, hiredate 입사날짜 from emp where hiredate in('81/12/03', '81/01/23');
이 두 날짜에 입사한 사람 - select ename 이름, sal 월급 from emp where comm is null and sal>2000;
JONES 2975 커미션이 없고 월급이 2000안되는 사람 - 다중 리스트
select ename 이름, job 직업, deptno 부서번호 from emp where (job,deptno) in(('MANAGER',20),('CLERK',30));
사원리스트에서 JOB이 MANAGER 이면서 20번 부서에 속하거나 JOB이 CLERK 이면서 30번 부서에 속하는 사원의 정보 주의해야할점: 직업을 꼭 그 소대문자로 써야 추출가능
'Daily Codig Reminder' 카테고리의 다른 글
DDL , 뷰 (0) | 2023.11.22 |
---|---|
DML DDL summary (1) | 2023.11.20 |
Coding Summary (1) | 2023.11.20 |
Database Summary (1) | 2023.11.19 |
Daily Reminder (0) | 2023.11.16 |