오라클 SQL DBEAVER - 제약조건 CHECK / PRIMARY KEY 기본키 / INSERT / UNIQUE / UPDATE
2021. 7. 31. 23:29ㆍdummmy
반응형
1. UNIQUE
중복을 허용하지 않는 제약 조건.
CREATE TABLE USER_UNIQUE(
USER_NO NUMBER,
USER_ID VARCHAR2(20) UNIQUE,
USER_PW VARCHAR2(20),
USER_NAME VARCHAR2(15)
);
-> 똑같은 ID값을 넣으려고 하면 에러
위의 예는 컬럼레벨로 제약 조건을 작성,
CREATE TABLE USER_UNIQUE(
USER_NO NUMBER,
USER_ID VARCHAR2(20),
USER_PW VARCHAR2(20),
USER_NAME VARCHAR2(15),
UNIQUE(USER_ID)
);
이와 같이 칼럼을 모두 작성한 후에
아래에 제약조건을 추가하면 테이블 레벨 제약 조건
두 개 이상의 칼럼을 제약조건으로 묶을 경우
반드시 테이블 레벨에서 제약 조건 선언
CREATE TABLE USER_UNIQUE3 (
USER_NO NUMBER,
USER_ID VARCHAR2(20),
USER_PW VARCHAR2(20),
USER_NAME VARCHAR2(15),
UNIQUE(USER_NO, USER_ID)
);
조건이 2개인 위와 같은 경우에는,
USER_NO가 똑같더라도 USER_ID가 다르면 다르므로 입력 가능 (OR의 개념)
2.CHECK
-- CHECK 제약조건--
--컬럼에 값을 기록할 때 지정한 값만 받고, 그 값 이외에는 값이 기록되지 않게끔 범위를 지정하는 것
--[사용형식]
--check(컬럼명 비교연산자 값)
CHECK(GENDER IN('M','F'))
CHECK(USER_ID IS NOT NULL)
--CHECK 제약조건에 부등호를 표기해서 제약 조건
CREATE TABLE USER_CHECK2(
TEST_DATA NUMBER,
CONSTRAINT CK_USERCK_DATA CHECK(TEST_DATA > 0)
);
INSERT INTO USER_CHECK2 VALUES(10);
--INSERT INTO USER_CHECK2 VALUES(-10); 조건 위배.안들어감
CREATE TABLE USER_CHECK3 (
NAME VARCHAR2(15),
PRICE NUMBER,
CDATE DATE,
QUAL CHAR(1),
CONSTRAINT CK_CHECK3_PRICE CHECK(PRICE BETWEEN 1 AND 9999),
CONSTRAINT CK_CHECK3_DATE CHECK(CDATE >=TO_DATE('2010/01/01','YYYY/MM/DD')) ,
--2010년1월1일 이후의 날짜만 입력 가능
CONSTRAINT CK_CHECK3_QUAL CHECK(QUAL >='A' AND QUAL <='D')
--ABCD만 입력을 받겠다
);
3.PRIMARY KEY (기본키) 제약조건
--PRIMARY KEY (기본키) 제약조건
--테이블 내의 한 행에서 그 행을 식별하기 위한 고유의 값을 가지는 칼럼
--테이블 전체에 대한 각 데이터의 식별자 역할을 수행
--기본키 제약조건은 테이블마다 한 개만 존재할 수 있다.
--PRIMARY KEY 제약조건을 걸면, 따로 명시하지 않아도 NOT NULL과 UNIQUE제약 조건이 설정 된다.
4. DML 조작언어-INSERT
INSERT : 새로운 행을 특정 테이블에 추가
INSET INTO 테이블명 VALUES (값 );
--INSERT + SUBQUERY
--INSERT문에 서브쿼리를 사용하여 VALUES 대신 값을 지정하여 추가
--1. 먼저 새로운 TABLE을 만들고
CREATE TABLE EMP_01(
EMP_ID NUMBER,
EMP_NAME VARCHAR2(20),
DEPT_TITLE VARCHAR2(40)
);
--SUBQUERY로 이미 있는 EMPLOYEE와 DEPARTMENT의 값들을 가져와서 새로운 테이블에 넣는다.
INSERT INTO EMP_01(
SELECT EMP_ID, EMP_NAME, DEPT_TITLE
FROM EMPLOYEE
LEFT JOIN DEPARTMENT ON(DEPT_CODE=DEPT_ID)
);
5.UPDATE
수정 명령어
UPDATE 테이블명 SET 컬럼명 = 바꿀 값
[WHERE 컬럼명 비교연산자 비교값]
예) 사번이 201인 사원의 주민등록번호 '앞자리'만 631226으로 변경하기
UPDATE EMPLOYEE SET EMP_NO = '631226' || SUBSTR(EMP_NO,7)
WHERE EMP_ID;201;
--UPDATE+SUBQUERY
--여러행을 변경하거나 여러 컬럼의 값을 변경하고자할때 서브쿼리를 사용하여
--UPDATE를 작성할수있다
--UPDATE 테이블명 SET 컬럼명 - (서브쿼리);
예)
--B, C, D 사원의 급여를
--A 사원과 같은 급여, 보너스로 수정하는
--UPDATE구문을 작성
--단, 다중열 서브쿼리로 구현
UPDATE EMP_SALARY
SET (SALARY, BONUS) = (SELECT SALARY,BONUS FROM EMP_SALARY WHERE EMP_NAME='A')
WHERE EMP_NAME IN ('B','C','D');
반응형
'dummmy' 카테고리의 다른 글
오라클 sql dbeaver / view 뷰 생성 옵션, 수정, 삭제 (0) | 2021.08.04 |
---|---|
오라클 SQL DBEAVER / DDL, DROP, ALTER, ROLLBACK (0) | 2021.08.03 |
오라클 sql dbeaver - 서브쿼리 sub query 인라인뷰 rownum, 상관쿼리 create insert unique (0) | 2021.07.29 |
오라클 sql / having , set operator, join (0) | 2021.07.28 |
2. 오라클 SQL FUNCTION 함수 (0) | 2021.07.27 |