Learn & Record

[코리아IT아카데미] SQL 문법 MariaDB 데이터베이스, DBMS 종류, SQL, SELECT, 실습, AS, 계산식 본문

Dev/SQL

[코리아IT아카데미] SQL 문법 MariaDB 데이터베이스, DBMS 종류, SQL, SELECT, 실습, AS, 계산식

Walker_ 2024. 1. 31. 13:44

1. Database (데이터베이스)

 - 컴퓨터에 파일을 저장하는 방법

  - 1. 파일 2. 데이터베이스

 - 데이터가 적은 경우, 파일이 데이터베이스 보다 빠름

 - 데이터가 많은 경우, 데이터베이스가 속도 빠름

 

2. DBMS 종류

 - 1) Oracle

  - 가장 먼저 상업용 발표된 데이터베이스, 완성도와 시장 점유율 높음

  - 모든 측면에서 탁월한 데이터 베이스.

  - 단점 : 가격이 비싸고 배우기 어려움

 

 - 2) SQL Server

  - UI가 깔끔하고 다양한 툴이 제공되어 데이터베이스 처음 배울 때 적합

  - 단점 : 마이크로소프트에서 만들었다보니, Window OS에서만 사용 가능

 

 - 3) MySQL

  - 오픈소스 무료여서 누구나 자유롭게 사용, 다양한 운영체제 지원, 학습용 적합

  - 상업용 DBMS에 비해 기능이 떨어지지만, PHP와 궁합이 잘 맞아 웹 게시판 용도 많이 활용

  - 2008년에 썬이 MySQL 인수, 2010년에 오라클이 썬 인수, 현재 오라클 소유

 

 - 4) MariaDB

  - MySQL의 변형판, 오라클이 MySQL을 보유한데다 오픈 소스에 호의적이지 않음

  - 사용자들이 MySQL의 미래에 불안해 하자 원 개발자가 MySQL 소스를 가져와 MariaDB 개발

  - 소스가 같다 보니 MySQL과 기능적으로 거의 동일

  - 요즘은 MariaDB가 먼저 개발되고 MySQL에 적용돼서 오히려 더 최신 기능 제공

  - 기부로 유지되는 무료정책, 기존 MySQL > MariaDB로 교체 추세

  - GUI 툴 HeidiSQL 지원

 

- 5) SQLite

  - 파일이 작고 빠르며 독립적

  - 신뢰성이 높으며 완전한 기능을 갖춘 SQL 데이터베이스 엔진을 구현하는 C언어 라이브러리

  - 대부분의 휴대폰과 컴퓨터에 내장되어 있음  

 

3. 데이터베이스 

 -1) 데이터베이스

  - 저장소에 구분되는 가장 큰 단위로 백업, 복구 등의 기준이 되기도 함

 

 -2) 테이블

  - 행과 열로 이루어진 데이터의 집합

 

 -3) SQL

  - 데이터와 테이블을 활용하기 위한 구조화된 질의 언어.

문법종류 설명 명령어
데이터 정의어 DDL 생성, 삭제, 변경 CREATE(생성)
ALTER(수정)
DROP(삭제)
TRUNCATE(초기화
데이터 조작어 DML 조회, 추가, 삭제, 수정 INSERT(생성)
UPDATE(수정)
DELETE(삭제)
SELECT(조회)
데이터 제어어 DCL 사용 권한을 관리하는데 사용 GRANT(권한할당)
REVOKE(권한해제)
트랜잭션 제어어 TCL 작업 단위별로 제어하는데 사용 COMMIT(실행)
ROLLBACK(복구)

 - 관련 자격증 SQLD 자격증

 

4. SQL 실습

USE `sample`;
CREATE TABLE tCity
(
	NAME CHAR(10) PRIMARY KEY,
	area INT NULL,
	popu INT NULL,
	metro CHAR(10) NOT NULL,
	region CHAR(6) NOT NULL
	);

INSERT INTO tcity VALUES ('서울', 605,974,'y','경기');
INSERT INTO tcity VALUES ('부산', 765,342,'y','경상');
INSERT INTO tcity VALUES ('오산', 42,21,'n','경기');
INSERT INTO tcity VALUES ('청주', 940,83,'n','충청');
INSERT INTO tcity VALUES ('전주', 205,65,'n','전라');
INSERT INTO tcity VALUES ('순천', 910,27,'n','전라');
INSERT INTO tcity VALUES ('춘천', 1116,27,'n','강원');
INSERT INTO tcity VALUES ('홍천', 1819,7,'n','강원');

SELECT * FROM tcity;

 

CREATE TABLE tStaff
( 
	name CHAR(15) PRIMARY KEY,
	depart CHAR(10) NOT NULL,
	gender CHAR(3) NOT NULL,
	joindate DATE NOT NULL,
	grade CHAR(10) NOT NULL,
	salary INT NOT NULL,
	score DECIMAL(5,2) NULL
	);
	
INSERT INTO tStaff VALUES ('김유신','총무부','남','2000-2-3','이사',420,88.8);
INSERT INTO tStaff VALUES ('유관순','영업부','여','2009-3-1','과장',380,NULL);
INSERT INTO tStaff VALUES ('안중근','인사과','남','2012-5-5','대리',256,76.5);
INSERT INTO tStaff VALUES ('윤봉길','영업부','남','2015-8-15','과장',350,71.25);
INSERT INTO tStaff VALUES ('강감찬','영업부','남','2018-10-9','사원',320,56.0);
INSERT INTO tStaff VALUES ('정몽주','총무부','남','2010-9-16','대리',370,89.5);
INSERT INTO tStaff VALUES ('허난설헌','인사과','여','2020-1-5','사원',285,44.5);
INSERT INTO tStaff VALUES ('신사임당','영업부','여','2013-6-19','부장',400,92.0);
INSERT INTO tStaff VALUES ('성삼문','영업부','남','2014-6-8','대리',285,87.75);
INSERT INTO tStaff VALUES ('논개','인사과','여','2010-9-16','대리',340,46.2);
INSERT INTO tStaff VALUES ('황진이','인사과','여','2012-5-5','사원',275,52.5);
INSERT INTO tStaff VALUES ('이율곡','총무부','남','2016-3-8','과장',385,65.4);
INSERT INTO tStaff VALUES ('이사부','총무부','남','2000-2-3','대리',375,50);
INSERT INTO tStaff VALUES ('안창호','영업부','남','2015-8-15','사원',370,74.2);
INSERT INTO tStaff VALUES ('을지문덕','영업부','남','2019-6-29','사원',330,NULL);
INSERT INTO tStaff VALUES ('정약용','총무부','남','2020-3-14','과장',380,69.8);
INSERT INTO tStaff VALUES ('홍길동','인사과','남','2019-8-8','차장',380,77.7);
INSERT INTO tStaff VALUES ('대조영','총무부','남','2020-7-7','차장',290,49.9);
INSERT INTO tStaff VALUES ('장보고','인사과','남','2005-4-1','부장',440,58.3);
INSERT INTO tStaff VALUES ('선덕여왕','인사과','여','2017-8-3','사원',315,45.1);

SELECT * FROM tStaff;

 

5. 기본형식

 - 1) SELECT

  - 테이블의 데이터를 읽어 출력하는 조회하는 동작

  - SELECT문은 SQL 명령 중 사용 빈도가 압도적으로 높음

  - 동작은 단순하지만 옵션이 굉장히 많음

  - SELECT 필드목록 FROM 테이블명 (* 기호 = 모든)

  - SELECT 필드목록 FROM 테이블명 [ WHERE 조건 ] [ ORDER BY 정렬기준 ]

 

 - 2) 필드목록

  - SELECT * 명령은 테이블 전체를 출력할 때 편리.

  - 필드목록의 *는 모든 필드를 의미하며 all 또는 모두라고도 읽음

  - 이름을 몰라도 조회가 가능해서 간편하지만, 데이터가 많으면 느려지고 장황

 

 - 3) 별명 AS

  - 필드명 AS "별명" 

  - 필드명과 별명 사이에 전치사 AS를 넣음. 공백이나 특수 문자를 표현 할 수 있어 " "로 감싸되 평이하면 생략 가능

 

 - 4) 연습문제

SELECT NAME AS "도시", popu AS "인구(만명)", region AS "지역" FROM tcity;

 

 - 5) 계산값의 출력

  - 필드 목록에 계산식을 사용하면 테이블에 저장된 값을 가공하여 출력

SELECT NAME, popu * 10000 AS "인구(명)" FROM tcity;

 

  - 계산식을 사용하면 테이블에 없는 정보도 만들어서 표현 가능

SELECT NAME, AREA, popu, popu * 10000 / AREA AS "인구밀도" FROM tcity;

 

  - 테이블과 상관없는 단순한 계산식도 출력 가능

SELECT 60 * 60 * 24 AS "하루" FROM DUAL;