728x90

데이터 조회(SELECT) : 데이터 조작어(DML)이며, 데이터 분서게서 가장 많이 사용되는 명령어

  - 여러 절들과 함꼐 사용됨

     절 : FROM, WHERE, GROUP BY, HAVING, ORDER BY

회원테이블을 FROM 절 테이블 확인
성별이 남성 조건으로 필터링하여 WHERE 절 FROM절 테이블을 특정 조건으로 필터링
거주지역별로 회원수 집계 GROUP BY 절 열 별로 그룹화
집계 회원수 100명 미만 조건으로 필터링 HAVING 절 그룹화된 새로운 테이블을 특정 조건으로 필터링
모든 열 조회 SELECT 절 선택
집계 회원수가 높은 순으로 ORDER BY 절 정렬

• GROUP BY 절이 사용되게 되면 기존 테이블이 새로운 테이블이 만들어짐

 

• FROM -> WHERE -> GROUP BY 순으로 실행

  - FROM -> GROUP BY 순으로 작성해도 됨

• GROUP BY는 집계함수와 주로 사용되는 명령어

  - 여러 열별로 그룹화가 가능

  - GROUP BY에 있는 열들을 SELECT에도 작성해야 원하는 분석 결과를 확인할 수 있음

 

• 실습

USE Practice;

/************FROM************/

/* Customer 테이블 모든 열 조회 */
SELECT *
   FROM CUSTOMER;
   
   
/************WHERE****************/

/* 성별이 남성 조건으로 필터링 */
SELECT *
  FROM CUSTOMER
WHERE GENDER = 'MAN';

/************GROUP BY**************/

/* 지역별로 회원 수 집계 */
SELECT 
    ADDR, COUNT(MEM_NO) AS 회원수
FROM
    CUSTOMER
WHERE
    GENDER = 'MAN'
GROUP BY ADDR;
/* COUNT : 행들의 개수를 구하는 집계함수 */

/************HAVING*************/

/* 집계 회원수 100명 미만 조건으로 필터링 */
SELECT 
    ADDR, COUNT(MEM_NO) AS 회원수
FROM
    CUSTOMER
WHERE
    GENDER = 'MAN'
GROUP BY ADDR
HAVING COUNT(MEM_NO) < 100;
/* < : 비교 연산자 / ~보다 작은 */

/**************ORDER BY*****************/
SELECT 
    ADDR, COUNT(MEM_NO) AS 회원수
FROM
    CUSTOMER
WHERE
    GENDER = 'MAN'
GROUP BY ADDR
HAVING COUNT(MEM_NO) < 100
ORDER BY COUNT(MEM_NO) DESC;
/* DESC : 내림차순 / ASC : 오름차순 */

/************FROM->(WHERE)->GROUP BY***********/
/* FROM->GROUP BY 순으로 작성해도 됨*/
SELECT ADDR, COUNT(MEM_NO) AS 회원수
FROM CUSTOMER
/* WHERE GENDER = 'MAN' */
GROUP BY ADDR; 

/************GROUP BY + 집계함수 ***********/
/* 거주지역을 서울, 인천 조건으로 필터링 */
/* 거지지역 및 성별로 회원수 집계 */
SELECT 
    ADDR, GENDER, COUNT(MEM_NO) AS 회원수
FROM
    CUSTOMER
WHERE
    ADDR IN ('SEOUL' , 'INCHEON')
GROUP BY ADDR , GENDER;

/***************SQL 명령어 작성법***************/
/* 회원테이블(Customer)을 */
/* 성별이 남성 조건으로 필터링하여 */
/* 거주지역별로 회원수 집계 */
/* 집계 회원수 100명 미만 조건으로 필터링 */
/* 모든 열 조회 */
/* 집계 회원수가 높은 순으로 */

SELECT  ADDR
				,COUNT(MEM_NO) AS 회원수
   FROM  CUSTOMER
WHERE  GENDER = 'MAN' 
GROUP
        BY   ADDR
HAVING  COUNT(MEM_NO) < 100
ORDER
		BY  COUNT(MEM_NO) DESC;

 

728x90

트랜젝션 제어어 (TCL) : 트랜젝션 제어어는 데이터 조작어(DML) 명령어 실행, 취소, 임시저장할 때 사용하는 명령어

트랜젝션 (Transaction) : 분할할 수 없는 최소 단위, 논리적인 작업 단위

실행 (COMMIT) : 모든 작업을 최종 실행

   취소 (ROLLBACK) :  모든 작업을 되돌림

임시 저장 (SAVEPOINT) : ROLLBACK 저장점을 지정하는 명령어

 

실습

/* Practice 데이터베이스 사용*/
USE Practice;

/*************테이블 생성(Create)*****************/
/* (회원테이블 존재할 시 , 회원테이블 삭제) */
DROP TABLE 회원테이블;

/* 회원테이블 생성 */
CREATE TABLE 회원테이블 ( 
회원번호 INT PRIMARY KEY,
이름 VARCHAR(20),
가입일자 DATE NOT NULL,
수신동의 BIT
);

/* 회원테이블 조회 */
SELECT * FROM 회원테이블;

/*************BEGIN + 취소 (ROLLBACK)*************/
/* 트랜젝션 시작 */
BEGIN;

/* 데이터 삽입 */
INSERT INTO 회원테이블 VALUES (1001, '홍길동', '2020-01-02', 1);

/* 회원테이블 조회 */
SELECT * FROM 회원테이블;

/* 취소 */
ROLLBACK;

/* 회원테이블 조회 */
SELECT * FROM 회원테이블;

/*************BEGIN + 실행  (COMMIT)*************/
/* 트랜젝션 시작 */
BEGIN;

/* 데이터 삽입 */
INSERT INTO 회원테이블 VALUES (1001, '홍길동', '2020-01-02', 1);

/* 회원테이블 조회 */
SELECT * FROM 회원테이블;

/* 실행 */
COMMIT;

/* 회원테이블 조회 */
SELECT * FROM 회원테이블;

/************ 임시 저장 (SAVEPOINT) ************/
/* (회원테이블에 데이터 존재할 시, 데이터 모두 삭제) */
DELETE FROM 회원테이블;

/* 회원테이블 조회 */
SELECT * FROM 회원테이블;

/* 트랜젝션 시작 */
BEGIN;

/* 데이터 삽입 */
INSERT INTO 회원테이블 VALUES (1001, '홍길동', '2020-01-02', 1);

/* SAVEPOINT 지정 */
SAVEPOINT S1;

/* 1001 회원 이름 수정 */
UPDATE 회원테이블
       SET 이름 = ' 이순신';
       
/* SAVEPINT 지정 */
SAVEPOINT S2;

/* 1001 회원 데이터 삭제 */
DELETE
    FROM 회원테이블;
    
/* SAVEPOINT 지정 */
SAVEPOINT S3;

/* 회원테이블 조회 */
SELECT * FROM 회원테이블;

/* SAVEPINT S2 저장점으로 ROLLBACK */
ROLLBACK TO S2;

/* 회원테이블 조회 */
SELECT * FROM 회원테이블;

/* 실행 */
COMMIT;

/* 회원테이블 조회 */
SELECT * FROM 회원테이블;
728x90

• 데이터 조작어(DML) : 데이터를 삽입, 조회, 수정, 삭제할 때 사용하는 명령어

(1) 삽입 : 제약조건 위반, 문자 및 날짜형 (' ')

(2) 조회 : 모든 열(*), 특정 열 이름 변경(AS)

(3) 수정 : 특정 조건 (WHERE)

(4) 삭제 : 특정 조건 (WHERE) 

 

• 실습

/* Practice 데이터 베이스 사용 */
USE Practice;

/************* 테이블 생성 (CREATE) *************/
/* 회원테이블 생성 */
CREATE TABLE 회원테이블(
회원번호 INT PRIMARY KEY,
이름 VARCHAR(20),
가입일자 DATE NOT NULL,
수신동의 BIT
);

/************* 데이터 삽입 *************/
INSERT INTO 회원테이블 VALUES (1001, '홍길동', '2020-01-02', 1);
INSERT INTO 회원테이블 VALUES (1002, '이순신', '2020-01-03', 0);
INSERT INTO 회원테이블 VALUES (1003, '장영실', '2020-01-04', 1);
INSERT INTO 회원테이블 VALUES (1004, '유관순', '2020-01-05', 0);

/* 회원테이블 조회 */
SELECT * FROM 회원테이블;

/************* 조건 위반 *************/
/* PRIMARY KEY 제약 조건 위반 */
INSERT INTO 회원테이블 VALUES (1004, '장보고', '2020-01-06', 0);

/* NOT NULL 제약 조건 위반 */
INSERT INTO 회원테이블 VALUES (1005, '장보고', NULL, 0);

/* 데이터 타이5 조건 위반 */
INSERT INTO 회원테이블 VALUES (1004, '장보고', 1, 0);



/************* 데이터 조회 *************/
/* 모든 열 조회 */
SELECT * FROM 회원테이블;

/* 특정 열 조회 */
SELECT 회원번호,
       이름
  FROM 회원테이블;
    
/* 특정 열 이름 변경하여 조회 */
SELECT 회원번호,
       이름 AS 성명
  FROM 회원테이블;

 

 

• 데이터 제어어(DCL) : 데이터 접근 권한 부여 및 제거할 때 사용하는 명령어

 

• 실습

/******************사용자 확인******************/
/* MYSQL 데이터베이스 사용 */
USE MYSQL;

/* 사용자 확인 */
SELECT * FROM USER;

/*********** 사용자 추가 *********/
/* 사용자 아이디 및 비밀번호 생성 - localhost는 local 에서 접속이 가능하다는 뜻 / 뒤에 test는 비밀번호 */
CREATE USER 'TEST'@LOCALHOST IDENTIFIED BY 'TEST';

/* 사용자 확인 */
SELECT * FROM USER;

/* 사용자 비밀번호 변경 */
SET PASSWORD FOR 'TEST'@LOCALHOST = '1234';

/************ 권한 부여 및 제거 ************/
/** 권한 : CREATE, ALTER , DROP, INSERT, DELETE, UPDATE, SELECT 등 **/

/* 특정 권한 부여 */
GRANT SELECT, DELETE ON PRACTICE.회원테이블 TO 'TEST'@LOCALHOST;

/* 특정 권한 제거 */
REVOKE DELETE ON PRACTICE.회원테이블 FROM 'TEST'@LOCALHOST;

/*모든 권한 부여 */
GRANT ALL ON Practice.회원테이블 TO 'TEST'@LOCALHOST;

/*모든 권한 제거 */
REVOKE ALL ON Practice.회원테이블 FROM 'TEST'@LOCALHOST;

/************** 사용자 삭제 ****************/

/*사용자 삭제*/
DROP USER 'TEST'@LOCALHOST;

/* 사용자 확인*/
SELECT *
  FROM USER;

 

 

'Studying > SQL' 카테고리의 다른 글

데이터 조회(SELECT)  (0) 2021.09.27
SQL명령어 - 트랜젝션 제어어(TCL)  (0) 2021.09.27
SQL 명령어 - 데이터 정의어 (DDL)  (0) 2021.09.22
SQL 공부 시작하기  (0) 2021.09.21
728x90

 

 ∙ 데이터 정의어 : 테이블을 생성, 변경, 삭제할 때 사용하는 명령어

 ∙ 테이블은 각 열마다 반드시 1가지 데이터 타입으로 정의가 되어야 함.

     ☞ 데이터 타입 종류

       [ 숫자형 ]

데이터 형식 바이트 수  숫자 범위  설명
BIT 1 0 / 1 / NULL 논리형으로 참, 거짓으로 사용
INT 4 약 -21억~ +21억 정수
BIGINT 8 -2^63  ~+2^63 정수
FLOAT 4 -3.40..x 10^38 ~ 3.40..x 10^38 소수
DOUBLE 8 -1.79..x 10^308 ~ 1.79..x 10^308 소수

       [ 문자형 ]

데이터 형식 바이트 수 설명
CHAR(n) 0 ~ 8000 고정길이 문자형
NCHAR(n) 0 ~ 8000 유니코드 고정길이 문자형 *한글 0~4000자
VARCHAR(n) 0 ~ 2^31-1 가변길이 문자형 *VARCHAR(MAX) 2GB
NVARCHAR(n) 0 ~ 2^31-1 유니코드 가변길이 문자형 *NVARCHAR(MAX) 2GB

       [ 날짜형 ]

데이터 형식  바이트 수  설명
DATETIME 8 YYYY-MM-DD 시:분:초
DATE 3 YYYY-MM-DD
TIME 5 시:분:초

 

 ∙ 테이블의 각 열마다 제약조건을 정의할 수 있음.

     ☞ 제약조건

      1. PK(PRIMARY KEY) : 중복되어 나타날 수 없는 단일 값 : NOT NULL

      2. NOT NULL : NULL 허용하지 않음

 

 

 

 ∙ 실습

/* Practice 이름으로 데이터베이스 생성 */
CREATE DATABASE Practice;

/* Practice 데이터베이스 사용 */
USE Practice;

/*---------테이블 생성(Create)---------*/
CREATE TABLE 회원테이블 (
회원번호 INT PRIMARY KEY,
이름 VARCHAR(20),
가입일자 DATE NOT NULL,
수신동의 BIT
);
/* 기본키 (PRIMARY KEY) : 중복되어 나타날 수 없는 단일 값 + NOT NULL */
/* NOT NULL : NULL 허용하지 않음 */

/*회원테이블 조회('*'은 모든 열을 조회한다는 뜻)*/
SELECT * FROM 회원테이블;

/*---------테이블 열 추가---------*/
/* 성별 열 추가 */
ALTER TABLE 회원테이블 ADD 성별 VARCHAR(2);

/*회원테이블 조회('*'은 모든 열을 조회한다는 뜻)*/
SELECT * FROM 회원테이블;

/*---------테이블 열 데이터 타입 변경---------*/
/* 성별 열 타입 변경 */
ALTER TABLE 회원테이블 MODIFY 성별 VARCHAR(20);

/*---------테이블 열 이름 변경---------*/
/* 성별 열 이름 변경 */
ALTER TABLE 회원테이블 CHANGE 성별 성 VARCHAR(2);

/*---------테이블 명 변경---------*/
ALTER TABLE 회원테이블 RENAME 회원정보;

/*---------테이블 삭제---------*/
DROP TABLE 회원정보;

 

728x90

눈물의 첫 면탈 후 마음을 다잡기 위해 새로운 공부를 시작해본다.

그것의 이름은 SQL !

열심히 공부하면서 실습도 하고 SQLD도 준비해보고자 한다!

강의는 edwith 부스트코스 '기초 데이터 분석을 위한 핵심 SQL'을 보며 공부하고 있다.

앞으로 이 카테고리에 공부한 내용들을 차곡차곡 쌓아보고자한다.

 

 

1. SQL이란?

SQL = Structured Query Language 

관계형 데이터베이스가 이해할 수 있는 구조화된 질의어.

관계형 데이터베이스에 있는 데이터를 분석하는 언어.

 

2. 관계형 데이터베이스 (RDB)이란?

RDB = Relational DataBase

행과 열로 구성된 테이블이 다른 테이블과 관계를 맺고 모여있는 집합체.

  * 행과 열로 구성되어 있음.

  * 관계는 1:1, 1:N, N:N 세가지 형태로 있으며 테이블 간에 연결이 가능하다는 것을 의미.

    ex) 회원 - 주문 은 1:N 관계이다. 한명의 회원이 여러번 주문 가능

 

3. SQL 기본 명령어

SQL 명령어
데이터 정의어
(Data Definition Language)
데이터 조작어
(Data Manipulation Language)
데이터 제어어
(Data Control Language)
트랜젝션 제어어
(Transaction Control Language)
테이블 생성, 변경, 삭제 데이터 삽입, 조회, 수정, 삭제 데이터 접근 권한 부여, 제거 데이터 조작어(DML) 명령어 실행, 취소, 임시저장

4. DBA & Data Analyst

DBA = DataBase Administrator - 데이터베이스 관리자, 기업 내에서 데이터베이스를 관리 / 데이터 정의어, 데이터 제어어

Data Analyst - 데이터 분석을 통해 새로운 인사이트를 도출 / 데이터 조작어, 트랜젝션 제어어

 

5. MySQL Workbench 

- 단축어 ( MAC OS : Command / Window OS : Ctrl )

  Command + T : 새로운 쿼리창 열기

  Command + Enter : 쿼리 실행 

  Command + S : 쿼리 저장

 

 - 데이터 베이스 생성 

CREATE DATABASE 이름;

 

- 해당 데이터베이스 사용

USE 이름;

 

- 데이터 베이스 삭제 

DROP DATABASE 이름;

 

+ Recent posts