250x250
Notice
Recent Posts
Recent Comments
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags more
Archives
Today
Total
관리 메뉴

개린이 개발노트

국비지원 JAVA(자바) 프로그래밍 (데이터베이스, 오라클,SQL,SQLD,) 본문

국비지원(국비교육) 웹 개발자 과정

국비지원 JAVA(자바) 프로그래밍 (데이터베이스, 오라클,SQL,SQLD,)

개린이9999 2023. 1. 13. 08:08
728x90

UPDATE 수정문

형식 ↓

 

UPDATE 수정할 테이블이름 

SET 수정할 컬럼=수정할데이터,수정할컬럼=수정할데이터(어떤컬럼에서 어떤데이터를)

WHERE 조건식 

 

예제 

UPDATE 연습
 SET LOC ='SEOUL'
 WHERE DNAME='SALES'

DNAME이 SALES인 곳에 컬럼이 LOC인 곳에 있는 SEOUL을 SALES로 바꾸어라 

 

 

연습테이블에 부서번호가 40번인 부서명을 JAVA 지역을 BUSAN으로 변경하시오.

--여러개 컬럼 바꿀때는 그냥 콤마 찍으면됨.
UPDATE 연습 
SET DNAME='JAVA', LOC='BUSAN'
WHERE DEPTNO=40;

 

UPDATE 연습
SET (DNAME,LOC) = (SELECT DNAME,LOC FROM DEPT WHERE DEPTNO=40)
WHERE DEPTNO=40;

UPDATE 연습
SET DNAME = LOWER(DNAME);


DELETE (레코드 삭제, 데이터 삭제, 내용 지울 때) 

 

DELETE FROM 삭제할 내용이 있는 테이블

WHERE 조건식 

 

예제 연습

DELETE FROM 연습 WHERE DEPTNO=30;

예제연습

연습2테이블에 급여등급이 5등급인데이터를 삭제하시오 

SALGRADE테이블도 활용 

DELETE FROM 연습2
WHERE EMPNO IN ( SELECT EMPNO
FROM 연습2 INNER JOIN SALGRADE ON SAL BETWEEN LOSAL AND HISAL
WHERE GRADE=5);

-> 결과값이 운좋게 단일행이 나올수 있지만 다중행이 나올수있으므로 연산자 IN 사용 


SELECT ,INSERT ,UPDATE ,DELETE -> DML (데이터 조작어) 

연습하기

부서번호 부서명 지역

50,ORACLE,BUSAN

60,SQL,ILSAN

70,SELECT,INCHEON

80,DML.SEOUL  

INSERT 하기

INSERT INTO EX_DEPT ( DEPTNO, DNAME ,LOC)
VALUES ( 50, 'ORCLE','BUSAN');

INSERT INTO EX_DEPT ( DEPTNO, DNAME ,LOC)
VALUES ( 60, 'SQL','DALLAS');

INSERT INTO EX_DEPT ( DEPTNO, DNAME ,LOC)
VALUES ( 70, 'SELECT ','INCHEON');

INSERT INTO EX_DEPT ( DEPTNO, DNAME ,LOC)
VALUES ( 80, 'DML','SEOUL');

 

EX_EMP 테이블에서 작업 

부서번호 20번인 사람들의 급여평균보다

더 큰 급여를 받는 사람들의 부서번호를 70번으로 변경 

UPDATE EX_EMP
SET DEPTNO =70
WHERE SAL > (SELECT AVG(SAL) FROM EX_EMP WHERE DEPTNO=20);

 

EX_EMP 테이블  이용 

부서번호가 30번인 사람들 중에서 입사일이 가장늦은 사람보다 

더일찍 입사한 모든 사원들의 급여를 10% 인상시키고

부서번호를 60으로로 변경 

UPDATE EX_EMP
SET SAL = SAL*1.1, DEPTNO=60
WHERE HIREDATE < (SELECT MAX(HIREDATE) FROM EX_EMP WHERE DEPTNO =30);

추가수당 없는 사람들을 삭제

DELETE FROM EX_EMP WHERE COMM=0 OR COMM IS NULL;


데이터 정의어 

CREATE-> 테이블 생성

DROP-> 테이블 삭제

ALTER->테이블 수정


새로운 테이블 만드는 법

 

위는 첫번째 방식

 

직접 만드는 방식

CREATE

 

CREATE TABLE 테이블명( 
컬럼명 데이터타입,
컬럼명 데이터타입,
컬럼명 데이터타입
);

 

CREATE TABLE 테이블명( 
이름 VARCHAR(50),
수학 NUMBER,
영어 NUMBER(5,2) --123.45
);

 

CHAR->문자(고정길이)              CHAR(50)                   ABC 입력-> 3바이트만먹는문자지만 최종적으로는 50바이트

VARCHAR - 문자 (가변길이)      VARCHAR(50)            ABC 입력-> 최종크기는 50바이트지만 3바이트에 맞게 조정

 

 

VARCHAR  -> 최대 2000BYTE

VARCHAR2  최대 4000바이트

 

NUMBER -> 숫자 (가변길이) 

LONG-> 숫자,문자도 가능함 최대 2기가 

 

CLOB->최대 4GB

 

BFILE-> 파일 저장

 

테이블 생성규칙 

숫자로 시작안함

이름은 30BYTE이하

예약어로 안됨( SELECT, UPDATE 이런걸로 테이블명 지정못함) 


ALTER

ALTER TABLE 테이블명

ALTER TABLE 연습2 
    ADD 과학 NUMBER;

컬럼 추가됨 

ALTER TABLE 테이블명 

                      ADD 컬럼명 데이터형식

 

---컬럼명을 변경

ALTER TABLE 테이블명

               RENAME COLUMN 변경 전  컬럼명 TO  변경 후 컬럼명 

 

ALTER TABLE EX_DEPT
RENAME COLUMN TEL TO PHONE;

--데이터타입을 변경 

 ALTER TABLE 테이블명

                 MODIFY  변경할컬럼명 변경할데이터타입

ALTER TABLE EX_DEPT 
      MODIFY DEPTNO NUMBER(5);

 

LTER TABLE EX_DEPT
     MODIFY DNAME VARCHAR(12);

--컬럼을 삭제

ALTER TABLE 테이블명

             DROP COLUMN 컬럼명

ALTER TABLE EX_DEPT
DROP COLUMN PHONE;

--테이블 이름 변경 

RENAME 변경전테이블명 TO 변경후테이블명 

RENAME EX_DEPT TO 부서;

 

--테이블 데이터를 삭제

TRUNCKATE TABLE 테이블명

 

DELETE FROM 테이블명

 

DML 데이터 조작 INSERT , UPDATE ,DELETE                  -ROLLBACK, COMMIT 가능 

데이터 정의어 CREATE, ALTER ,DROP, TRUNCATE        -ROLLBACK, COMMIT 이안됨



사원 테이블을 생성 

 

CREATE TABLE 사원 (
    사원번호 NUMBER(4),
    사원이름 VARCHAR(50),
    직책 VARCHAR(50),
    상관번호 NUMBER(4),
    입사일 DATE,
    급여 NUMBER(10),
    추가수당 NUMBER(10),
    부서번호 NUMBER(4)
);

DESC 사원;
SELECT * FROM 사원;

생성완료 

 

사원테이블에 '비고'컬럼 추가

데이터타입은 가변문자 10BYTE  짜리 추가하기

ALTER TABLE 사원
    ADD 비고 VARCHAR(10);

사원테이블에 있는 '비고 ' 컬럼을 '호봉'으로 수정

ALTER TABLE 사원 
RENAME COLUMN 비고 TO 호봉;

EMP테이블에 있는 데이터를 사원테이블에 저장 

호봉은 NULL로 채움 

INSERT INTO 사원
    SELECT EMPNO,ENAME,JOB,MGR,HIREDATE,
    SAL,COMM,DEPTNO,NULL FROM EMP;
    -- 호봉을 NULL로 채워주기위해
    SELECT * FROM 사원;
    
    INSERT INTO 사원(사원번호,사원이름,직책,상관번호,입사일,급여,추가수당,부서번호)
    SELECT * FROM EMP;
    --호봉에는 NULL로 채우기위해 호봉컬럼은 적지않음
     SELECT * FROM 사원;

 

사원테이블에 직책컬럼의 크기를 20으로 수정 

 ALTER TABLE 사원
             MODIFY  직책 VARCHAR2(20);

 


UPDATE문 

 

사원테이블에

직책이 CLERK 사무원으로 변경

직책이 SALESMAN 판매원으로 변경

직책이 MANAGER 매니저

직책이 PRESIDENT 사장 

직책이 ANALYST 분석가 

 

 

UPDATE 사원 
SET 직책='사무원'
WHERE 직책='CLERK';

UPDATE 사원 
SET 직책='판매원'
WHERE 직책='SALESMAN';

UPDATE 사원 
SET 직책='매니저'
WHERE 직책='MANAGER';

UPDATE 사원 
SET 직책='사장'
WHERE 직책='PRESIDENT';

UPDATE 사원 
SET 직책='분석가'
WHERE 직책='ANALYST';

추가수당이 없는 직원들은 급여의 10%만큼 주려고함

대신 사장뺴고 

AND 연산  곱 개념이고 

OR 연산 합 개념 

UPDATE 사원
SET 추가수당 = 급여*0.1
WHERE (추가수당 IS NULL OR 추가수당=0) AND 직책!='사장';

사원테이블에 상관번호 컬럼을 삭제 

ALTER TABLE 사원 
    DROP COLUMN 상관번호;

신입사원을 받았음

사원번호:9999

사원이름: 강준석

직책:인턴

입사일: 오늘날짜

급여:500

추가수당:NULL

부서번호:40

호봉:NULL

INSERT INTO 사원 
VALUES(9999, '강준석', '인턴' , SYSDATE, 500, NULL ,40 ,NULL);

30번 부서에서 진행중인 프로젝트가 망함

그래서 정리해고하려고함

급여가 1500보다 많이받는 사람은 해고

다른사람들은 부서를 40번 부서로 이동

DELETE FROM 사원 
WHERE 부서번호=30 AND 급여>1500;

UPDATE 사원 
SET 부서번호=40
WHERE 부서번호=30;


제약조건

데이터에 제약조건을 걸어서 옳지않은 데이터가 입력되는 것을 방지하기 위함

데이터에 무결성을 유지하기 위함

 

데이터 무결성: 데이터의 정확성, 일관성을 보장하기위한 것.

 

영역 무결성-컬럼에 저장되는 데이터가 적정데이터인지 확인해주는것

                    NULL, 조건범위에 해당하는 값 만족하는 데이터

참조 무결성 기본키를 참조하는 외래키에는 기본키에 해당하는 데이터만 저장

개체 무결성- 데이터를 유일하게 식별해주는 기본키는 반드시 값이 있어야하고 NULL도 안되고 

                      중복도 불가능하다.

 

NOT NULL (NULL 안됨) 

 

CREATE TABLE NULL_TEST(

ID VARCHAR(20) NOT NULL,
PW VARCHAR(20) NOT NULL,
NAME VARCHAR(20) 
);

이런식으로 제약 조건을 만듦

 

CONSTRAINT

 

CREATE TABLE NULL_TEST2(
    ID VARCHAR(20) CONSTRAINT 제약조건 이름 NOT NULL

)

위처럼 CONSTRAINT 사용 

 

테이블이 만들어졌을 때 추가로 제약조건을 만들고 싶을 때

 

제약조건을 걸떄  

CREATE TABLE 테이블이름(

 

       컬럼명 데이터 형식 NOT NULL .-- 오라클이 알아서 제약조건 이름설정함

        컬럼명 데이터 형식 CONSTRAINT 제약조건명 NOT NULL

);

 

제약조건 삭제 (데이터가 있던 말던 그냥 됨) 

ALTER TABLE 테이블이름(

   DROP CONSTRAINT 제약조건명

);

 

이미생성된 테이블에 제약조건을 추가 (데이터가 없으면 괜찮지만 , 데이터가 있을 경우에는 제약조건에 위배되는 데이터가있으면 안됨)

 

ALTER TABLE 테이블명 

MODIFY 컬럼명 NOT NULL; -- 제약조건 이름은 오라클이 알아서 해줌

 

중복 불가능 UNIQUE ( NOT NULL 이 들어가는 곳에 UNUQUE 넣으면됨) 

728x90