select * from 테이블명
2. where 조건절 포함
select * from 테이블명 where 필드명1 = '필드밸류1 and 필드명2 = '필드밸류2'....
3. limit
select * from 테이블명 limit 시작점, 끝점
4. 카운트 구하기
select count(필드명 or *) from 테이블명
5. 중복되지 않는 값구하기
select distinct(필드명) from 테이블명
6. max값 구하기
select max(필드명) from 테이블명
---------------------------------------------
목표
- SQL select 문의 기능 설명
- 기본 select 문 실행
- SQL 문과 iSQL*Plus 명령 구별
SQL select 문의 기능
: select문은 데이터 베이스에서 정보를 검색합니다. SELECT문을 사용하여 다음을 수
행할 수 있습니다.
- 프로젝션 : SQL의 프로젝션 기능을 사용하면 테이블에서 질의 결과로 반환될 열을
사용자 가 필요한 만큼 선택할 수 있습니다.
- 선택 : SQL의 선택기능을 사용하면 테이블에서 질의 결과로 반환될 행(row)을 선택
할 수 있으며 다양한 조건을 사용하여 표시할 행을 제한할 수 있습니다.
- 조인 : SQL의 조인 기능을 사용하면 서로 다른 테이블 간에 링크를 생성하여 각 테이
블에 저장된 데이터를 함께 가져올 수 있습니다. 조인에 대한 내용은 다른 단원에서
자세히 설명합니다.
기본 SELECT문
SELECT * |{[DISTINCT] cloumn|expression [alias],...} FROM table; |
- SELECT는 표시할 대상열을 지정합니다.
- *는 모든열을 의미 합니다. 각 column명을 입력하여도 됩니다.
- DISTINCT는 중복되는 열을 생략합니다.
- column|expression은 지정한 열 또는 표현식을 선택합니다.
- alias는 선택된 열에 다른 머리글 이름을 붙여 줍니다.
- FROM은 대상 열을 포함하는 해당 테이블을 지정합니다.
모든 열 선택
SELECT * FROM table; |
- select 키워드 뒤에 (*)를 사용하면 테이블에 있는 데이터의 모든 열을 표시할 수 있습
니다.
특정 열 선택
SELECT department_id, location_id FROM table; |
- 위에서 말한 (*)대신 특정열(구분자 ","사용)을 주어도 select문이 실행 됩니다.
SQL문 작성
- SQL문은 대소문자를 구분하지 않습니다.
- SQL문은 하나 이상의 줄에 입력할 수 있습니다.
- 키워드는 약어로 쓰거나 여러 줄에 나눠 쓸 수 없습니다.
- 절은 일반적으로 서로 다른 줄에 씁니다.
- 들여쓰기를 사용하면 SQL문을 좀 더 읽기 쉽게 작성할 수 있습니다.
- 일반적으로 키워드는 대문자로 입력하고 테이블 이름, 열 등 다른단어는 모두 소문자
로 입력합니다.
널 값 정의
- 널 값은 알 수 없는 값, 사용할 수 없는 값, 할당할 수 없는 값, 적용할 수 없는 값.
- 널은 0또는 공백과 다릅니다.
SELECT last_name, job_id, salary, commission_pct FROM employees; |
: 한 행의 특정 열에 데이터 값이 없으면 그 값을 널이라고 하거나 널을 포함한다고 합
니다. 널은 알 수 없는 값, 사용할 수 없는 값, 할당할 수 없는 값, 적용할 수 없는 값을
의미하며 0이나 공백과는 다릅니다. 0은 숫자고 공백은 하나의 문자입니다.
: 모든 데이터 유형의 열에는 널이 포함될 수 있습니다. 하지만 NOT NULL및 PRIMARY
KEY등의 제약 조건이 지정된 열에는 널을 사용할 수 없습니다.
: EMPLOYEES테이블의 COMMISSION_PCT열의 경우 영업과장과 영업사원만이 커미션
을 받을 수 있습니다. 다른 사원들은 커미션을 받을 수 없는데, 이 경우 널을 사용합니
다.
산술식의 널 값
- 널 값을 포함하는 산술식은 널로 평가됩니다.
SELECT last_name, 12*salary*commission_pct FROM employees; |
: 산술식에서 열의 값이 널이면 결과는 널입니다. 예를 들어, 숫자를 0으로 나누면 오류
가 발생하지만 널로 나누면 결과는 널이거나 알 수 없습니다.
열 별칭 정의
- 열 머리글의 이름을 변경합니다.
- 계산식에 대한 열머리를 지정할 때 유용합니다.
- 열 이름 바로 뒤에 사용합니다. 열 이름과 별칭 사이에 선택적으로 AS키워드를 사용
할 수 있습니다.
- 공백 또는 특수 문자가 있거나 대소문자를 구분할 경우 큰 따옴표를 사용합니다.
: 질의 결과를 표시할 때 iSQL*Plus는 일반적으로 선택한 열의 이름을 열 머리글로 사용합니다. 이러한 머리글은 내용을 제대로 설명하지 못하므로 이해하기 어렵습니다. 열 별칭을 사용하면 열 머리글을 변경할 수 있습니다.
: SELECT목록에서 열 다음에 공백을 구분자로 사용하여 별칭을 지정합니다. 기본적으
로 별칭 머리글은 대문자로 표시됩니다. 별칭이 공백 또는 특수 문자(# 또는 $등)를 포
함하거나 대소문자를 구분할 경우에는 큰 따옴표("")로 묶어야 합니다.
열 별칭 사용
SELECT last_name AS name, commission_pct comm FROM employees; |
- 모든 사원의 이름과 커미션 비율을 표시합니다. 예제에서는 선택 사항인 AS키워드가
열 별칭 이름 앞에 사용되었는데 질의 결과는 AS 키워드의 사용에 관계없이 동일합니
다. 또한 SQL문에 열 별칭인 name및 comm이 소문자로 되어 있지만 질의 결과가 열 머
리글이 대문자로 표시됩니다.
SELECT last_name AS "name", salary*12 "Annual Salary" FROM employees; |
- 모든 사원이 이름과 연봉을 표시합니다. Annual Salary에는 공백이 포함되어 있으므로
큰 따옴표로 묶여 있습니다. 출력 결과를 보면 열 머리글이 열 별칭과 같음을 알 수 있
습니다.
연결 연산자
- 열 또는 문자열을 다른 열에 연결합니다.
- 두 개의 세로선(||)으로 표시합니다.
- 문자식에 해당하는 결과 열을 생성합니다.
연결 연산자 사용
SELECT last_name || job_id AS "Employees" FROM employees; |
- LAST_NAME과 JOB_ID가 연결되고 별칭으로 Employees가 지정되었습니다.
- 사원의 이름과 업무 코드가 결합되어 하나의 열로 출력됩니다.
- 별칭 이름 앞의 AS키워드로 인해 SELECT절을 파악하기가 쉽습니다.
리터럴 문자열
- 리터럴은 SELECT목록에 포함된 문자, 숫자 또는 날짜입니다.
- 날짜 및 문자 리터럴 값은 작은 따옴표로 묶어야 합니다.
- 각 문자열은 각 행(row)이 반환될 때마다 한 번씩 출력됩니다.
: 리터럴은 열 이름이나 열 별칭이 아니면서 SELECT목록에 포함된 문자, 숫자 또는 날
짜이며 각 행이 반환될 때마다 출력됩니다. 자유로운 형식의 텍스트인 리터럴 문자열
은 질의 결과에 포함되어 SELECT목록의 열과 동일하게 취급됩니다. 날짜 및 문자 리
터럴은 반드시 작은 따옴표(' ')로 묶어야 하지만 숫자 리터럴은 묶지 않아도 됩니다.
리터럴 문자열 사용
SELECT last_name || ' is a ' || job_id AS "Employee Details" FROM employees; |
- 모든 사원의 이름과 업무 코드를 표시하며 열 머리글은 Employee Details입니다.
SELECT문에서 작은 따옴표 사이에 공백을 두어 출력 결과를 알아보기 쉽도록 하였습
니다.
중복 행
- 질의는 기본적으로 중복 행을 포함한 모든 행을 표시합니다.
SELECT DEPARTMENT_ID FROM employees; |
: 특별히 표시하지 않는 한 iSQL*Plus는 중복 행을 제거하지 않은 상태로 질의 결과를
표시합니다. 예제는 EMPLOYEES테이블의 모든 부서 번호를 표시하며 부서 번호가 반
복되어 있음을 볼 수 있습니다.
중복 행 제거
- SELECT절에서 DISTINCT키워드를 사용하여 중복행을 제거합니다.
SELECT DISTINCT department_id FROM employees; |
: 결과에서 중복 행을 제거하려면 SELECT절에서 SELECT키워드 바로 다음에 DISTINCT
키워드를 넣어야 합니다. 예제에서 EMPLOYEES 테이블에는 실제로 행이 20개 포함되
어 있지만 고유한 부서 번호는 7개 뿐이다.
: DISTINCT수식자 다음에 여러 열을 지정할 수 있습니다 DISTINCT수식자는 선택한 모든
열에 영향을 주므로 결과에는 모든 가능한 열 조합 중 고유한 열 조합이 모두 표시됩니
다.
테이블 구조 표시
DESC[RIBE] tablename |
- 이 명령은 열이름과 데이터 유형뿐 아니라 열에 반드시 데이터가 포함되어야 하는지
여부도 표시합니다.
: tablename - 사용자가 액세스할 수 있는 기존 테이블, 뷰 또는 동의어의 이름입니다.
* 데이터 유형 설명
NUMBER(p,s) 최대 자릿수가 P이고 소수점 이하 자릿수가 s인 숫자 값입니다.
VARCHAR2(s) 최대 크기가 s인 가변 길이 문자 값입니다.
DATE B.C.4712년 1월 1일 ~ A.D.9999년 12월 31일 사이의 날짜 및 시간 값.
CHAR(s) 크기가 s인 고정 길이 문자 값입니다.
'Security' 카테고리의 다른 글
SQL-INJECTION (GOOD!) (0) | 2007.07.15 |
---|---|
Command Injection Flaws (0) | 2007.07.15 |
네이버카페 모든글보기(등급무시) (3) | 2007.07.14 |
아래 XTrap 바이패스 만드는 법 (0) | 2007.07.09 |
Cheat v.42 (0) | 2007.07.09 |