본문 바로가기
수업노트

23.2.22(수)

by MIniLabo 2023. 2. 22.

o SQL문: 데이터베이스에서 사용하는 언어

 - 결과중심적 언어(자바와 달리 절차문이 아님)

 - 문자열 데이터는 '로 감싼다

 - 주석표시 --

 

o 오라클에서 varchar는 varchar2

 

o SQL 문법

create table sungjuk (
  uname varchar(20)
  , kor int 
  , eng int
  , mat int
  , aver int
); --테이블 생성, 문자열(자료형 varchar) uname,
 숫자열 kor(자료형 int) 등등

drop table sungjuk; --테이블 삭제

 


● [sungjuk 테이블 CRUD 작업]

1. 행추가

insert into sungjuk (uname,kor,eng,mat)
values('무궁화', 80, 85, 100) ; --테이블에 1행 데이터 추가

insert into sungjuk (uname,kor,eng,mat)
values('홍길동',90,100,50) ;--테이블에 1행 데이터 추가


2. 조회 및 검색
select uname,kor,eng,mat,aver
from sungjuk;--테이블의 데이터 조회

3. 행수정
update sungjuk
set aver = (kor + eng + mat) / 3;

4. 행삭제
delete from sungjuk;

 


[샘플 데이터 행추가]
insert into sungjuk(uname, kor, eng, mat) values ('홍길동', 70, 85, 100);
insert into sungjuk(uname, kor, eng, mat) values ('무궁화',30,30,40);
insert into sungjuk(uname, kor, eng, mat) values ('진달래',90,90,20);
insert into sungjuk(uname, kor, eng, mat) values ('개나리',100,60,30);
insert into sungjuk(uname, kor, eng, mat) values ('라일락',30,80,40);
insert into sungjuk(uname, kor, eng, mat) values ('봉선화',80,80,20);
insert into sungjuk(uname, kor, eng, mat) values ('대한민국',10,65,35);
insert into sungjuk(uname, kor, eng, mat) values ('해바라기',30,80,40);
insert into sungjuk(uname, kor, eng, mat) values ('나팔꽃',30,80,20);
insert into sungjuk(uname, kor, eng, mat) values ('대한민국',100,100,100);

 

 


[전체 레코드 조회]
select uname, kor, eng, mat, tot, aver
from sungjuk; --인서트는 빈자리에 랜덤으로 들어가므로 정렬해서 확인해야(순서신경X)

[전체 행 개수 조회] --count() 함수 사용
select count(*) from sungjuk;--댓글 개수 띄우기 등에 활용


[select 조회 및 검색]
select kor, eng, mat from sungjuk;
select tot, aver from sungjuk;
select * from sungjuk; --모든 column 조회



[as] --칼럼명을 임시로 바꿀 때 쓰는 명령어, 실제로 변경X
select kor as korea, eng as english, mat as math 
from sungjuk;

--as생략가능
select kor korea, eng english, mat math 
from sungjuk;

--임시 한글 칼럼명은 일시적으로 분석해야 하는 경우만 추천!!
select uname as 이름, kor as 국어, eng as 영어, mat as 수학, tot as 총점, aver 평균 
from sungjuk;

--칼럼의 순서는 의미가 없다. 호출순서와 실제 칼럼 순서는 같지 않음.
select uname, kor, eng, mat from sungjuk;
select kor, eng, mat from sungjuk;


[count 함수] - 행 갯수 조회(해당 칼럼에 몇 개의 데이터가 있는가?)
select count(uname) from sungjuk; --10
select count(kor) from sungjuk; --10
select count(eng) from sungjuk; --10
select count(mat) from sungjuk; --10

--null값은 카운트되지 않음
select count(tot) from sungjuk; --0
select count(aver) from sungjuk; --0

 


--실제 존재하는 테이블: 물리적 테이블
--사용자가 select를 통해 호출한 테이블은 논리적 테이블 > 아래에서는 논리적 테이블에 as를 사용하여 임시 칼럼명 붙임
select count(eng) as cnt_eng from sungjuk; --10
select count(mat) as 수학개수 from sungjuk; --임시칼럼명으로 한글 가능

--sungjuk 테이블의 전체 행의 개수 체크(null행도 고려)
select count(*) from sungjuk; --null값과 무관하게 전체 행 개수 확인
select count(*) as 전체행개수 from sungjuk;
select count(*) 전체행개수 from sungjuk;

 

 

  o 커밋과 롤백
   ※ SQL Developer툴에서 자동커밋 설정해 놓을 수 있다
   도구->환경설정->데이터베이스->객체뷰어->자동커밋설정 
   
   
[명령어 완료와 취소]
- insert, update, delete 명령어를 사용하는 경우, 명령어 취소와 명령어 완료를 선택할 수 있다
- commit    : 명령어 완료
- rollback  : 명령어 취소 -- commit하면 롤백 안됨


[전체 행 삭제]
delete from sungjuk;

--commit하지 않은 상태에서 롤백하면 지우기 전의 데이터 조회 가능


[전체 행 조회]
select * from sungjuk;

 

o   [where 조건절]
   -조건을 만족하는 행들에 대해서
   -조건에 만족하는 레코드만 대상으로 조회(select), 수정(update), 삭제(delete)하기 위해서
   
   select * from sungjuk;
   commit;
   
--문1) 국어점수가 50점이상인 행을 조회하시오
    select uname, kor   
    from sungjuk 
    where kor >= 50;
    
--문2) 영어 점수가 50점 미만인 행을 조회하시오
    select uname, eng
    from sungjuk
    where eng < 50;
     
--문3) 이름이 '대한민국' 행을 조회(출력)하시오
    select uname, kor, eng, mat
    from sungjuk
    where uname = '대한민국';
  
--문4) 이름이 '대한민국' 아닌 행을 조회하시오
   select uname, kor, eng, mat
   from sungjuk
   where uname != '대한민국'; --좌우가 서로 같지 않다
   
   select uname, kor, eng, mat
   from sungjuk
   where uname <> '대한민국'; --좌우가 서로 같지 않다
   
   
--문5) 국어, 영어, 수학 세과목의 점수가 모두 90이상 행을 조회하시오
   select uname, kor, eng, mat
   from sungjuk
   where kor >= 90 and eng >= 90 and mat >= 90;
   
--문6) 국어, 영어, 수학 중에서 한과목이라도 40미만 행을 조회하시오
    select uname, kor, eng, mat
    from sungjuk
    where kor < 40 or eng < 40 or mat < 40;

--문7) 국어점수가 80 ~ 89점 사이 행을 조회하시오
    select uname, kor, eng, mat
    from sungjuk
    where kor >= 80 and kor <= 89 ;

--문8) 이름이 '무궁화', '봉선화'를 조회하시오
 select uname, kor, eng, mat
    from sungjuk
    where uname = '무궁화' or uname = '봉선화';
  
   -- 문9) 국, 영, 수 모두 100점 아닌 행을 조회하시오
   select uname, kor, eng, mat
    from sungjuk
    where kor != 100 and eng != 100 and mat != 100;
   

  /////////////////////////////////////////////////////////////////////////////////////////////////////
   [alter문] - 테이블의 구조 수정 및 변경
   
1. 컬럼 추가
    형식) alter table table명 add (컬럼명 데이터타입);
    
    --music 칼럼 추가
    alter table sungjuk add(music int null);
    select * from sungjuk;

2. 컬럼명 수정
   형식) alter table table명 rename column 원래컬럼명 to 바꿀컬럼명;
   --국어칼럼 kor를 korea칼럼명으로 수정
   alter table sungjuk rename column kor to korea;--임시변경인 as와 구분
   select * from sungjuk;
   
3. 컬럼 데이터 타입 수정   
  형식) alter table table명 modify(컬럼명 데이터타입);
  --music 칼럼의 자료형을 varchar로 수정
  alter table sungjuk modify(music varchar(5));
  select * from sungjuk;
  
  
4. 컬럼 삭제
   형식)alter table table명 drop(컬럼명);
   alter table sungjuk drop(music);
   select * from sungjuk;
   

'수업노트' 카테고리의 다른 글

23.2.27 (월)  (0) 2023.02.27
23.2.23 (목)  (0) 2023.02.23
카카오 우편번호, 맵  (1) 2023.02.21
23.2.21(화)  (0) 2023.02.21
23.2.20(월)  (0) 2023.02.20