SELECT 문은 데이터베이스에서 정보를 검색합니다. SELECT 문으로 다음을 수행할 수 있습니다.
• 프로젝션: query에 의해 반환되는 테이블의 열을 선택합니다. 필요한 수만큼 열을 선택할 수 있습니다.
• 선택: query에 의해 반환되는 테이블의 행을 선택합니다. 다양한 조건을 사용하여 검색되는 행을 제한할 수 있습니 다.
• 조인: 두 테이블 사이에 링크를 지정하여 서로 다른 테이블에 저장된 데이터를 함께 가져옵니다. SQL조인은 "조인을 사용하여 여러 테이블의 데이터 표시" 단원에서 자세히 다룹니다.
기본 SELECT 문 가장 간단한 형태의 SELECT 문은 다음을 포함해야 합니다.
• 표시할 열을 지정하는 SELECT 절
• SELECT 절에 나열된 열을 포함한 테이블을 식별하는 FROM 절 이 구문에서 다음이 적용됩니다. SELECT 둘 이상의 열로 이루어진 리스트입니다.
* 모든 열을 선택합니다. DISTINCT 중복을 방지합니다. column|expression 이름 지정된 열 또는 표현식을 선택합니다. alias 선택된 열에 다른 머리글을 지정합니다. FROM table 열을 포함하는 테이블을 지정합니다. 참고: 본 과정 전체에 걸쳐 키워드 , 절 , 명령문 이라는 단어는 다음과 같이 사용됩니다. • 키워드 는 개별SQL 요소를 나타냅니다. 예를 들어, SELECT 및 FROM 등이 키워드입니다. • 절 은 SQL 문의 일부입니다. 예를 들어, SELECT employee_id, last_name 등이 절입니다. • 명령문 은 둘 이상의 절이 결합된 것입니다. SELECT * FROM employees를 예로 들 수 있습니다.
-모든 열 선택
SELECT *
FROM departments;
#select나 from은 소문자로 써도 가능합니다. SQL문은 대소문자를 구분하지 않습니다. 또한 한 줄로 쭉 늘여쓰더라도 상관없습니다.
#desc departments; 로 해당 데이터 셋에 어떤 열들이 있는지를 확인 할 수 있습니다. 밑에서 자세히 다루겠습니다.
-특정 열 선택
SELECT department_id, location_id
FROM departments;
select는 표시할 열을 식별합니다.
from은 이러한 열을 포함한 테이블을 식별합니다.
#열의 내용은 문자와 날짜는 왼쪽 정렬, 숫자는 오른쪽 정렬됩니다.
당연하게도 +, -, *, /가 가능합니다.
산술 연산자를 사용하려면 아래와 같이 하면 됩니다.
select salary + 300
from employees;
이렇게 실행하면 salary열의 내용들에 300이 추가되서 나타나게 됩니다.
연산자는 우선 순위가 존재합니다. 사칙연산과 비슷한 개념이라고 보면 됩니다.
-Null 값 정의
행에 특정 열에 대한 데이터 값이 없는 경우 해당 값이 null이거나 null을 포함한다고 합니다. Null은 사용할 수 없거나 , 할당되지 않았거나, 알 수 없거나, 적용할 수 없는 값입니다. Null은 0이나 공백과는 다릅니다. 0은 숫자이며 공백은 문자입니다.
null값을 포함하는 산술식은 null로 계산됩니다.
-열 alias정의
열 머리글의 이름을 바꿉니다.
계산에서 유용합니다. •
열 이름 바로 뒤에 나옵니다.(열 이름과 alias 사이에 선택 사항인 AS 키워드가 올 수도 있습니다 .)
공백이나 특수 문자를 포함하거나 대소문자를 구분하는 경우 큰 따옴표가 필요합니다
SELECT last_name AS name, commission_pct comm
FROM employees;
위의 예시처럼 AS를 이용하여 이름을 재명명할 수 있고, 그냥 띄어씌기로도 가능합니다.
SELECT last_name "Name" , salary*12 "Annual Salary"
FROM employees;
이렇게 큰따옴표로도 가능한데, 위의 예시처럼 띄어쓰기가 있는 경우에는 큰따옴표로만 재명명이 가능합니다.
즉, 큰따옴표로 자주 이용하게 될 것입니다.
-연결 연산자
• 열이나 문자열을 다른 열에 연결합니다.
• 두 개의 세로선(||)으로 나타냅니다.
• 결과 열로 문자 표현식을 작성합니다.
SELECT last_name||job_id AS "Employees" FROM employees;
위의 예시처럼 실행을 하게 되면 last_name열과 job_id의 내용들이 띄어쓰기 없이 합쳐지게 됩니다.
-리터럴 문자열
• 리터럴은 SELECT 문에 포함된 문자, 숫자 또는 날짜입니다.
• 날짜 및 문자 리터럴 값은 작은 따옴표로 묶어야 합니다.
• 각 문자열은 반환되는 각 행에 한 번 출력됩니다
날짜 및 문자 리터럴은 반드시 작은 따옴표(' ')로 묶어야 하지만 숫자 리터럴은 그럴 필요가 없습니다.
리터럴 문자열이라는 말이 어려울 수 있는데 다음 예시를 보시면 바로 이해가 가실 것입니다.
SELECT last_name ||': 1 Month salary = '||salary Monthly
FROM employees;
이렇게 되면 last_nam열과 salary Monthly열의 내용들 사이에 ‘: 1 Month salary = ’문자가 들어가는 것입니다.
원래는 Whalen4400 이였다면 Whalen: 1 Month salary = 4400 이렇게 되는 것입니다.
-대체 인용(q) 연산자
• 자신의 따옴표 구분자를 지정합니다.
• 구분자를 임의로 선택합니다.
• 가독성 및 사용성이 증가합니다.
많은 SQL 문에서 표현식이나 조건에 문자 리터럴을 사용합니다. 리터럴 자체에 작은 따옴표가 포함된 경우 인용(q) 연산자를 사용하여 자신의 따옴표 구분자를 선택할 수 있습니다. 단일 바이트든 멀티 바이트든 [ ], { }, ( ), < > 문자 쌍 중에서 사용하기 편한 구분자를 선택할 수 있습니다. 위의 예제에서는 문자열에 작은 따옴표가 포함되어 있으며, 이것은 대개 문자열 구분자로 해석됩니다. 그러나 q 연산자를 사용할 경우 대괄호 [] 가 따옴표 구분자로 사용됩니다. 대괄호 구분자 사이의 문자열은 리터럴 문자열로 해석됩니다.
SELECT department_name || q'[ Department's Manager Id: ]' || manager_id AS "Department and Manager" FROM departments;
-중복행
기본적으로 query 결과에는 중복 행을 포함한 모든 행이 표시됩니다. 중복되지 않게 결과만 나타내고 싶을 경우 distinct 혹은 unique를 사용합니다.
SELECT DISTINCT department_id FROM employees;
-describe명령어(테이블 구조 표시)
• DESCRIBE 명령을 사용하여 테이블의 구조를 표시합니다.
• 또는 Connections 트리에서 테이블을 선택하고 Columns 탭을 사용하여 테이블 구조를 확인합니다.
DESCRIBE 명령을 사용하여 테이블의 구조를 표시할 수 있습니다. 이 명령은 열 이름 및 데이터 유형을 표시하고 열에 반드시 데이터가 포함되어야 하는지 여부(즉, 열에 NOT NULL 제약 조건이 있는지 여부)를 보여줍니다. 구문에서 table name은 유저가 액세스할 수 있는 기존의 테이블, 뷰 또는 동의어의 이름입니다. SQL Developer GUI 인터페이스를 사용하면 Connections 트리에서 테이블을 선택하고 Columns 탭을 사용하여 테이블 구조를 확인할 수 있습니다.
데이터 유형은 다음 표에 설명되어 있습니다.
데이터 유형 |
설명 |
NUMBER(p,s) |
최대 자릿수가 p이고 소수점 이하 자릿수가 s인 숫자 값 |
VARCHAR2(s) |
최대 크기가 s인 가변 길이 문자 값 |
DATE |
기원전 4712년 1월 1일에서 기원후 9999년 12월 31일 사이의 날짜 및 시간 값 |
'ORACLE' 카테고리의 다른 글
6. [Oracle] 조인을 사용하여 여러 테이블의 데이터 표시해보자. (0) | 2020.01.06 |
---|---|
5. [Oracle] 그룹함수를 사용해보자. (0) | 2019.12.28 |
4. [Oracle] 변환 함수와 조건부 표현식을 사용해보자. (0) | 2019.12.28 |
3.[Oracle] 단일 행 함수를 사용하여 출력 커스터마이즈를 해보자. (0) | 2019.12.28 |
2. [Oracle] 데이터를 제한하고 정렬해보자. (0) | 2019.12.28 |