2020. 5. 6. 15:40ㆍDB
SQL
- Structure Query Language: 구조적 질의 언어
- 관계형 데이터베이스 작업을 위한 언어
1. 분류
1) DDL(Data Definition Language) - DBA(Data Base Administrator의 언어)
- 구조를 만들고 변경,삭제하는 언어
Create, Alter, Drop, Truncate(테이블 삭제), Rename
2) DML(Data Maniplate Language - 개발자의 언어)
- 데이터를 삽입,삭제,갱신하는 언어
Insert, Update, Delete
3) DQL(Data Query Language - 개발자의 언어)
- 데이터를 조회하는 언어
- DB이론에서는 DQL을 DML로 간주
select: 데이터 조회
4) TCL(Transaction Control Language - 개발자의 언어)
- 트랜잭션을 제어하는 언어
- DB이론에서는 DCL로 간주
Commit, Rollback, SavePoint
5) DCL(Data Control Language - DBA의 언어)
- 보안, 무결성, 회복, 병행제어 등에 관련된 언어
Grant: 권한 부여
Revoke: 권한 회수
2. 데이터베이스 개체
1) Table: 실제 데이터가 저장되는 개체
2) Sequence: 일련번호 ex) auto_increment
3) View: 자주 사용하는 select구문을 미리 만들어놓은것
4) Index: 데이터를 빠르게 찾을수 있도록 해주는 개체
5) Synonym: 별명(종속을 제거할 수 있음, 위치 독립성)
6) Stroed Precudure: 자주 사용하는 sql구문을 하나의 이름으로 묶어놓은것
-> 리턴값이 없어도 됨.
7) Function: 자주 사용하는 코드를 하나의 이름으로 묶어놓은것
-> sql에서는 반드시 리턴값이 있어야 함.
8) Trigger: DML문장을 수행하기 전이나 수행 후 자동으로 동작하는 개체
3. SQL규칙
- sql에서는 예약어와 테이블이름 열 이름은 대소문자 구분 x
- 오라클은 테이블 이름, 열 이름에 대문자를 사용하고 MySQL은 소문자를 사용
- 문장의 끝은 ; 인데 db접속프로그램에서는 블럭을 잡고 실행하기 때문에 생략해도 됨.
- java에서는 sql입력할 때 ; 붙이면 안됨
SELECT: 데이터 조회
1. 기본형식(실행순서)
5- select 조회할 표현식 나열(열을 분리)
1 - from 테이블 이름 나열
2 - where 조건 나열(행을 분리)
3 - group by 그룹화 할 표현힉 나열
4 - having 그룹화 한 이후의 조건 나열(행을 분리)
6 - order by 정렬할 표현식을 나열
from,select는 필수 나머지는 선택
3. 테이블의 전체 데이터 조회
SELECT *
FROM 테이블이름;
ex) emp, dept, salgrade 테이블의 전체 데이터를 조회
select * from emp;
4. 테이블에서 특정 열 조회
select 열이름나열
from 테이블나열;
ex) select empno, ename
from emp;
5. 숫자로 된 열에 산술 연산자를 이용해서 산술 연산한 결과 조회
- 날짜 데이터는 하루를 1로 계산해서 연산이 가능
- null 데이터와 연산을 하게되면 결과는 null
- NVL(컬럼이나 연산식, 값이 null인 경우 적용할 값)을 이용하면 null인 데이터를 기본값으로
변경해서 연산을 하는 것이 가능
ex1) emp테이블에서 ename과 sal에 12를 곱한 결과를 조회
select ename,sal*12 from emp
ex2) emp테이블에서 ename sal*12 + comm결과를 조회
select ename,sal*12 + comm from emp
ex3) emp테이블에서 ename sal * 12 + comm결과를 조회 comm이 null이면 0으로 계산
6. 열 이름에 ALIAS 설정
- 열 이름에 별명을 부여하는 것
- 열 이름 다음에 빈 칸을 두고 별명을 기재하면 됨.
- 중간에 AS 삽입
- 별명에 공백,영문 대문자는 " " 로 감싸야함
- select 절에 기재하기 때문에 order by에서만 사용
- 연산식이나 함수의 결과를 조회할 때 많이 사용
7.열 결합 연산자 "||"
- 2개 이상의 열이나 표현식을 하나의 열로 묶어서 조회할 때 사용하는 연산자
- 오라클 만을 이용해서 보고서를 만들 때 주로 이용
ex) emp테이블에서 ename의 업무는 job입니다. 로 조회하기
select ename ||'의 업무는' || job || 입니다 from emp
8. 중복제거
- select 절에서 맨 앞에 distinct를 추가하면 중복을 제거하고 조회
- distinct뒤에 2개 이상의 열 이름이 오면 모든 열의 값이 일치하는 경우 제거됨.
하나라도 중복되지 않은 값이 있으면 조회가 됨.
- distinct는 맨앞에 한번만 나와야 하고 뒤에 나오는 모든 열에 영향을 미치게 됨.
where
select 구문에서 데이터를 행 단위로 분리하기 위한 절
*조건에 들어가는 애트리뷰트는 대소문자 구분함
ex1) emp 테이블에서 sal이 3000 이상인 사원의 empno, ename, sal을 조회
select empno, ename, sal from emp where sal>=3000;
9. 날짜
- 날짜도 숫자 데이터처럼 크기 비교가 가능
- 날짜 및 시간 표현:: to_date('날짜문자열', '날짜서식')
- yyyy:년도 4자리, mm: 월 2자리, dd: 일 2자리, hh: 시간 2자리, hh24: 24시간제, mi: 분, ss: 초
- 날짜끼리 산술연산 가능, 숫자 데이터와 산술연산이 가능
ex)emp 테이블에서 1982/01/01 이후에 입사한 사원의 ename, sal데이터를 조회
between and
- between A and B: A와 B사이(A,B포함)
- B가 A보다 크거나 같아야 함.
in
- in(값 나열): 나열된 값 중에 포함된 데이터를 조회
ex1) emp 테이블에서 job이 manager 또는 analyst인 사원의 모든 정보를 조회
select *
from emp
where job in('manager','analyst')
ex2) emp 테이블에서 deptno의 값이 10또는 30인 사원의 ename, sal, comm을 조회
단 comm이 null이라면 0으로 출력