DB/SQL - Oracle

[SQL] DML(데이터 조작어) - select

생각많은 프로그래머 2024. 2. 2. 11:47
SQL 종류
1. 데이터를 정의하는 쿼리 - DDL(데이터 정의어) : create, drop, alter, truncate 
2. 데이터를 조작하는 쿼리 - DML(데이터 조작어) : insert, select, update, delete
3. 데이터를 제어하는 쿼리 - DCL(데이터 제어어) : grant, revoke
4. 트랜잭션 제어하는 쿼리 - TCL(트랜잭션 제어어) : commit, rollback, checkpoint 

 

 

튜플 조회 명령어 : select

 

select은 테이블에서 특정한 혹은 전체 튜플을 조회할 때 사용한다.

select * from member;          - member 테이블의 모든 튜플 조회

 

특정 튜플을 조회할 때는 구체적으로 어떤 튜플을 조회할 지

지정해줘야 하므로 입력할 내용이 추가된다.

 

select문을 작성할 때는 아래의 실행순서에 유의해서 작성한다.

또한 어떤 요구사항이 있을 때 어떤 형식을 사용할 지 알아차리는 것이 중요하다. 

 

select 명령어의 기본 형식을 보면 다음과 같다.

아래에서 컬럼명(속성명)과 속성을 구분해야 봐야 한다.

SELECT [ALL 또는 DISTINCT] 컬럼명1, 컬럼명2, ...
FROM 테이블명1, ...
WHERE 조건
GROUP BY 컬럼명1, ... 
HAVING 그룹조건
ORDER BY 속성 [ASC 또는 DESC] ;

 

구분 설명
SELECT절 - 검색하고자 하는 속성명, 계산식(서브쿼리도가능)
- 2개 이상의 테이블을 대상으로 검색할 때는 '테이블명.속성명'으로 표현

- 술어 부분은 ALL이 기본값
ALL : 모든 튜플을 검색할 때 사용.(*도 가능) 
SELECT 뒤에 명시하지 않을 경우 ALL로 인식
DISTINCT
: 중복된 속성이 조회될 경우, 그중 한 개만 검색

(SELECT 뒤에 명시된 속성이 중복될 경우 한 개만 검색)
*ALL과 DISTINCT는 선택 입력사항임
FROM절 질의에 의해 검색될 데이터들을 포함하는 테이블명을 기술
(서브쿼리도 가능)
WHERE절 검색할 조건을 기술(서브쿼리도 가능)
GROUP BY절 속성값을 그룹으로 분류하고자 할 때 사용(그룹화)
HAVING절 GROUP BY에 의해 분류한 후 그룹에 대한 조건을 기술
ORDER BY절 속성값을 정렬하고자 할 때 사용
(오름차순(ASC)이 기본값)

ASC : 오름차순  / DESC : 내림차순

 

 

 

또한 WHERE절에 연산자가 자주 사용되므로

래 내용은 미리 숙지가 필요하다.

 

미만 : <

이하 : <=

이상 : ​>=​

초과 : >

같음 : =

같지않음 : <> 혹은 !=

 

예시를 통해 이해해보자.

create table member(
no number(2) primary key,
name varchar2(10),
age number(2)
addr varchar2(20)
);

각 컬럼에 대한 설명 : 

no : 등록번호
name : 회원명
age : 회원나이
addr : 회원주소

 

 

예제1) 나이가 20세 이상인 사람의 정보를 모두 출력하시오.
select * from member where age>=20 ;
예제2) 나이가 20세 이상인 사람의 이름과 나이만 출력하시오.
select name,age from member where age>=20 ;

 

​반대로 아래 쿼리문을 보고 어떤 요구사항이 있었는지 유추한다면? 
select name,age,addr from member where age>=30 order by age desc;
위 쿼리문을 하나하나 쪼개서 보는 것이 필요하다. 
select name,age,addr - name, age, addr 컬럼정보를 조회하고자 함
​from member                 - member 테이블에 있는​
where age>=30               - 나이가 30세 이상인 사람(들)의​
order by age desc;         - 나이 내림차순으로 ​

 

따라서 요구사항은,

"member 테이블에서 나이가 30세 이상인 사람의 이름, 나이, 주소를 나이 내림차순으로 출력하시오." 가 된다.

 

*** 내림차순으로 출력하면 나이의 경우 나이가 많은 사람부터 적은 사람순으로 출력된다.

알파벳의 경우는 z부터 즉, 뒷 순서부터 출력된다는 의미이기도 하다!

 

보통 오름차순이 기본값이므로 따로 order by 절을 입력하지 않으면 작은 수나 알파벳의 경우 a부터 출력된다.

오름차순은 order by asc 로 지정한다.