Develop/Oracle SQL DATABASE

0614 Oracle SQL 3일차!

포페PostFace 2022. 6. 15. 17:32


alter

모든 alter는 자동으로 commit 된다.

[칼럼 추가]
alter table 테이블명 add(칼럼 타입(칼럼 사이즈)); 

SQL> alter table members add(hphone varchar2(13));

[칼럼 타입 수정]
alter table 테이블명 modify(칼럼 타입(칼럼 사이즈)); 

SQL> alter table members modify(hphone varchar2(20));

[칼럼 이름 수정]
alter table 테이블명 rename column 전칼럼명 to 새칼럼명;

SQL> alter table members rename column hphone to ph;

[칼럼 삭제]
alter table 테이블명 drop column 삭제할칼럼;

SQL> alter table members drop column ph;


성별 칼럼 추가
gender 남자 여자

alter table members add(gender varchar2(6) default '남자' check(gender in('남자','여자')));

alter table members add(gender varchar2(6) default '남자' check
(gender='남자' or gender='여자'));

check: 특정 값을 설정해주면 그 외의 값은 들어가지 못하게 하는 제약조건이다.
그 외의 제약조건 not null , unique, primary key 등


1,4,7번 id 여자로 변경

SQL> update members
  2  set gender='여자'
  3  where id in(1,4,7);

insert into members
values(11,'오리포',200,'60/11/04','rol@mael.com','여자');

alter table mebers add(kor number check (kor between 50 and 80)); // 50에서 80사이

insert into members
values(12,'루카시',200,'60/11/04','rol@mael.com','여자',70);

테이블명 변경

rename 옛날 테이블 to 새테이블;

테이블 카피(듀플리케이트)

members 테이블을 기반으로 members2 테이블 만들기

create table members2 as 
select * from members;


카피할 때 조건을 걸고 새로운 테이블 만들기

create table members3 as
select * from members
where id>5;

create table members4 as
select * from members
where gender='여자';

SQL Developer
SQL Plus에서 작업한 테이블을 이 창으로 불러와 작업할 수 있다.
다른곳에서 인서트했다면 해당 창에서 커밋을 해야만 로드할 수 있다.

명령어를 작성하면 컨트롤키+엔터를 쳐야 보인다.

함수(method)


그룹 함수
sum : 어떠한 칼럼의 합계를 구한다

select sum(salary) as "급여 총합계" from members;

avg : 평균을 구한다

select avg(salary) "급여 평균" from members;

min,max : 최솟값과 최댓값을 구한다

select min(salary) "급여 최소값" from members;
select max(salary) "급여 최대값" from members;

count : 갯수를 구하는 메소드(null은 세지않는다.)

select count(id) 갯수 from members;
select count(*) 갯수 from members; // 특수하게 null도 카운트된다.

distinct: 식별자
항목별로 한번씩만 나타내고 싶을때 사용한다.
중복을 제거하는 역할로 사용할 수 있다.

select distinct gender from members;


dual: 이 테이블은 함수를 임시로 실행할  때 사용하는 테이블이다.
더미라는 칼럼을 하나 가지고 있다.

select * from dual; //찾는 법
select 1+1 from dual; //사용법
select systimestamp from dual;

to_date(문자열) : 문자열=>날짜
to_char(날짜) : 날짜=>문자열

select to_char(sysdate,'yyyy_mm:dd hh:mi:ss') from dual;
select to_char(birth,'yy') from members;

멤버들의 나이 구하기
select name,to_char(sysdate,'yyyy')-to_char(birth,'yyyy')
as age from members order by id; 

생일이 6월인 레코드 조회
select name,birth as month from members
where to_char(birth,'mm')=6;

mod: 나머지 구하는 함수

select mod(13,4) from dual;

생일이 짝수월인 레코드 조회

select name,birth from members
where mod(to_char(birth,'mm'),2)=0;


Table Company에 Gender 칼럼 추가 후 값 수정하기

alter table company add (gender varchar2(6) default '남자' 
check (gender in('남자' , '여자')));
select * from company;
update company
set gender='여자'
where sabun in(1,2,5);

round : 반올림한 값을 구하는 함수
괄호 안에 숫자,소숫점자리수를 입력하면 
그 지점 다음자리부터 반올림해준다.

select round(789.24321),round(0.387),round(0.12345,3) from dual;

ceil : 올림한 값을 구하는 함수

select ceil(123.1234) from dual;

floor: 내림한 값을 구하는 함수

select floor(123.94) from dual;

평균값 반올림 조회
select round(avg(salary),2) from members;


lower,upper : 대,소문자로 전환
select lower('BanAnA'),upper('BanAnA') from dual;

임시적으로 소문자로 전환후 전체 검색
select * from members
where lower(email) like '%daum%';

length,lengthb : 자바의 length 메소드 처럼 길이를 구해준다.
length는 순수 글자의 길이
lengthb는 글자의 바이트 수를 구해준다.
(영어는 한글자당 1바이트지만 한글은 한글자당 3바이트를 차지한다.)

select length('카페 라떼'),length('cafe latte'),
lengthb('카페 라떼'),lengthb('cafe latte') from dual;

멤버 테이블에서 이름이 3글자인 레코드 조회
select * from members
where length(name)=3;
select * from members
where name like '___'; (_ 3개)

group by: 어떠한 칼럼을 같은 값끼리 묶어서 출력한다.

부서당 하나씩 출력
select distinct depart from members;

부서별로 묶어서 평균값 출력
select depart,avg(salary) from members 
group by depart;

개발부에서 각각의 값 구하기
select depart,count(depart),
round(avg(salary)),max(salary),MIN(salary)
from members 
where depart='개발부'  // where는 from 뒤에 써준다.
group by depart; 
// 만약 정렬을 하고 싶다면 group by 뒤에 써준다.

'Develop > Oracle SQL DATABASE' 카테고리의 다른 글

0616 Oracle SQL 5일차  (0) 2022.06.20
0615 Oracle SQL 4일차~  (0) 2022.06.15
0613 Oracle SQL 2일차  (0) 2022.06.15
0610 Oracle SQL DATABASE 첫 수업  (0) 2022.06.10
Oracle 첫 접속!  (0) 2022.06.10