-
[SQL] SQL 기초 -1개발 강의 정리/SQL 2021. 5. 10. 18:26
20210510 SQL의 기초
<SELECT 문>
SELECT [컬럼, 컬럼, ... | * ]
FROM 테이블명:
<테이블 구조 검색>
DESC 테이블명;
----- -- ------------
SNO VARCHAR2(8)
SNAME VARCHAR2(50)
SEX VARCHAR2(4)
SYEAR NUMBER(1)
MAJOR VARCHAR2(50)
AVR NUMBER(4,2)
<현재 스키마에 포함 된 테이블 검색>
select * from tab;
---------------------------------
COUNTRIES TABLE
<오라클의 데이터타입>
CHAR() : 고정길이 문자 데이터 타입 /미리 자리가 잡힘./가입 일자 : 20210509 => CHAR(8)
VARCHAR2() : 가변길이 문자열 타입 /최대 길이가 정해져있고 입력 값 만큼 자리 차지. /VARCHAR (20)
NUMBER : 숫자.
DATE :
<SELECT 절을 이용한 수식 검색> : 더미 테이블 DUAL
SELECT 수식 FROM DUAL;
ex) SELECT 2+3 FROM dual;
-루트 함수 SQRT()
ex)
select sqrt(4) from dual;
-----결과------
2
-라운드 함수ROUND(컬럼명, 소수점 자리수)
ex)
ROUND(avr*(4.5/4.0),1)
----결과---
1.1
2.1
2.4
...
select round(ln(4),2) from dual;
-계층 쿼리
Select level
from dual
connect by level <=10;
-----결과-----
1
2
3
4
5
6
7
8
9
10
<Alias를 이용한 검색>
SELECT 컬럼 AS "별명" , 컬럼 AS "별명" ...
FROM 테이블 명;
이중 따옴표 쓰는 경우 - 대소문자 구분할때, 공백사용, 특수문자.
>많이 쓰이진 않음
SELECT ENO 사번, ENAME 이름, JOB 업무 FROM EMP;
>>논리명으로 바꾼 뒤에 결과를 다운 받아서 엑셀로 내보낼수 있기 때문에 한글명으로 바꿔 사용한다!
<수식을 이용한 검색-Alias>
SELECT 수식 [AS 별명]
FROM 테이블명;
ex) SELECT ENO 사번, ENAME 이름, SAL*12 "연간 급여" FROM EMP;
>>만약 수식이 들어가는 컬럼에 null 이 있으면? >null 로 나온다.이중따옴표보다는 언더바를 많이 사용한다.
Alias 컬럼은 숫자로 시작 X
--사원의 연봉을 검색한다.
SELECT eno 사번, ename 이름 , sal 급여, comm 보너스, sal*12+comm 연봉 from emp;보너스가 null 일 경우 연봉자체가 null처리가 된다.
<null연산을 위한 함수. (오라클 제공)>
NVL(Null이 있는 컬럼명, 대체할 값)
>Null 값이 있을 경우는 대체할 값으로 출력
>Null 값이 없을 경우는 원래 값으로 출력.
>>대체할 값에는 문자열도 사용 가능하다.
<연결 연산자와 중복 제거>
-연결 연산자
SELECT 컬럼 || '리터럴' || ...
FROM 테이블명;
>숫자를 제외하고는 단일인용부호(' ')를 사용해야한다.
ex)
Select ename || ' ' || sal 이름_급여 from emp;
Select ename || '의 업무는' || job ||'입니다.' 이름급여 from emp;||가 +보다 우선순위가 높기 때문에 +연산자를 먼저 사용할경우에 괄호 처리.
우선순위 상관 없이 계산식 쓸때 괄호 처리 하면 편함
-중복제거
DISTINCT : 중복된 값은 한번만 출력
ALL: 중복 상관 없이 출력
DINSTINCT
-성능에 영향을 많이 미치는 키워드임.
정렬해야하기 때문에.
데이터가 크면 퍼포먼스에 영향.
가급적 사용하지 않는 것이 좋음
<정렬을 이용한 자료 검색>
SELECT
FROM
ORDER BY 컬럼 [DESC | ASC]
검색항의 순서로도 가능
SELECT 컬럼 1, 컬럼 2, 컬럼3, FROM 테이블명 ORDER BY 2;
>> 컬럼 2 기준으로 정렬.
-묶음 검색
select job 업무, eno 사번, ename 이름, sal 급여 from emp
order by 업무;<WHERE 절>
SELECT [DISTINCT | ALL] 컬럼
FROM 테이블 명
WHERE 조건
ORDER BY 컬럼 [ASC | DESC];
WHERE 조건 안에 연산을 넣을 수는 있지만 퍼포먼스가 떨어지기 때문에 가급적이면 컬럼을 넣는게 좋다.
<널과 비교 연산>
IS NULL
IS NOT NULL
<관계 연산자와 LIKE 연산자>
SELECT [DISTINCT | ALL] 컬럼
FROM 테이블 명
WHERE 조건 [관계연산자 조건]
ORDER BY 컬럼 [ASC | DESC];
AND, OR, NOT
여러조건을 동시에 사용.
두개 이상의 연산자를 이용할때는 괄호를 이용해서 연산의 우선순위를 결정한다.
우선순위
AND가 먼저 OR가 다음.
<LIKE 연산자>
SELECT [DISTINCT | ALL] 컬럼
FROM 테이블 명
WHERE 컬럼 LIKE '비교 문자열'
ORDER BY 컬럼 [ASC | DESC];
WHERE 절에 사용되는 문자 전용의 비교 연산자.
문자열의 일부만으로 검색하는 경우 사용
문자열에서 패턴을 찾아주는 연산자.
두개의 와일드 문자를 이용한다.
> '_' : 반드시 한 개의 문자를 대체한다.
ex ) '경_' :경으로 시작하는 두 글자 단어
ex2) '_경' : 경으로 끝나는 두 글자 단어
ex3) '_경_': 중간에 경이 들어간 세 글자 단어.
>'%' : 문자열을 대체한다. (문자가 없는 경우도 포함)
ex ) '경%' :경으로 시작하는 모든 문자열
ex2) '%경' : 경으로 끝나는 모든 문자열.
ex3) '%경%: 중간에 경이 들어간 모든 문자열
>>위치가 중요!
>'%이#%%' : '이%'가 포함된 문자열.
'개발 강의 정리 > SQL' 카테고리의 다른 글
[SQL] SQL 기타 문법 (0) 2021.05.17 [SQL] 단일 행 함수 (0) 2021.05.14 [SQL] 집합 연산자 & 그룹 함수 (0) 2021.05.13 [SQL] ANSI QUERY (0) 2021.05.12 [SQL] SQL 기초 -2 (0) 2021.05.11