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 |