<이공계전문기술연수> 5. DB 실습

2019. 9. 4. 11:10· 이공계전문기술연수/Database

(1)

--1. 직급별 총 급여 및 연봉을 산출 하여라.

select * from employee;
select job_code, sum(salary) 총급여, avg(salary*12) 연봉 from employee group by job_code;

--2. [EMPLOYEE] 테이블에서 부서코드, 그룹별 급여의 합계, 그룹별 급여의 평균(정수처리), 인원수를 조회하고, 부서코드 순으로 정렬 (그룹은 부서)
select dept_code, sum(salary), floor(avg(salary)), count(*) from employee group by dept_code order by 1;

--3. [EMPLOYEE] 테이블에서 부서코드, 보너스를 지급받는 사원 수를 조회하고 부서코드 순으로 정렬
select dept_code 부서코드 , count(*) 사원수 from employee where bonus is not null group by dept_code order by 1;

--4. EMPLOYEE 테이블에서 직급이 J1을 제외하고, 직급, 직급별 사원수 및 평균급여를 출력하세요.
select * from employee;
select job_code 직급, floor(avg(salary))평균급여 ,count(*)사원수
from employee
where job_code not in ('J1')
group by job_code;

--5. 부서내 성별 인원수를 구하세요.
--다음과 같이 출력 되도록 만드시오
--ex)
--D1	남	2
--D1	여	1

select * from employee;

select dept_code , decode(substr(emp_no,8,1),'1','남','2','여'),count(*)
from employee
group by dept_code , decode(substr(emp_no,8,1),'1','남','2','여')
order by dept_code;


--급여 평균이 3000000원 이상인 그룹에 대한 급여 평균값 검색(dept_code)

select dept_code , floor(avg(salary)) from employee
group by dept_code
having floor(avg(salary)) >= 3000000;

--그룹이 된 다음에는 having을 써야됨!!!!!
--ROLLUP , CUBE 나중에 볼 필요있으면 볼 것

select * from job;
select emp_name, job_code from employee;

-------------------------------
--오라클 전용구문

select e.emp_name, j.job_code, j.job_name from employee e, job j
where e.job_code = j.job_code;
--------------------------------------------------------------------------
--ANSI 구문
--두 테이블에서 사용하는 공통값 컬럼명이 같은경우
select * from employee;
select * from department;
select * from job;


select emp_name, job_code, job_name
from employee
join job using(job_code);
-----------------------------------------------------
--두 테이블에서 사용하는 공통값 컬럼명이 다른경우

select emp_name, dept_code, dept_title
from employee
join department on(dept_code = dept_id);

select emp_name, dept_code, dept_title
from employee
left join department on(dept_code = dept_id); -- 왼쪽 테이블은 다 나와야됨

select emp_name, dept_code, dept_title
from employee
right join department on(dept_code = dept_id); -- 오른쪽 테이블은 다 나와야됨


select emp_name, dept_code, dept_title
from employee
full join department on(dept_code = dept_id); -- null 다나옴

-----------CROSS JOIN
select emp_name, dept_title from employee cross join department;

select * from employee;
--자신을 관리하고 있는 사원의 이름을 출력

select manager_id from employee where emp_id = 201;
select emp_name from employee where emp_id = manager_id;

select * from employee;

select e1.emp_name 사원이름, e2.emp_name 관리자이름
from employee e1
join employee e2 on(e1.manager_id = e2.emp_id)
where e1.emp_name='송종기';

--자신이 관리하고 있는 사원의 이름, 급여 및 직급이 어떻게 되는지 검색하여라
--E1 매니저 테이블, E2는 사원 테이블 초점으로 보고 있을때

select * from employee;

select e1.emp_name 매니저이름, e2.emp_name 사원이름, e2.salary 월급,
e2.job_code 직급코드
from employee e1
join employee e2 on (e1.emp_id = e2.manager_id)
order by 1;

select * from employee;
select * from department;
select * from LOCATION;

select emp_id, emp_name, dept_code, dept_title
from employee
join department on (dept_code = dept_id);

select dept_id, local_name from department
join location on(location_id = local_code);



select emp_id, emp_name, dept_code, dept_title, local_name
from employee
join department on (dept_code = dept_id)
join location on (location_id = local_code);



--각 사원들의 이름, 나이, 부서명, 직책명을 출력
--(부서코드, 직책코드 x)

select * from EMPLOYEE; 
select * from DEPARTMENT;
select * from job;

select emp_name, extract(year from sysdate)-(1900+substr(emp_no,1,2))+1 as 나이,
NVL(dept_title,'부서없음') as 부서명, job_name as 직책명
from employee
left join department on (dept_code = dept_id)
join job using (job_code)
order by 1;

(2)

--1.2020년 12월 25일이 무슨 요일인지 조회하시오.

select to_char(to_date('20201225','yyyymmdd'),'day') from dual;


--2.주민번호가 1970년대 생이면서 성별이 여자이고, 성이 전씨인 직원들의 사원명, 주민번호
--부서명 직급명을 조회하시오!!!

select emp_name, emp_no, dept_title, job_name
from employee
join department on (dept_code = dept_id)
join job using (job_code)
where substr(emp_no,1,1) = 7 and substr(emp_no,8,1) = 2 and emp_name like '전%';

--3, 이름에 '형'자가 들어가는 직원들의 사번, 사원명, 부서명을 조회하시오!!

select emp_id , emp_name, dept_title
from employee
join department on (dept_code = dept_id)
where emp_name like '%형%';


--4. 해외영업부에 근무하는 사원명, 직급명, 부서코드, 부서명을 조회하시오!!

select emp_name 사원명, job_name 사원명, dept_code 부서코드, dept_title 부서명
from employee
join job using (job_code)
join department on (dept_code = dept_id)
where dept_title like '해외영업%부';

--5. 보너스 포인트를 받는 직원들의 사원명, 보너스포인트, 부서명, 근무지역명을 조회하시오.

select emp_name, bonus, dept_title, local_name
from employee
left join department on (dept_code = dept_id)
left join location on (location_id = local_code)
where bonus is not null;

--6. 부서코드가 D2 인 직원들의 사원명, 직급명, 부서명, 근무지역명을 조회하시오.

select emp_name, job_name, dept_title, local_name
from employee
join department on (dept_id = dept_code)
join job using (job_code)
join location on (local_code = location_id)
where dept_code = 'D2';

--7. 급여등급테이블의 최대급여(MAX_SAL) - 50만원 보다 많이 받는 직원들의
--사원명, 직급명, 급여, 연봉을 조회하시오.
--(사원테이블과 급여등급테이블을 SAL_LEVEL컬럼기준으로 조인할 것)

select emp_name 사원명, job_name 직급명, salary 급여, salary*12 연봉, max_sal 최대급여
from employee
join job using (job_code)
join sal_grade using (sal_level)
where salary > max_sal - 500000;

--8. 한국(KO)과 일본(JP)에 근무하는 직원들의 사원명, 부서명, 지역명, 국가명을 조회하시오.

select emp_name 사원명, dept_title 부서명, local_name, national_name
from employee
join department on (dept_code = dept_id)
join location on (location_id = local_code)
join national using (national_code)
where national_name = '한국' or national_name = '일본';

--9. 같은부서에 근무하는 직원들의 사원명, 부서명, 동료이름을 조회하시오! self join 사용

select e1.emp_name 사원명, dept_title 부서명, e2.emp_name 동료이름
from employee e1
join department on (dept_id = dept_code)
join employee e2 using(dept_code)
where e1.emp_name != e2.emp_name
order by 1;

--10. 보너스포인트가 없는 직원들 중에서 직급이 차장과 사원인 직원들의 사원명, 직급명, 급여를
--조회하시오. (단, join과 in 사용할 것)
---------------------------------------------------------------------다시
select emp_name 사원명, job_name 직급명, salary 급여
from employee
join job using (job_code)
where bonus is null and job_name in('차장' ,'사원');

--11. 재직중인 직원과 퇴사한 직원의 수를 조회하시오
select * from employee;
select case ent_yn when 'Y' then '재직' when 'N' then '퇴사' end ,count(*)
from employee
group by ent_yn;

(3)

--1)부서코드가 D5인사람의 EMP_ID, EMP_NAME, DEPT_CODE , SALARY

--2)SALARY가 300만원보다 큰사람의 EMP_ID, EMP_NAME, DEPT_CODE, SALARY

--MINUS 는 'D5'를 제외하는 것!

SELECT EMP_ID, EMP_NAME, DEPT_CODE, SALARY
FROM EMPLOYEE
WHERE SALARY > 3000000
MINUS
SELECT EMP_ID, EMP_NAME, DEPT_CODE, SALARY
FROM EMPLOYEE
WHERE DEPT_CODE = 'D5';

(4)

--전지연 직원의 관리자 이름을 출력


select * from employee;

select manager_id from employee where emp_name = '전지연';

select emp_name from employee where emp_id = 214;

select emp_name 
from employee
where emp_id=(select manager_id from employee where emp_name = '전지연');

--전 직원의 평균급여보다 많은 급여를 받는 직원의 사번, 이름, 직급코드, 급여 출력

select * from employee;

select emp_id , emp_name, job_code, salary from employee
where salary >  (select avg(salary) from employee);

(5)

--실습문제

--1. 윤은해와 급여가 같은 사원들을 검색해서, 사원번호, 사원이름 급여를 출력하라.
--단, 윤은해는 출력되면 안됨

select emp_id , emp_name, salary from employee where salary
=  (select salary from employee where emp_name = '윤은해') and emp_name !='윤은해';

--2. employee 테이블에서 기본급여가 제일 많은 사람과 제일 적은 사람의 정보를 사번, 사원명, 기본급여를 나타내세요!!

select emp_id, emp_name, salary from employee where salary
= (select max(salary) from employee) or salary = (select min(salary) from employee);


--3. D1, D2 부서에 근무하는 사원들 중에서 기본급여가 D5 부서 직원들의 '평균월급'보다 많은 사람들만
--부서번호, 사원번호, 사원명, 월급을 나타내세요!

select dept_code, emp_id, emp_name, salary from employee
where dept_code in ('D1', 'D2') and salary > (select avg(salary) from employee where dept_code in('D5'));

select avg(salary) from employee where dept_code in('D5');



select rownum, employee.* from employee;
-- 게시판 페이징처리

 


(6) 

select * from member;
create table member(
    member_id varchar2(20),
    member_pw varchar2(20),
    member_name varchar2(20)
    );
    
    comment on column member.member_id is'회원아이디';
    comment on column member.member_pw is'비밀번호';
    comment on column member.member_name is'회원이름';


create table user_nocons(
user_no number,
user_id varchar2(20),
user_pwd varchar2(30),
user_name varchar2(20),
gender varchar2(30)
);
insert into user_nocons values
(1, 'user01', 'pass01','홍길동','남');

select * from user_nocons;
insert into user_nocons values
(2,null,null,null,null);

create table user_notnull(
user_no number not null,
user_id varchar2(20) not null,
user_pwd varchar2(30) not null,
user_name varchar2 (20),
gender varchar2(30)
);

select * from USER_NOTNULL;

insert into user_notnull values
(1,'user01','pass01','홍길동','남자');
insert into user_notnull values
(2,null,null,null,null);

drop table user_unique;
create table user_unique(
    user_no number,
    user_id varchar2(20),
    user_pwd varchar2(30) not null,
    user_name varchar2(20),
    gender varchar2(20),
    unique(user_id)
);

select * from user_unique;
insert into user_unique values(1,'user01','pass01','홍길동','남');
insert into user_unique values(2,'user02','pass01','임지안','남');
insert into user_unique values(3,null,'pass01','박상철','남');



create table user_primarykey(
    user_no number primary key,
    user_id varchar2(20) unique,
    user_pwd varchar2(30) not null,
    user_name varchar2(20),
    gender varchar2(10)
--  primary key(user_no) 여기에 써줘도 됨! 2번째줄 unique 빼고  
);


insert into user_primarykey values
(1,'user01','pass01','임지안','남');
insert into user_primarykey values
(2,'user02','pass01','임지안2','남');

select * from user_primarykey where user_no = 1;



--쇼핑몰 회원테이블
--구매테이블

create table shop_member(
    member_id varchar2(20) primary key,
    member_pw varchar2(30) not null,
    member_name varchar2(20),
    gender varchar2(20),
    phone char(13)
);

insert into shop_member values('user01','pass01','임지안1','남','010-8910-6879');
insert into shop_member values('user02','pass02','임지안2','남','010-8910-6879');
insert into shop_member values('user03','pass03','임지안3','남','010-8910-6879');
insert into shop_member values('user04','pass04','임지안4','남','010-8910-6879');
insert into shop_member values('user05','pass05','임지안5','남','010-8910-6879');

select * from shop_member;

create table shop_buy2(
    buy_no number primary key,
    user_id varchar2(20),
    product_name varchar2(50),
    foreign key (user_id) references shop_member(member_id) on delete set null  --on delete cascade
    -- 참조하는 컬럼은 반드시 primary key이거나 , unique 조건을 만족 시켜야됨!!!!
);

select * from shop_buy2;
insert into shop_buy2 values(1, 'user01','컨디션');
insert into shop_buy2 values(2, 'user02','컨디션');
insert into shop_buy2 values(3, 'user03','컨디션');
insert into shop_buy2 values(4, 'user04','컨디션');


delete from shop_member where member_id = 'user01';


select * from shop_buy3;





--CHECK : 해당 컬럼에 입력되는 값을 체크
--설정된 값 이외는 에러발생

create table user_check(
    user_no number primary key,
    user_id varchar2(20) unique,
    user_pw varchar2(30) not null,
    user_name varchar2(20),
    gender varchar2(10) check (gender in('남','여')) -- 남, 여 로만 넣을수 있음!
);

insert into user_check values
(1,'user01','pass01','이윤수','남');
insert into user_check values
(2,'user02','pass01','이윤수','여');

------------------------------------------------------------------------
------------------------------------------------------------------------

--직원사번,이름,급여,부서이름,직급
select * from department;

create table employee_copy
as
select emp_id , emp_name, salary, dept_title, job_name
from employee
left join department on(dept_id = dept_code)
left join job using(job_code);

select * from employee_copy;
-- 컬럼명, 데이터타입, 값 다 복사되는데!!!!!!!!!!!
-- 제약조건은 NOT NULL만 복사됨 -> ALTER 를 이용해서 수정을 해야됨!!!!!!!!!!!!!

-------------------------------------------------------------------------------
create table employee_copy2
as
select emp_id , emp_name, salary, dept_title, job_name
from employee
left join department on(dept_id = dept_code)
left join job using(job_code) where 1 = 0;
select * from employee_copy2;

--default : 기본값 적용
create table test_tbl(
    data1 number default 0,
    data2 number
);
insert into test_tbl  values(default,1);
select * from test_tbl;


----------------------------------------------
----------------------------------------------

create table expert_tbl(
    
    member_code number primary key,
    member_id varchar2(20) unique,
    member_pwd char(20) not null,
    member_name nchar(10) not null,
    member_addr char(50) not null,
    gender varchar2(5) check (gender in('남','여')),
    phone varchar2(50) default 000-0000-0000  -- '000-0000-000' 이렇게 해야됨!!!!   
);

create table A3Company_TBL(
    member_code number,
    skill nchar(10),
    
    foreign key (member_code) references expert_tbl(member_code) 
    on delete cascade
);

insert into expert_tbl values
(1,'user01','pwd01', '지안', '서울', '남', default);

insert into expert_tbl values
(2,'user02','pwd02', '지안', '서울', '여', default);

select * from expert_tbl;


insert into A3Company_TBL values
(1, '좋음');

insert into A3Company_TBL values
(2, '매우좋음');
select * from A3COMPANY_TBL;

delete from a3company_tbl where member_code = '1';

delete from expert_tbl where member_id = 'user01';

select * from expert_tbl;
select * from a3company_tbl;

CREATE TABLE EMP_01(
    EMP_ID NUMBER,
    EMP_NAME VARCHAR2(30),
    DEPT_TITLE VARCHAR2(20)
);
INSERT INTO EMP_01 VALUES (111,'이윤수','D20');

INSERT INTO EMP_01 (EMP_ID, EMP_NAME)
VALUES(222,'이윤수');

SELECT * FROM EMP_01;

------------------------------------------------------------------------------
SELECT * FROM DEPARTMENT;

INSERT INTO EMP_01 (SELECT EMP_ID, EMP_NAME, DEPT_TITLE 
FROM EMPLOYEE
LEFT JOIN DEPARTMENT ON (DEPT_CODE = DEPT_ID));
SELECT * FROM EMP_01;

SELECT EMP_ID, EMP_NAME, DEPT_TITLE 
FROM EMPLOYEE
LEFT JOIN DEPARTMENT ON (DEPT_CODE = DEPT_ID);

--------------------------------------------------------------------------------
--@UPDATE : 테이블에 기록된 컬럼의 값을 수정하는 구문
-- 업데이트 후 테이블의 행의 갯수 변화 없음!!

CREATE TABLE DEPT_COPY
AS SELECT * FROM DEPARTMENT;
SELECT * FROM DEPT_COPY;

UPDATE DEPT_COPY SET DEPT_TITLE = '전략기획팀'
WHERE DEPT_ID = 'D9';

SELECT * FROM DEPT_COPY;
--------------------------------------------------------------------------------
CREATE TABLE EMP_SALARY
AS
SELECT EMP_ID,EMP_NAME, DEPT_CODE,SALARY,BONUS
FROM EMPLOYEE;
SELECT* FROM EMP_SALARY;

SELECT SALARY,BONUS FROM EMP_SALARY WHERE EMP_ID = 200;
UPDATE EMP_SALARY
SET
SALARY = (SELECT SALARY FROM EMP_SALARY WHERE EMP_ID = 200),
BONUS = (SELECT BONUS FROM EMP_SALARY WHERE EMP_ID = 200)
WHERE EMP_ID = 201;

SELECT* FROM EMP_SALARY;

DELETE FROM EMP_SALARY WHERE EMP_ID = 200;

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--런닝맨실습----------------------------------------------------------------------
CREATE TABLE RUNNINGMAN (

    NO NUMBER PRIMARY KEY,
    ID VARCHAR2(20) UNIQUE,
    PASS VARCHAR2(20) NOT NULL,
    NAME VARCHAR2(20) NOT NULL,
    NICKNAME VARCHAR2(20) UNIQUE,
    GENDER CHAR(1),
    TEL VARCHAR(20) default '010-0000-0000',
    ADDRESS VARCHAR2(90)
);

INSERT INTO RUNNINGMAN values
(1,'muhan',1234,'유재석','못생긴형','M','010-4958-2333','압구정');
INSERT INTO RUNNINGMAN values
(2,'bignose',4444,'지석진','지는해','M',default,'서울');
INSERT INTO RUNNINGMAN values
(3,'tiger',6658,'김종국','안꼬','M','010-6674-8986','안양');
INSERT INTO RUNNINGMAN values
(4,'haha',5356,'하하','신분세탁','M','010-8997-1122','서래마을');
INSERT INTO RUNNINGMAN values
(5,'ace',5555,'송지효','천성임','F',default,'서울시');
INSERT INTO RUNNINGMAN values
(6,'girrafe',6658,'이광수','중기친구','M','010-2378-9991','남양주');
INSERT INTO RUNNINGMAN values
(7,'ssapssap',5356,'양세찬','김종국팬','M','010-1215-7777','동두천');
INSERT INTO RUNNINGMAN values
(8,'doli',5555,'전소민','전두릅','F',default,'일산');

select * from runningman;

--중기친구 닉네임가진애 비밀번호를 9999로 변경
update runningman set pass = '9999'
where nickname = '중기친구';

--전화번호가 기본값으로 되어있는 사원들의 tel정보를 '없음'으로
--단,1번의 쿼리문으로 모두변경

update runningman set tel = '없음'
where tel = '010-0000-0000';
select * from runningman;

--런닝맨 멤버 중 유재석이 하차했습니다.
--유재석을 테이블에서 삭제하여라!!

delete from runningman where no = 1;
select * from runningman;

--유재석이 하차한 뒤로 시청률이 떨어져서 프로그램이 폐지되었습니다.
--TRUNCATE를 통해서 모든 멤버의 정보를 초기화 하여라.

TRUNCATE TABLE RUNNINGMAN;
select * from runningman;
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

CREATE TABLE MEMBER_TBL(
    USER_NO NUMBER PRIMARY KEY,
    USER_ID VARCHAR2(20),
    USER_PWD VARCHAR2(20)
);

DESC MEMBER_TBL;
SELECT * FROM MEMBER_TBL;
-- 이미 생성된 테이블에 새로운 컬럼 추가 (USER_NAME)
ALTER TABLE MEMBER_TBL ADD (USER_NAME VARCHAR2(20));
ALTER TABLE MEMBER_TBL ADD (USER_AGE NUMBER DEFAULT 0 );
INSERT INTO MEMBER_TBL VALUES(
1,'TEST01','1234','이윤수',DEFAULT);

SELECT * FROM MEMBER_TBL;

ALTER TABLE MEMBER_TBL
ADD CONSTRAINT MTBL_ID_UNQ UNIQUE (USER_ID);

ALTER TABLE MEMBER_TBL 
MODIFY USER_PWD CONSTRAINT MTBL_PWD_NN NOT NULL;

SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME
FROM USER_CONSTRAINTS
WHERE TABLE_NAME = 'MEMBER_TBL';

--제약조건 삭제하기
--1. 제약조건 이름검색
ALTER TABLE MEMBER_TBL
DROP CONSTRAINT MTBL_PWD_NN; -- 이름써야됨!!

DESC MEMBER_TBL;
--컬럼명 수정하기

ALTER TABLE MEMBER_TBL 
RENAME COLUMN USER_PWD TO PASSWORD;

ALTER TABLE MEMBER_TBL DROP COLUMN USER_AGE;
ALTER TABLE MEMBER_TBL DROP COLUMN USER_NO CASCADE CONSTRAINTS; -- 


ALTER TABLE MEMBER_TBL RENAME TO MTBL;
SELECT * FROM MTBL;

DROP TABLE MTBL;

CREATE TABLE COFFEE(
    NAME VARCHAR2(20),
    PRICE NUMBER
);

INSERT INTO COFFEE VALUES ('아메리카노' , 1800);
INSERT INTO COFFEE VALUES ('카페모카' , 2400);
INSERT INTO COFFEE VALUES ('마키아또' , 5000);
INSERT INTO COFFEE VALUES ('아이스아메' , 1800);
INSERT INTO COFFEE VALUES ('뜨거운아메' , 1800);
SAVEPOINT SP1;
ROLLBACK;
ROLLBACK TO SP1;
COMMIT;
SELECT *FROM COFFEE;


SELECT * FROM USER_TABLES; -- 자신이 소유한 객체 정보 조회
SELECT * FROM USER_CONS_COLUMNS; -- 자신이 소유한 테이블의 컬럼정보
SELECT * FROM USER_CONSTRAINTS; -- 자신이 소유한 테이블의 제약조건
SELECT * FROM USER_COL_COMMENTS;

--------------------------------------------------------------------------------
CREATE OR REPLACE VIEW EMP_VIEW --  생성하는 뷰가 존재하지 않으면 새로 생성, 이미 존재하면 뷰를 갱신
AS
SELECT EMP_NO, EMP_NAME, EMAIL, PHONE FROM EMPLOYEE;
SELECT * FROM EMP_VIEW;
--------------------------------------------------------------------------------

CREATE SEQUENCE SEQ_EMP_ID
START WITH 1
INCREMENT BY 1
MAXVALUE 10
NOCYCLE
NOCACHE;
--------------
--SEQUENCE이름.NEXTVAL : 시퀀스값 증가
--SEQUENCE이름.CURRVAL : 현재 시퀀스값 확인

SELECT SEQ_EMP_ID.NEXTVAL FROM DUAL; -- 10넘어가면 ERROR
SELECT SEQ_EMP_ID.CURRVAL FROM DUAL;
--------------------------------------------------------------------------------
CREATE TABLE SEQ_TEST(
    NO NUMBER PRIMARY KEY,
    NAME VARCHAR2(20) NOT NULL,
    AGE NUMBER NOT NULL
);

CREATE SEQUENCE SEQ_TEST_NO
START WITH 1
INCREMENT BY 1
MAXVALUE 100
NOCYCLE
NOCACHE;
INSERT INTO SEQ_TEST VALUES(SEQ_TEST_NO.NEXTVAL,'임지안',26);

SELECT * FROM SEQ_TEST;
--수정 --> NEXT 할때마다 이제 10씩 올라감!!!!
----BUT!!!! START WITH 값은 변경 불가
----START WITH 값은 삭제 후 다시 생성!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
----(PRIMARY KEY 만들때 많이 사용)
ALTER SEQUENCE SEQ_TEST_NO 
INCREMENT BY 10
MAXVALUE 400;

--------------------------------------------------------------------------------

CREATE TABLE KH_MEMBER(
    MEMBER_ID NUMBER,
    MEMBER_NAME VARCHAR2(20),
    MEMBER_AGE NUMBER,
    MEMBER_JOIN_COM NUMBER
);\
CREATE SEQUENCE KH_MEMBER_ID
START WITH 500
INCREMENT BY 10
MAXVALUE 10000
NOCYCLE
NOCACHE;

CREATE SEQUENCE KH_MEMBER_JOIN_COM
START WITH 1
INCREMENT BY 1
MAXVALUE 1000
NOCYCLE
NOCACHE;

INSERT INTO KH_MEMBER VALUES(KH_MEMBER_ID.NEXTVAL, '임지안1' , 20, KH_MEMBER_JOIN_COM.NEXTVAL);
                                    --'임지안1'||KH.MEMBER_JOIN_COM.NEXTVAL 하면 붙여나옴
SELECT * FROM KH_MEMBER;
--------------------------------------------------------------------------------

CREATE INDEX EMP_IDX ON EMPLOYEE(EMP_NAME, EMP_NO, HIRE_DATE);
SELECT EMP_NAME, EMP_NO, HIRE_DATE FROM EMPLOYEE;
SELECT * FROM EMPLOYEE;
DROP INDEX EMP_IDX;

CREATE SYNONYM EMP FOR EMPLOYEE;
SELECT * FROM EMP;
-----------------------------------지금 만든 동의어는 KH계정에서만 사용이 가능!!

'이공계전문기술연수 > Database' 카테고리의 다른 글

<이공계전문기술연수> 7. JDBC(Java Database Connectivity)  (0) 2019.11.22
<이공계전문기술연수> 6. DB (INDEX , DECLARE)  (0) 2019.09.05
<이공계전문기술연수> 4. DB (DDL / DML / DCL)  (0) 2019.09.03
<이공계전문기술연수> 3. DB 그룹 함수  (0) 2019.09.02
<이공계전문기술연수> 2. DB 단일 행 함수  (0) 2019.09.01
'이공계전문기술연수/Database' 카테고리의 다른 글
  • <이공계전문기술연수> 7. JDBC(Java Database Connectivity)
  • <이공계전문기술연수> 6. DB (INDEX , DECLARE)
  • <이공계전문기술연수> 4. DB (DDL / DML / DCL)
  • <이공계전문기술연수> 3. DB 그룹 함수
임쟌
임쟌
임쟌
Jian's Blog
임쟌
전체
오늘
어제

공지사항

  • [자기소개]
  • 쟌's Blog (227)
    • Language (32)
      • Python (8)
      • Go (24)
      • Java (0)
    • Framework (10)
      • Django (9)
      • Gin (1)
      • Spring boot (0)
      • Fiber (0)
    • Database (10)
      • PostgreSQL (8)
      • MySQL (0)
      • Redis (2)
    • Server (51)
      • Linux (16)
      • Git (12)
      • Oracle Cloud Infrastructure (13)
      • Mac (4)
      • Docker (4)
      • RabbitMQ (0)
      • ETC (2)
    • Operating System (0)
      • OS (0)
    • Algorithm (22)
      • Go (22)
      • Python (0)
    • Exam Certification (4)
    • Daily Life (27)
      • Review (21)
      • Diary (6)
    • 이공계전문기술연수 (71)
      • Java (17)
      • Database (8)
      • HTML | CSS (13)
      • JavaScript | jQuery (6)
      • Servlet | JSP (16)
      • Spring Framework (11)

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
임쟌
<이공계전문기술연수> 5. DB 실습
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.