티스토리 뷰
1. INSERT
INSERT INTO 테이블 (필드목록) VALUES (값목록)
// 1. 1대1 대응
INSERT INTO tCity (name, area, popu, metro, region)
VALUES ('서울', 605, 974, 'Y', '경기');
// 2. 모든 필드를 선언순서대로 삽입할 경우 필드목록은 생략해도 된다
INSERT INTO tCity VALUES ('서울', 605, 974, 'Y', '경기')
- 다만 서로 개수와 타입이 꼭 일치해야 한다..
- 그래서 필드 목록을 나열하는 1번 방식이 정석적인 방법이라고 한다.
-> 테이블의 구조 변화에 대한 유연성도 향상되기 때문에 권장.
2. COMMIT
- SQL문은 잘못썼다가 파멸을 초래할 수 있기 때문에 곧바로 DB에 손대지 않는다
- 변경된 레코드를 곧바로 적용시키지 않고 외부의 임시 영역에 대기시켜 놓는다
-> 임시 영역의 변경 사항이 이상없다고 판단되면 이를 테이블에 영구 적용하는 것을 "COMMIT"이라고 한다
-> 변경사항을 다시 취소하는 것을 "ROLLBACK"이라고 한다
(COMMIT : F11 / ROLLBACK : F12)
3. INSERT SELECT
INSERT INTO 대상테이블(필드목록) SELECT 필드목록 FROM 원본테이블
- INSERT INTO와 기본 형식은 비슷하지만 필드의 값을 VALUE 절로 지정하지 않고 SELECT 명령으로 다른 테이블에서 읽어온다는 점이 다르다
- SELECT 오른쪽의 필드목록과 왼쪽의 목적지 필드목록은 1:1 대응한다
INSERT INTO tStaff(name, depart, gender, joindate, grade, salary, score)
SELECT name, region, metro, '20210723', '신입', area, popu FROM tCity WHERE region = '경기';
- 조건에 맞는 테이블을 추가로 갖다붙이는 거라 생각하면 된다
4. CREATE SELECT
CREATE TABLE 대상테이블 AS SELECT 필드목록 FROM 원본테이블
- 테이블을 새로 만들면서 기존 테이블의 일부 필드와 레코드를 가져와 삽입하는 명령.
- 대상 테이블이 미리 존재하고 있으면 안됨 -- 에러남
- 원본을 손상시키지 않고 특수한 작업을 해야할 때, 사본을 만들어야 할 때, 테스트 해볼 때 유용하게 사용
CREATE TABLE tSudo AS SELECT name, area popu FROM tCity WHERE region = '경기';
SELECT * FROM tSudo ORDER BY popu DESC;
CREATE TABLE tStaffHighScore AS SELECT name, salary, score FROM tStaff WHERE score >= 80;
SELECT * FROM tStaffHighScore ORDER BY score DESC;
// 모든 필드와 모든 레코드를 다 복사해 똑같은 사본 만들기
CREATE TABLE tStaff_0723 AS SELECT * FROM tStaff;
- 사본은 데이터만 복사할 뿐 기본키나 외래키같은 제약조건까지 복사하지 않는다.
5. DELETE
DELETE FROM 테이블 WHERE 조건
DELETE FROM tStaffHighScore WHERE name = '서울' OR name = '용인';
DELETE FROM tCity WHERE region = '경기';
- 삭제사실을 임시 영역에 기록하므로 COMMIT만 안했다면 ROLLBACK해서 참사를 막을 수 있다
- COMMIT 하면 되돌릴 수 없다.
- 웬만하면 WHERE절과 같이 써서 조건에 맞는 레코드만 삭제한다..
-- DELETE
-- SELECT *
FROM tStaff WHERE grade = '과장';
과 같은 방법을 사용해서 전체 스크립트 실행시 의도치 않은 삭제를 방지하고
조건에 맞는지 확인한 이후 -> 블록으로 DELETE까지 드래그 해서 안전하게 삭제하는 방법도 있다고 한다.
6. TRUNCATE
TRUNCATE TABLE 테이블
- 테이블을 비운다(삭제 x)
- DELETE는 하나씩 지우고 로그를 남겨 느린 반면 얘는 그냥 싹 비워버리고 로그도 남기지 않아 빠르다
- 로그를 남기지 않으므로 ROLLBACK으로 되돌릴 수 없다
(참고 : 테이블 삭제는 DROP TABLE 테이블)
7. UPDATE
UPDATE 테이블 SET 필드=값 [,필드=값 ...] WHERE 조건
UPDATE tStaff SET salary = salary * 1.1 WHERE depart = '영업부';
UPDATE tCity SET popu = popu * 2 WHERE name = '오산';
'SQL' 카테고리의 다른 글
SQL 뽀개기 - 7 | 모델링 (0) | 2021.07.29 |
---|---|
SQL 뽀개기 - 6 | 제약조건 (0) | 2021.07.24 |
SQL 뽀개기 - 4 | 데이터 집계 (0) | 2021.07.23 |
SQL 뽀개기 - 3 | SELECT (0) | 2021.07.22 |
SQL 뽀개기 - 2 | SQL의 종류 (0) | 2021.07.22 |