SQL 개요

2020. 5. 6. 15:40DB

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으로 출력

'DB' 카테고리의 다른 글

Sub query  (0) 2020.05.08
JOIN  (0) 2020.05.07
HAVING  (0) 2020.05.07
SQL 개요2  (0) 2020.05.07
RDBMS  (0) 2020.05.06