SQL

20.07.15 DML, DCL, 문자열 칼럼 Type, Insert 의 오류들

우롱차 2020. 8. 30. 17:43
728x90

UPDATE

  • 기존 학과명이 관광정보학으로 변경이 되었을 때
UPDATE tbl_student
SET st_dept = '관광정보학'
WHERE st_dept = '관광학';
  • 이러한 Query를 실행 할 수 있다.
  • 이 Query는 다수(2개 이상)의 레코드를 변경하는 쿼리로
  • 가급적 사용하지 말자는 코드이다.
  • 많은 위험요소를 가지고 있기 때문에
 
학과코드라는 PK로 변경해주는 것이 좋음!!
UPDATE tbl_dept
SET d_name = '관광정보학'
WHERE d_code = 'D0001';
>>>>> USER1(2020-07-15-Student)🙂

TableSpace 생성

  •  

    오라클에서 공식적으로 Data를 저장하기에 앞서 TableSpace를 생성
  • TableSpace를 생성하지 않고 Table등을 만들고 Data를 저장하면
  • 오라클 System 폴더, System TableSpace에 데이터가 저장되어서
  • 보안적인 측면, 관리적인 측면에서 별로 좋지않다.
 
  • 실무에서 TableSpace는 데이터를 저장하는데
  • 저장하는 기간, 기본적으로 필요한 용량, 등 여러가지 환경적인 요소들을 분석해서
  • 용량을 산정하고, 설계해서 생성을 한다.
  • 생성된 TableSpace는 용량을 변경하거나 하는일이 매우 어렵다.
 
  • TableSpace 생성에서 고려할 사항
    • 이름, 저장파일, 초기용량, 자동증가옵션
    • 오라클 11gXe는 MaxSize를 지정하지 않아도 기본값으로 11G로 설정이 된다.
    • 따라서 11gXe를 사용할 때는 최대 저장공간을 11G이상 사용할 수 없다.
CREATE TABLESPACE gradeTS
DATAFILE 'C:/bizwork/workspace/oracle_data/gradeTS.dbf'
SIZE 1M AUTOEXTEND ON NEXT 500K;
>>>>> 관리자(2020-07-15)🙂
CONSTRAINTS :제약조건, 제약 사항, Valid Option
  • 데이터를 INSERT 수행할 때 DBMS 차원에서 유효성 검사를하고
  • 통과하지 못하면 INSERT 명령에 오류를 내도록 하는 설정
  • INSERT를 하지 않는다
    • 데이터의 무결성을 유지
 
  • PRIMARY KEY : 중복되지 않고, NULL 값이 아닌 값만 유효
    • UNIQUE와 NOT NULL에 포함한 제약 조건이 설정
    • SELECT로 조회를 할 때 PK로 설정된 칼럼을 기준으로 오름차순 정렬
    • PK 칼럼으로 기존 INDEX가 설정된다.
 
  • NOT NULL : NULL 값이 아닌 값만 유효
 
  • UNIQUE : 중복되지 않은 값만 유효, 해당칼럼에 추가하고자 하는 데이터가
  • 이미 저장되어 있으면 추가로 저장할 수 없다.
 
  • CHECK : 어떤 값이 해당 범위에서 유효한 경우만 추가 가능
 

문자열 칼럼의 Type

  • CHAR(자릿수) : 저장하는 데이터의 길이가 모두 일정할 경우 사용하는 Type
  • 저장하는 Data가 자릿수가 같지 않으면, 부족한 부분을 공백으로 채우는데
  • DB에 따라 문자열의 앞, 뒤에 공백을 추가하여 간혹 조회를 할 때, 조회가 잘 안될 수도 있다.
 
  • VARCHAR2(자릿수) : 저장하는 데이터의 길이가 일정하지 않을 경우, 사용하는 Type
  • 저장하는 Data가 설정한 자릿수보다 작으면 칼럼의 실제 크기를 줄여서 저장
  • 저장하는데 CHAR 보다 다소 지연되지만 지금은 큰 문제가 없다.
  • 저장할 데이터를 잘 분석하여 자릿수를 데이터의 최대 크기만큼 지정한다.
  • 저장할 데이터의 길이가 자릿수보다 크면 저장되지 않는다.
 
  • nVARCHAR(자릿수) : VARCHAR2(자릿수)와 성질이 같은 Type
  • 영문자 전용이 아닌 한글, 한자 등 알파벳 이외의 문자를 저장할 때 사용
  • UNICODE 문자열을 위해 특별히 마련된 Type
  • 영문자 1글자와 한글 1글자를 같은 자릿수로 취급한다.
  • 키보드에 기본적으로 있는 문자가 아닌 문자를 저장하는 경우는
  • 무조건 nVARCHAR2()를 사용하자.
 
  • NUMBER(자릿수,소수점) : 오라클에서는 숫자형 일 경우 별도의 Type을 명시하지 않고
  • NUMBER(자릿수,소수점) : 형식으로 사용을 한다.
  • NUMBER(자릿수) : 정수형 표현
  • NUMBER(자릿수,소수점) : 실수형 표현
  • 자릿수를 생략하면 최대 38자리까지 정수를 저장할 수 있다.
 

INSERT 수행 후 자주 발생하는 오류들

  • unique constraint (GRADE.SYS_C007009) violated :
    • PK나, UNIQUE로 설정된 칼럼에 이미 저장된 값을 또 저장하려고 할 때
 
  • not enough values : INTO에 나열한 칼럼에 저장할 데이터가 누락된 경우
    • EX) 나열된 칼럼 개수 6개인데, Values 데이터는 6개 미만으로 설정 된 경우
 
  • cannot insert NULL into ("GRADE"."TBL_STUDENT"."ST_NAME") :
    • NOT NULL로 설정된 칼럼이 누락된 경우
 
  • invalid number :
    • NUMBER로 설정된 칼럼에 문자열을 저장하려고 시도한 경우
    • 만약 NUMBER로 설정된 칼럼에 숫자를 '3' 따옴표로 묶어서 지정하면
    • 내부에서 문자열 > 숫자 형식으로 변환하여 저장한다. : 자동형변환 (오라클 10이상)
    • 그런데 문자열 > 숫자 형식으로 자동형변환을 하는데 숫자로 변환할 수 없는
    • 문자열이 포함되면, invalid number 오류를 나타낸다.
 
  • check constraint (GRADE.SYS_C007008) violated :
    • CHECK로 유효성 검사를 설정했는데 범위, Valid를 통과하지 못했을 때
>>>>> 성적처리(2020-07-15)🙂

LEFT JOIN

OUTER JOIN의 대표적으로 많이 사용하는 JOIN Query
1. JOIN 키워드 왼쪽에는 모두 리스트업 할 table을 위치 시키고
2. 이 table과 연동하여 정보를 보조적으로 가져올 table을 JOIN 다음에 위치
3. 두 table의 연결점(Key)를 ON 키워드 다음에 작성해 준다.
 
  • JOIN 왼쪽 table의 데이터를 모두 보여주고
  • 키 값으로 오른쪽 table에서 값을 찾은 후
  • 있으면, PROJECTION에 나열된 칼럼 위치에 값을 표시하고,
  • 만약 없으면 (NULL)이라고 표시한다.
  • 왼쪽 테이블에 데이터가 잘 입력되었나 검증하는 용도로도 많이 사용되고
  • 아직 FK 설정이 되지 않은, table간에 정보를 리스트 업하는 용도로 사용된다.
>>>>> 성적처리(2020-07-15-STUDENT-SCORE)🙂

집계, 통계 함수

  • SQL에서는 기본적인 명령어, 연산자 등과 함께 많이 사용되는 집계함수가 있다.
     
  • SUM():합계, COUNT():개수, AVG():평균, MAX():최대값, MIN():최소값
    • 일반적으로 숫자형으로 되어있는 칼럼에 저장된 값들을 추출하여
    • 집계, 통계를 수행하는 함수
    • SELECT 칼럼을 감싸는 형태로 사용한다.
>>>>> 성적처리(2020-07-15-통계,집계)🙂

UNION

칼럼의 개수가 맞아야하기때문에
  • 총점과 평균제목을 넣어준 것
  • 통계함수를 사용할 때 의미가 없는 칼럼이나
  • GROUP BY에 똑같이 총점, 평균을 넣어줘야함 규칙
SELECT '==과목 평균==',
    AVG(sc_kor) AS 국어,
    AVG(sc_eng) AS 영어,
    AVG(sc_math) AS 수학,
    AVG(sc_music) AS 음악,
    AVG(sc_art) AS 미술
FROM tbl_score
WHERE sc_num BETWEEN '20001' AND '20010'
GROUP BY '==과목 평균==';

외래키

Join을 햇을때 완전한 결과가나오게하는
무결성 원칙
PK와 더불어 FK(외래키)도
PK : 1개 테이블 에대해서 무결성을 보증하는 기법
 
FK두개이상의 데이타가 이 데이터가 절대 오류가 없어 할때의FK
2개 이상 테이블에대해서 무결성을 보증하는 기법!
: EX) 학번에 정보가 있을때 점수가 정보가잇을수도 잇고 없을 수도 잇음
그치만 점수가 정보가있을 때 학번에 정보가 있어야만 하는거
학번이랑 점수의 관계
RelationShip : RDBMS
FORIEN KEY
학생      |      점수
값 있다  |  값 있을수도 없을수도
값 없다 |  값이 절대 있어서는 안된다.
                 >>>>>>>>>값이 있으면 데이터의신뢰성을 잃음
점수    |     학생
값있다 |  반드시 값이 있음
 
>>>> 이 세가지가 있어야 FK 데이터가 완벽하다,최소한 점수 테이블은 완벽하다라는걸 보여주는 것.
728x90