Gidhub BE Developer

SQL

2017-10-08
goodGid

Concept

1.DDL (Data Define Laguage)

  1. CREATE
  2. ALTER
  3. DROP
  • SQL에서 지원하는 기본 데이터 타입
    1. 정수 : INT(4Byte 정수), SMALLINT(2Byte 정수)
    2. 실수 : FLOAT, REAL, DOUBLE PRECISION
    3. 형식화된 숫자 : DEC(i, j) –> i: 전체 자릿수, j: 소수부 자릿수
    4. 고정길이 문자 : CHAR(n) –> n: 문자 수
    5. 가변길이 문자 : VARCHAR(n) –> n: 최대 문자 수
    6. 고정길이 비트 열(Bit String) –> BIT(n)
    7. 가변길이 비트열 : VARBIT(n)
    8. 날짜 : DATE
    9. 시간 : TIME

2.DML (Data Manipulation Language)

  1. INSERT
  2. DELETE
  3. UPDATE

INSERT

  • 테이블의 모든 속성을 삽입할 때는 속성명을 생략할 수 있다. 단 이때 Create Table문에서 기술된 속성 순으로 삽입 된다.
  • Select문을 사용하여 다른 테이블의 검색 결과를 삽입 할 수 있다.
INSERT INTO 테이블명[(속성명1, 속성명2)]
VALUES (데이터1, 데이터2)

Q. <사원> 테이블에 있는 이름이 "이순신"이고, 부서가 "기획"인 사원을 삽입하는 SQL문을 작성하시오.

Insert Into 사원(이름, 부서)
Values ('이순신', '기획');

Q. <사원> 테이블에 있는 편집 부서의 모든 튜플을 <편집부원(이름,생일,주소,기본급)> 테이블에 삽입하는 SQL문을 작성하시오.

Insert Into 편집부원(이름, 생일, 주소, 기본급)
Select 이름, 생일, 주소, 기본급 From 사원 Where 부서 = '편집';

DELETE

  • 테이블에 있는 튜플들 중 특정 튜플을 삭제할 때 사용되는 명령어
DELETE FROM 테이블명 WHERE 조건;

Q. <사원> 테이블에서 이름이 '임꺽정'인 튜플을 삭제하는 SQL문을 작성하시오.

Delete From 사원 Where 이름 = '임꺽정';

UPDATE

  • 테이블에 있는 튜플들 중에서 특정 튜플의 내용을 갱신할 때 사용되는 명령어
UPDATE 테이블명
SET 속성명 = 데이터
WHERE 조건명;

Q. <사원> 테이블에서 황진이의 부서를 "기획"으로 변경하고 기본급을 5 인상하는 SQL문을 작성하시오.

Update 사원
Set 부서 = '기획', 기본급 = 기본급 + 5
Where 이름 = '황진이';

3.DCL (Date Control Language)

  1. COMMIT
  2. ROLLBACK
  3. GRANT
  4. REVOKE

COMMIT

  • 트랜잭션1의 모든 변경 내용들을 영구적으로 데이터베이스에 반영하는 명령어
  • 트랜잭션이 성공적으로 끝나면 데이터베이스가 새로운 일관성 상태(Consistency)를 가지기 위해 수행된 모든 변경을
    데이터베이스에 반영(Commit)하여 완료하여야한다.

ROLLBACK

  • 변경된 모든 내용들을 취소하고 데이터베이스를 이전 상태로 되돌리는 명령어

  • 트랜잭션의 일부를 성공적으로 끝내지 못하면 데이터베이스가 비일관성(Inconsistency)인 상태를 가질 수 있기 때문에
    (즉 트랜잭션이 수행한 일부 변경이 데이터베이스에 반영될 가능성이 있기 때문에)
    일부분만 완료된 트랜잭션은 롤백(Rollback)되어야 한다.


GRANT / REVOKE

  • DBA가 데이터베이스 사용자에게 권한을 부여하고 취소하기 위한 명령어

GRANT : 권한 부여를 위한 명령어

REVOKE : 권한 취소를 위한 명령어

– 사용자등급 지정 및 해제

GRANT 사용자등급 TO 사용자_ID_리스트; 
REVOKE 사용자등급 FROM 사용자_ID_리스트;
  • 사용자등급
    1. DBA : 데이터베이스 관리자
    2. RESOURCE : 데이터베이스 및 테이블 생성 가능자
    3. CONNECT : 단순 사용자

Q. 사용자 ID가 “NABI”인 사람에게 DB 및 테이블을 생성할 수 있는 권한을 부여하는 SQL문을 작성하시오.

Grant Resource To Nabi;

Q. 사용자 ID가 “STAR”인 사람에게 단순히 DB에 있는 정보를 검색할 수 있는 권한을 부여하는 SQL문을 작성하시오.

Grant Connect To Star;

– 테이블 및 속성에 대한 권한 부여 및 취소

GRANT 권한_리스트 ON 개체 TO 사용자 [WITH GRANT OPTION];
REVOKE [GRANT OPTION FOR] 권한_리스트 ON 객체 FROM 사용자 [CASCADE];
  • 권한 종류 : All, Select, Insert, Delete, Update, Alter
  • With Grant Option : 부여받은 권한을 다른 사용자에게 다시 부여할 수 있는 권한을 부여
  • Grant Option For : 다른 사용자에게 권한을 부여할 수 있는 권한을 취소
  • Cascade : 권한 취소 시 권한을 부여받았던 사용자가 다른 사용자에게 부여한 권한도 연쇄적으로 취소

Q. 사용자 ID가 “NABI”인 사람에게 <고객> 테이블에 대한 모든 권한과 다른 사람에게 권한을 부여할 수 있는 권한까지
부여하는 SQL문을 작성하시오.

Grant All On 고객 To Nabi With Grant Option;

Q. 사용자 ID가 “STAR”인 사람에게 부여한 <고객> 테이블에 대한 권한 중 UPDATE 권한을 다른 사람에게 부여할 수 있는
권한만 취소하는 SQL문을 작성하시오.

Revoke Grant Option For Update On 고객 From Star;

Q. 홍길동에게 부여된 <강좌> 테이블에 대해 INSERT 권한은 [유지]하면서
다른 사람에게 부여할 수 있는 권한만 [취소]하는 SQL문을 작성하시오.

Revoke Grant Option For Insert On 강좌 From 홍길동;

Q. 홍길동에게 부여된 <강좌> 테이블에 대한 SELECT, INSERT, DELETE 권한을 취소하는 SQL문을 작성하시오.

Revoke Select, Insert, Delete On 강좌 From 홍길동;
  1. 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 일련의 연산 집합으로서 작업의 단위 


Back : Join (2)

Next : Select

Comments

Content