데이터베이스 연구실.log

SELECT와 컬럼 표현

SELECT 컬럼 지정과 별칭, 연결 연산자 및 SQL*Plus 치환 변수, SQL 작성 규칙

SELECTFROM컬럼 별칭AS연결 연산자||치환 변수&

#핵심 요약

SQL(Structured Query Language)은 서버에 들어 있는 데이터를 조회하고 관리하기 위한 언어임

SELECT *는 모든 컬럼을, SELECT 컬럼1, 컬럼2는 지정한 컬럼만 조회함

컬럼 별칭은 컬럼 AS 별칭으로 줌
공백, 특수 문자, 대소문자 구분이 필요하면 큰따옴표로 감쌈

연결 연산자 ||는 컬럼과 문자열을 이어 한 컬럼으로 출력함

치환 변수 &변수를 쓰면 같은 SQL을 실행할 때마다 값을 입력받음
실습에서는 Oracle 도구 전용으로 설명했음

#개념과 동작 원리

SQL 종류 명령
Query SELECT
DML(Data Manipulation Language) INSERT, UPDATE, DELETE, MERGE
DDL(Data Definition Language) CREATE, ALTER, DROP, TRUNCATE, RENAME
DCL(Data Control Language) GRANT, REVOKE
TCL(Transaction Control Language) COMMIT, ROLLBACK, SAVEPOINT

수업 자료는 SELECT를 DML에 함께 넣기도 하며, 이 분류가 면접에 자주 나온다고 적었음

SQL 작성 규칙:

  1. SQL 키워드는 대문자, 컬럼과 테이블 이름은 소문자로 씀
  2. SELECT 절과 FROM 절은 줄을 나눠 씀
  3. 가독성을 위해 들여쓰기를 함
  4. SQL 문은 세미콜론으로 끝냄

실습에서는 SQL이 대소문자를 구분하지 않으며 한 줄 또는 여러 줄로 쓸 수 있다는 것을 예제로 보였음

실습의 기본 테이블 emp 컬럼:

컬럼 뜻
empno 사원번호
ename 사원이름
sal 월급
job 직업
comm 커미션
deptno 부서번호
hiredate 입사일
mgr 관리자의 사원번호

NULL과 연산: 산술식에 NULL이 들어가면 결과는 항상 NULL임
연결 연산자를 제외한 모든 연산자는 NULL 피연산자를 받으면 NULL을 돌려줌
그래서 연습 문제처럼 sal + comm은 커미션이 NULL인 사원에게 NULL이 됨

#필수 명령어 또는 SQL

#전체 컬럼과 일부 컬럼

SQL Developer 또는 SQL*Plus조회만 함
SELECT *
  FROM dept;

SELECT empno, ename, sal
  FROM emp;

결과 해석:

실습에서는 다른 스키마의 테이블을 복사해 실습 테이블을 만들기도 했음

SQL Developer 또는 SQL*Plus객체 또는 설정을 변경함
CREATE TABLE departments
AS
SELECT *
  FROM hr.departments;

결과 해석:

필요 권한은 기재 없음

#컬럼 별칭

SQL Developer 또는 SQL*Plus조회만 함
SELECT empno AS 사원번호, ename AS 사원이름, sal AS "Salary"
  FROM emp;

SELECT ename, sal * 12 AS 연봉
  FROM emp;

결과 해석:

설명: 별칭에 공백을 넣거나 대소문자를 구분하려면 큰따옴표를 씀

#연결 연산자

SQL Developer 또는 SQL*Plus조회만 함
SELECT ename || ' 의 직업은 ' || job
  FROM emp;

SELECT deptno || '번의 부서위치는 ' || loc || '입니다' AS 부서정보
  FROM dept;

결과 해석:

실습에서는 DBA가 연결 연산자로 실행할 SQL 문을 만들어 내는 예를 들었음

SQL Developer 또는 SQL*Plus (테이블 소유자)조회만 함
SELECT 'analyze table ' || LOWER(table_name) || ' compute statistics;'
  FROM user_tables;

SELECT table_name, num_rows
  FROM user_tables;

결과 해석: 첫 문장은 내가 가진 테이블마다 통계 수집 문장을 문자열로 만들어 출력함
그 문장을 실행하면 통계가 바뀜
실습에서는 두 번째 문장으로 테이블별 건수(NUM_ROWS)를 확인했음
NUM_ROWS는 마지막 통계 수집 시점의 값임(확인 불가)

#치환 변수

SQL Developer 또는 SQL*Plus조회만 함
SELECT ename, sal, job
  FROM emp
 WHERE job = '&p_job';

SELECT ename, sal, deptno
  FROM emp
 WHERE deptno = &p_deptno;

결과 해석:

설명: 같은 SQL로 조건값만 바꿔 검색할 때 씀
문자 값이면 따옴표 안에 치환 변수를 둠
p_ 접두어는 약속임
PostgreSQL의 psql에서는 \set p_empno 7788 뒤 :p_empno로 씀

#사용 조건과 주의사항

연습 문제 답 일부에 쉼표 누락, 잘못된 테이블 이름이 있음

리스너는 리스너와 서비스에 있음

SEO_HKabsumveritas@gmail.comBuilt with Claude Code & Codex

마지막 갱신 개인 학습 기록이며 운영 환경 적용 전 공식 문서 확인 필요

두 글자 이상 입력, 위아래 화살표로 이동하고 Enter로 열기