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 |