본문 바로가기
DataBase

[MariaDB] 표준 SQL에 대해서 / select 선택할 열 명 from 테이블명 / show databases; / show tables; / desc 테이블명;

by bkuk 2022. 10. 14.

아래와 같은 인사관리 테이블이 있습니다.


아래 코드를 통해 데이터베이스 생성, 테이블 생성, 컬럼 생성을 했습니다.

여기서 Query OK, ~ 문구가 출력되었다면 입력이 잘된 것 입니다.

더보기를 누르시면 볼 수 있습니다.

'인사관리 테이블' 코드

더보기
-- 데이터베이스 생성
create database sample;
use sample;

-- 테이블 생성
create table dept ( 
	deptno      int(2) primary key,
	dname       varchar(14),
	loc         varchar(13)
);

create table emp ( 
	empno       int(4) primary key,
	ename       varchar(10),
	job         varchar(9),
	mgr         int(4),
	hiredate    date,
	sal         numeric(7,2),
	comm        numeric(7,2),
	deptno      int(2)
);

create table salgrade (
	grade       int(1),
	losal       numeric(7,2),
	hisal       numeric(7,2)
);

-- 데이터 입력
insert into dept values(10, 'ACCOUNTING', 'NEW YORK');
insert into dept values(20, 'RESEARCH', 'DALLAS');
insert into dept values(30, 'SALES', 'CHICAGO');
insert into dept values(40, 'OPERATIONS', 'BOSTON');

insert into emp values( 7839, 'KING', 'PRESIDENT', null, STR_TO_DATE ('17-11-2011','%d-%m-%Y'), 5000, null, 10);
insert into emp values( 7698, 'BLAKE', 'MANAGER', 7839, STR_TO_DATE('1-5-2011','%d-%m-%Y'), 2850, null, 30);
insert into emp values( 7782, 'CLARK', 'MANAGER', 7839, STR_TO_DATE('9-6-2011','%d-%m-%Y'), 2450, null, 10);
insert into emp values( 7566, 'JONES', 'MANAGER', 7839, STR_TO_DATE('2-4-2011','%d-%m-%Y'), 2975, null, 20);
insert into emp values( 7788, 'SCOTT', 'ANALYST', 7566, STR_TO_DATE('13-7-2017','%d-%m-%Y') , 3000, null, 20);
insert into emp values( 7902, 'FORD', 'ANALYST', 7566, STR_TO_DATE('3-12-2011','%d-%m-%Y'), 3000, null, 20);
insert into emp values( 7369, 'SMITH', 'CLERK', 7902, STR_TO_DATE('17-12-2010','%d-%m-%Y'), 800, null, 20);
insert into emp values( 7499, 'ALLEN', 'SALESMAN', 7698, STR_TO_DATE('20-2-2011','%d-%m-%Y'), 1600, 300, 30);
insert into emp values( 7521, 'WARD', 'SALESMAN', 7698, STR_TO_DATE('22-2-2011','%d-%m-%Y'), 1250, 500, 30);
insert into emp values( 7654, 'MARTIN', 'SALESMAN', 7698, STR_TO_DATE('28-09-2011','%d-%m-%Y'), 1250, 1400, 30);
insert into emp values( 7844, 'TURNER', 'SALESMAN', 7698, STR_TO_DATE('8-9-2011','%d-%m-%Y'), 1500, 0, 30);
insert into emp values( 7876, 'ADAMS', 'CLERK', 7788, STR_TO_DATE('13-7-2017', '%d-%m-%Y'), 1100, null, 20);
insert into emp values( 7900, 'JAMES', 'CLERK', 7698, STR_TO_DATE('3-12-2011','%d-%m-%Y'), 950, null, 30);
insert into emp values( 7934, 'MILLER', 'CLERK', 7782, STR_TO_DATE('23-1-2012','%d-%m-%Y'), 1300, null, 10);

insert into salgrade values (1, 700, 1200);
insert into salgrade values (2, 1201, 1400);
insert into salgrade values (3, 1401, 2000);
insert into salgrade values (4, 2001, 3000);
insert into salgrade values (5, 3001, 9999);

표준 SQL

  • 대소문자 구분이 없으며,
  • 문장 끝에는 항상 세미클론(;)을 넣어줘야 합니다.
DML(Data Manipulation Lang.)
    select - 테이블 내부의 데이터 확
    desc 테이블명; - 열(row)명 확인
    select 선택할 열명 ... from 테이블명;
    select 선택할 열명 as 새 이름 from 테이블명; 
    			- 새 이름으로 출력하기, 따옴표를 통해 띄어쓰기 가능, as 생략가능

 

컬럼(Column) 데이터 타입은 크게 3가지로 나눌 수 있습니다.

  1. 문자열
    • varchar
    • char
  2. 숫자(산술 연산 가능)
    • 정수형 int
    • 실수형 decimal
  3. 날짜
    • date

우선, 데이터베이스에 접근할 수 있는 명령어부터 확인해보겠습니다.

// 전체 데이터베이스 출력
show databases;

// 데이터베이스 사용
use 데이터베이스명;

// 전체 테이블 출력 
show tables;

// 테이블 구조 정보 출력
desc 테이블명;
//
select * from 테이블명; => 자칫 잘못하다간 모든 데이터를 출력해서 방대한 양의 데이터가 출력됨.
select * from 테이블명 limit 2; => limit을 통해서 출력 수 제한

 

emp(사원정보)테이블에 있는 모든 열의 데이터를 확인해보겠습니다.

select * from emp;

 

emp 테이블에 있는 empno(사원번호), ename(사원이름), job(직책), mgr(관리자 사원번호), hiredate(입사일), sal(급여), comm(수당), deptno(부서번호)에 대한 데이터를 출력해보겠습니다.

// [Enter] 입력 시 한칸 아래로 내려갑니다.
select empno, ename, job, mgr, hiredate, sal, comm, deptno [Enter] from emp;

 

 

영문자에 익숙하지 않는 제3자가 봤을 때, 어떤 열의 데이터인지 헷갈릴 수 도 있습니다.

select 선택할 열명 as 새이름 from 테이블명;

select deptno as 부서번호, dname as 부서이름, loc as 부서위치 from dept;

 

혹시나 띄어쓰기를 하고 싶다면 따옴표( ' 또는 ")을 넣어주면 됩니다.

 

사칙연산을 통해서 데이터 출력이 가능합니다.

아래에서는 sal(급여 또는 월급)에 숫자 12을 곱해서 연봉을 계산했습니다. 

여기서, Null값은 아직 정의되지 않은 값으로써, 0 또는 공백이 아닙니다. (0은 숫자이고, 공백은 하나의 문자)

 

조건문도 가능합니다.

사원정보 테이블에서 부서번호가 10인 데이터를 확인하고싶다면?

select * from emp where deptno = 10;

(Java에서는 '==' 연산자를 사용했지만, SQL에서는 '='을 사용합니다. 또한 조건문은 if가 아닌 where을 사용합니다.)

 

사원정보 테이블에서 부서번호가 10이 아닌 데이터를 확인하고 싶다면?

select * from emp where deptno != 10;

 

 

사원정보 테이블에서 empno(사원번호), ename(사원 이름), sal(급여) 컬럼을 선택하고 급여가 1000 이하인 데이터를 확인하고 싶다면?

select empno "사원 번호", ename "사원 이름", sal "급여" from emp where sal <= 1000;