SQL 기본 쿼리문 ( 2 )

2024. 7. 11. 10:13·빅데이터 분석가 양성과정/MySQL
목차
  1. 데이터 변경을 위한 SQL문
  2. INSERT
  3. INSERT는 테이블에 데이터를 삽입하는 명령
  4. 자동으로 증가하는 AUTO_INCREMENT
  5. 한꺼번에 INSERT
  6. ALTER
  7. 대량의 샘플 데이터 생성
  8. UPDATE
  9. 곱하기 가능
  10. DELETE FROM
  11. 테이블 삭제
  12.  
  13. 조건부 데이터 입력, 변경
  14. constraint
  15. IGNORE
  16. DUPLICATE KEY UPDATE
  17. 컬럼명 변경
  18. WITH절과 CTE
  19. WITH절과 CTE 개요
  20. 비재귀적 CTE

데이터 변경을 위한 SQL문

INSERT

INSERT는 테이블에 데이터를 삽입하는 명령


    
USE sqldb;
CREATE table testTbl1 (id int, userName char(3), age int);
INSERT INTO testTbl1 VALUES(1, '홍길동', 25);
SELECT * FROM testTbl1;
  • 테이블 이름 다음에 나오는 열은 생략이 가능, 하지만 생략할 경우 VALUES 다음에 나오는 값들의 순서 및 개수가 테이블이 정의된 열 순서 및 개수와 동일해야함

    
INSERT INTO testTbl1 (id, userName) VALUES (2, '설현');
SELECT * FROM testTbl1;

  • 열의 순서를 바꿔서 입력할 때 꼭 열 이름을 입력할 순서에 맟줘 나열

    
INSERT INTO testTbl1 (userName, age, id) VALUES ('하니', 26, 3);
SELECT * FROM testTbl1;

자동으로 증가하는 AUTO_INCREMENT

  • 자동으로 1부터 증가하는 값을 입력해줌
  • AUTO_INCREMENT로 지정할 때는 꼭 PRIMARY KEY 또는 UNIQUE로 지정해 줘야함
  • INSERT문에서 NULL 값을 지정하면 자동 입력

    
CREATE table testTbl2 (
id int auto_increment PRIMARY KEY,
userName char(3),
age int);
INSERT INTO testTbl2 VALUES (NULL, '홍길동', 25);
INSERT INTO testTbl2 VALUES (NULL, '김길동', 22);
INSERT INTO testTbl2 VALUES (NULL, '박길동', 21);
SELECT * FROM testTbl2;

한꺼번에 INSERT


    
INSERT INTO 테이블이름 VALUES (값1, 값2 ...), (값3, 값4...), (값5, 값6, ...);

 

ALTER

  • AUTO_INCREMENT 입력값을 100부터 입력되도록 변경

    
ALTER TABLE testTbl2 AUTO_INCREMENT = 100;
INSERT INTO testTbl2 VALUES (NULL, '찬미', 27);
INSERT INTO testTbl2 VALUES (NULL, '찬영', 22);
SELECT * FROM testTbl2;


    
SET @@auto_increment_increment = 3;

increment 값을 3씩 증가하도록 설정

 

대량의 샘플 데이터 생성

  • INSERT INTO … SELECT
  • 기존에 있던 employees 데이터에서 employees 테이블에 있는 대량의 데이터를 가져옴

    
CREATE TABLE testTbl4 (id int, Fname varchar(50), Lname varchar(50));
INSERT INTO testTbl4
SELECT emp_no, first_name, last_name FROM employees.employees;
SELECT * FROM testTbl4


    
CREATE TABLE testTbl5
SELECT emp_no, first_name, last_name FROM employees.employees;
SELECT * FROM testTbl5;

  • 달라진 부분은 컬럼 명이 다르다.

 

UPDATE

  • UPDATE 테이블 이름 SET

    
UPDATE testTbl4 SET Lname = '없음' WHERE Fname = 'Kyoichi';
SELECT * FROM testTbl4;

  • 만약 WHERE절 안 줬으면 모든 데이터 Lname 다 ‘없음’ 으로 된다

 

곱하기 가능


    
UPDATE buytbl SET price = price * 1.5;

 

DELETE FROM


    
SELECT * FROM testTbl4 WHERE Fname = 'Aamer';
DELEte FROM testTbl4 WHERE Fname = 'Aamer';

테이블 삭제


    
DELETE FROM bigTbl1; -- 데이터만 삭제
DROP TABLE bigTbl2; -- 테이블 전체를 삭제
TRUNCATE TABLE bigTbl3; -- 테이블의 구조는 남겨놓고 삭제.
  • DML 문인 DELETE 는 트랜잭션 로그를 기록하는 작업 때문에 삭제가 오래 걸린다.
  • DDL 문인 DROP문은 테이블 자체를 삭제한다.
    • DDL은 트랜잭션을 발생 시키지 않는다.
  • DDL 문인 TRUNCATE문은 DELETE와 동일하지만 트랜잭션 로그를 기록하지 않아 속도가 무척 빠르다. → 복원을 할 수 없다.
  • ⇒ 테이블 전체를 삭제 할때는 DROP, 테이블 구조는 남겨 놓고 싶으면 TRUNCATE로 삭제하는 것이 효율적이다.
  • 트랜잭션은 복원하기 위해 로그를 기록해 놓는다. ex) 계좌이체

 

조건부 데이터 입력, 변경

constraint


    
CREATE TABLE memberTbl
SELECT userID, name, addr FROM usertbl LIMIT 3;
ALTER TABLE memberTbl
ADD CONSTRAINT pk_memberTbl PRIMARY KEY (userID);

 

IGNORE

  • PK는 중복 값을 넣으면 안되는데 하나만 중복 되었을 때 나머지는 넣고 싶을 때
  • IGNORE을 사용하면 중복 되는 것은 무시하고 나머지 데이터를 추가 입력해준다.

    
INSERT IGNORE INTO memberTbl VALUES ('BBK', '비비코', '미국');
INSERT IGNORE INTO memberTbl VALUES ('SJH', '서장훈', '서울');
INSERT IGNORE INTO memberTbl VALUES ('HJY', '현주엽', '경기');

 

DUPLICATE KEY UPDATE

  • 똑같은 데이터일 때 업데이트 해줘라
  • 중복값이 없을 때는 그냥 추가된다.

    
INSERT INTO memberTbl VALUES('BBK', '비비코', '미국')
ON DUPLICATE KEY UPDATE name = '비비토', addr = '미국';

 

컬럼명 변경


    
ALTER TABLE usertbl CHANGE birthYeaar birthYear INT;

 

 

WITH절과 CTE

WITH절과 CTE 개요

  • WITH 절은 CTE(Common Table Expression)를 표현하기 위한 구문으로 MySQL 8.0 이후부터 사용
  • CTE는 기존의 뷰, 파생 테이블, 임시 테이블 등으로 사용되던 것을 대신 할 수 있으며, 더 간결한 식으로 보여지는 장점
  • CTE는 ANSI-SQL99 표준에서 나온것이다.
  • 기존의 SQL은 ANSI-SQL92를 기준으로 한다. 하지만, 최근의 DBMS는 대개 ANSI-SQL99와 호환되므로 다른 DBMS에서도 같거나 비슷한 방식으로 응용

비재귀적 CTE


    
WITH 테이블이름(열 이름)
AS
(
<쿼리문>
)
SELECT 열 이름 FROM 테이블이름;

    
WITH abc(userid, total)
AS
(SELECT userid , SUM(price * amount)
FROM buytbl GROUP BY userid)
SELECT * FROM abc ORDER BY total DESC;

'빅데이터 분석가 양성과정 > MySQL' 카테고리의 다른 글

테이블  (0) 2024.07.11
MySQL의 데이터 형식  (2) 2024.07.11
SQL 기본 쿼리문 ( 1 )  (0) 2024.07.11
유틸리티 사용법  (0) 2024.07.11
MySQL DB Modeling  (1) 2024.07.11
  1. 데이터 변경을 위한 SQL문
  2. INSERT
  3. INSERT는 테이블에 데이터를 삽입하는 명령
  4. 자동으로 증가하는 AUTO_INCREMENT
  5. 한꺼번에 INSERT
  6. ALTER
  7. 대량의 샘플 데이터 생성
  8. UPDATE
  9. 곱하기 가능
  10. DELETE FROM
  11. 테이블 삭제
  12.  
  13. 조건부 데이터 입력, 변경
  14. constraint
  15. IGNORE
  16. DUPLICATE KEY UPDATE
  17. 컬럼명 변경
  18. WITH절과 CTE
  19. WITH절과 CTE 개요
  20. 비재귀적 CTE
'빅데이터 분석가 양성과정/MySQL' 카테고리의 다른 글
  • 테이블
  • MySQL의 데이터 형식
  • SQL 기본 쿼리문 ( 1 )
  • 유틸리티 사용법
분석가 황규진
분석가 황규진
공공기관 위험평가관련 부서에서 근무하고 있습니다.
HGJ's Insight공공기관 위험평가관련 부서에서 근무하고 있습니다.
글쓰기 관리
분석가 황규진
HGJ's Insight
홈
|
로그인
  • 전체 글 574
    • 개인 활동(일상) 4
      • 독서 2
      • 근황 공유 1
      • 업무 관련 1
    • 개인 활동(공부) 59
      • Tableau Bootcamp 10
      • 금융 공부 11
      • 직무 공부 26
      • 강의 12
    • 개인프로젝트 4
      • 신용카드 연체 평가 모델 0
      • 대출 승인 여부 예측 모델 4
    • 자격증 7
      • 빅데이터분석기사 1
      • 정보처리기사 1
      • 경영정보시각화 1
      • SQL개발자(SQLD) 1
      • 데이터 분석 준전문가(ADsP) 1
      • 통계적품질관리(SPC) 1
      • AICE Associate 1
    • 코드 정리 11
      • 코드 정리 - Tistory 8
      • 코드 정리 - Python 3
    • 코딩테스트연습 116
      • SQL_프로그래머스 116
    • 취업사관학교 9기 199
      • 모닝스쿨 54
      • 스스로 모닝스쿨 125
      • 직무 스터디 20
      • 반성과 다짐 0
    • 빅데이터 분석가 양성과정 173
      • Python 88
      • Python - 머신러닝 26
      • Python - 딥러닝 31
      • PyQt 4
      • JavaScript 10
      • MySQL 13
      • Node.js 1
hELLO· Designed By정상우.v4.6.1
분석가 황규진
SQL 기본 쿼리문 ( 2 )
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.