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
'SQL' 카테고리의 다른 글
20.07.20 Oracle/USER1(2020-07-20-매입매출 정규화),USER1(2020-07-20-매입매출).sql (0) | 2020.09.13 |
---|---|
20.07.21 정규화 (0) | 2020.09.11 |
20.07.14 SQL 명령어 (0) | 2020.08.31 |
20.07.14 DDL, DML, DCL, 문자열 데이터 저장하는 칼럼, SELECTION, PROJECTION, 명명규칙, PK (0) | 2020.08.28 |
20.07.16 View, Domain, PIVOT 용어정리 (0) | 2020.08.27 |