SQL 노랭이 풀이 (1~30)

·2023년 11월 11일
0

SQL

목록 보기
10/11

4번

DDL
(Data Definition Language)
DML
(Data Manipulation Language)
DCL
(Data Control Language)
TCL
(Transaction Control Language)
CREATE
ALTER
DROP
TRUNCATE
RENAME
SELECT
INSERT
UPDATE
DELETE
GRANT
REVOKE
COMMIT
ROLLBACK
  • 비절차적 데이터 조작어 : 사용자가 무슨(What) 데이터를 원하는 지만을 명세하고, 어떻게 그 결과를 얻을지에 대한 구체적인 단계를 명시하지 않음

  • 절차적 데이터 조작어 : 어떻게(How) 데이터를 접근해야 하는지 명세함



6번

테이블을 생성할때 제약조건을 넣을때는 다음과 같이 작성한다.

CREATE TABLE PRODUCT
(PROD_ID VARCHAR2(10) NOT NULL,
PROD_NM VARCHAR2(100) NOT NULL,
ALTER TABLE PRODUCT ADD CONSTRAINT PRODUCT_PK PRIMARY KEY (PROD_ID));

또는

CREATE TABLE PRODUCT
(PROD_ID VARCHAR2(10) NOT NULL,
PROD_NM VARCHAR2(100) NOT NULL,
CONSTRAINT PRODUCT_PK PRIMARY KEY (PROD_ID));


7번

  • ALTER TABLE 테이블이름 ALTER COLUMN 컬럼명 속성;

: ALTER TABLE은 스키마(테이블 구조)를 변경하는데 사용되며, 각각의 컬럼에 대해 개별적으로 수행됩니다.

  • UPDATE 테이블이름 SET column1=value1, column2=value2;

: UPDATE는 레코드의 값을 수정하는데 사용되며, 한 번에 여러 개의 컬럼을 수정할 수 있습니다.

💡 SQL Server 에서는 괄호를 사용하지 않는다.



9번

ON DELETE CASCADE
: CASCADE은 종속이란 뜻으로, 원본데이터를 삭제하면 종속데이터(FK)까지 전부 삭제됨

ON DELETE SET NULL : 원본데이터를 삭제하면 종속데이터(FK)는 NULL값으로 대체됨



10번

① UNIQUE : 중복 불가, NULL 입력은 가능 !!!

② 한 테이블에 PK 는 1개만 생성 가능하다.

CREATE TABLE PRODUCT
(PROD_ID VARCHAR2(10) NOT NULL,
PROD_NM VARCHAR2(100) NOT NULL,
REG_DT DATE NOT NULL,
REGR_NO NUMBER(10),

CONSTRAINT PRODUCT_PK PRIMARY KEY (PROD_ID, PROD_NM));

다음과 같이 다중 컬럼을 하나의 PK로 지정하는 건 가능하나, PK가 여러개인 건 불가능 !!!



14번

외래키(FK)는 NULL 값을 가질 수 있고, 여러 개 존재할 수 있다.



16번

원하는 컬럼을 삭제하고 싶을 때, ALTER TABLE 테이블이름 DROP COLUMN 컬럼이름;

컬럼의 내용만을 삭제하고 싶을 때, DELETE FROM 테이블이름 WHERE 조건;



19번

  • DELETE / MODIFY
    1) CASCADE
    2) SET NULL
    3) SET DEFAULT
    4) ✨ RESTRICT ✨ : child 테이블에 PK 값이 없는 경우만 master(원본데이터) 삭제 허용
    5) NO ACTION : 참조무결성을 위반하는 삭제/수정 액션을 취하지 않음

  • INSERT
    1) ✨ AUTOMATIC ✨ : master 테이블에 PK가 없는 경우 master PK를 생성 후 child 입력
    2) SET NULL : master 테이블에 PK가 없는 경우 child 외부키를 NULL 값으로 처리
    3) SET DEFAULT : master 테이블에 PK가 없는 경우 child 외부키를 지정된 기본값으로 입력
    4) ✨ DEPENDENT ✨ : master 테이블에 PK가 없는 경우 child 데이터 입력을 허용하지 않음
    5) NO ACTION : 참조무결성을 위반하는 입력 액션을 취하지 않음

child table의 FK 데이터 생성시 parent table에 PK가 없는 경우, 데이터 입력하는 데 제약을 주는 조건들



22번

③ DELETE FROM 주문 WHERE 주문번호 IN ('0001', '0002'); 를 실행하면 FK 는 NULL 값이 가능하므로 오류없이 정상적으로 실행된다.



23번

DELETE : 삭제 데이터에 대한 로그를 남긴다.
    ⇕
TRUNCATE, DROP : 로그를 남기지 않는다.


DELETE * FROM 테이블이름;
-> 문법에 맞지 않음



26번

DELETE / TRUNCATE / DROP 차이

DELETETRUNCATEDROP
저장된 공간 반납 O저장된 공간 반납 X저장된 공간 반납 X
Rollback 가능Rollback 불가Rollback 불가
DML
➭ 사용자 Commit
DDL
➭ Auto Commit
DDL
➭ Auto Commit


27번

데이터베이스 트랜잭션 4가지 특성

  • 원자성
    : 트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 OR 전혀 실행되지 않은 상태로 남아 있어야 한다. (All or Nothing)

  • 일관성
    : 트랜잭션이 실행되기 전의 데이터베이스 내용이 잘못 되어 있지 않다면, 트랜잭션이 실행된 이후에도 데이터베이스의 내용에 잘못이 있으면 안된다.

  • 고립성
    : 트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안된다.

  • 지속성
    : 트랜잭션이 성공적으로 수행되면 그 트랜잭션이 갱신한 데이터베이스의 내용은 영구적으로 저장된다.



28번

데이터베이스 트랜잭션에 대한 격리성이 낮은 경우의 문제점

① Dirty Read : 다른 트랜잭션에 의해 수정되었지만 아직 커밋되지 않은 데이터를 읽는 것

② Non-Repeatable Read : 한 트랜잭션 내에서 같은 쿼리를 두 번 수행했을 때, 그 사이에 다른 트랜잭션이 값을 수정 또는 삭제하는 바람에 두 쿼리 결과가 다르게 나타나는 현상을 말한다.

③ Phantom Read : 한 트랜잭션 내에서 같은 쿼리를 두 번 수행했을 때, 첫번 째 쿼리에서 없던 유령레코드가 다르게 나타나는 현상을 말한다.

④ isolation : 데이터베이스 트랜잭션 4가지 특성 중 하나로 문제점이라기보다 목표라고 할 수 있다.



29번

  • ORACLE
    : DDL 문장 수행 후 자동으로 COMMIT을 수행한다.

  • SQL Server
    : DDL 문장 수행 후 자동으로 COMMIT을 수행하지 않는다.
    (AUTOCOMMIT = TRUE/FALSE 로 옵션 제공)













0개의 댓글