OPEN between Secret

Sql 기본 및 활용(DDL, DML, TCL) 본문

DB/SQLD

Sql 기본 및 활용(DDL, DML, TCL)

해가꿈꾸는달 2015. 3. 5. 14:51
반응형

DDL 종류!!


create

create table sample_tesmp as select * from sample;  ->select 문장을 통한 테이블 생성


add column  -> 맨 마지막 줄로 column이 추가됨

Alter table sample add(test varchar2(80));    -> alter를 이용한 테이블 column 추가


drop column -> 한번에 하나의 column만 삭제 가능, 삭제 후 복구 불가

Alter table sample drop column test;     -> 한개의 column을 삭제


modify -> column의 데이터 유형,디폴트 값, NOT NULL 제약조건에 대한 변경을 포함함

Alter table sample MODIFY (name varchars2(100);    -> modify를 이용해 기존에 있던 내용을 변경


RENAME -> COLUMN명 변경, 해당 COLUMN과 관계된 제약조건도 자동으로 변경

Alter table sample rename column 기존컬럼명 to 바꿀컬럼명 -> 기존에 있던 column명을 다른이름으로 변경


constraint -> 제약조건 걸어주기


DROP CONSTRAINT -> 테이블 생성시 부여했던 제약조건을 삭제하는 명령어

ALTER TABLE PLAYER DROP CONSTRAINT PLAYER_FK;


ADD CONSTRAINT  -> 테이블 생성 이후 필요한 제약조건 추가

  ALTER TABLE PLAYER ADD CONSTRAINT PLAYER_FK FOREIGN KEY(TEAM_ID) REFERENCE TEAM(TEAM_ID);



RENAME TABLE -> RENAME 을 이용해 테이블 명을 바꿈

RENAME TEAM TO TEAM_BACKCUP;

RENAME TEAM_BACKCUP TO TEAM;



DROP TABLE -> 테이블 삭제하기

DROP TABLE TEAM    -> TEAM TABLE을 삭제한다.



테이블 보기

DESCRIBE TABLE명;

DESC TABLE명;


TRUNCATE TABLE

-> 테이블 자체가 삭제되는건 X, 테이블에 들어있던 모든 행들이 제거.즉 초기화?

-> 삭제라 DML 로 볼수 있지만 내부처리,AUTO COMMIT 등으로 인해 DDL 로 분류됨.

TRUNCATE TABLE TEAM;


정리!! 

중요한 데이터 유형으로는 CHARACTER(S), VARCHAR(S), NUMERIC, DATETIME 유형이 있음

테이블은 CREATE TABLE로 인해 생성되고

ALTER TABLE로 수정되며

DROP TABLE 로 삭제되고

RENAME TABLE로 재명명 됨.




DML!!!


INSERT -> 테이블에 데이터를 입력

  방식은 2가지

     

 A. INSERT INTO 테이블명 (COLUMN_LIST) VALUES( COLUMN_LIST에 넣을 VALUE_LIST);

 B. INSERT INTO 테이블명 VALUES ( 전체 COLUMN에 넣을 VALUE_LIST);


컬럼 유형이 CHAR 나 VARCHAR2 등 이면  『 ' 』  (SINGLE QUOTATION)로 입력함

숫자일 경우는 붙이지 않아도 됨.


EX)

A.

      INSERT INTO PLAYER(PLAYER_ID, PLAYER_NAME, TEAM_ID, POSITION, HEIGHT, WEIGHT, BACK_NO) 

VALUES('2002007', '박지성', 'K07', 'MF', 178, 73, 7);

-> 칼럼을 정의할수 있음, 칼럼 순서는 테이블의 칼럼 순서와 같지 않아도 됨, 정의하지 않은

 칼럼은 NULL값이 입력.


B.

INSERT INTO PLAYER VALUES('2002010', '이청룡', 'K07', '', 'BLUE DRAGON', '2002', 'MF', '17', NULL,     NULL, '1',180,69);

->모든 칼럼에 대해 데이터를 입력하는방식, 칼럼의 순서대로 모든 데이터를 입력해야함.



UPDATE -> 칼럼을 수정함.

EX) UPDATE PLAYER  SET POSITION = 'MF';


DELETE -> 테이블을 삭제함, WHERE 절을 이용하면 행만 삭제 가능

EX) DELETE FROM PLAYER;



SELECT -> 조회하기.   

SELECT [ALL/DISTINCT] FROM 테이블명

ALL -> 모든 데이터

DISTINCT -> 중복된 데이터는 1개로 처리

    

 * ALL/DISTINCT

EX) SELECT ALL POSITION FROM PLAYER;

EX) SELECT DISTINCT POSITION FROM PLAYER;

 

 EX) SELECT PLAYER_ID, PLAYER_NAME, TEAM_ID, POSITION, HEIGHT, WEIGHT, BACK_NO FROM PLAYER;

 EX) SELECT * FROM PLAYER;

select 후 나온 데이터들의 정렬에 따른 타입

         좌측 정렬 : 문자 및 날짜 데이터, 우측 정렬 : 숫자 데이터



 * ALIAS ->칼럼명에 별명을 붙임(보여질때 별명으로 보여짐)


EX) SELECT PLAYER_NAME AS 선수명, POSITION AS 위치, HEIGHT AS 키, WEIGHT AS 몸무게 RFOM PLAYER;

   

   - AS를 빼고서도 가능함.

EX) SELECT PLAYER_NAME 선수명, POSITION 위치, HEIGHT 키, WEIGHT 몸무게 RFOM PLAYER;


    - 이중 인용부호(DOUBLE QUOTATION)은 공백, 특수문자, 대소문자 구분이 필요한 경우 사용

EX) SELECT PLAYER_NAME "선수 이름", POSITION "그라운드 포지션", HEIGHT "키", WEIGHT "Weight" FROM PLAYER;


* 산술 연산자

->   수학에서의 4칙 연산과 동일, 적절한 'alias'를 부여해주는게 좋음

ex) SELECT PLAYER_NAME 이름 , ROUND(WEIGHT/((HEIGHT/100)*(HEIGHT/100)),2) "BMI 비만지수" FROM PLAYER;


* 합성 연산자

-> 문자와 문자를 연결하는 합성(CONCATENATION)

-> Oracle에서는 (||) 로, Sql server에서는 (+)

-> 공통적으로는 CONCAT(string1, string2) 함수를 사용

-> 칼럼과 문자 또는 다른 칼럼과 연결함


ORACLE 
 ex) SELECT PLAYER_NAME || '선수, ' || HEIGHT || 'cm,' || WEIGHT || 'KG' 체격정보 FROM PLAYER;

SQL SERVER
 ex) SELECT PLAYER_NAME + '선수 , ' + HEIGHT + 'cm , ' + WEIGHT + 'KG' 체격정보 FROM PLAYER;




*   DAUL 테이블

??? 먼지 모름 책봐야함.


**** 정리 ****

INSERT INTO 문장에 의해 데이터가 입력되고

UPDATE 문장에 의해 데이터가 수정

DELETE 문장에 의해 데이터가 삭제

SELECT 문장에 의해 데이터가 조회

DDL 보단 DML이 더 많이 사용됨/ DML중 SELECT 문장이 가장 많이 사용됨.




TCL 학습하기!
(Transaction Control Language) = 트랜잭션


트랜잭션이란

- 트랜잭션은 데이터베이스의 논리적 연산단위다.

- 한개의 트랜잭션에는 하나 이상의 SQL 문장이 포함된다.

- 의미적으로 분할할 수 없는 최소 단위. 전부 적용 or 전부 취소(All OR Nothing)


특성 !

- 원자성(atomicity) - All or Noting

- 일관성(consistency) - 실행 되기 전에 문제가 없다면 , 실행 후에도 문제가 없어야 됨

- 고립성(isolation) - 트랜잭션 실행도중 다른 트랜잭션의 영향을 받아 잘못된 결과가 나오면 안됨.

- 지속성(durability) - 트랜잭션이 성공하면 갱신된 데이터베이스의 내용은 영구적으로 저장되야함.



TCL

-> 트랜잭션을 컨트롤하는 TCL(Transaction Control Language)


- COMMIT

-> 변경된 데이터를 데이터베이스에 영구적으로 반영하라

-> INSERT, UPDATE , DELETE 후에 변경된 것이 완료되었다고 데이터베이스에 알려주는 위함.


- ROLLBACK

-> 변경된 데이터가 문제가 있으니 변경 전 데이터로 복귀하라

->  수정,삽입,삭제에 대해 COMMIT 이전에는 변경 사항을 취소할수 있는데 데이터베이스에서는     ROLLBACK 사용


- SAVEPOINT

-> 데이터 변경을 사전에 지정한 저장점까지만 롤백하라.

-> 트랜잭션에 포함된 전체 작업을 ROLLBACK 하는게 아니라 미리 지정한 SAVEPOINT까지 트랜잭션의     일부만 ROLLBACK 하라.


- COMMIT 과 ROLLBACK의 효과

-> 데이터 무결성 보장

-> 영구적 변경전 데이터의 변경 사항 확인 가능

-> 논리적으로 연관된 작업 그룹핑 가능


- 자동 COMMIT이 되는경우

-> DML 문장 이후에 커밋없이 DDL 문장이 실행되면 그 전꺼는 자동 COMMIT 됨.

-> 데이터베이스를 정상적으로 접속 종료하면 자동 COMMIT 됨

-> 애플리케이션의 이상 종료로 데이터베이스와의 접속이 단절되었을 때는 자동 ROLLBACK 됨.


- COMMIT에 관한 ORACLE과 SQL SERVER 차이

-> ORACLE은(일부 툴은 AUTO COMMIT 가능) 사용자가 임의로 COMMIT 이나 ROLLBACK을 해줘야 트랜잭션이 종류가 됨.

-> SQL SERVER는 기본적으로 AUTO COMMIT 이라 DML 수행 후 임의로 해줄 필요가 없음.


** SQL Server의 3가지 commit 방식 **


1. AUTO COMMIT : DBMS가 트랜잭션을 알아서 컨트롤 한다.


2. 암시적 트랜잭션 : ORACLE과 같이 트랜잭션의 시작은 DBMS가 해주는데 끝은 COMMIT이나                     ROLLBACK을 해서 알려줘야 함. 


3. 명시적 트랜잭션 : 트랜잭션의 시작과 끝을 사용자가 알려주는 방식

시작 : BEGIN TRANSACTION(BEGIN TRAN)

종료 : COMMIT TRANSACTION(TRANSACTION 생략 가능)

   ROLLBACK TRANSACTION(TRANSACTION 생략 가능, BEGIN 시점까지 ROLLBACK됨.)



*********** TCL 정리 ***********

- TRANSACTION 은 ALL OR NOTHIN 개념이다.

- COMMIT 을 통해 트랜잭션 완료

- ROLLBACK을 통해 트랜잭션 철회

- SAVEPOINT/SAVE TRANSACTION을 통해 트랜잭션의 일부만 ROLLBACK 


반응형

'DB > SQLD' 카테고리의 다른 글

SQL 활용(STANDARD JOIN)  (0) 2015.03.30
SQL 기본 및 활용(JOIN)  (0) 2015.03.30
SQL 기본 및 활용 (집계함수(GROUP BY, HAVING), ORDER BY)  (0) 2015.03.30
SQL 기본 및 활용  (0) 2015.03.09
SQL 기본 및 활용(where, function )  (0) 2015.03.05