SQL SELECT 문

SQL Select 문을 사용하여 데이터 검색

SQL은 포괄적 인 데이터베이스 언어입니다. Sequel 또는 간단히 SQL로 발음되는 SQL은 비절 차적 접근 방식에 따라 관계형 데이터베이스를 쿼리하는 데 사용되는 컴퓨터 프로그래밍 언어입니다. SQL을 사용하여 데이터베이스에서 정보를 추출 할 때이를 데이터베이스 쿼리라고합니다.

관계형 데이터베이스는 관계형 데이터베이스 관리 시스템 (RDBMS)을 사용하여 구현됩니다. RDBMS는 위에서 언급 한 DBMS 소프트웨어의 모든 기본 기능과 함께 관계형 모델을보다 쉽게 ​​이해하고 구현할 수 있도록하는 다양한 기능을 수행합니다. RDBMS 사용자는 특수 데이터 조작 언어를 사용하여 데이터를 조작합니다. 데이터베이스 구조는 데이터 정의 언어를 사용하여 정의됩니다. 시스템 사용자가 데이터를 저장하고 검색하기 위해 실행하는 명령은 명령을 입력하여 RDBMS 인터페이스가있는 터미널에 입력하거나 일부 유형의 그래픽 인터페이스를 사용하여 입력 할 수 있습니다. 그런 다음 DBMS는 명령을 처리합니다.

SELECT 문의 기능

데이터베이스에서 데이터 검색은 적절하고 효율적인 SQL 사용을 통해 수행됩니다. 관계 이론의 세 가지 개념은 SELECT 문의 기능인 투영, 선택 및 결합을 포함합니다.

  • 투영 : 프로젝트 작업은 테이블에서 특정 열 (필드) 만 선택합니다. 결과 테이블에는 사용 가능한 열의 서브 세트가 있으며 단일 열에서 사용 가능한 모든 열에 이르는 모든 것을 포함 할 수 있습니다.

  • 선택 : 선택 조작은 선택 조건을 만족하는 테이블 (관계)에서 행 (레코드)의 서브 세트를 선택합니다. 전체 결과 집합에서 행을 선택하는 기능을 선택이라고합니다. 조건부 필터링 및 데이터 준비가 포함됩니다. 하위 집합은 선택 조건을 충족하는 행이없는 경우 행 없음에서 테이블의 모든 행까지 범위를 지정할 수 있습니다.

  • 조인 : 조인 작업은 하나 이상의 공통 열 값을 기반으로 두 개 이상의 테이블에서 데이터를 결합합니다. 조인 작업을 통해 정보 시스템 사용자는 테이블간에 존재하는 관계를 처리 할 수 ​​있습니다. 조인 작업은 시스템 사용자가 데이터베이스를 설계 할 때 예상하지 못한 데이터 요소 간의 관계를 조사 할 수 있기 때문에 매우 강력합니다.

위의 테이블 구조를 고려하십시오. EMPLOYEES 테이블에서 단일 직원에 대한 first_name 이름, department_id 및 급여를 가져 오는 것은 Projection입니다. EMPLOYEES 테이블에서 급여가 5000 미만인 직원 세부 정보를 가져 오는 것은 Selection입니다. EMPLOYEES 및 DEPARTMENTS에 가입하여 직원의 이름, 부서 이름을 가져 오는 것은 Joining입니다.

기본 SELECT 문

SELECT 문의 기본 구문은 다음과 같습니다.

SELECT  [DISTINCT | ALL] {* | select_list}
FROM {table_name [alias] | view_name} 
    [{table_name [alias]  | view_name}]...  
[WHERE  condition]
[GROUP BY  condition_list]
[HAVING  condition]
[ORDER BY  {column_name | column_#  [ ASC | DESC ] } ...

SELECT 절은 필수이며 관계형 프로젝트 작업을 수행합니다.

FROM 절도 필수입니다. 결과 테이블에 표시된 열 데이터를 검색 할 하나 이상의 테이블 및 / 또는보기를 식별합니다.

WHERE 절은 선택 사항이며 관계형 선택 작업을 수행합니다. 선택할 행을 지정합니다.

GROUP BY 절은 선택 사항입니다. SELECT 절에 나열된 하나 이상의 열 이름으로 데이터를 그룹으로 구성합니다.

선택적 HAVING 절은 결과 테이블에 포함 할 그룹에 관한 조건을 설정합니다. 그룹은 GROUP BY 절로 지정됩니다.

ORDER BY 절은 선택 사항입니다. 오름차순 또는 내림차순으로 하나 이상의 열을 기준으로 쿼리 결과를 정렬합니다.

SELECT 문의 산술 표현식 및 NULL 값

SELECT 문에 식을 포함하기 위해 열 이름, 연산자 및 상수 값을 사용하여 산술 식을 만들 수 있습니다. 열에 적용 할 수있는 연산자는 열의 데이터 유형에 따라 다릅니다. 예를 들어 산술 연산자는 문자 리터럴 값에 적합하지 않습니다. 예를 들면

SELECT employee_id, sal * 12 ANNUAL_SAL
FROM employees;

위 쿼리에는 각 직원의 연봉을 계산하는 산술 식 (sal * 12)이 포함되어 있습니다.

산술 연산자

연산자는 열 (피연산자라고 함)에 대해 작동하여 다른 결과를 생성합니다. 식에 여러 연산자가있는 경우 평가 순서는 연산자 우선 순위에 따라 결정됩니다. 다음은 우선 순위의 기본 규칙입니다.

  • 곱셈과 나눗셈은 더하기와 빼기 전에 발생합니다.

  • 우선 순위가 동일한 연산자는 왼쪽에서 오른쪽으로 평가됩니다.

  • 연산자의 기본 동작을 재정의하려면 구문 분석을 사용하십시오.

아래 표는 이러한 경우 연산자의 우선 순위를 보여줍니다. 우선 순위 연산자 기호 작업

Description   Operator	Precedence	   
Addition	+	Lowest	   
Subtraction	-	Lowest	   
Multiplication	*	Medium	   
Division	/	Medium	   
Brackets	( )	Highest

아래 쿼리 (a), (b) 및 (c)를 검토하십시오.

  • SQL> SELECT 2*35 FROM DUAL;
  • SQL> SELECT salary + 1500 FROM employees;
  • SQL> SELECT first_name, salary, salary + (commission_pct* salary) FROM employees;

쿼리 (a)는 두 숫자를 곱하고 (b)는 모든 직원의 급여에 $ 1500을 더한 것을 보여줍니다. 쿼리 (c)는 직원의 급여에 커미션 구성 요소를 추가 한 것을 보여줍니다. 우선 순위에 따라 첫 번째 커미션은 급여에 대해 계산 된 다음 급여에 추가됩니다.

열 별칭

별칭은 표시 중에 열 또는 식의 이름을 바꾸는 데 사용됩니다. 열 또는 표현식에 대한 별칭은 쿼리 출력의 머리글로 나타납니다. SELECT 쿼리에서 긴 식에 의미있는 제목을 제공하는 데 유용합니다. 기본적으로 별칭은 공백없이 쿼리 출력에서 ​​대문자로 표시됩니다. 이 동작을 재정의하려면 별칭 이름에서 대소 문자와 공백을 유지하기 위해 별칭을 큰 따옴표로 묶어야합니다.

SELECT price * 2 as DOUBLE_PRICE, price * 10 "Double Price"
FROM products;

DOUBLE_PRICE	Double Price
------------	------------
39.9			39.9
60			60
51.98			51.98

연결 연산자

연결 연산자를 사용하여 SELECT 쿼리에서 두 문자열 값 또는 식을 조인 할 수 있습니다. 이중 수직 막대 기호는 문자열 연결 연산자로 사용됩니다. 새 문자 표현식을 생성하는 문자 및 문자열 열 값에만 적용됩니다. 예

SQL> SELECT 'ORACLE'||' CERTIFICATION' FROM dual;

위의 쿼리는 두 문자 리터럴 값의 연결을 보여줍니다.

리터럴

SELECT 절에서 데이터베이스에 저장되지 않은 하드 코딩 된 값은 리터럴로 알려져 있습니다. 숫자, 문자 또는 날짜 값이 될 수 있습니다. 문자 및 날짜 값은 따옴표로 묶어야합니다. 아래 SQL 쿼리를 고려하십시오. SQL 쿼리에서 다양한 데이터 유형의 리터럴을 사용하는 예제입니다.

아래 쿼리는 두 문자 리터럴을 사용하여 결합합니다.

SQL> SELECT 'ORACLE'||' CERTIFICATION' FROM DUAL

아래 쿼리는 문자 리터럴을 사용하여 직원의 급여를 예쁘게 인쇄합니다.

SQL> SELECT first_name ||'earns'|| salary||' as of '|||sysdate
FROM employees

견적 연산자

인용 연산자는 고유 한 인용 부호 구분 기호를 지정하는 데 사용됩니다. 데이터에 따라 편리한 구분 기호를 선택할 수 있습니다.

SELECT 	department_name|| ' Department' ||q'['s Manager Id: ]'|| manager_id
FROM departments;

없는

열에 한정된 값이 없으면 NULL로 간주됩니다. NULL 값은 알 수 없거나 사용할 수 없음을 나타냅니다. 숫자 값의 경우 0이 아니며 문자 값의 경우 공백이 아닙니다.

NULL 값이있는 열은 SELECT 쿼리에서 선택할 수 있으며 산술 식의 일부가 될 수 있습니다. NULL 값을 사용하는 모든 산술 표현식은 NULL이됩니다. 따라서 NULL 값이있는 열은 NVL 또는 NULLIF와 같은 Oracle 제공 함수를 사용하여 대체 값을 지정하여 다르게 처리해야합니다.

SQL> SELECT NULL + 1000 NUM 
FROM DUAL;

NUM
--------

DISTINCT 키워드

데이터에 중복 결과가있을 것으로 예상되는 경우 DISTINCT 키워드를 사용하여 중복을 제거하고 쿼리 출력에서 ​​고유 한 결과 만 표시합니다. 선택한 열만 복제에 대해 유효성이 검사되고 행은 쿼리 출력에서 ​​논리적으로 제거됩니다. 참고로 DISTINCT 키워드는 SELECT 절 바로 뒤에 나타나야합니다.

아래의 간단한 쿼리는 DISTINCT를 사용하여 EMPLOYEES 테이블에서 고유 한 부서 ID를 표시하는 방법을 보여줍니다.

SQL> SELECT DISTINCT DEPARTMENT_ID 
FROM employees;

DEPARTMENT_ID
---------------
10
20
30
40

DESCRIBE 명령

테이블의 구조적 메타 데이터는 DESCRIBE 명령을 사용하여 테이블을 구성하는 열 목록에 대한 데이터베이스를 쿼리하여 얻을 수 있습니다. 사용 된 열 이름, null 속성 및 데이터 유형이 나열됩니다.

Syntax:

DESC[RIBE] [SCHEMA].object name

예를 들면

DESC EMPLOYEE

EMPLOYEE 테이블 구조, 즉 열, 데이터 유형, 정밀도 및 널 입력 가능 특성을 표시합니다.