[혼공S] 2주차_테이블의 데이터 입력, 수정, 삭제까지

2025. 1. 18. 00:36·SQL/혼자 공부하는 SQL




 

 

혼자 공부하는 SQL

✔️ SELECT문

✔️ SELECT + WHERE문

✔️ ORDER BY(정렬) - 2주차(2) 블로그 참조

✔️ GROUP BY(그룹핑) - 2주차(2) 블로그 참조

✔️ 데이터 변경 위한 쿼리 작성 - 2주차(3) 블로그 글 참조

 

 


 

 

✔️ 데이터 변경 위한 쿼리 작성

 

 

# INSERT(데이터 입력)

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

-- INSERT 기본 형식 
insert into 테이블명[(열1, 열2, 열3, ...)] values (값1, 값2. 값3, ...)

 

 

 태이블 명 다음에 나오는 열은 생략이 가능

(열 이름 생략하는 경우, values 다음에 나오는 값들의 순서와 개수는 테이블에 정의된 열 순서 및 개수와 동일해야함)

-- 책과 다르게 테이블 생성 진행
-- market_db에 들어갈만한 product의 정보를 담은 products 테이블 생성

create table products (
	pdt_id int,
	pdt_name char(4),
    pdt_orders int
);

insert into products values (1, '연필', 25);

-- 테이블 확인

select * from products;

 

 

pdt_id와 pdt_name만 입력하고 pdt_orders 입력하지 않는 경우 NULL값이 들어가게 됨

-- values 이후 각 수에 맞춰 쓰지 않은 경우는 NULL값 들어가게 됨
-- 테이블 생성 시, NOT NULL 조건을 주는 경우는 무조건 데이터가 입력되어야 함

insert into products (pdt_id, pdt_name) values (2, '장난감');

-- 열의 순서를 바꿔 입력하고 싶은 경우, 열 이름과 값을 원하는 순서 맞춰 작성

insert into products (pdt_name, pdt_orders, pdt_id) values ('책', 20, 3);

-- 데이터 확인

select 
	*
from products;

 

 

 

#  AUTO_INCREMENT(자동으로 증가)

열 정의 시, 1부터 증가하는 값을 입력(대부분 id값에 활용)

해당 열은 없다고 생각하며 NULL 입력

(auto_increment로 지정하는 열은 꼭 PRIMARY KEY로 지정)

-- products2 테이블 생성

create table products2 (
	pdt_id int auto_increment, -- primary key 입력해도 적용됨
	pdt_name char(4),
    pdt_orders int
    primary key (pdt_id)
);

-- 데이터 입력 

insert into products2 values (null, '물건1', 25)
insert into products2 values (null, '물건2', 22)
insert into products2 values (null, '물건3', 30)

-- 데이터 확인

select * from products2;

 

 

현재 어디까지 증가되었는지 확인(last_insert_id())

select last_insert_id();

 

 

입력되는 값을 100부터 시작하도록 변경하고 싶다면

-- 100부터 시작으로 변경 진행
-- alter table은 테이블 변경하라는 의미

alter table products2 auto_increment = 100;

-- 데이터 입력 및 확인

insert into products2 values (null, '물건4', 35);
select * from prodcuts2;

 

 

 입력되는 값을 1000으로 시작하고, 다음 값은 3씩 증가하도록 설정

create table prodcuts3 (
	pdt_id int auto_increment primary key,
	pdt_name char(4),
    pdt_orders int
);

-- 1000부터 시작하면서 3씩 증가하도록 변경
-- @@시스템 변수 활용 -> show grobal variables 실행하여 확인

alter table products3 auto_increment = 1000;
set @@auto_increment_increment = 3;

-- 데이터 입력 및 확인
-- 한 줄로 한번에 작성하는 방법 사용

insert into products3 values (null, '물건00', 20), (null, '물건01', 23), (null, '물건02', 25);
select * from products3;

 

 

 

# INSERT INTO ~ SELECT(다른 테이블의 데이터를 한 번에 입력)

많은 양의 데이터를 한번에 입력하기 위해 다른 태이블에 입력된 데이터 활용하여 

해당 테이블의 데이터를 가져와서 입력 진행

-- 다른 테이블의 데이터 가져와 입력 구문 기본 형식

insert into 테이블명 (열이름1, 열이름2, 열이름3, ...)
	select 문;
    
-- 다른 테이블의 데이터 수 확인
select count(*) from 타데이터베이스명.타테이블명;

 

 

DESC

Describe의 약자로 테이블의 구조 출력 기능 수행

-- 테임블 구조 확인 
DESC 타데이터베이스명.타테이블명;

-- 5개 정도의 데이터 확인
select 
	* 
from 타데이터베이스명.타테이블명
limit 5;

 

 

타테이블에서 가져온 데이터를 바탕으로 새로운 테이블 생성

DESC로 확인한 열 이름과 데이터 형식 활용(열 이름은 변경해도 상관X)

-- 타테이블 조회한 것을 바탕으로 새로운 테이블 생성
create table table1 (열이름1 데이터형식1, 열이름2 데이터형식2, ...)

-- 타테이블의 데이터를 불러와서 생성된 table1에 입력 
insert into table1
	select 열이름1, 열이름2 from 타데이터베이스명.타테이블명;

(실제 데이터베이스의 테이블로 진행하면 될 것 같습니다)

 

 


 

 

# UPDATE(데이터 수정)

데이터가 변경되는 경우 행 데이터를 수정해야 하는 경우 사용

기존에 입력되어 있는 값을 수정하는 명령

 

 

▶︎ MySQL Workbench 설정 변경 진행
MySQL 워크벤치는 기본적으로 UPDATE와 DELETE를 허용하지 않기 때문에 UPDATE를 실행하기 전에 설정 변경이 필수!
[MYSQLWorkbench] > [Settings...] > [SQL Editor] > [Others] > Safe Updates 체크 헤제 후 [OK] 버튼 누르기 
워크벤치 종료 후 다시 실행하여 접속 수행

 

 

데이터 수정 진행

-- UPDATE 기본 형식 

update 테이블명 
	set 열1 = 값1, 열2 = 값2, ...
    where 조건;
    
-- products2를 이용하여 데이터 수정 진행
-- products2 데이터 확인

select * from products2;

 

 

pdt_name이 물건1이라는 데이터를 물건11로 수정 진행

-- 물건1이라는 pdt_mame을 물건11로 변경 

update products2
set pdt_name = '물건11'
where pdt_name = '물건1';

-- 데이터 확인
select 
	*
from products2;

 

 

물건2라는 데이터와 22라는 pdt_orders 데이터를 

물건22 / 33으로 데이터 수정 진행

-- 물건2 / 22
-- 물건22 / 33

update prodcuts2
set pdt_name = '물건22', pdt_orders = 33
where pdt_name = '물건2';

-- 변경된 데이터 확인
select * from products2;

 

+

 

where절이 없는 update문

where절을 생략하게 된다면 모든 행의 값이 변경되게 되는데

전체 행의 값을 변경하는 경우는 많지 않으므로 주의하기

 

 


 

 

# DELETE(데이터 삭제)

테이블의 행 데이터를 삭제해야 하는 경우 사용(update와 동일하게 행 단위로 삭제)

예) 탈퇴한 회원의 정보를 삭제해야 하는 경우 등

-- DELETE 구문의 기본 형식
delete from 테이블명 where 조건;

 

 

products3 테이블에서 pdt_id에서 03이 포함된 경우 제거

-- products3 데이터 확인
select * from products3;

-- pdt_id에서 03이 포함된 경우 제거
delete from products3
where pdt_id like '%03%';

-- 삭제한 데이터 반영되었는지 확인 
select * from products3;

반영되어 pdt_id가 1003인 데이터의 행이 없어진 것을 알 수 있음

 

+

 

만약 삭제되어야 하는 데이터의 수가 많은 경우 limit를 활용하여 원하는 데이터만큼 제거 가능

대용량 테이블의 경우
- DELETE문은 삭제에 시간이 오래 걸림(빈 테이블을 남김)
- DROP문은 테이블 자체를 삭제 진행 -> 속도가 가장 빠름(테이블이 남지 X)
- TURNCATE문도 DELETE와 동일한 효과를 내지만 삭제하는 속도가 매우 빠름(빈 테이블을 남김)

 

 




이상으로 2주차 내용 정리를 마치겠습니다

혹시 위와 같은 내용을 더 자세히 공부해보고 싶다면

https://www.youtube.com/watch?v=_JURyg_KzHE&list=PLVsNizTWUw7GCfy5RH27cQL5MeKYnl8Pm&index=7

 

6~8강 까지의 내용을 다루고 있으니 필요하신 분은 유튜브 영상을 참고하여 공부하시기 바랍니다😊

 

반응형

'SQL > 혼자 공부하는 SQL' 카테고리의 다른 글

[혼공S] 4주차_제약조건을 활용한 테이블 및 가상 테이블(VIEW) 생성 및 활용  (0) 2025.02.03
[혼공S] 3주차_MySQL 데이터 형식과 JOIN(조인), SQL 프로그래밍 활용  (1) 2025.01.23
[혼공S] 2주차_SELECT문과 WHERE절 활용  (0) 2025.01.18
[혼공S] 2주차 _SELECT문의 ORDER BY와 GROUP BY 활용  (0) 2025.01.18
[혼공S] 1주차_DB부터 MySQL 활용까지  (0) 2025.01.09
'SQL/혼자 공부하는 SQL' 카테고리의 다른 글
  • [혼공S] 3주차_MySQL 데이터 형식과 JOIN(조인), SQL 프로그래밍 활용
  • [혼공S] 2주차_SELECT문과 WHERE절 활용
  • [혼공S] 2주차 _SELECT문의 ORDER BY와 GROUP BY 활용
  • [혼공S] 1주차_DB부터 MySQL 활용까지
DAILYSEEKER
DAILYSEEKER
데이터 분석 공부 열심히 하는 중😁
  • DAILYSEEKER
    ECODATALIST
    DAILYSEEKER
  • 전체
    오늘
    어제
  • 글쓰기 관리자
    • DATA (224)
      • SQL (18)
        • SQLD (3)
        • 데이터 분석을 위한 MySQL (5)
        • 혼자 공부하는 SQL (10)
      • Python (39)
        • 데이터 분석을 위한 Python (32)
        • 데이터 분석을 위한 데이터 스크래핑 (4)
        • 데이터 분석 프로젝트 (3)
      • 기획 (3)
        • 서비스 기획 (1)
        • 기업 분석 (2)
      • Frontend(프론트엔드) (22)
        • 데이터 분석을 위한 웹 개발 언어 (9)
        • 자바스크립트 (13)
        • 타입스크립트 (0)
      • 코딩 테스트 (86)
        • 프로그래머스_MySQL (86)
      • Data Driven (12)
        • 코드 없이 배우는 데이터 분석 (6)
        • Excel (5)
      • UI & UX (24)
        • 피그마(Figma) (24)
      • BDA 학회 (20)
        • BDA학회_8기 (4)
        • BDA학회_9기 (16)
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
DAILYSEEKER
[혼공S] 2주차_테이블의 데이터 입력, 수정, 삭제까지
상단으로

티스토리툴바