[Linux]부트캠프 - 파일 및 폴더 생성
파일 및 폴더 생성
설치가 꽤 오랜 시간이 걸린다😓
sqlplus
입력 후 비밀번호 입력
ojdbc8.jar
파일을 라이브러리에서 추가해줘야함Java ARchive
파일을 뜻함oracle.jdbc.OracaleDriver
선택하고 확인
--1. 사원 테이블에서 커미션이 없는 사원의 이름과 월급을 구하고, 월급이 큰 순서대로 정렬하시오.
SELECT ENAME, SAL FROM EMP WHERE COMM IS NULL ORDER BY SAL DESC;
--2. 사원 테이블에서 위에 매니저가 존재하지 않는 사원의 이름과 부서번호를 출력하시오.
SELECT ENAME, DEPTNO FROM EMP WHERE MGR IS NULL;
--3. 사원 테이블에서 부서번호가 30인 사람들 중 1982년 1월 1일 전에 입사한 사원의 이름과 직업을 구하시오.
SELECT ENAME, JOB FROM EMP WHERE DEPTNO=30 AND HIREDATE < '1982-01-01';
--4. 사원 테이블에서 직업명과 해당 직업을 갖고 있는 사람 수를 구하시오.
SELECT JOB, COUNT(*) FROM EMP GROUP BY JOB;
--5. 전체 사원의 수를 구하시오.
SELECT COUNT(*) FROM EMP;
--6. 커밋이 있는 사원들의 이름과 직업 연봉을 구하시오.(연봉 컬럼은 YEAR_SAL로 변경)
SELECT ENAME, JOB, SAL*12+COMM AS YEAR_SAL FROM EMP WHERE COMM IS NOT NULL;
--7. 관리자(MANGER)의 사원번호가 7839인 사원의 이름과 부서번호, 입사일을 구하시고 입사일이 빠른 순서로 정렬해주시오.
SELECT ENAME, DEPTNO, HIREDATE FROM EMP WHERE MGR = 7839 ORDER BY HIREDATE ASC;
--8. 직업이 관리자(MANAGER)인 사람들의 평균 월급을 구하시오.
SELECT AVG(SAL) FROM EMP WHERE JOB='MANAGER';
--9. 월급 테이블에서 가장 높은 등급의 월급의 중간값을 구하시오.
SELECT (LOSAL+HISAL)/2 FROM SALGRADE WHERE GRADE=5;
--10. 부서 테이블에서 지역(LOC)만 가져와서 새 테이블을 만들고(NEWDEPT) 조회해주세요.
CREATE TABLE NEWDEPT AS SELECT LOC FROM DEPT;
SELECT * FROM NEWDEPT;
뷰를 생성하고 확인해볼 수 있다.
CREATE OR REPLACE VIEW V_EMP AS SELECT * FROM EMP;
SELECT * FROM V_EMP;
시퀀스 생성 후 확인
CREATE SEQUENCE sequence_test;
SELECT sequence_test.nextval FROM dual;
dual
은 오라클에서 사용하는 가상 테이블
테이블 전체 복제
기존에 있는 emp 테이블 전체를 복제해 myemp테이블을 만듦. 그리고 확인
CREATE TABLE myemp AS SELECT * FROM emp;
SELECT * FROM myemp;
특정 컬럼만 복제
emp 테이블의 ename, empno 컬럼만 가져와서 emps라는 테이블을 만들고 확인해보자.
CREATE TABLE emps AS SELECT ename, empno FROM emp;
SELECT * FROM emps;
테이블의 데이터 값 말고 구조(컬럼)만 복제해보기
WHERE절의 조건이 FALSE라면 구조만 복사된다고 한다.(예) WEHRE 1=2)
emp테이블의 구조만 복사해서 empall 테이블을 만들고 확인해보자.
CREATE TABLE empall AS SELECT * FROM emp WHERE 1 = 2;
SELECT * FROM empall;
테이블을 만들거나 수정해서 속성을 변경할 수 있다.
NOT NULL 속성을 부여할 수 있다.(NOT NULL은 값이 비어있으면 안되고 무조건 값이 들어가있어야 함)
예제 1
CREATE TABLE table_notnull01(
id char(3) NOT NULL,
name varchar2(20)
);
INSERT INTO table_notnull01
values(1, 'dongjun');
SELECT * FROM table_notnull01 ;
값을 비우지 않고 잘 넣어주면 잘 들어가는 것을 볼 수 있다. 하지만
INSERT INTO table_notnull01
values('','dongjun2');
ID가 NOT NULL로 설정이 되어있기 때문에 값이 없는 상태로 데이터를 삽입하려니깐 되지 않는다.
' '
처럼 공백은 들어갈 수 있음.예제2
CONSTRAINT
로는 NOT NULL
적용시킬 수 없다.
NOT NULL은 COLUMN 레벨에서만 사용이 가능하다.
CREATE TABLE table_notnull02(
id char(3),
name varchar2(20),
CONSTRAINT tn02_id_nn NOT NULL (id)
);
컬럼들이 갖는 값들이 유일(1개만)해야 한다는 조건을 주어주는 것
예제1
ID 컬럼에 UNIQUE를 직접 주기
CREATE TABLE table_unique01(
id char(3) UNIQUE,
name varchar2(20)
);
INSERT INTO table_unique01
values('100', 'oracle');
INSERT INTO table_unique01
values('200', 'python');
INSERT INTO table_unique01
values('100', 'hadoop');
이 경우 ID 컬럼에 유일한 특성을 쥐어줬기 때문에 세번째 insert가 무결성을 위배해 들어갈 수 없게 된다. 똑같은 id값 100이 이미 존재하기 때문에
INSERT INTO table_unique01(name)
values('hadoop');
INSERT INTO table_unique01(name)
values('spark');
SELECT * FROM table_unique01;
NULL
값은 유일하지 않다.예제2
CONSTRAINT 사용
CREATE TABLE table_unique02(
id char(3),
name varchar2(20),
CONSTRAINT tuo02_id_unq UNIQUE (id)
);
INSERT INTO table_unique02
values('100', 'oracle');
INSERT INTO table_unique02
values('200', 'python');
INSERT INTO table_unique02
values('100', 'oracle');
통제 조건을 넣어주고 똑같은 값을 넣어주면 CONSTRAINT 명이 명시된 에러가 나온다.
예제3
제약조건을 id, name 두개를 감싸서 걸어줘보자.
CREATE TABLE table_unique03(
id char(3),
name varchar2(20),
CONSTRAINT tou03_id_unq UNIQUE (id, name)
);
INSERT INTO table_unique03
VALUES('100', 'oracle');
INSERT INTO table_unique03
VALUES('100', 'python');
SELECT * FROM table_unique03;
ID가 같은 100이여도 잘 들어가 진다. id와 name을 같이 엮어서 제약을 줬기 때문에 똑같은 100,oracle
이나 100,python
을 넣지 않는 이상 잘 들어갈 것이다.
따로 주려면 이렇게 해야한다.
CREATE TABLE table_unique04(
id char(4),
name varchar2(20),
CONSTRAINT tu04_id_unq unique(id),
CONSTRAINT tu04_id_unq2 unique(name)
);
INSERT INTO table_unique04
values('100','oracle');
INSERT INTO table_unique04
values('100','python');
이렇게 따로따로 제약조건을 준 것이기 때문에 두번째 100,python
이 들어가지지 않는다.
이번에는 주요키를 주는 실습을 해보자.
주요키 속성은 unique 이면서 not null 속성을 갖고 있다.
예제1
CREATE TABLE table_pk01(
id char(3) PRIMARY KEY,
name varchar2(20)
);
INSERT INTO table_pk01
values('100','oracle');
INSERT INTO table_pk01
values('200','mysql');
INSERT INTO table_pk01
values('200','mssql');
세번째 200,mssql
이 들어가지 않는다.
예제2
제약조건으로 제약 생성 예제
CREATE TABLE table_pk02(
id char(3),
name varchar2(20),
CONSTRAINT tp02_id_pk PRIMARY KEY (id)
);
INSERT INTO table_pk02
values('100','oracle');
INSERT INTO table_pk02
values('200','mysql');
INSERT INTO table_pk02
values('200','mssql');
역시 200,mssql
이 들어가지 않는다.
예제3
이번엔 id, name 두개를 묶어서 제약 조건을 주자.
CREATE TABLE table_pk03(
id char(3),
name varchar2(20),
CONSTRAINT tp03_id_pk PRIMARY KEY (id, name)
);
INSERT INTO table_pk03
values('100','oracle');
INSERT INTO table_pk03
values('200','mysql');
INSERT INTO table_pk03
values('200','mssql');
INSERT INTO table_pk03(name)
values('sqlite3');
NULL
값이 들어갈 수 없어서, name에 sqlite3
만 들어갈 수 없다.외래키는 다른 테이블을 참조할 때 비교하는 키(컬럼)이다.
예제1
외래키 속성을 컬럼에 직접 지정해주고,
위에서 만든 table_pk01 테이블의 id 컬럼을 주요키로 참조하는 경우
CREATE TABLE table_fk01(
id char(3),
name varchar2(20),
pkid char(3) REFERENCES table_pk01(id)
);
INSERT INTO table_fk01
values('500','oracle','500');
해당 테이블(table_pk01
)에 500이라는 값이 없어서 안들어가진다.
INSERT INTO table_fk01
values('500','oracle','100');
SELECT * FROM table_fk01;
예제2
제약조건으로 위에서 만든 table_pk02 테이블의 id 컬럼을 주요키로 참조하는 경우
CREATE TABLE table_fk02(
id char(3),
name varchar2(20),
pkid char(3),
CONSTRAINT tf02_id_fk FOREIGN KEY (id) REFERENCES table_pk02(id)
);
INSERT INTO table_fk02
VALUES('300','hadoop','300');
역시 되지 않는다. table_pk02
테이블의 id 컬럼에는 300이라는 값이 없기 때문이다.
INSERT INTO table_fk02
VALUES('300','hadoop','200');
이렇게 넣어도 되지 않는다. 왜?
CONSTRAINT tf02_id_fk FOREIGN KEY (id) REFERENCES table_pk02(id)
이 제약 조건에서 FOREIGN KEY를 ID로 지정해놓았기 때문에 안되는 거다 당연히.(똑같이 300인 것이 table_pk02테이블의 id컬럼에 없기 때문에)
SQL문을 적으면서 오타를 주의하자!
그러면 id값을 200으로 변경해보면?
INSERT INTO table_fk02
VALUES('300','hadoop','200');
잘 들어간다😋
체크 속성을 이용하면, 체크 속성에 정해준 값이 아니라면 입력이 되지 않는다.
예제
MARRIAGE 컬럼에 직접 속성을 준 경우
CREATE TABLE table_check01(
id char(3),
name varchar2(20),
marriage char(1) CHECK(marriage IN ('y','n'))
);
INSERT INTO table_check01
values('100','oracle','y');
INSERT INTO table_check01
values('200','python','n');
INSERT INTO table_check01
values('300','html','t');
마지막 300,html,t
는 들어가지 않는다. y나 n이 아니기 때문
SYSDATE
라는게 있는데, 이것은 지금 현재 날짜와 시간을 반환한다.SELECT SYSDATE FROM DUAL;
*
(ASTERISK)를 사용하면 해당 테이블의 모든 컬럼을 조회한다.
그게 아니라 특정 컬럼을 가져오고 싶으면 컬럼명을 적어주고, 다수의 컬럼을 가져오고 싶다면 컬럼명 사이에 ,
를 적어준다.
||
를 사용하면 각 값을 합칠 수 있음
EMPNO | ENAME 하면 10JORDAN 이런식으로 합쳐짐 |
예제
SELECT ENAME||'님이 '||HIREDATE||'에 입사를 하고 '||SAL||'의 월급을 받습니다.' AS GOOD FROM EMP;
+
를 사용하면 각 컬럼의 값을 더할 수 있는데 문자형과 숫자형이 더해지면 NULL
로 값이 조회된다.
WHERE 절에서 특정 범위 값을 조건으로 잡고 싶다면, BETWEEN A AND B
나 >= <=
등을 사용하면 된다.
날짜를 다룰때는 1980-01-01
이렇게 해도되고 80-01-01
이렇게해도 되며, 1980/01/01
도 되고 80/01/01
도 된다.
ORDER BY문을 이용해 데이터를 정렬할 수 있으며 디폴트는 ASC(오름차순)이다.
집계함수 SUM, AVG, MAX 등을 이용하고 싶으면 그룹화 해줘야하는데 그 때 GROUP BY를 사용하면 되고 그룹화할 컬럼명을 적어주면 된다.
INSERT INTO 테이블명 VALUES('값1','값2')
이런 식으로 사용아까 만든 TEST01 테이블에서 이름이 WARD인 사원의 월급을 2000으로 바꾸자.
UPDATE TEST01
SET SAL = 2000
WHERE ENAME ='WARD';
SELECT * FROM TEST01;
이름이 WARD인 사원의 직업을 MANAGER로 변경 후 부서를 20으로 바꾸자.
UPDATE TEST01
SET JOB = 'MANAGER', DEPTNO = 20
WHERE ENAME = 'WARD';
SELECT * FROM TEST01;
파일 및 폴더 생성
파일 시스템 탐색
도움말(man -> manual)
명령어 기초
유닉스(Unix)
특정 코드 지연 실행 - DispatchQueue.main.asyncAfter(deadline: )
Naming Conventions
안드로이드 폰과 맥북에어 M1 USB 테더링 성공
Simulator 풀 스크린 사용 방법
10807번 - 개수 세기
프로그래머스 Lv.1 풀이 코드 모음
프로그래머스 Lv.1 풀이 코드 모음
11047번 - 동전 0
11659번 - 구간 합 구하기 4
14888번 - 연산자 끼워넣기
9184번 - 신나는 함수 실행
24416번 - 알고리즘 수업 - 피보나치 수 1
2580번 - 스도쿠
9663번 - N-Queen
15652번 - N과 M (4)
15651번 - N과 M (3)
15650번 - N과 M (2)
25305번 - 커트라인
25304번 - 영수증
3003번 - 킹, 퀸, 룩, 비숍, 나이트, 폰
15649번 - N과 M (1)
2004번 - 조합 0의 개수
1676번 - 팩토리얼 0의 개수
9375번 - 패션왕 신해빈
1010번 - 다리 놓기
11051번 - 이항 계수 2
11050번 - 이항 계수 1
3036번 - 링
2981번 - 검문
1934번 - 최소공배수
2609번 - 최대공약수와 최소공배수
1037번 - 약수
5086번 - 배수와 약수
1358번 - 하키
1004번 - 어린 왕자
1002번 - 터렛
3053번 - 택시 기하학
2477번 - 참외밭
4153번 - 직각삼각형
3009번 - 네 번째 점
1085번 - 직사각형에서 탈출
11478번 - 서로 다른 부분 문자열의 개수
1269번 - 대칭 차집합
1764번 - 듣보잡
10816번 - 숫자 카드 2
1620번 - 나는야 포켓몬 마스터 이다솜
14425번 - 문자열 집합
10815번 - 숫자 카드
18870번 - 좌표 압축
10814번 - 나이순 정렬
1181번 - 단어 정렬
11651번 - 좌표 정렬하기 2
11650번 - 좌표 정렬하기
1427번 - 소트인사이드
2108번 - 통계학
10989번 - 수 정렬하기 3
2751번 - 수 정렬하기 2
2750번 - 수 정렬하기
22.06.25 ~ 27 부산 먹부림 기록
1436번 - 영화감독 숌
1018번 - 체스판 다시 칠하기
7568번 - 덩치
2231번 - 분해합
2798번 - 블랙잭
11729번 - 하노이 탑 이동 순서
2447번 - 별 찍기 - 10
17478번 - 재귀함수가 뭔가요?
10870번 - 피보나치 수 5
10872번 - 팩토리얼
9020번 - 골드바흐의 추측
4948번 - 베르트랑 공준
1929번 - 소수 구하기
11653번 - 소인수분해
2581번 - 소수
1978번 - 소수 찾기
10757번 - 큰 수 A+B
2839번 - 설탕 배달
2775번 - 부녀회장이 될테야
10250번 - ACM 호텔
2869번 - 달팽이는 올라가고 싶다
1193번 - 분수찾기
2292번 - 벌집
1712번 - 손익분기점
1316번 - 그룹 단어 체커
2941번 - 크로아티아 알파벳
5622번 - 다이얼
2908번 - 상수
1152번 - 단어의 개수
1157번 - 단어 공부
2675번 - 문자열 반복
10809번 - 알파벳 찾기
11720번 - 숫자의 합
11654번 - 아스키 코드
1065번 - 한수
4673번 - 셀프 넘버
15596번 - 정수 N개의 합
4344번 - 평균은 넘겠지
8958번 - OX퀴즈
25083번 - 새싹
Spark Bigdata Pipeline
Spark 3일차
Spark 2일차
1546번 - 평균
Spark 1일차
Hadoop🐘
3052번 - 나머지
2577번 - 숫자의 개수
2562번 - 최댓값
10818번 - 최소, 최대
Linux
MongoDB 조회 문제
MongoDB
1110번 - 더하기 사이클
10951번 - A+B - 4
Oracle 3️⃣
ORACLE 연습용 문제 만들기 숙제
10952번 - A+B - 5
Oracle 2️⃣
2480번 - 주사위 세개
Oracle Day1️⃣
Tensorflow
Big Data
2525번 - 오븐 시계
10871번 - X보다 작은 수
2439번 - 별 찍기 - 2
2438번 - 별 찍기 - 1
11022번 - A+B - 8
11021번 - A+B - 7
2742번 - 기찍 N
2741번 - N 찍기
15552번 - 빠른 A+B
8393번 - 합
10950번 - A+B - 3
9️⃣ 2739번 - 구구단
2884번 - 알람 시계
14681번 - 사분면 고르기
⛏크롤링(Crawling)
2753번 - 윤년
Django 복습 4️⃣
Django 복습 3️⃣
💯 9498번 - 시험 성적
1330번 - 두 수 비교하기
✖ 2588번 - 곱셈
➗ 10430번 - 나머지
Django 복습 2️⃣
Django 복습 1
MySQL 복습!
⁉10926번 - ??!
🆎1008번 - A/B
👩🦲 18108번 - 1998년생인 내가 태국에서는 2541년생?!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
🎈✨경 축✨🎈
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
선형 자료구조(1일차에 이어서)
🆎10998번 - A×B
🆎1001번 - A-B
🆎1000번 - A+B
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
🐶10172번 - 개
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
🐱10171번 - 고양이
[해당 포스트는 유튜버 나동빈님의 영상을 참고했습니다.]
❤10718번 - We love kriii
🖐2557번 - Hello World
Today I Learned(TIL)📌 (2021.12.31)
Today I Learned(TIL)📌 (2021.12.30)
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[noitce!!] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!