본문 바로가기

SQL + PL/SQL/SQL

SQL - SELECT

DESC 

문법: DESC 테이블명 ;

Describe 의 약자, 특정 테이블의 칼럼 내역을 조회




SELECT

문법: SELECT [칼럼명/표현식] FROM [테이블명/뷰명] ;


데이터 조회




1. 모든 칼럼을 조회할 때 * <-- 별을 사용

2. 여러 칼럼을 조회할 때 칼럼1,칼럼2, <-- 콤마를 사용해 구분

3. 칼럼명대신 문자열 쓸때, from dual 이라고 쓰면 됨.



4. 표현식 = Expression = 리터럴 상수 = literal,  칼럼 이름 이외에 출력하기를 원하는 내용을뜻함, 사용할 때 ' ' 홑따음표로 묶어서 사용



5. 칼럼 별칭 = Column Alias 

문법: SELECT [칼럼명1 "별칭1" , 칼럼명2 AS "별칭2" , 칼럼명3 별칭3] FROM [테이블명] ;

출력될 때 임시로 원래 칼럼명을 별칭으로 바꿔서 보여줌 

즉, 칼럼명 뒤에 ""를 써도, AS라는 키워드를 사용해도, 그냥 별칭을 써도 다 똑같음, 편한 방법으로 쓰면 됨

대신! "" <-- 이렇게 쌍따옴표로 감싸야 하는 것은 공백이나, 특수문자, 대소문자 구분이 필요할 때 반드시 써야함!




6. DISTINCT 

문법: SELECT DISTINCT [칼럼명] FROM [테이블명]

중복된 값 제거하고 출력

모든 칼럼에 적용되므로, 성능 저하가 발생함, 주의해서 사용할 것 (왠만하면 안쓰는게 좋을듯)

DISTINCT는 반드시 SELECT 키워드 다음에 와야함




7. 연결연산자 (Concatenation)

문법: SELECT [칼럼명1] || [칼럼명2] FROM [테이블명]

서로 다른 두 칼럼을 한꺼번에 출력할때 유용하게 사용, 이름같은것들

바 기호 두개를 사용 || 해서 하나의 칼럼처럼 화면에 출력, 여러개 사용할 수도 있고, 리터럴문자 사용해서도 사용가능

 ' <-- 홑따옴표, single quotation을 표시하고 싶을때 ''' 이렇게가 아니라 ''''이렇게 해야지 '로 나옴.. 신기함.




8. 산술연산자

문법: SELECT [칼럼명]+,-,x,/[숫자] FROM [테이블명]

더하기랑 곱하기 같이 있으면 곱하기가 먼저 수행되고,, 이런 우선순위가 똑같이 적용

괄호 ()를 사용해서 우선순위 조정 할수도 있음! (칼럼명+숫자)*숫자




9. WHERE 절 사용

문법: SELECT [칼럼명/표현식] FROM [테이블명] WHERE [원하는조건]

WHERE 절은 FROM 절 다음에 와야함! 


원하는 조건을 쓸때

WHERE [칼럼명 연산자종류 조건] ;

eg. deptno = 10 / sal > 4000 / ename = 'SCOTT' / hiredate = '23-MAY-01'

--> 문자와 날짜는 홑따옴표 ''로 묶어줘야 함, 안에 대소문자도 구별, 날짜는 대소문자 구별안함)

즉, 검색 조건을 쓸 때 숫자 이외에는 홑따옴표 '' 로 묶어주고, 대소문자 구분한다


 연산자 종류

 설명

 =

 같은 조건을 검색

 !=, <> 같지 않은 조건을 검색
 >

 큰 조건을 검색

 >= 크거나 같은 조검을 검색 (공백,순서 조심해서 쓰기!!)
 < 작은 조건을 검색
 <= 작거나 같은 조건을 검색 (공백,순서 조심해서 쓰기!!)

 BETWEEN a AND b

 A와 B 사에이 있는 범위값을 모두 검색
 IN(a,b,c,)

 A이거나 B이거나 C인 조건을 검색

 Like

 특정 패턴을 가지고 있는 조건을 검색

 Is Null / Is Not Null

 Null 값을 검색 / Null이 아닌 값을 검색

 A AND B

 A 조건과 B 조건을 모두 만족하는 값만 검색

 A OR B A 조건이나 B 조건 중 한 가지라도 만족하는 값을 검색

 NOT A

 A가 아닌 모든 조건을 검색



연산자 유의사항!

비교 연산자

 >= , <= 를 쓸 때 부등호와 = 사이에 공백이 있으면 안됨! 순서가 바뀌어도 안됨! 부등호 다음 =


Between 연산자

두개의 값중에 작은 값이 먼저, 큰 값은 다음, 두개의 값은 포함이 되서 나옴! (숫자 뿐 아니라 문자도 마찬가지)

하지만 한글은 앞의 값은 포함이 되지만 뒤의값은 포함이 안됨 

예를 들어 between 자 and 차 했을때, ㅈ으로 시작하는 모든 값은 출력이 되지만 차 << 는 포함이 되지 않는다.

between 연산자는 성능 저하를 야기하기 때문에 되도록이면 비교 연산자를 사용해서 쓸 것! 속도가 더 빠름

between 60 and 80 이면 >=60 <=80 이런식으로 쓸 것!


IN 연산자

WHERE 칼럼명=a or 칼럼명=b or 칼럼명=c 이렇게 쓰면 너무 길어지니까 

이때 쓰는게 IN(a,b,c) 

or와 같아서 조건 중 하나만 맞아도 출력 됨


Like 연산자

% --> 글자수 제한 없고 어떤 글자가 와도 상관 없음

_ --> 글자수는 한 글자만 올 수 있고 어떤 글자가 와도 상관없음 = ? 를 써도 됨.

예를 들어, 김씨 성을 가진 사람을 찾으면 '김%' << 외자가 될수도, 이름이 4글자가 될수도 있음

하지만 김씨 성을 가지고 이름 글자수가 3글자 이면 '김__' 

김씨 성을 가지고 이름 3글자에 맨 뒤에 글자가 욱 인 사람을 찾을 거면 '김_욱' 


Null 연산자

null 이란 어떤 값인지 모르겠다! 라는 의미, 값이 ? 인 걸로 이해하면 될듯

그래서 어떤 연산을 수행해도 결과값은 늘 null 이 된다 ? + 30 은 당연히 ? 이겠지요.

그래서 = 대신 IS 를 사용해서 쓴다. IS NULL / IS NOT NULL 이렇게


AND / OR 연산자

AND 와 OR 를 같이 써야 할 경우는 우선 순위를 조심해서 사용하기, 우선 순위인 것을 괄호로 묶어 주면 된다.

예를 들어, 2학년 학생 중에서 키가 180 보다 크거나, 몸무게가 70보다 큰 학생

  where grade=2

  and (height > 180 or weight > 70) ; << 이런식으로 괄호를 묶어 우선순위 챙기기.





8. ORDER 절

문법: SELECT [칼럼명/표현식] FROM [테이블명] ORDER BY [조건] ; 

데이터가 많을 경우 정렬해서 보고 싶을 때 씀

오름차순(처음값보다 다음값이 오르는 경우, 가나다라,1234,ABCD,과거현재) 과 내림차순 중 기본값은 오름차순


ORDER BY 칼럼명

ORDER BY 칼럼명 ASC --> ascending, 오름차순으로 정렬, 기본값이기 때문에 ASC 안써도 오름차순으로 정렬

ORDER BY 칼럼명 DESC --> descending, 내림차순으로 정렬,

ORDER BY 숫자 --> SELECT 절에서 (숫자)째 칼럼으로 정렬,

ORDER BY 칼럼별칭 --> 설정한 칼럼별칭으로 정렬도 가능


데이터양이 많으면 속도저하에 영향을 미치니까 최대한 피할 것!

두개의 칼럼을 이용하고 싶으면 ORDER BY 칼럼1, 칼럼2 <-- 이런식으로 콤마로 나눠주기




9. 집합 연산자

여러 건들의 데이터들을 연산

두 집합의 select 절에 오는 칼럼 개수와 칼럼 데이터형이 동일해야함!!!

종류는 UNION / UNION ALL / INTERSECT / MINUS

각각 중복값 제거 하고 두 집합을 더한 결과 / 중복값 포함 두 집합을 더한 결과 / 교집합 / 차집합

MINUS 를 쓸 때는 어떤것이 우선순위인지 주의해서 쓸것!






'SQL + PL/SQL > SQL' 카테고리의 다른 글

SUB QUERY - 서브쿼리  (0) 2013.01.04
JOIN  (0) 2013.01.04
SQL 그룹함수  (0) 2013.01.04
SQL 단일 행 함수 - 문자함수  (0) 2012.12.23
SQL  (0) 2012.12.19