일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- cs지식
- 스터디
- 자바수업
- 2739자바
- 코로나백신
- 백준2739
- 화이자미열
- 포장방스터디
- 자바공부
- 컴퓨터공부
- 화이자백신후기
- 백준구구단
- 백준10171
- 자바
- 화이자접종후기
- 자바컴포넌트
- GUI
- 자바토글버튼
- 자바이벤트
- 백준10718자바
- 화이자1일차
- 1일1로그
- 자바컨테이너
- 자바조건문
- 백준 #백준알고리즘 #백준 Hello World #Hello World
- 백준고양이
- 자바화면구현
- java
- 백준고양이자바
- 백준자바 #백준10718
- Today
- Total
Salted Caramel
[수업 21일차] 21.09.02 SQL DataBase -1 본문
데이터베이스 sql 실행 : ctrl + enter
-- sql developer 에서의 한 줄 주석문
/*
sql developer 에서의 여러 줄 주석문
*/
관계형 데이터베이스 구성 요소
1. 테이블 : - 관계형 데이터베이스는 기본적으로 데이터를 2차원 표 형태로 저장하고 관리를 함.
- 이러한 표 형태의 데이터 저장 공간을 테이블(table)이라고 함.
- 테이블은 2차원 형태이므로 가로줄과 세로줄로 구성.
* 가로줄 : 행(row)
* 세로줄 : 열(column)
2. 행 : - 행은 저장하려는 하나의 개체를 구성하는 값.
- 학생 한 사람에 대한 정보를 저장한 것.
3. 열 : - 저장하는 데이터를 대표하는 이름과 공통특성을 정의함.
- 열은 저장정보의 종류(자료형)와 자료의 저장 가능한 최대 크기, 중복 여부 설정.
오라클에서 열의 속성에 들어가는 주요 자료형(data type)
1. number(n, n1) : n - 전체 자릿수 / n1 - 소숫점 자릿수 / n - n1 - 정수 자릿수
예) number(7,2) : 전체 자릿수는 7자리이고, 정수 자릿수는 5자리, 실수 자릿수는 2자리
※ +_ 38자릿수까지 숫자를 저장할 수 있음.
2. char(n) : 문자열이 n개가 저장되는 자료형. ==> 고정 자료형.
3. varchar(n) : 문자열이 n개가 저장되는 자료형. ==> 현재는 사용되지 않는 자료형.
4. varchar2(n) : 문자열이 n개가 저장되는 자료형. ==> 가변 자료형. (4000byte) (가장 많이 사용)
※ 한글은 무조건 한 글자당 2바이트씩 사용.
5. date : 날짜가 저장되는 자료형. ==> 시스템의 현재 날짜 및 시간이 저장.
중요한 개념
- 무결성(Integrity) : 데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의
실제 값이 일치하는 정확성을 의미.
무결성 제약조건 : 데이터베이스에 저장된 데이터의 정확성을 보장하기 위해서 정확하지
않는 데이터가 데이터베이스 내에 저장되는 것을 방지하기 위한 조건.
- 데이터베이스 상에서 제약 조건의 종류
1. unique 제약 조건 : 중복이 되면 안 되는 제약 조건. 유일한 값을 가지는 제약 조건.
단, null은 값의 중복에서 제외가 됨.
2. not null 제약 조건 : 지정된 열에 null을 허용하지 않는 제약 조건.
공백을 허용하지 않는 제약 조건.
3. check 제약 조건 : 특정한 값이 아닌 데이터가 들어오지 못하게 하는 제약 조건.
설정에 해당하는 값만 허용하는 제약 조건.
4. primary key 제약 조건 : unique + not null 제약 조건 ==> 기본키 제약 조건.
기본키는 해당 테이블을 대표하는 컬럼으로서의 역할을 수행하며, 다른 테이블에서
외래키들이 참조할 수 있는 키로서의 자격을 가진다. 이를 참조 무결성이라고 함.
-- student 테이블에 컬럼을 추가하는 방법
-- 형식) alter table 테이블이름 add(컬럼명, 데이터타입(크기), 제약조건);
-- student 테이블에서 누락된 주소 컬럼을 추가해 보자.
alter table student add(address varchar2(200));
-- 테이블의 컬럼을 수정하는 방법(자료형 수정)
-- 형식) alter table 테이블이름 modify(컬럼명 데이터타입(크기));
alter table student modify(age varchar2(3));
-- 테이블의 컬럼명을 수정하는 방법
-- 형식) alter table 테이블이름 rename clolumn 기존컬럼명 to 세로운 컬럼명;
alter table student rename column address to addr;
-- 테이블의 컬럼을 삭제하는 방법
-- 형식) alter table 테이블이름 drop column 컬럼명;
alter table student drop column age;
alter table student add(age number(3));
-- student 테이블에 데이터를 추가해 보자.
-- 형식1) insert into 테이블이름 values('학번데이터', '이름데이터', '학과데이터',
-- 학년데이터, '연락처데이터', 등록일데이터(sysdate), '주소데이터',
-- 나이데이터);
-- student 테이블에 컬럼을 추가하는 방법
-- 형식) alter table 테이블이름 add(컬럼명, 데이터타입(크기), 제약조건);
-- student 테이블에서 누락된 주소 컬럼을 추가해 보자.
alter table student add(address varchar2(200));
-- 테이블의 컬럼을 수정하는 방법(자료형 수정)
-- 형식) alter table 테이블이름 modify(컬럼명 데이터타입(크기));
alter table student modify(age varchar2(3));
-- 테이블의 컬럼명을 수정하는 방법
-- 형식) alter table 테이블이름 rename clolumn 기존컬럼명 to 세로운 컬럼명;
alter table student rename column address to addr;
-- 테이블의 컬럼을 삭제하는 방법
-- 형식) alter table 테이블이름 drop column 컬럼명;
alter table student drop column age;
alter table student add(age number(3));
-- student 테이블에 데이터를 추가해 보자.
-- 형식1) insert into 테이블이름 values('학번데이터', '이름데이터', '학과데이터',
-- 학년데이터, '연락처데이터', 등록일데이터(sysdate), '주소데이터',
-- 나이데이터);
--형식1)
insert into student
values('2021_001', '홍길동', '경제학과', 3, '010-1111-1234', sysdate,
'서울시 마포구', 27);
-- 형식2) insert into 테이블이름(학번컬럼명, 이름컬럼명, 학과컬럼명, 연락처컬럼명, 등록일컬럼명)
-- values('학번데이터', '이름데이터', '학과데이터', '연락처데이터', 등록일데이터);
insert into student(hakbun, name, major, phone, regdate)
values('2021_002', '이순신', '해양학과', '010-2222-2345', sysdate);
-- 데이터베이스에 완벽하게 적용시키고자 할 때 사용하는 키워드.
commit;
-- student 테이블의 특정 컬럼을 수정하는 방법
-- 형식) update 테이블이름 set 컬럼이름 = 컬럼수정내용,...... where primary key로 설정된 컬럼명 = 컬럼 데이터;
update student set year = 4, addr = '전라남도 신안군', age = 33 where hakbun = '2021_002';
-- student 테이블의 특정 데이터(레코드)를 삭제하는 방법
-- 형식) delete from 테이블이름 where primary key로 설정된 컬럼명 = 컬럼데이터;
delete from student where hakbun = '2021_004';
-- student 테이블에 있는 모든 데이터를 삭제하는 방법
delete from student;
commit;
-- 데이터베이스에 적용시키고 싶지 않은 경우 사용하는 키워드.
rollback;
-- 현재 계정(web)에 있는 모든 테이블을 보여주세요.
select *
from tab;
-- student 테이블의 모든 컬럼을 화면에 보여주세요.
select *
from student;
-- null 값을 가지는 컬럼을 다른 컬럼과 연산을 진행하게 되면 모두 null 값으로 처리.
-- nvl() 함수 : null 값을 특정한 값으로 변경시켜 주는 함수.
-- 모든 데이터 타입에 적용이 가능함.
-- nvl() 함수를 이용할 때에는 전환되는 값의 자료형을 일치시켜야 함.
-- 형식) nvl(null 값이 들어 있는 컬럼명, 변경할 값)
select empno, ename, sal, comm, sal + nvl(comm, 0)
from emp;
-- nvl2() 함수 : 자바에서의 3항 연산자와 비슷한 함수.
-- 형식) nvl2(컬럼명, expr1, expr2)
-- ==> 컬럼명의 값이 null이 아닌 경우 expr1 값을 반환을 받고,
-- ==> 컬럼명의 값이 null인 경우 expr2 값을 반환을 받는 함수.
select empno, ename, sal, comm, sal + nvl2(comm, comm, 0)
from emp;
-- as : 컬럼 제목에 이름을 변경하는 키워드 ==> 별칭(별명)
-- 사용 시 컬럼명 바로 뒤에 사용함. 컬럼명과 별칭 사이에 as 라는
-- 키워드를 넣어주면 됨.
-- distinct : 중복을 제거해 주는 키워드.
-- 주로 하나의 컬럼에서 중복된 값을 제거하고 보여줄 때 사용함.
-- distinct 키워드는 항상 select 키워드 다음에 기술한다.
-- distinct 키워드 뒤에 나오는 컬럼들은 모두 distinct 의 영향을 받는다.
-- distinct 뒤에 여러 개의 컬럼들이 기술이 되면 해당 컬럼들은 중복이
-- 되지 않게 나타난다.
-- literal 문자열
-- 컬럼명이나 별칭이 아닌 select 목록에 포함되는 문자, 표현식 숫자를 의미.
-- 날짜나 문자열인 경우 단일 인용 부호('')를 사용해야 한다.
-- 예)"KING 사원의 연봉은 60000 입니다."
select ename || ' 사원의 연봉은 ' || sal * 12 || ' 입니다.' as "사원의 연봉"
from emp;
-- member10 테이블의 리터럴 작업을 진행해 보자.
-- ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
/* where 조건절
모든 데이터를 조회하는 것이 아니라 사용자가 원하는 데이터만 조회할 경우에 사용.
where 절은 from 테이블이름 뒤에 기술되어야 한다.
형식) select 컬럼명1, 컬럼명2,.... 컬럼명n from 테이블이름 where 조건식;
where 조건절은 자료를 검색할 때 사용되는 키워드.
1) = : 조건이 같은가?
2) < : 조건이 작은가?
3) <= : 조건이 작거나 같은가?
4) > : 조건이 큰가?
5) >= : 조건이 크거나 같은가?
6) != : 조건이 같지 않은가?
7) <> : 조건이 같지 않은가? ==> != 과 같은 의미.
8) between A and B : A와 B 사이에 있는가?
주의) 작은 값을 앞에 기술하고 큰 값을 뒤에 기술해야 함.
9) in(list) : list 값 중에 어느 하나와 일치하는가?
10) not between A and B : A와 B 사이에 있지 않는가?
11) not in(list) : list 값과 일치하지 않는가?
*/
-- emp 테이블에서 담당업무가 'MANAGER'인 사원의
-- 모든 정보를 화면에 보여주세요.
select *
from emp
where job = 'MANAGER';
-- emp 테이블에서 담당업무가 'SALESMAN' 인 사원의
-- 모든 정보를 화면에 보여주세요.
select *
from emp
where job = 'SALESMAN';
-- emp 테이블에서 부서번호가 30번 부서에 해당하는
-- 사원들의 전체 정보를 화면에 보여주세요.
select *
from emp
where deptno = 30;
--sql developer 에서의 주석문
/*
sql developer 에서의 여러줄 주석문
*/
/*
오라클에서 열의 속성에 들어가는 주요 자료형(data type)
1.number(n,n1) :n -전체 자릿수/n1 - 소숫점 자릿수./ n-n2 - 정수 자릿수 (가장많이 사용)
※ + - 38 자리수까지 저장 할 수 있음.
예) number(7,2): 전체자릿수는 7자리이고, 정수 자릿수는 5자리, 실수 자릿수는 2자리
2. char(n) : 문자열이 n개가 저장되는 자료형. ==> 고정 자료형.
3. varchar(n) : 문자열이 n개가 저장되는 자료형. ==> 현재는 사용되지 않는 자료형.
4. varchar2(n) : 문자열이 n개가 저장되는 자료형. ==> 가변 자료형.(가장많이 사용)
※ 한글은 무조건 한 글자당 2바이트씩 사용.
5. date : 날짜가 저장되는 자료형. ==> 시스템의 현재 날씨 및 시간이 저장.
중요한 개념
- 무결성(Integrity) : 데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의
실제 값이 일치하는 정확성을 의미함. (결점이 없는 성질)
무결성 제약 조건 : 데이터베이스에 저장된 데이터의 정확성을 보장하기 위해서 정확하지 않는
데이터가 데이터베이스 내에 저장되는 것을 방지하기 위한 조건.
- 데이터베이스 상에서 제약 조건의 종류
1. unique 제약 조건 : 중복이 되면 안되는 제약 조건. 유일한 값을 가지는 제약 조건.
단, null은 값의 중복에서 제외가 됨.
2. not null 제약 조건 : 지정된 열에 null을 허용하지 않는 제약 조건.
공백을 허용하지 않는 제약 조건 (//회원가입상 필수 입력사항)
3. check 제약 조건 : 특정한 값이 아닌 데이터가 들어오지 못하게 하는 제약 조건.
설정에 해당하는 값만 허용하는 제약 조건.
4. primary key 제약 조건 : unique + not null 제약 조건 (//중복과 공백이 안되는)
==> 기본키 제약 조건
기본키는 해당 테이블을 대표하는 컬럼으로서의 역할을 수행하며, 다른 테이블에서
외래키들이 참조할 수 있는 키로서의 자격을 가진다. 이를 참조 무결성이라고 함.
(예. 주민번호(//대표컬럼키, 기본키))
*/
/* 학생 테이블을 만들어 보자.
구성 요소(컬럼 - 속성) : 학번(//기본키), 이름 , 학과, 학년, 나이, 연락처, 주소, 입학일(등록일) 등등
create table 테이블이름(
학번 자료형(크기) {제약조건},
이름 자료형(크기) {제약조건},
학과 자료형(크기) {제약조건},
학년 자료형(크기) {제약조건},
나이 자료형(크기) {제약조건},
연락처 자료형(크기) {제약조건},
주소 자료형(크기) {제약조건},
입학일(등록일) 자료형(크기) {제약조건}
);
*/
-- student 테이블 생성.
create table student(
hakbun varchar2(15) primary key,
name varchar2(20) not null,
major varchar2(30) not null,
year number(1),
age number(3),
phone varchar2(20) not null,
regdate date not null
);
-- student 테이블에 컬럼을 추가하는 방법
-- 형식) alter table 테이블이름 add(컬럼명, 데이터타입(크기), 제약조건);
-- student 테이블에서 누락된 주소 컬럼을 추가해 보자.
alter table student add(address varchar2(200));
-- 테이블의 컬럼을 수정하는 방법(자료형 수정)
-- 형식) alter table 테이블이름 modify(컬럼명 데이터타입(크기));
alter table student modify(age varchar2(3));
-- 테이블의 컬럼명을 수정하는 방법
-- 형식) alter table 테이블이름 rename clolumn 기존컬럼명 to 세로운 컬럼명;
alter table student rename column address to addr;
-- 테이블의 컬럼을 삭제하는 방법
-- 형식) alter table 테이블이름 drop column 컬럼명;
alter table student drop column age;
alter table student add(age number(3));
-- student 테이블에 데이터를 추가해 보자.
-- 형식1) insert into 테이블이름 values('학번데이터', '이름데이터', '학과데이터',
-- 학년데이터, '연락처데이터', 등록일데이터(sysdate), '주소데이터',
-- 나이데이터);
insert into student
values('2021_001', '홍길동', '경제학과', 3, '010-1111-1234', sysdate,
'서울시 마포구', 27);
-- 형식2) insert into 테이블이름(학번컬럼명, 이름컬럼명, 학과컬럼명, 연락처컬럼명, 등록일컬럼명)
-- values('학번데이터', '이름데이터', '학과데이터', '연락처데이터', 등록일데이터);
insert into student(hakbun, name, major, phone, regdate)
values('2021_002', '이순신', '해양학과', '010-2222-2345', sysdate);
insert into student
values('2021_003', '유관순', '회계학과', 1, '010-3333-3456', sysdate,
'충청남도 천안시', 19);
insert into student(hakbun, name, major, phone, regdate)
values('2021_004', '김유신', '체육학과', '010-4444-4567', sysdate);
insert into student(hakbun, name, major, phone, regdate)
values('2021_005', '김연아', '체육학과', '010-5555-5678', sysdate);
-- 데이터베이스에 완벽하게 적용시키고자 할 때 사용하는 키워드.
commit;
-- student 테이블의 특정 컬럼을 수정하는 방법
-- 형식) update 테이블이름 set 컬럼이름 = 컬럼수정내용,...... where primary key로 설정된 컬럼명 = 컬럼 데이터;
update student set year = 4, addr = '전라남도 신안군', age = 33 where hakbun = '2021_002';
-- student 테이블의 특정 데이터(레코드)를 삭제하는 방법
-- 형식) delete from 테이블이름 where primary key로 설정된 컬럼명 = 컬럼데이터;
delete from student where hakbun = '2021_004';
-- student 테이블에 있는 모든 데이터를 삭제하는 방법
delete from student;
commit;
-- 데이터베이스에 적용시키고 싶지 않은 경우 사용하는 키워드.
rollback;
-- 현재 계정(web)에 있는 모든 테이블을 보여주세요.
select * from tab;
-- student 테이블의 모든 컬럼을 화면에 보여주세요.
select * from student;
-- [문제] emp 테이블의 모든 데이터를 화면에 보여주세요.
select * from emp;
-- emp 테이블에서 empno, ename, job, deptno 컬럼을 화면에 보여주세요.
-- 형식) select 컬럼명1, 컬럼명2,...... from 테이블이름;
select empno, ename, job, deptno from emp;
-- [문제1] emp 테이블에서 이름, 입사일, 급여를 화면에 보여주세요.
select ename, hiredate, sal from emp;
-- [문제2] emp 테이블에서 사번, 이름, 담당업무, 보너스를 화면에 보여주세요.
select empno, ename, job, comm from emp;
-- emp 테이블에서 사번, 이름, 급여, 보너스, 급여+보너스를 화면에 보여주세요.
select empno, ename, sal, comm, sal+comm
from emp;
-- null 값을 가지는 컬럼을 다른 컬럼과 연산을 진행하게 되면 모두 null 값으로 처리.
-- nvl() 함수 : null 값을 특정한 값으로 변경시켜 주는 함수.
-- 모든 데이터 타입에 적용이 가능함.
-- nvl() 함수를 이용할 때에는 전환되는 값의 자료형을 일치시켜야 함.
-- 형식) nvl(null 값이 들어 있는 컬럼명, 변경할 값)
select empno, ename, sal, comm, sal + nvl(comm, 0)
from emp;
-- nvl2() 함수 : 자바에서의 3항 연산자와 비슷한 함수.
-- 형식) nvl2(컬럼명, expr1, expr2)
-- ==> 컬럼명의 값이 null이 아닌 경우 expr1 값을 반환을 받고,
-- ==> 컬럼명의 값이 null인 경우 expr2 값을 반환을 받는 함수.
select empno, ename, sal, comm, sal + nvl2(comm, comm, 0)
from emp;
-- as : 컬럼 제목에 이름을 변경하는 키워드 ==> 별칭(별명)
-- 사용 시 컬럼명 바로 뒤에 사용함. 컬럼명과 별칭 사이에 as 라는
-- 키워드를 넣어주면 됨.
select empno, ename, sal, comm, sal + nvl2(comm, comm, 0) "급여+보너스"
from emp;
-- [문제1] emp 테이블에서 사번, 사원명, 급여, 급여의 10% 인상액을
-- 화면에 보여주세요.
select empno, ename, sal, sal * 1.1 as "10% 인상 급여"
from emp;
-- [문제2] emp 테이블에서 각 사원의 담당업무를 화면에 보여주세요.
select job
from emp;
-- [문제3] emp 테이블에서 각 사원의 관리자를 화면에 보여주세요.
select mgr
from emp;
-- distinct : 중복을 제거해 주는 키워드.
-- 주로 하나의 컬럼에서 중복된 값을 제거하고 보여줄 때 사용함.
-- distinct 키워드는 항상 select 키워드 다음에 기술한다.
-- distinct 키워드 뒤에 나오는 컬럼들은 모두 distinct 의 영향을 받는다.
-- distinct 뒤에 여러 개의 컬럼들이 기술이 되면 해당 컬럼들은 중복이
-- 되지 않게 나타난다.
select distinct job
from emp;
select distinct mgr
from emp;
-- [문제] emp 테이블에서 담당업무와 부서번호의 중복을 제거한 후
-- 화면에 보여주세요.
select distinct job, deptno
from emp;
-- member10 테이블을 만들어 보자.
create table member10(
num number(7) primary key, -- 회원 번호
memid varchar2(20) not null, -- 회원 아이디
memname varchar2(20) not null, -- 회원 이름
pwd varchar2(20) not null, -- 회원 비밀번호
age number(3), -- 회원 나이
mileage number(8) not null, -- 회원 마일리지
job varchar2(30), -- 회원 직업
addr varchar2(200), -- 회원 주소
regdate date not null -- 회원 가입일
);
-- member10 테이블에 고객의 정보를 저장해 보자.
insert into member10
values(1, 'id1', '홍길동', '1111', 25, 0, '학생',
'부산시 동래구', '2013-08-08');
insert into member10
values(2, 'id2', '김길동', '2222', 30, 1500, '직장인',
'서울시 강남구', '2013-09-05');
insert into member10
values(3, 'id3', '공성현', '3333', 33, 10000, '직장인',
'부산시 중구', '2013-09-09');
insert into member10
values(4, 'id4', '김영희', '4444', 18, 3000, '학생',
'경상남도 마산시', '2012-01-01');
insert into member10
values(5, 'id5', '박말자', '5555', 45, 5000, '주부',
'경기도 남양주시', '2013-05-05');
insert into member10
values(6, 'id6', '김철수', '6666', 55, 0, '교수',
'제주도 서귀포시', '2013-01-01');
insert into member10
values(7, 'id7', '홍길동', '7777', 14, 6000, '학생',
'경상북도 경주시', '2012-12-25');
insert into member10
values(8, 'id8', '김상현', '8888', 31, 0, '무직',
'서울시 마포구', '2013-04-18');
insert into member10
values(9, 'id9', '이지연', '9999', 25, 0, '학생',
'강원도 강릉시', '2013-02-06');
insert into member10
values(10, 'id10', '홍길동', '0101', 52, 10000, '주부',
'서울시 강북구', '2013-09-15');
-- category 테이블을 만들어 보자.
create table category(
cnum number(5) default '1' not null,
category_code varchar2(8) not null,
category_name varchar2(30) not null,
delete_chk char(1) default 'N' not null,
primary key(cnum)
);
-- 카테고리 테이블에 데이터를 저장해 보자.
insert into category values(1, '00010000', '전자제품', 'N');
insert into category values(2, '00010001', 'TV', 'N');
insert into category values(3, '00010002', '컴퓨터', 'N');
insert into category values(4, '00010003', 'MP3', 'N');
insert into category values(5, '00010004', '에어컨', 'N');
insert into category values(6, '00020000', '의류', 'N');
insert into category values(7, '00020001', '남방', 'N');
insert into category values(8, '00020002', '속옷', 'N');
insert into category values(9, '00020003', '바지', 'N');
insert into category values(10, '00030000', '도서', 'N');
insert into category values(11, '00030001', '컴퓨터도서', 'N');
insert into category values(12, '00030002', '소설', 'N');
-- products 테이블(상품 상세 정보 테이블)을 만들어 보자.
create table products(
pnum number(11) primary key, -- 제품 번호
category_fk varchar2(8) not null, -- 카테고리 코드
products_name varchar2(50) not null, -- 제품명
ep_code_fk varchar2(5) not null, -- 제품 코드
input_price number(10) default 0 not null, -- 입고 가격
output_price number(10) default 0 not null, -- 출고 가격
trans_cost number(5) default 0 not null, -- 배송비
mileage number(6) default 0 not null, -- 마일리지
company varchar2(30), -- 제품 제조사
status char(1) default '1' not null -- 제품 재고 현황
);
-- products 테이블에 상품의 데이터를 저장해 보자.
insert into products
values(1, '00010001', 'S 벽걸이 TV', '00001', 5000000, 8000000,
0, 100000, '삼성', '1');
insert into products
values(2, '00010001', 'D TV', '00002', 300000, 400000,
0, 50000, '대우', '1');
insert into products
values(3, '00010004', 'S 에어컨', '00001', 1000000, 1100000,
5000, 100000, '삼성', '2');
insert into products
values(4, '00010000', 'C 밥솥', '00003', 200000, 220000,
5500, 0, '쿠쿠', '1');
insert into products
values(5, '00010004', 'L 에어컨', '00003', 1200000, 1300000,
0, 0, 'LG', '1');
insert into products
values(6, '00020001', '남성 남방', '00002', 100000, 150000,
2500, 0, '', '1');
insert into products
values(7, '00020001', '여성 남방', '00002', 120000, 200000,
0, 0, '', '3');
insert into products
values(8, '00020002', '사각 팬티', '00002', 10000, 20000,
0, 0, '보디가드', '1');
insert into products
values(9, '00020003', '멜빵바지', '00002', 15000, 18000,
0, 0, '', '1');
insert into products
values(10, '00030001', '무따기 시리즈', '00001', 25000, 30000,
2000, 0, '길벗', '1');
-- [문제1] member10 테이블에서 회원의 이름과
-- 나이, 직업을 화면에 보여주세요.
select memname, age, job
from member10;
-- [문제2] products 테이블에서 제품명, 입고가, 출고가,
-- 제조사를 화면에 보여주세요.
select products_name, input_price, output_price, company
from products;
-- literal 문자열
-- 컬럼명이나 별칭이 아닌 select 목록에 포함되는 문자, 표현식 숫자를 의미.
-- 날짜나 문자열인 경우 단일 인용 부호('')를 사용해야 한다.
-- 예)"KING 사원의 연봉은 60000 입니다."
select ename || ' 사원의 연봉은 ' || sal * 12 || ' 입니다.' as "사원의 연봉"
from emp;
-- member10 테이블의 리터럴 작업을 진행해 보자.
-- 예) "홍길동 회원의 직업은 학생입니다."
select memname || ' 회원의 직업은 ' || job || ' 입니다.' as "회원의 직업"
from member10;
-- ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
/* where 조건절
모든 데이터를 조회하는 것이 아니라 사용자가 원하는 데이터만 조회할 경우에 사용.
where 절은 from 테이블이름 뒤에 기술되어야 한다.
형식) select 컬럼명1, 컬럼명2,.... 컬럼명n from 테이블이름 where 조건식;
where 조건절은 자료를 검색할 때 사용되는 키워드.
1) = : 조건이 같은가?
2) < : 조건이 작은가?
3) <= : 조건이 작거나 같은가?
4) > : 조건이 큰가?
5) >= : 조건이 크거나 같은가?
6) != : 조건이 같지 않은가?
7) <> : 조건이 같지 않은가? ==> != 과 같은 의미.
8) between A and B : A와 B 사이에 있는가?
주의) 작은 값을 앞에 기술하고 큰 값을 뒤에 기술해야 함.
9) in(list) : list 값 중에 어느 하나와 일치하는가?
10) not between A and B : A와 B 사이에 있지 않는가?
11) not in(list) : list 값과 일치하지 않는가?
*/
-- emp 테이블에서 담당업무가 'MANAGER'인 사원의
-- 모든 정보를 화면에 보여주세요.
select *
from emp
where job = 'MANAGER';
-- emp 테이블에서 담당업무가 'SALESMAN' 인 사원의
-- 모든 정보를 화면에 보여주세요.
select *
from emp
where job = 'SALESMAN';
-- emp 테이블에서 부서번호가 30번 부서에 해당하는
-- 사원들의 전체 정보를 화면에 보여주세요.
select *
from emp
where deptno = 30;
-- [문제1] emp 테이블에서 담당업무가 'CLERK' 인 사원의
-- 사번, 이름, 담당업무, 급여를 화면에 보여주세요.
select empno, ename, job, sal
from emp
where job = 'CLERK';
-- [문제2] emp 테이블에서 1982년 1월 1일 이후에 입사한
-- 사원의 사번, 이름, 담당업무, 급여, 입사일자를 화면에 보여주세요.
select empno, ename, job, sal,hiredate
from emp
where hiredate >= '82/01/01';
-- [문제3] emp 테이블에서 급여가 1300 ~ 1500 사이인 사원의
-- 이름과 담당업무, 급여, 부서번호를 화면에 보여주세요.
--select ename, job, sal, deptno
--from emp
--where sal >= 1300 and sal <=1500;
select ename ,job, sal, deptno
from emp
where sal between 1300 and 1500;
-- [문제4] emp 테이블에서 사번이 7902, 7788, 7566인 사원의
-- 사번, 이름, 담당업무를 화면에 보여주세요.
--select empno, ename, job
--from emp
--where empno = 7902 or empno = 7788 or empno = 7566;
select empno, ename, job
from emp
where empno in (7902,7788,7566);
-- [문제5] emp 테이블에서 보너스가 300이거나 500이거나 1400인
-- 사원의 모든 정보를 화면에 보여주세요.
--select *
-- from emp
-- where comm = 300 or comm = 500 or comm = 1400;
select *
from emp
where comm in ( 300, 500, 1400);
-- [문제6] member10 테이블에서 이름이 홍길동이면서 직업이 학생인
-- 회원의 모든 정보를 화면에 보여주세요.
select *
from member10
where memname = '홍길동' and job = '학생';
-- [문제7] products 테이블에서 제조사가 '삼성' 또는 '현대' 이면서
-- 입고가가 100만원 이하인 상품의 상품명과 입고가, 출고가를
-- 화면에 보여주세요.
select products_name, input_price, output_price
from products
where company in ('삼성', '현대') and input_price <= 1000000;
-- [문제8] emp 테이블에서 급여가 1100 이상이고, 담당업무가 'MANAGER'인
-- 사원의 사번, 이름, 담당업무, 급여를 화면에 보여주세요.
select empno, ename, job, sal
from emp
where sal >= 1100 and job = 'MANAGER';
select *
from emp;
select *
from member10;
commit;
'coding > [2021.08.02~2022.01.24] 수업복습' 카테고리의 다른 글
[수업 23일차] 21.09.06 SQL DataBase 3 (0) | 2021.09.07 |
---|---|
[수업 22일차] 21. 09.03 SQL Data Base 2 (0) | 2021.09.03 |
[수업 20일차] 21.09.01 GUI (화면구현4) 이벤트 예제, 로그인 화면 (0) | 2021.09.02 |
[수업 19일차] 21.08.27 GUI(화면구현3) Event (0) | 2021.08.31 |
[수업 18일차] 21.08.26 GUI(화면구현2),Event Handler(이벤트 핸들러), 이벤트 리스너, Adapter 클래스 (0) | 2021.08.26 |