테이블에 데이터 넣고 싶으면
DBMS 프로그램에서 직접 클릭과 타이핑으로 넣을 수 있는데
대량 or 자동으로 넣고 싶으면 당연히 SQL 짜서 넣습니다.
새로 테이블 아무데나 만들고 시작해봅시다.
연습용 테이블 만들기
아무 데이터베이스에 테이블하나 만들어보십시오.
id, 상품명, 가격 이렇게 3개의 컬럼을 만들어주면 됩니다.
id는 Auto increment, Primary key 제약도 넣어주십쇼
물론 배운사람처럼 SQL 써서 만들어보십시오.
CREATE TABLE product (
id INT AUTO_INCREMENT PRIMARY KEY,
상품명 varchar(100),
가격 INT
)
▲ 전 테이블 만들 땐 이런거 써봤음
데이터 집어넣고 싶으면 INSERT
주구장창 SELECT 문법만 썼는데 이번엔 새로운 INSERT 문법입니다.
그거 쓰면 데이터 넣을 수 있음
INSERT INTO 테이블명 (컬럼명1, 컬럼명2 ...) VALUES (값1, 값2 ...)
테이블의 모든 컬럼명과 거기 넣을 모든 값을 차례로 적어주면 됩니다.
컬럼적는 순서는 마음대로 해도 됩니다.
INSERT INTO product (id, 상품명, 가격) VALUES (1, '김치', 500)
그래서 이렇게 적으면
id | 상품명 | 가격 |
1 | 김치 | 500 |
이런 데이터가 저장됩니다.
INSERT INTO product (상품명, 가격) VALUES ('두부', 1000)
모든 컬럼말고 일부 컬럼에만 데이터 저장할 수도 있습니다.
예를 들어 AUTO INCREMENT 제약이 부여된 컬럼은 입력을 생략해도 알아서 채워줌
INSERT INTO product VALUES (3, '수박', 1500)
모든 컬럼에 빠짐없이 데이터를 넣는 경우 컬럼명은 생략할 수 있습니다.
다만 나중에 새로운 컬럼을 누가 만들거나 그러면 문제될 수 있으니까
컬럼명도 쓰는게 낫습니다.
INSERT INTO product VALUES (4, '참외', 2000), (5, '배추', 2500);
여러 행을 동시에 넣으려면 이런 식으로 써도 됩니다.
(참고)
- 일부 컬럼에만 데이터 저장시 빈 곳은 NULL이 들어갑니다.
- 컬럼에 NOT NULL 제약조건이 있으면 당연히 NULL 넣기 불가능
- NULL 대신 빈문자 '' 아니면 0 입력해두는 사람들도 있습니다.
다만 Oracle에선 '' 빈문자는 자동으로 NULL로 바꿔줍니다.
다른 테이블에 있던 데이터 복사도 가능
INSERT INTO 문법의 VALUES () 자리에 SELECT 문을 집어넣을 수 있는데
그럼 SELECT로 찾은 행들을 집어넣어줍니다.
INSERT INTO product SELECT 컬럼명 FROM 테이블명
이런 식인데 테이블안의 데이터를 복사하고 싶으면 쓰도록 합시다.
진짜 복사되는지 확인해보기 위해서 다른 테이블 하나 만들어봅시다.
1. 일단 product2라는 다른 테이블을 하나 만들어봅시다.
기존 테이블명에 우클릭해서 복사 & 붙여넣기 눌러도 테이블 생성됩니다.
2. 방금 만든 테이블에 데이터 아무거나 집어넣어봅시다.
INSERT INTO product (id, 상품명, 가격)
SELECT id, 상품명, 가격 FROM product2
3. 그 다음에 이걸 입력해봅시다.
진짜로 SELECT로 찾은 product2 데이터가 product로 삽입됩니다.
- 당연히 SELECT 문법 뒤에 WHERE, JOIN 이런거 전부 사용가능
- 테이블에 심각한 작업할 때 잠깐 테이블을 백업하는 용도로도 사용해도 괜찮습니다.
테이블 복사문법 2
SELECT * INTO 새로운테이블명
FROM 기존테이블명
WHERE 조건식
이렇게 써도 테이블복사가 가능합니다.
얘는 테이블을 아예 새로 생성해준다는게 차이점입니다.
CREATE TABLE 새로운테이블명 SELECT * FROM 기존테이블명
MySQL에는 SELECT INTO 문법이 없어서 이렇게 써야합니다.
CREATE TEMPORARY TABLE 새로운테이블명 SELECT * FROM 기존테이블명
참고로 이 문법쓰면 임시 테이블을 생성해줍니다.
세션이 끝나면 자동으로 테이블이 삭제되어서 가끔 새로운 테이블에 실험해볼 때 편리합니다.
삽입 수정 삭제는 위험함
뒤에 가서 수정, 삭제 문법도 배워볼텐데
삽입, 수정, 삭제는 매우 위험한 작업입니다.
회사에 직원이 많아지면 반드시 산업스파이와 트롤러가 생기기 때문에
삽입, 수정, 삭제 아무나 할 수 있게 만들면 나중에 큰일날 수 있습니다.
우리는 맨 처음 설치시 만들었던 root 계정을 사용하고 있는데
이걸로 로그인하면 모든 작업을 마음대로 할 수 있는데
이거 말고 권한을 축소시킨 계정을 하나 새로 만들 수 있습니다.
▲ MySQL Workbench 프로그램 상단메뉴 Server - Users and Privileges 누르면
특정 DB 접속용 계정생성 & 권한부여가 가능합니다.
거기서 SELECT만 할 수 있는 계정만들어서 뿌리면 안전하겠군요.
'Mysql&DBeaver' 카테고리의 다른 글
DBeaver)SELECT 결과들을 합치려면 UNION (0) | 2024.09.08 |
---|---|
DBeaver)수정 삭제는 UPDATE / DELETE (WHERE 안쓰면 퇴사각) (0) | 2024.09.07 |
DBeaver)저번시간 숙제와 LEFT, RIGHT JOIN (0) | 2024.09.07 |
DBeaver)테이블 2개 합쳐서 출력은 INNER JOIN (1) | 2024.09.06 |
DBeaver)제3정규형 (3NF) & Foreign Key (0) | 2024.09.06 |