오늘 목요일이자나요..
이번주 저 같은 경우는
시간이 진짜 너무
너무
안가요.
이럴수가 있나? 세상이 나한테 몰카하는 건가?
여러분 뻥치지마요. 다들 월화수목금인데
저만 누가 몰래 월화수수목금으로 끼워놓은 거죠??
오늘 공부를 마치고 난다면 정신력과 체력이 완전히 방전이 될 것 같슴다..ㅠㅠ
하지만 내일은 불타본적 없는 금요일이니
저는 오늘도 어디인지 모르는 저의 자리에서 최선을 다하며 살겠습니다.
p.s 기본포켓몬 세마리 다모음
INSERT문 함께 보시죠.
테이블에 데이터를 넣고싶다?
DBMS 에서 직접 클릭하고 데이터를 일일이 넣을 수 있는데
대량 or 자동으로 넣고 싶으면 당연히 쿼리로 합니다.
새로 테이블 아무데나 만들고 함 해봅시다.
연습용 테이블 만들기
아무 데이터베이스나 만들어보겠습니다.
CREATE TABLE product (
id INT AUTO_INCREMENT PRIMARY KEY,
상품명 varchar(100),
가격 int
);
데이터를 넣고싶다면 INSERT
저희는 지금까지 주구장창 SELECT만 했는데요.
이번엔다르다! INSERT 배워보겠습니다.
이거쓰면 데이터를 삽입할 수 있습니다.
INSERT INTO 테이블명 (컬럼명1, 컬럼명2...) VALUE (값1, 값2,...)
테이블의 모든 컬럼명과 거기에 넣을 값을 차례대로 넣어주면 됩니다.
(컬럼의 순서는 상관 없음)
INSERT INTO product (id, 상품명, 가격) VALUES (1, '아이폰15', 1500000)
그래서 일케 적으면요
id | 상품명 | 가격 |
1 | 아이폰15 | 1500000 |
이렇게 테이블에 데이터가 저장됩니다.
INSERT INTO product (상품명, 가격) VALUES ('갤럭시s23', 1300000)
모든 컬럼말고 일부 컬럼에만 데이터를 저장할 수 있습니다.
예를 들어 저희는 테이블을 만들때 id에 ai(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 테이블명;
이런 식인데요. 테이블안의 데이터를 복사할때 사용합니다.
진짜 복사되는지 한번 확인해볼까여??
product2 다른 테이블 하나 만들겠습니다.
CREATE TABLE product2 (
id INT AUTO_INCREMENT PRIMARY KEY,
상품명 varchar(100),
가격 int
);
INSERT INTO product2 (id, 상품명, 가격) VALUES (2, '딸기', 3000);
[product2]
INSERT INTO product (id, 상품명, 가격)
SELECT id, 상품명, 가격 FROM product2
[product]
ㄹㅇㅍㅌ SELECT로 찾은 product2 데이터가 product로 삽입됩니다.
- 당연히 SELECT 문법뒤에 저희가 앞단에서 배운 JOIN, WHERE… 이런거 전부 사용가능
- 테이블에 심각한 작업할때 잡깐 테이블을 백업 용도로 사용합니다.
테이블 복사문법 2
SELECT * INTO 새로운테이블명
FROM 기존테이블명
WHERE 조건식
이렇게써도 테이블 카카시가 가능합니다.
얘는 테이블을 아예 새롭게 창조해준다는 것이 차이입니다.
CREATE TABLE 새로운테이블명 SELECT * FROM 기존테이블명
Mysql에서는 SELECT INTO 문법이 없어서 일케씁니다.
CREATE TEMPORARY TABLE 새로운테이블명 SELECT * FROM 기존테이블명
참고로 이문법을쓰면 영어 단어 아시쥬?
temporary 임시 테에블을 생성해줍니다.
세션이 끝나면 자동으로 테이블이 삭제되어서 가끔 새로운 테이블에 실험해볼때 쓰곤합니다.
삽입 수정 삭제는 SO 덴져러스
이제 곧 수정, 삭제도 배워볼텐데요.
데이터베이스에서 삽입, 수정, 삭제 ← 요것들은 매우 위험한 작업입니다. ㅋㅋㅋ 어제 안그래도 김x병씨와 홖 나갈때 회사 데이터들 싹 drop해버리까?? 란 장난을 쳤습니다 ㅎㅎ
회사에 규모가 커지고 점점 직원이 많아지면 디비에 접속하는 사람들이 늘어나겠죠? 하지만 그런 상황일수록 서로를 믿으면 안됩니다. 어디 돈받고 팔수도 있고요. 악의를 품고 drop table 딸깍하면 답없으니까요..
그래서 우리는 맨처음 설치시 만들었던 root 계정을 사용하고 있는데
이걸로 로그인하면 모든 작업을 마음대로 할 수 있습니다.
이거 말고 권한을 축소시킨 계정을 하나 새로 만들 수 있습니다.
⬆️ MySQL workbench 프로그램 상단메뉴 Server - Users and Provileges 누르면 특정 DB 접속용 계정생성 & 권한부여가 가능합니다.
'DI(Digital Innovation) > DataBase & SQL 뽀개기' 카테고리의 다른 글
table 대신 view 쓰는 이유!?!? (0) | 2024.03.28 |
---|---|
데이터 수정 삭제는 UPDATE / DELETE (0) | 2024.03.14 |
LEFT AND RIGHT(feat. jungkook of BTS) JOIN (1) | 2024.03.14 |
JOIN 하는게 쉬워보이면 그 분은 이미 전문가 (1) | 2024.03.07 |
국나뇽이 말아주는 엔티티관계도(ERD) (3) | 2024.03.07 |