1. 몇개의 컬럼에만 데이터를 삽입하는경우
INSERT INTO 테이블명(컬럼리스트) VALUES(컬럼에 넣을 값 리스트);
ex)
INSERT INTO student(age, grade, report_card) VALUES(18, 2, 'A');
2. 모든 칼럼에 데이터를 넣을경우
INSERT INTO 테이블명 values(테이블에 맞는 데이터 양식);
ex)
INSERT INTO student(18, 2, Null,'A');
```markdown
UPDATE 테이블 SET 칼럼 = '값' WHERE 조건;
ex)
UPDATE student SET age = 19;
UPDATE student SET report_card = 'A+';
```
데이터 삭제 FROM문구는 생략이 가능한 키워드 이며 뒤에 WHERE 절을 사용하지 않는다면 테이블의 전체 데이터가 삭제된다.
DELETE [FROM] 테이블 WHERE 조건;
ex)
DELETE FROM student;
1. 모든 컬럼 조회 : SELECT * FROM 테이블명;
2. 필요한 컬럼 조회 : SELECT 컬럼명,컬럼명.. FROM 테이블명;
3. 중복된 데이터가 있는경우 1건으로 처리해서 출력
: SELECT DISTANCT 컬럼명 FROM 해당칼럼이 있는 테이블명;
SELECT PLAYER_NAME AS 선수명, POSITION AS 포지션, HEIGHT AS 키,
WEIGHT AS 몸무게 FROM PLAYER;
예제)
SELECT PLAYER_NAME 이름, HEIGHT - WEIGHT "키-몸무게"
데이터 베이스의 테이블에 특정 자료를 입력할때 그 자료를 받아들일 공간을 자료의 유형별로 나누는 기준
테이블 생성
규칙
CREATE TABLE 테이블명(
칼럼명 데이터타입 조건(not null 등등),
칼럼명 데이터타입 조건(not null 등등),
칼럼명 데이터타입 조건(not null 등등),
);
한번 생성된 테이블은 특별히 사용자가 구조를 변경하기전에는 생성 당시의 구조를 유지하게 된다.
처음 테이블 구조를 그대로 유지 하는것이 최선이지만 업무적 요구나 시스템 운영상 테이블을 사용하는 도중 변경해야 하는일이 발생할수 있는데 이때 ALTER 명령어를 쓰게 된다.
ADD COLUMN
DROP COLUMN
MODIFY COLUMN
RENAME COLUMN
DROP CONSTRAINT
ADD CONSTRAINT
DROP TABLE
TRUNCATE TABLE
RENAME
트랜잭션 : 데이터베이스의 논리적 연산단위
밀접히 관련되어 분리될수없는 한개이상의 데이터베이스 조작
분할할수없는 최소단위
트랜잭션이 수행하는동안 특정 데이터에 대해서 다른 트랜잭션이 동시에 접근하지 못하도록 제한 하는 기법
UPDATE INTO PLAYER
SET HEIGHT = 100;
480개의 행이 수정되었다.
COMMIT;
커밋이 완료되었다.
COMMIT 명령어는 이처럼 INSERT 문장, UPDATE 문장, DELETE 문장을 사용한 후에 이런 변경 작업이 완료되었음을 데이터베이스에 알려주기 위해 사용
COMMIT 이후 데이터의 상태
- 데이터에 대한 변경 사항이 데이터베이스에 반영
- 이전 데이터는 영원히 잃음
- 모든 사용자는 결과를 볼 수 있음
- 관련된 행에 대한 잠금이 풀리고, 다른 사용자들이 행을 조작할 수 있음
UPDATE PLAYER SET HEIGHT = 100;
480개의 행이 수정되었다.
ROLLBACK;
롤백이 완료되었다.
=> 이 경우 480개의 행이(키 들이) 100으로 수정되었던 결과를 다시 되돌리기 위해
롤백하여 처음의 상태로 돌아오도록 만드는 것
ROLLBACK 후 데이터 상태
데이터에 대한 변경 사항은 취소
이전 데이터는 다시 재저장
관련된 행에 대한 잠금이 풀리고 다른 사용자들이 행을 조작할 수 있게 됨
savepoint
저장점
전체작업을 롤백하는것이 아닌 현 시점에서 저장점까지 트랜잭션의 일부만 롤백이 가능
SAVEPOINT SVPT1;
ROLLBACK TO SVPT1;
SQL Server에서는 다음과 같이 사용한다.
SAVE TRANSACTION SVTR;
ROLLBACK TRANSACTION SVTR;
SAVEPOINT에 따른 ROLLBACK원리
위 그림과 같이 A로 롤백이후 B방향 즉 미래방향으로 되돌릴 수는 없다 . 특정 지점까지 롤백하면 그저장점 이후에 설정한 저장점은 무효 된다.
max
min
count
avg
sum
select 계산함수(칼럼) from 테이블; 로 사용
일반적인 조인, A와 B 테이블의 조인에서 A와 B 테이블 모두에 있는 레코드만 조회된다.
SELECT A.a, A.b, B.c FROM A JOIN B ON B.a = A.c;
ON 대신 WHERE를 사용할 수 있다.
A와 B 테이블의 조인 상황에서 A테이블 기준으로 B테이블에 A테이블의 칼럼과 일치하는 조건이 없으면 B테이블의 칼럼은 NULL로 조회된다.
SELECT A.a, A.b, B.c FROM A LEFT OUTER JOIN B ON B.a = A.c;
outer를 생략할 수 있다.
A와 B 테이블의 조인 상황에서 B테이블 기준으로 A테이블에 B테이블의 칼럼과 일치하는 조건이 없으면 A테이블의 칼럼은 NULL로 조회된다.
SELECT A.a, A.b, B.c FROM A RIGHT OUTER JOIN B ON B.a = A.c;
역시 outer를 생략할 수 있다.
집합의 곱 개념으로A= {a, b, c, d} , B = {1, 2, 3} 일 때A CROSS JOIN B 는(a,1), (a, 2), (a,3), (b,1), (b,2), (b,3), (c, 1), (c,2), (c,3), (d, 1), (d, 2), (d,3)의 결과가 된다.결과의 개수는 n(A) * n(B) 이다.
SELECT A.a A.b B.c FROM A CROSS JOIN B; // 위 아래 쿼리의 결과는 같다. SELECT A.a, A.b, B.c FROM A, B;