[26일차] DBMS 개요 & SQL 실습 & SELECT

2023. 1. 30. 17:32데이터 엔지니어링 과정/MySQL

목차
1. DBMS 개요
2. 데이터베이스 필수 용어
3. MySQL 전체 운영 실습
4. 특정한 조건의 데이터만 조회하는 <SELECT ··· FROM ··· WHERE>

1. DBMS 개요

1. 데이터베이스의 정의와 특징

  • 데이터베이스 : 데이터의 집합
    • 여러 명의 사용자나 응용 프로그램이 공유하고 동시에 접근 가능
    • 데이터의 저장 공간 자체
  • DBMS : 데이터베이스를 관리·운영하는 역할을 하는 소프트웨어의 개념특징
    • 여러 명의 사용자나 응요 프로그램이 이 DBMS가 관리하는 데이터에 동시에 접속하고 데이터 공유하게 됨
      ➡ 데이터가 집중적으로 관리됨
  • 데이터베이스 & DBMS 특징
    • 데이터의 무결성
      : 데이터에 오류가 있어서는 안되기 때문에 제약 조건이라는 특성을 가짐
    • 데이터의 독립성
      : 데이터베이스의 크기를 변경하거나 데이터 파일의 저장소를 변경하더라도 기존에 작성된 응용 프로그램은 영향 받지 않아야 함
    • 보안
      : 데이터를 소유한 사람이나 데이터에 접근이 허가된 사람만 접근 가능
    • 데이터 중복의 최소화
      : 동일한 데이터가 여러 개 중복되어 저장되는 것 방지
    • 응용 프로그램 제작 및 수정이 쉬워짐
    • 데이터의 안정성 향상
      : 대부분의 DBMS가 제공하는 백업, 복업 기능을 이용함으로써, 데이터가 깨지는 문제가 발생할 경우에 복원 혹은 복구하는 방법이 명확해짐

3. DBMS 분류

  • 계층형 DBMS
  • 망형 DBMS
  • 관계형 DBMS
    • 모든 데이터는 테이블에 저장되므로 테이블이라는 구조가 가장 기본적이고 중요함
      • 테이블
        • 데이터를 효율적으로 저장하기 위한 구조
        • 여러 개의 테이블로 나누어서 저장함으로써 불필요한 공간의 낭비를 줄이고 데이터 저장의 효율성 보장
        • 테이블의 관계를 기본 키와 외래 키를 사용해서 맺어 줌으로써, 두 테이블을 부모와 자식의 관계로 묶을 수 있음

 

2. 데이터베이스 필수 용어

  • 데이터 : 정보는 있으나 아직 체계화 되지 못한 상태인 단편적인 정보
  • 테이블 : 표 형태로 표현한 것
  • 데이터베이스 DB : 테이블이 저장되는 저장소
  • DBMS : 데이터베이스를 관리하는 시스템 또는 소프트웨어
  • 열 : 각 테이블은 열로 구성됨
    • 열 이름 : 각 열을 구분하기 위한 이름. 각 테이블 내에서 중복되지 않고 고유해야 함
  • 데이터 형식 : 열의 데이터 형식. 테이블을 생성할 때 열 이름과 함께 지정
  • 행 : 실질적인 데이터
  • 기본 키 (Primary Key) 열 : 각 행을 구분하는 유일한 열. 중복되어서는 안되고 비어 있어서도 안됨.
  • 외래 키 (Foreign Key) 필드 : 두 테이블의 관계를 맺어주는 키
  • SQL : 사람과 DBMS가 소통하기 위한 말
    ❗대소문자 구분 안해욥❗

 

3.  MySQL 전체 운영 실습

1. 데이터 베이스& 테이블 설정, 데이터 입력

2. 데이터 활용

  • 제품 테이블의 모든 데이터 조회 SELECT
SELECT * from productTBL;

  • 회원 테이블 중 이름과 주소만 출력
SELECT memberName,memberAddress from memberTBL;

  • "지운이"에 대한 정보 추출
    • WHERE 절을 사용하면 조건 지정 가능
Select * From memberTBL where membername= "지운이";

  • 새로운 테이블 생성 CREATE
    • ❗주의❗

      중간에 공백이 있는 개체의 이름을 사용할 때는 백틱`으로 묶어줘야 함
CREATE TABLE `my TestTBL` (id INT);
  • 테이블 삭제 DROP
DROP TABLE `my TestTBL`;

 

4. SELECT문

1. USE 구문

: 현재 사용하는 데이터베이스를 지정 또는 변경하는 구문

2. 데이터베이스에서 찾아서 조회

🔎 fist_name과 gender을 찾아보자

  • 현재 서버에 있는 데이터 베이스 있는지 조회
SHOW DATABASES;

  • 사용할 데이터 베이스 지정
USE employees;
  • 현재의 데이터베이스에 있는 테이블 정보 조회
SHOW TABLE STATUS;

  • 테이블의 열 확인
DESCRIBE employees;

  • 최종적으로 데이터 조회
SELECT first_name, gender FROM employees;

  • 열 이름 별칭 붙여서 조회 AS
    • AS는 생략 가능
SELECT first_name AS 이름, gender 성별, hire_date `회사 입사일` FROM employees;

3. 데이터베이스와 테이블 생성

  • DB만들기
DROP DATABASE IF EXITS sqldb;
CREATE DATABASE sqldb;
  • 테이블 만들기
USE sqldb;
CREATE TABLE usertbl -- 회원 테이블
( userID  	CHAR(8) NOT NULL PRIMARY KEY, -- 사용자 아이디(PK)
  name    	VARCHAR(10) NOT NULL, -- 이름
  birthYear   INT NOT NULL,  -- 출생년도
  addr	  	CHAR(2) NOT NULL, -- 지역(경기,서울,경남 식으로 2글자만입력)
  mobile1	CHAR(3), -- 휴대폰의 국번(011, 016, 017, 018, 019, 010 등)
  mobile2	CHAR(8), -- 휴대폰의 나머지 전화번호(하이픈제외)
  height    	SMALLINT,  -- 키
  mDate    	DATE  -- 회원 가입일
);
CREATE TABLE buytbl -- 회원 구매 테이블(Buy Table의 약자)
(  num 		INT AUTO_INCREMENT NOT NULL PRIMARY KEY, -- 순번(PK)
   userID  	CHAR(8) NOT NULL, -- 아이디(FK)
   prodName 	CHAR(6) NOT NULL, --  물품명
   groupName 	CHAR(4)  , -- 분류
   price     	INT  NOT NULL, -- 단가
   amount    	SMALLINT  NOT NULL, -- 수량
   FOREIGN KEY (userID) REFERENCES usertbl(userID)
);

혹은

buytbl
usertbl

  • 데이터 입력
INSERT INTO usertbl VALUES('LSG', '이승기', 1987, '서울', '011', '1111111', 182, '2008-8-8');
INSERT INTO usertbl VALUES('KBS', '김범수', 1979, '경남', '011', '2222222', 173, '2012-4-4');
INSERT INTO usertbl VALUES('KKH', '김경호', 1971, '전남', '019', '3333333', 177, '2007-7-7');
INSERT INTO usertbl VALUES('JYP', '조용필', 1950, '경기', '011', '4444444', 166, '2009-4-4');
INSERT INTO usertbl VALUES('SSK', '성시경', 1979, '서울', NULL  , NULL      , 186, '2013-12-12');
INSERT INTO usertbl VALUES('LJB', '임재범', 1963, '서울', '016', '6666666', 182, '2009-9-9');
INSERT INTO usertbl VALUES('YJS', '윤종신', 1969, '경남', NULL  , NULL      , 170, '2005-5-5');
INSERT INTO usertbl VALUES('EJW', '은지원', 1972, '경북', '011', '8888888', 174, '2014-3-3');
INSERT INTO usertbl VALUES('JKW', '조관우', 1965, '경기', '018', '9999999', 172, '2010-10-10');
INSERT INTO usertbl VALUES('BBK', '바비킴', 1973, '서울', '010', '0000000', 176, '2013-5-5');
INSERT INTO buytbl VALUES(NULL, 'KBS', '운동화', NULL   , 30,   2);
INSERT INTO buytbl VALUES(NULL, 'KBS', '노트북', '전자', 1000, 1);
INSERT INTO buytbl VALUES(NULL, 'JYP', '모니터', '전자', 200,  1);
INSERT INTO buytbl VALUES(NULL, 'BBK', '모니터', '전자', 200,  5);
INSERT INTO buytbl VALUES(NULL, 'KBS', '청바지', '의류', 50,   3);
INSERT INTO buytbl VALUES(NULL, 'BBK', '메모리', '전자', 80,  10);
INSERT INTO buytbl VALUES(NULL, 'SSK', '책'    , '서적', 15,   5);
INSERT INTO buytbl VALUES(NULL, 'EJW', '책'    , '서적', 15,   2);
INSERT INTO buytbl VALUES(NULL, 'EJW', '청바지', '의류', 50,   1);
INSERT INTO buytbl VALUES(NULL, 'BBK', '운동화', NULL   , 30,   2);
INSERT INTO buytbl VALUES(NULL, 'EJW', '책'    , '서적', 15,   1);
INSERT INTO buytbl VALUES(NULL, 'BBK', '운동화', NULL   , 30,   2);
  • 데이터 확인
Select * from usertbl;
Select * from buytbl;

 

4. 특정한 조건의 데이터만 조회하는 <SELECT ··· FROM ··· WHERE>

1. 기본적인 WHERE

  • 조회하는 결과에 특정한 조건을 줘서 원하는 데이터만 보고 싶을 때 사용 
    ex) "김경호" 이름 찾기
SELECT * FROM usertbl WHERE name ="김경호"

2. 관계 연산자의 사용

  • 1970년 이후 출생, 신장 182 이상인 사람의 아이디와 이름 조회
SELECT userID, Name FROM usertbl WHERE birthYear>=1970 AND height>=182;

  • 1970년 이후 출생 or 신장 182 이상
SELECT userID, Name FROM usertbl WHERE birthYear>=1970 OR height>=182;

3. BETWEEN ··· AND와 IN() 그리고 LIKE

  • 연속적인 값의 범위를 구할 때 BETWEEN AND
    ex) 키가 180에서 183 사이
SELECT name, height FROM usertbl WHERE height BETWEEN 180 and 183;

  • 연속적인 값인 아닌 이산적인 값을 구할 때 IN()
    ex) 지역이 경남, 전남, 경북인 사람의 정보
SELECT name, addr FROM usertbl WHERE addr IN ('경남', '전남', '경북');

  • 문자열의 내용 검색 LIKE
    • % 뒤에 무엇이든 허용
    • 한 글자만 허용
  • 성이 김씨인 사람
SELECT name FROM usertbl WHERE name LIKE '김%';

  • 이름이 종신인 사람
SELECT name FROM usertbl WHERE name LIKE '_종신';

 

'데이터 엔지니어링 과정 > MySQL' 카테고리의 다른 글

[29일차] JOIN & 데이터베이스  (0) 2023.02.02
[27일차] SELECT, INSERT, WITH  (0) 2023.01.31