2015. 2. 14. 20:35





SQL  

Structured Query Language의 약자이다.

구조화된 쿼리 언어이다. 

사람이 원하는 바를 DBMS프로그램에게 알려주는 언어이다. 


* 오라클에 연습용 계정으로 로그인하기


sqlplus scott/tiger



*오라클 서버가 꺼져 있을 때 켠 후 로그인하기


sys/oracle as sysdba

startup

conn scott/tiger


* 사용자 계정 모양으로 프롬프트 바꾸기


오라클의 sqlplus scott/tiger로 접속 한 후 

SET sqlprompt "_USER>" 


입력하면 

현재 접속해 있는 계정이름으로 변경되어 있으므로, 

편리하게 작업할 수 있다. 


1. desc(Describe 의 약자) 명령어


특정 테이블에 어떤 칼럼이 있는 조회하는 명령어



대부분의 DBMS는 데이터를 표같은 공간에 저장을 하게된다.

이 표를  DBMS는 테이블이라고 부른다.


2. select 


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


- 모든 칼럼 조회하기

칼럼명/표현식 대신에 * 를 사용한다. 




- 원하는 칼럼만 조회하기

select 뒤에 원하는 칼럼명을 넣고 조회를 하면 된다. 

칼럼이 여러개일 경우 ,(콤마)로 구분하고 칼럼명을 여러개 적어주면 된다. 



11g, 12c 오라클 버전에 따라서 약 1,2건 정도의 결과가 차이가 날 수 있으니 신경쓸 거 없다. 


* 칼럼 길이 조정하는 방법

터미널 작업시에 한눈에 원하는 정보를 화면으로 보기를 원한다면 다음 명령어를 잘 사용하자.


- 데이터가 숫자일 경우

문법 : COL empno FOR 9999

empno의 칼럼의 길이를 숫자 4자리 까지 들어가게 설정한다. 


- 데이터가 문자일 경우

문법 : COl ename FOR a8

ename이란 칼럼의 길이를 8바이트까지 보여주도록 설정한다.


- 한 화면에 출력 가능한 줄 길이 설정 (가로길이 설정)

문법 : SET LINE 200

한 화면을 가로로 200 바이트 까지 보여준다. 


- 한 페이지에 출력 가능한 줄 수 설정(세로길이 설정)

문법: SET PAGES 50

한 페이지에 50줄까지 출력한다. 


참고로 소문자로 써도 적용이 된다. 



3 표현식을 사용해서 출력

표현식(Experssion) 

칼럼 이름 외에 출력하기를 원하는 내용을 의미한다. 

select 구문 뒤에 ' (홑따옴표)로 묶어서 사용한다. 





'교수님''s 매너최고!!' 부분을 표현식이라고 하고 리터럴(literal) 상수(문자)' 라고 한다.

아주 많이 사용되므로 알아두자

여기서 주의할 점은 리터럴 안에 홑따옴표가 들어갈 경우 홑따옴표 1개의 출력을 위해서는

2개의 홑따옴표, 칼럼명에서 보면 알 수 있듯 '' 2개를 사용해야 한다는 점을 잊지말자.


4 칼럼별칭 사용하여 출력하기 

컬럼 별칭 사용하기 전



칼럼 별칭 사용 후

아래 화면과 같이 칼럼이름을 임시적으로 볼 때 바꾸어서 보여줄 수 있는 기능을 칼럼별칭(column Alias)라고 한다.

반드시 쌍따옴표로 묶어줘야 할 때는 별명에 공백, 특수문자, 대소문자 구분이 필요할 때이다. 

영어  AS 는 써도 되고 안써도 상관없기 때문에 주로 칼럼명 "원하는 칼럼명" 이렇게 사용한다. 




5 distinct 

중복된 값을 제거하고 출력한다. 

데이터 조회시 중복된 데이터를 빼고 보고 싶을 때 사용한다. 

원래는 13건이 나오는데 distinct 키워드를 사용하면 중복된 데이터가 제거되고 3건의 데이터만 볼 수 있다. 



사용시 주의점!

distinct 키워드는 1개의 칼럼에만 사용해도 모든 칼럼에 적용된다.

이로 인해 뜻하지 않게 성능저하가 발생할 수 있으므로 주의해서 사용해야 한다. 


oracel 9i 버전 : distinct 키워드 만나면 정렬을 자동으로 해서 심각한 속도 저하를 발생시켰다.

oracel 10g 버전 : HASH 알고리즘의 사용으로 정렬을 하지 않는다. 그래서 성능이 향상되었다.  

HASH 알고리즘 : 1을 넣으면 1이 나오고, 결과가 1이면 입력이 1인 것을 할 수 있는, 입력과 결과가 같은 알고리즘이다.


반드시 select 키워드 다음에 와야한다. 그렇지 않으면 에러가 발생한다.

뭣 모르고 쓰면 속도가 엄청 느려지기때문에 반드시 꼭꼭 써야할 쿼리에만 적용을 하자!!!!!!욕먹기 싫으면!!!!


6 연결(합성 concatenation) 연산자로 칼럼을 붙여서 출력

데이터 조회시 서로 다른 칼럼을 마치 하나의 칼럼처럼 연결해서 출력해야 할 경우가 있다. 

이때 사용하는 연산자 

|| 파이프 기호를 두 번 사용한다.  




연결 연산자를 사용한 컬럼은 오라클에서 1개의 컬럼으로 인식한다. 


아래와 같이 리터럴과 함께 사용하는 경우가 많다. 

오라클 백업/복구 관련작업이나 관리 작업할 때 아주 많이 사용한다. 


7 원하는 조건만 골라내기 - where절 사용

데이터 조회시 원하는 데이터만 보기 위해서 where절을 사용한다. 


SELECT [Column or Expression]

FROM [Table or View]

WHERE 원하는 조건;


사용시 주의

where 절에서 숫자는 상관없지만, 문자와 날짜를 조회할 때는 반드시 '' 홑따옴표를 붙여야 한다!!!

또, 문자 조회시 대소문자를 꼭 구분 해야 한다. 

날짜는 홑따옴표를 사용해야하지만, 대소문자를 구분하지는 않는다.


오라클 날짜에서 주의해야 할 점

윈도우용 오라클/유닉스계열(리눅스포함) 날짜표시 형식이 서로 다르다. 

윈도 : 80/12/17

유닉스 : 17-DEC-80 / 17-dec-80 도 같다.(대소문자 구분안함)


8 sql에서 기본 산술연산자 사용

+,-,*,/ 모두 다 사용 가능하다. 


단, 산수에서처럼 덧셈, 곱셈 ,나눗셈이 동시에 나올 경우는 우선순위를 주의해서 사용해야한다. 


9 다양한 연산자 활용 방법



부등호 사용

sal가 4000과 같거나 그 이상인 값은 조회해서 보여준다.



ename의 시작이  W하거나 그 이후에 오는 알파벳을 보여준다.


리눅스에서는 날짜형식이 아래와 같지만 , 아래 에러가 난 이유는 윈도우 형식의 날짜로 비교를 해주었기 때문이다.


아래와 같이 날짜형식을 동일하게 해서 조건을 주면 정상적인 값이 조회가 된다. 



between 연산자 사용

반드시 작은 값을 앞, 큰 값을 뒤에 사용해야 한다.

두 값을 모두 포함하는 결과를 출력한다. 

2000이상 3000이하!


하지만 특정 구간의 데이터 조회시 가급적 between 연산자 대신에 비교 연산자를 사용하는 것을 권장한다

둘 다 같은 결과를 출력해주지만, 비교 연산자가 훨씬 속도가 빠르다. 




한글 검색시 기억할 사항

한글은 between 연산시 시작범위는 포함, 끝 범위는 제외


Posted by 성장하는yw