본문 바로가기

오늘의학습

06.26

-- 테이블 생성 구문
-- create table 테이블_이름(
-- 컬럼_이름 데이터_타입 [not null] [default 기본값] [primary key],
-- 컬럼_이름 데이터_타입 [not null] [default 기본값],
-- ...
-- );

create table employees(
id varchar2(20) primary key,
name varchar2(30) not null,
password varchar2(30) not null,
gender varchar2(10),
birth date default sysdate,
marriage varchar2(30),
salary number default 100,
address varchar2(50),
manager varchar2(50)
);

-- 5.2.2 데이터 추가하기
-- 행 추가하기
-- insert into 테이블이름(컬럼01, 컴럼02,...)
-- values(값01, 값02, ...)

-- 3건의 데이터 추가하기
insert into employees(id, name, password, gender, birth, marriage, salary, address, manager)
values ('yunsin', '김유신', 'abc1234', '남자', '1997/12/15', '결혼', 220, '용산', null);

-- 테이블의 모든 행 정보 출력하기
select * from employees;

insert into employees(id, name, password, gender, birth, marriage, salary, address, manager)
values ('choi', '최영', 'abc1234', '남자', '1997/12/15', '결혼', 220, '용산', null);

insert into employees(id, name, password, gender, birth, marriage, salary, address, manager)
values ('kang', '강감찬', 'abc1234', '남자', '1997/12/15', '결혼', 220, '용산', null);

select * from employees;

-- 5.3 테이블 정보 확인
-- 이미 생성된 테이블에 대한 정보 확인
-- 테이블 목록, 특정 테이블 구조

-- 5.3.1 테이블의 목록 보기
select * from tab;

-- 5.3.2 테이블의 구조 확인
-- desc 테이블 이름
desc employees;

-- 5.4 테이블 구조 변경
-- 5.4.1 컬럼 추가하기(휴대폰 컬럼 추가)
-- alter table 테이블_이름 add(컬럼_이름 데이터_타입)
alter table employees add (hphone varchar2(15));

select * from employees;

-- nickname, age 컬럼 추가
-- nickname default '철수'
-- age default 0

alter table employees add( nickname varchar2(15) default '철수', age int default 0);

-- 테이블 조회
select * from employees;

-- 5.4.2 컬럼 구조 변경하기
-- alter table 테이블_이름 modify(컬럼_이름 데이터 타입);
insert into employees(id,name,password,gender,birth,marriage, salary, address, manager)
values('yusinyusinyusinyusinyusinyusinyusinyusin', '김유신', 'abc1234', '남자', '1990/12/25', '결혼', 220, '용산', null); --오류 발생

alter table employees modify(id varchar2(30));

insert into employees(id,name,password,gender,birth,marriage, salary, address, manager)
values('yusinyusinyusinyusinyu', '김유신', 'abc1234', '남자', '1990/12/25', '결혼', 220, '용산', null); --오류 발생

select * from employees;

alter table employees modify(nickname varchar2(20));

select * from employees;

-- 휴대폰 컬럼을 숫자형으로 변경하기.
alter table employees modify(hphone number);

-- 닉네임을 숫자형으로 변경하기
alter table employees modify(nickname number);

select * from employees;

-- 5.3.3 컬럼 이름 변경하기
-- alter table 테이블_이름 rename column 이전_컬럼_이름 to 새로운_컬럼_이름;

-- hphone --> handphone manager --> mgr
alter table employees rename column hphone to handphone;
alter table employees rename column manager to mgr;

-- handphone, nickname, age 컬럼 제거
alter table employees drop column handphone;
alter table employees drop column nickname;
alter table employees drop column age;

-- 5.4.5 테이블 이름 변경하기
-- rename 이전_테이블_이름 to 신규_테이블_이름;

rename employees to emp99;

-- 최종적으로 내가 소유하고 있는 테이블 목록 확인
select * from tab;

-- 5.5 테이블 삭제하기
-- purge 구문 없이 사용하면 테이블이 휴지통으로 이동하고
-- purge 구문을 사용하면 영구 삭제됨
-- drop table 테이블_이름 [purge];
drop table emp99 purge;

select * from tab;

-- chapter 06
-- 데이터 조작어(DML)
-- 테이블에 데이터를 추가/수정/삭제 하기 위한 DML 구문

-- 6.1 DML 개요
-- insert 테이블에 새로운 행을 추가
-- update 이미 들어 있는 테이블의 행에 대한 정보 수정
-- delete 테이블의 특정 행 정보 삭제

-- 6.2.1 테이블 다시 만들기

create table employees(
id varchar2(20) primary key,
name varchar2(30) not null,
password varchar2(30) not null,
gender varchar2(10),
birth date default sysdate,
marriage varchar2(30),
salary number default 100,
address varchar2(50),
manager varchar2(50)
);

-- 6.2.2 컬럼 이름을 명시하지 않는 경우
-- 컬럼 이름을 명시하지 않고 추가하는 경우에는 반드시
-- 테이블 생성시 명시한 컬럼 순서대로 모두 입력해 줘야 한다.

insert into employees
values ('yunsin', '김유신', 'abc1234', '남자', '1997/12/15', '결혼', 220, '용산', null);

select * from employees;

insert into employees
values ('lee', '이순신', 'abc1234', '남자', '1997/12/15', '결혼', 220, '용산', null);

insert into employees
values ('choi', '최영', 'abc1234', '남자', '1997/12/15', '이혼', 220, '강남', null);

insert into employees
values ('kang', '강감찬', 'abc1234', '남자', '1997/12/15', '결혼', 220, '용산', null);

select * from employees;

-- 6.2.3 컬럼 이름을 명시하는 경우
-- 컬럼의 갯수와 데이터의 타입을 반드시
-- 추가 방법 02

insert into employees(id, name, password, gender, birth, marriage, salary, address, manager)
values('yoon', '윤봉길', 'abc1234', '남자', '1990/12/25', '미혼', 230, '용산', 'yusin') ;
insert into employees(id, name, password, gender, birth, marriage, salary, address, manager)
values('kim9', '김구', 'abc1234', '남자', '1990/12/25', '결혼', 280, '강남', null) ;
insert into employees(id, name, password, gender, birth, marriage, salary, address, manager)
values('general', '김좌진', 'abc1234', '남자', '1990/12/25', '이혼', 385, '마포', 'kim9') ;
insert into employees(id, name, password, gender, birth, marriage, salary, address, manager)
values('an', '안중근', 'abc1234', '남자', '1990/12/25', '결혼', 360, '서대문', 'kim9') ;

select * from employees;

-- 6.2.4 입력이 필요 없는 컬럼을 명시하지 않는 경우
-- 굳이 명시할 필요가 없는 컬럼은 insert 구문에 작성할 필요가 없다.
-- 추가방법 03

insert into employees(id, name, password, gender, birth, marriage, address, manager)
values('nongae', '논개', 'abc1234', '여자', '1990/12/25', '미혼', '강남', 'soon') ;
insert into employees(id, name, password, gender, birth, marriage, address, manager)
values('queen', '선덕여왕', 'abc1234', '여자', '1990/12/25', '결혼', '용산', 'soon') ;
insert into employees(id, name, password, gender, birth, marriage, salary, address)
values('soon', '유관순', 'abc1234', '여자', '1990/12/25', '미혼', 240, '마포') ;

select * from employees;

-- 6.2.5 컬럼 이름을 임의로 명시하는 경우
-- 경우에 따라서는 미리 생성해 두었던 컬럼이 삭제되고, 새로운 컬럼이 추가되는 경우가 있다.
-- 추가 방법 04

insert into employees(id, salary, manager, address, name, password, gender, birth, marriage)
values('shin', 215, 'kim9', '서대문', '신사임당', 'abc1234', '여자', '1990/12/25', '미혼') ; 
insert into employees(id, salary, manager, address, name, password, gender, birth, marriage)
values('hwang', 215, 'kim9', '용산', '황진이', 'abc1234', '여자', '1990/12/25', '결혼') ; 
insert into employees(id, salary, manager, address, name, password, gender, birth, marriage)
values('myoung', 215, 'soon', '강남', '명성왕후', 'abc1234', '여자', '1990/12/25', '이혼') ; 
insert into employees(id, salary, manager, address, name, password, gender, birth, marriage)
values('maria', 215, 'soon', '서대문', '조마리아', 'abc1234', '여자', '1990/12/25', '이혼') ; 
insert into employees(id, salary, manager, address, name, password, gender, birth, marriage)
values('princess', 215, 'soon', '마포', '덕혜옹주', 'abc1234', '여자', '1990/12/25', '결혼') ;

select * from employees;

commit;

-- 6.3 연산자 살펴 보기
-- 행에 대한 수정구문을 살펴보기 전에 우선 연산자를 보자
-- 연산자들이 수정 혹은 조회등에 지속적으로 사용되기 때문에


-- 6.3.1 비교 연산자
-- 두 개의 수를 비교하는 연산자로서 관계 연산자라고 하기도 한다.
-- 이 연산자의 연산의 최종적인 결과 참(true)과 거짓(false)중에 하나
-- 특히 where 절에서 조건 검사식으로 주로 사용
-- where salary >= 100

-- 6.4 행(ROW)수정하기

-- Update 구문은 이미 저장이 되어 있는 데이터 값을 변경하고자 하는 경우에 사용하는 문장
-- 명령어                      의미
-- 내용       이미 저장되어 있는 행에 대한 데이터를 수정하기 위한 방법

-- 사용 문법    update 테이블_이름  set 컬럼1=값1, 컬럼2=값2,... where 조건식;

-- 주의사항  문자와 날짜 값은 반드시 외따옴표(' ')으로 둘러 싸야 한다.
-- where 절을 지정하지 않으면 모든 행이 수정된다.

-- 모든 회원의 급여를 100 변경

select * from employees;
update employees set salary = 100;
select * from employees;

-- 모든 회원들의 생일을 오늘 날짜로 변경하기 sysdate
update employees set birth = sysdate;
select * from employees;


-- 모든 회원들의 비번을 'qwert'으로 변경하기
update employees set password = 'qwert';
select * from employees;

-- 모든 회원드릐 비번일 'abc1234' 급여를 500으로 변경하기

update employees set password = 'abc1234', salary = 500;

select * from employees;

-- 안중근의 급여를 400으로 변경하기
update employees 
set salary = 400
where name = '안중근';

select * from employees;

desc employees;

update employees 
set salary = 600
where id = 'an';

select * from employees;

update employees 
set marriage = '이혼'
where id = 'yoon';

select * from employees;

-- rollback은 모든 DMl 구문들(insert, update, delete 구문들)의 작업 내역을
-- 원상태로 간다.

select * from employees;

rollback;

select * from employees;

-- 모든 회원들의 급여를 10% 인상 하기
update employees set salary = salary * 1.1;

select * from employees;

-- '김좌진'의 급여를 100뺄셈 하기
update employees set salary = salary - 100 where name = '김좌진';

select * from employees where name = '김좌진';


-- '황진이'의 급여에 50을 더하고, 주소를 '마포'로 변경

update employees set salary = salary  +50, address = '마포' where name= '황진이';

-- '최영' --> '최부식' 개명하고, '서대문'으로 이사감

-- 관리자가 '김구'의 회뭔들의 급여를 600으로변경

update employees set name = '최부식', address = '서대문' where name= '최영';

select * from employees where name= '최부식';

update employees set salary = 400 where salary <= 300;

select * from employees;

update employees set salary = 700
where manager = 'yusin' and salary >= 500;

update employees set salary = 450
where name = '김구' or name = '황진이';

update employees set salary = 500
where name = '이순신' or id = 'choi';

select * from employees;

update employees set salary = 700
where manager = 'yusin' and salary >= 500;

select * from employees;

-- 6.4.1 in 연산자
-- 아이디가 'kim9' 이거나 'hwang'이러나 'shin'인 항목을 찾는 구문
-- where id = 'kim9' or id = 'hwang' or id = 'shin'
-- where id in ('kim9', 'hwnag', 'shin')

-- '김구', '황진이' 급여를 1000으로 변경하기
update employees set salary = 1000
where name = '김구' or name = '황진이';

select * from employees;

update employees set salary = 1500
where name in('김구', '황진이');

select * from employees;

-- in 키워드에 부정어  not in 구문 사용하기
-- '미혼', '이혼'이 아닌 회원들의 급여를 777로 변경
update employees set salary = 777
where marriage not in('미혼', '이혼');

select * from employees;

-- 6.5 행(row) 삭제하기

-- delete from 테이블_이름 where 조건식;
delete from employees;

select * from employees;

-- 다시 복원하기
rollback;

select * from employees;

-- '안중근' 회원에 대한 정보 삭제
delete from employees where name = '안중근';

select * from employees;

-- 관리자가 '김유신', '유관순'인 회원 삭제하기
delete from employees where manager in ('yusin', 'soon');

select * from employees;

-- 다시 복원
rollback;
select * from employees;

-- 주소가 '서대문'과 '강남'을 제외한 다른 지역에 거주하는 회원 삭제
delete from employees where address not in ('서대문','강남');

select * from employees;

-- 의사 컬럼 rownum
select rownum, id, name, salary from employees;


-- chapter 07
-- 데이터 질의어(DQL)
-- 데이터 베이스에서 필요한 데이터 정보를 추출하기 위해서는 select 구문을 사용
-- 모든 데이터를 추출하거나, where절을 사용하여 특정 행만 제한시켜서 확인할 수 있다.
-- not 키워드를 사용하여 특정 조건을 만족하지 않는 데이터를 출력 할 수 있다.
-- SQL에서 가장 빈번하게 자주 사용되는 명령어는 바로 select 구문
-- 이 구문을 사용하는 이유는 질의(query)를 수행하기 위해서 
-- 질의(query)는 데이터 베이스에게 어떠한 데이터를 요청하거나, 특정한 데이터에 대한 
-- 조작을 요청하는 행위를 말한다.

-- 7.1 select 구문의 기본 구조
-- 7.1.1 SQL 구문 작성 지침
-- SQL 구문을 작성함에 있어서 특별히 정해진 규칙은 없습니다. 하지만 다음과 같이 일반적인
-- 작성을 위한 가이드 라인은 존재 한다.
-- SQL 구문 작성 지침
-- 키워드 예약어 등에 대한 대소문자 구분이 없다.
-- 여러 라인에 걸쳐서 작성 가능하다.
-- 키워드는 줄여서 쓰거나 나뉘어 사용하면 안된다.
-- 절(clause)과 절(clause)은 나뉘어 사용해야 합니다.
-- 세미콜론(;)을 사용하여 문장의 끝을 표시하도록 한다.

-- 7.1.2 select 구문의 기본 문형 
-- 여섯 개의 절(clause)로 구성이 되어 있다
-- select 절과 from 절은 필수 사항이다.
-- select 구문을 사용한다고 해서, 데이터 베이스내에 들어 있는 원본 영향은 없다.

--  기본 문형                                   항목 설명
-- select *|{[distinct] column        조회하고자 하는 목록을 열거합니다.
--        리스트|표현식, [alias],}      *,컬럼,별칭,파생 컬럼등을 명시합니다.

-- from 테이블1[,테이블2,...]           사용될 테이블 이름을 명시합니다.

-- [where condition ]                 조건절을 명시합니다.
--                                    연산자에 대한 이해가 필요합니다.

-- [group by column]               데이터를 그룹핑하여 좀더 작은 그룹으로 나눌때 사용
--                                 엑셀의 부분 합/평균 등의 기능과 동일한 개념입니다.

-- [having column]                그룹핑에 대한 조건절을 명시하고자 할 때 사용합니다.

-- [order by column];             정렬 방식을 지정합니다. 

-- 7.2 기본 select 구문
-- 컬럼의 이름 대신 *(asterisk)를 사용하면 all columns를 의미
select * from employees;

select id, name, salary from employees;

select name, salary, id from employees;

select gender from employees;

select distinct gender from employees;

select name, salary, salary + 100 from employees;























'오늘의학습' 카테고리의 다른 글

2023.06.21  (0) 2023.06.21
2023.06.20  (0) 2023.06.20
2023.06.19(학습)  (0) 2023.06.19