-
SELECT DISTINCT EMPNO NO, ENAME NAME FROM EMP ;
SQL의 기본형식으로,
select - 뽑아낼 자료(Column 이름) 별칭, ~
from 뽑아낼 자료의 위치 (Table 이름)
;
으로 구성된다.
SELECT * FROM EMP; --부서 번호(DEPTNO)가 30인 사원을 모두 표기해주세요. . 이름, 업무, 관리자, 입사일 순서대로 표시만 SELECT ENAME NAME, JOB, MGR, HIREDATE FROM EMP --이제 조건이 나와야해 WHERE DEPTNO = 30 --아무것도 안쓰면 ASC, 내림차순 = DESC ORDER BY HIREDATE ;
*은 all의 의미
where은 조건식을 입력하기 위한다.
order by는 asc (오름차순) , desc (내림차순)으로 아무 것도 적지 않을 경우 오름차순 자동
--부서번호에 따른 위치정보를 나타내 주세요. -- 이 두 가지 정보가 다 들어있는건, DEPT테이블 SELECT DEPTNO, LOC FROM DEPT ; --SMITH가 근무하는 부서의 번호와 위치를 나타내주세요. SELECT E.ENAME, D.DEPTNO, D.LOC FROM EMP E JOIN DEPT D ON e.deptno = d.deptno WHERE E.ENAME = 'SMITH' ;
두 개의 테이블을 병합하는 것 - 교집합이 있어야해
from ~ join ~
on 교집합을 명시
SHOW USER; SELECT * FROM TAB; --TAB도 다른데 없음, TABLE의 약자. 현재 존재하는 TABLE명을 볼 수 있따. DESC EMP; -- TABLE의 정보 ; 오라클에서만 지원하는 명령어. 내림차순과는 다름. 여기서 DESC = DESCRIPTION. SELECT DEPTNO, JOB FROM EMP ;
기타 표현들.
--연봉 = SAL * 12 + COMM (보너스) -- EMPNO, ENAME, JOB, HIREDATE, SAL 월급, ... 연봉 SELECT EMPNO, ENAME, JOB, HIREDATE, SAL 월급, SAL*12+COMM 연봉 FROM EMP ;
출력할 부분에 대한 사칙연산이 가능하다.
--WHERE 구문 - 조건에 맞는 데이터만 조회하고싶을 때 SELECT * FROM EMP WHERE DEPTNO = 10 ; SELECT * FROM EMP WHERE ENAME = 'WARD' ;
조건문
SELECT * FROM EMP WHERE DEPTNO ^= 30 ; SELECT * FROM EMP WHERE DEPTNO != 30 ; SELECT * FROM EMP WHERE SAL >= 3000 AND DEPTNO =20 ;
^=, !=, <>, NOT + = 으로 일치하지 않는 정보 조회가 가능하다.
--WHERE 조건문은 앞에서부터 순차적으로 진행하기에 오류가 생길 수 있다. SELECT * FROM EMP WHERE DEPTNO = 20 AND SAL >= 2000 OR HIREDATE < '82/01/01' ; --이랬을 때, DEPTNO가 20이 아닌 애들도 출력이 되버렸다. > 82 1 1 전에 입사했거나, DEPTNO 20, SAL >= 2000인 애들이 출력된 것이다. --그래서 SELECT * FROM EMP WHERE DEPTNO = 20 AND (SAL >= 2000 OR HIREDATE < '82/01/01') ;
순서의 중요성, 아 다르고 어 다르니 주의하자.
SELECT ENAME ||'''S JOB IS '||JOB EMPLOYEE FROM EMP ; --연결 연산자 : 컬럼명 || '원하는 문자' || 컬럼명 별칭 ; 중요한건 ' ' 사이에 특수문자를 넣고싶으면 '를 앞에 하나 넣어야해 SELECT ENAME ||'SAT S_ JOB IS '||JOB EMPLOYEE FROM EMP --근데 '를 넣을때만 해당되는 거 같아 ;
combine 2 columns
2개의 columns 정보를 병합해서 표현하기 위함
특수 문자 ' 의 사용을 주의하자!
SELECT * FROM EMP E JOIN DEPT D ON E.DEPTNO = D.DEPTNO ORDER BY D.LOC DESC, JOB DESC, ENAME DESC ; --COMM에 MULL이 들어가 있는 경우 숫자 + NULL > NULL로 계산되므로 NULL이라는 값 대신에 0이 들어가도록 계산해야 한다. --그때 사용하는 함수 NVL (컬럼명, NULL을 대체할 값) -- 추가 함수 NVL2 (컬럼명, NULL일때 대체할 값, NULL이 아닐때 대체할 값) -- EMP 테이블 값에서 관리자 (mgr) 가 따로 있는 사람은 'Y'로 표시하고, 없는 사람은 'N'으로 표현 -- 상여금도 마찬가지로 SELECT E.*, NVL(COMM, 'N', 'Y') FROM EMP E ; --이거 안돼 NYL2가 뭔지 모른다는데? > 응 NYL이 아니라 NVL야
사용되는 기타 함수!
select 부분에 함수를 넣을 수 있다. ( 산출되는 결과에 반영해야 하니까 당연한 거겠지?)
SELECT DISTINCT E.JOB, E.DEPTNO, D.DNAME FROM EMP E JOIN DEPT D ON E.DEPTNO = D.DEPTNO ORDER BY E.DEPTNO --와 D.DEPTNO하면 안되넼ㅋㅋㅋㅋㅋ ;
일치해야하는 부분.
물론 e.deptno = d.deptno은 같은 것이지만, 정렬을 위해서 select 된 것과 정확히 일치시켜야 해.
- 20200824
관계형 데이터 베이스의 특징
정보 저장을 위해 테이블 이용 (행과 열로 구성)
CRUD가 다른 DBMS에 비해 쉽다
용어 정리 필수
relation : 테이블을 의미한다. (자바의 클래스라고 볼 수 있어)
relation instance : 저장되어 있는 테이블의 데이터 전체를 의미한다.
schema : 속성들의 집합 (이름, 나이, 성별, 학년 등)
tuple : 속성들의 모임으로 구성 (나이의 튜플은 19, 20, 22, 25; 성별의 튜플은 남, 여; 학년의 튜플은 1, 2, 3; 등)
cardinality = cardinal number = 대응수
domain :
대괄호는 생략 가능한 부분으로 표시된다.
세미콜론으로 하나의 명령을 한정짓는다.
WHERE에는 COLUMN명으로 구분을 하게 된다.
SELECT (화면에 나타나게끔 하고자 하는 인스턴스들)
FROM 가져올 테이블 이름
WHERE 조건 (COLUMN명으로) 비교연산자( = ) 비교값
ORDER BY 정렬할 컬럼명;
오름차순일 경우: ASC
내림차순일 경우: DESC
COLUMN에 대한 설명은 어딜가나 필수!
데이터베이스에선 데이터의 메모리 관리가 가장 중요하다.
두개의 테이블을 연결하려면 FROM 다음에 테이블 명이 2개
1. 테이블명1 별칭1, 테이블명2, 별칭2 : FROM EMP E, DEPT D
2. 테이블명1 JOIN 테이블명2 : FROM EMP E JOIN DEPT D
연결고리 = 연결조건
1.수행 - COMLUMN 찾기
2.수행 - 조건문 작성
방법1. WHERE (조건식 작성) WHERE E.DEPTNO = D.DEPTNO,
방법2. ON (조건식 작성, OR COLUMN명 작성) ON E.DEPTNO = D.DEPTNO
sql (structured query language)
1. 구조적인 질의 언어라는 뜻이며, 데이터베이스를 제어, 관리
2. 데이터베이스에서 자료를 검색 / 수정 / 삭제하는 데이터베이스 언어
3. 독자적인 문법을 갖는 db 표준 언어
명령문의 종류
1. 데이터베이스 조작어: DML (Data Manipulation Language)
Insert, update, delete문
2. 데이터 조회어 : DQL (Data Query Language)
Select문
3. 데이터베이스 정의어: DDL (Data Definition Language)
Schema, domain, table, view, index를 정의, 변경, 삭제
4. 데이터 제어어: DCL (Data Control Language)
commint, rollback, grant, revoke
5. 트랜잭션 처리어: TCL (Transaction Control Language)
DCL에서 트랜잭션을 제어하는 명령어 commit, rollback
TABTYPE = VIEW TABLE SYNONYM
' ' 이 문자를 나타내는 기본, " " 은 띄워쓰기 특수문자등을 그대로 나타내고 싶을 때 사용
띄워쓰기 항상 생각해둬야해, 자바랑 달라
WHERE 절에 사용 가능한 기타 연산자
1. BETWEEN 조건 A AND 조건 B
2. IN (LIST) LIST의 값 중 어느 하나와 일치하는 데이터를 출력
3. LIKE 문자 형태로 일치하는 데이터를 출력 (%, _ 사용)
4. IS NULL NULL 값을 가진 데이터 출력
5. NOT BETWEEN A AND B A와 B 사이에 있지 않은 데이터를 출력 (A, B 포함 안해)
6. NOT IN
7. NOT LIKE
8. IS NOT NULL
ORDER BY는 뒤에 컬럼명, 컬럼별칭, 숫자 이렇게 총 3가지로 표현할 수 있따. 여기서 숫자는 COLUMN 번호
' ' 안의 문자열에 특수문자를 넣으려면 '를 하나 더 넣어야해서 쿼리문에 '를 넣기 위해 '''를 썼다.
정렬은 결과물을 나타냄에 있어서 E나 D가 처음 결과물을 가져오는 건 좋ㄹ은데, 나타낼때는 가져온 걸 써야지!!
이름, 날짜, 문자도 크기를 비교할 수 있따. (알파벳 순으로)
<
>
=
<> 제외하고 다
- 20200824