4주차

김예지·2022년 7월 17일
0

1일차

프로세스 : 애플리케이션 단위
멀티 프로세스 : 프로세스가 두개이상 실행되었을 때
멀티 태스킹 : 하나의 프로세스 안에서 여러개의 작업이 실행이 될 때
쓰레드Thread : 프로세스 안에서 하나의 작업단위(하나의 작업이 에러가 생기면 다른 작업에도 영향을 준다)
멀티 쓰레드 : 한 프로세스가 여러 스레드로 동시에 여러 작업을 수행하는 것(동시 작업)
Runnable : Thread의 인터페이스화 된 형태이다.

  • Runnable 인터페이스 상속 받을 때 run 메소드를 재정의 해주어야 한다.

2일차

Data Base
비구조체계 : NoSQL , JSON
구조화된 체계 : SQL

SQL 종류
1.데이터 조회, 변경/삭제 => DQL (data query language) : selest
=> DML (data mauipulation language) : insert, update
2. 테이블 조회, 변경 ,삭제, 추가 => DDL(data definition language) : create(생성), agter(변경)(: ADD, MODIFY, DROP 사용가능), drop(삭제), rename(이름변경), truncate
=> TCL(transaction coutrol language) : commit, rollback(되돌리기), savepoint
=> DCL(data contol language) : grant(사용자 접근 부여) revoke(권한 회수)
counect=> 접근권한 resource => 리소스를 사용할 수 있는 dba => 사용자 계정 생성, 삭제

사용자 계정 => 데이터 조회/수정/삭제/추가 DQL : select DML :inset, update, delete
조회하는 형식 select
=> select * 모든 것을 선택, 원하는 항목 나열 ex)name,age Form Student(테이블 이름) where name(항목) =(대입x 같다o) 값('고길동'); order by(표현하는 순서) age ;
(디폴트 asc 오름차순 desx 내림차순 )

from키워드 => where => select => order by

계정 생성문 : create user test identified by 1111(비밀번호);
conn => 계정 들어가기
작성할 때 세미콜론 처리를 안 해주면 실행종료가 안 됨
LIKE '%%' 따움표 안에 있는 문자를 지정해 찾아준다
LIKE 'A%'; A로 시작하는 문자 가져오기
LIKE '_A%'; A가 두번째로오는 문자 가져오기

  • 데이터 인식 순서
    4) SELECT [컬럼들] OR [*]
    1) FROM 테이블명
    2) WHERE [조건들]
    3) GROUP BY [컬럼들] (동일한 컬럼으로만 가능)
    3-2) HAVING [조건들] 그룹함수로 조건을 줄 때
    마지막) ORDER BY [컬럼들]
    SUM() = 합 AVE() = 나누기 MAX() = 가장 큰 수 MIN() = 가장 작은 수
    DISTINCT = 중복제거
    LOWER 소문자로 변환
    UPPER 대문자로 변환
    FLOOR 소숫점 버림
    ROUND 반올림
    MOD 나눗셈 나머지 표현
    / 나누기
    SYSDATE 현재날짜
    || 문자 결합
    CONCAT 문자열 결합

3일차

LENGTH() 문자열 개수
LENGTHB() 문자열 개수 (3바이트)
SUBSTR(위치, 그 위치부터 몇 개를 가져올지) 지정한 문자 가져옴
음수는 뒤부터 양수는 앞부터
SUBSTR() 바이트기준
INSTR() 특정 문자의 인덱스 번호
INSTR('DataBase', 'a', 3,1) 3번재문자부터 시작 , 1번째로 오는 a를 찾음
LPAD() (왼쪽)지정한 문자수의 부족한 문자수를 지정한 문자로 채운다
RPAD() (오른쪽)
RTRIM() 오른쪽부터 문자열에 지정한 문자를 지워준다 (중간 문자는 인식을 못 함 -공통)
LTRIM() 왼쪽부터 문자열에 지정한 문자를 지워준다
TRIM() 앞뒤 문자열에 지정한 문자를 지워준다

TO_CHAR() 원하는 출력 포멧 형식으로 표현 할 수 있다
EX) SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH12:MI:SS AM DAY') FROM DUAL;
2022-07-13 11:07:24 오전 수요일
EX)SELECT TO_CHAR(SYSDATE, 'AM', 'NLS_DATE_LANGUAGE=AMERICAN') AS AMERICAN FROM DUAL;
SELECT TO_CHAR(TO_DATE(SYSDATE) , 'D') FROM DUAL;
4
SELECT TO_CHAR(123456, '000,000,000') FROM DUAL;
000,123,456
SELECT TO_CHAR(123456, '999,999,999') FROM DUAL;
(빈자리는 공백으로 채운다)123,456
SELECT TO_CHAR(123456, 'L999,999,999') FROM DUAL;
₩123,456
FFSELECT TO_CHAR(123456, '$999,999,999') FROM DUAL;
$123,456

TO_DATE() 문자열을 날짜로 변환
TRUNC() 소수점을 버린다 (원하는 소숫점 자리 표현이 가능하다)
SYSTIMESTAMP 년 월 일 분 초(밀리세컨즈) 까지 나타냄
NEXT_DAY() 다음요일을 출력해준다
NVL() NULL을 0으로 치환시킨다
NVL2()
NVL2(COMM, MGR, SAL) 해당 컬럼 값이 없으면 두번째 컬럼을 표시 있으면 첫번째 컬럼 표시
LNNVL() 조건의 값 반대를 표시함
NULLIF() 두개 컬럼을 비교후ㅇ 값이 다르면 첫번째 컬럼반환
같으면 NULL을 반환
COALESCE() 왼쪽부터 순차적으로 NELL이 아닌 값을 출력
COALESCE(COMM,MGR,SAL) COMM NULL MGR 7902 SAL 800 이면 최종적으로 MGR의 값이 출력된다
POWER(5,2) 제곱수 표현 25
ROUND(SQRT(2),4) 루트표현 1.4142
<조건문>
DECODE(
기준이 되는 컬럼 ,
값1, 값이1에 해당되면 출력되는 값,
값2, 값이2에 해당되면 출력되는 값,
출력되는 값
)
CASE
WHEN조건식 THEN 출력문
WHEN조건식 THEN 출력문
....
ELSE 출력문
END AS 별칭
TO_NUMBER 문자를 숫자로 변환
(SQL에서는 문자열 + 숫자열 하면 자동으로 문자를 숫자로 변환한다)
ROLLUP() 묶어서 계산
INSERT : 데이터 추가 (줄 수를 추가)
DELETE : 데이터 삭제(줄 수를 삭제)
UPDATE : 데이터 갱신(해당 줄의 원하는 컬럼들 수정)
반드시 명령문을 실행한 후에 완전한 종료(테이블에 영구반영)
을 하려면 COMMIT;을 해주어야 한다.

INSERT 기본형식
INSERT INTO 테이블명
(컬럼1, 컬럼2, .....)
VALUES
(컬럼1에 해당되는 값, 컬럼2에 해당되는 값,.....)

INSERT INTO 테이블명 (줄단위)
VALUES
(컬럼1에 해당되는 값, 컬럼2에 해당되는 값,.....)

예시 : DEPT테이블 (순서 : DEPTNO, DNAME, LOC)

COMMIT 영구저장;

DELETE 형식
DELETE FROM EMP01
WHERE 조건식;

UPDATE 형식
UPDATE 테이블명
SET 컬럼명1 = 값1, 컬럼명2 = 값2, .........
WHERE 조건식들;

4일차

IN() 값들을 묶음 (= X)
INSERT INTO 테이블명
VALUES
(컬럼1의 값, 컬럼2의 값, 컬럼3의 값,..)

ROLLBACK 변경전 상태로 돌아감

UPDATE EMP01
SET COMM = SAL * 0.1
WHERE MGR = (SELECT EMPNO FROM EMP01 WHERE JOB='전무'); <= 서브쿼리

  • 테이블 생성 형식
    CREATE TABLE 테이블명(
    컬럼명1 자료형, 컬럼명2 자료형 ...........
    컬럼명N 자료형
    );

이름 학번 과 나이

CREATE TABLE ACLASS(
NAME VARCHAR2(10),
NUM NUMBER(9),
CLASS VARCHAR2(30)
AVG NUMBER(2)E
);

ACLASSDEPT
컬럼 학과번호 (CLASSSUM) 학과명(CLASS)

테이블 구조 변경 하는 법
컬럼을 추가하기 컬럼을 제거하기

  • 컬럼 추가하기
    ALTER TABLE 테이블명 ADD ( CLASSNUM NUMBER(2));

ALTER TABLE 테이블명 DROP COLUMN 컬럼명; 컬럼 삭제
ALTER TABLE 테이블명 DROP (컬럼명1, 컬럼명2 ); 여러 컬럼 삭제

  • 컬럼의 자료형을 바꾸는 방법
    ALTER TABLE 테이블명 MODIFY(컬럼명1 자료형, 컬럼명1 자료형,......);
    컬럼의 자료형을 수정할 때 : 하나의 값이라도 존재하면 안된다.
    컬럼의 사이즈를 변경할 때 : 들어있는 값보다 크게 조정하면 가능하다. (작은 사이즈로는 안됨)

  • 테이블 추가
    ALTER TABLE 테이블명 ADD (컬럼명 자료형);

  • 테이블명 바꾸기
    ALTER TABLE 테이블명 RENAME COLUMN 변경해야 할 컬럼명 TO 변경 할 이름;(한개씩 가능)

데이터 관련 직업(dql, dml)
SELECT SELECT 컬럼들,
FROM 테이블명
WHERE 컬럼명 = 값 / 비교
GROUP BY 묶음 컬럼명들
HAVING BY GROUP BY로 처리한 결과로 나올 컬럼이나 그룹함수
ORDER BT 컬럼들 (ASC오름차순 (생략 가능) DESC 내림차순)

테이블관련
DROP TABLE 테이블명;
DROP TABLE 테이블명 CASEDE; (해당 테이블의 하위 테이블까지 삭제)

  • 테이블명 변경
    RENAME 변경해야 할 테이블 이름 TO 변경 할 이름; (사용자 계정은 X)

  • SELECT * FROM TAB; (모든 테이블 검색)

  • 테이블 생성방법
    CREATE TABLE 테이블명(
    컬럼명 자료형 );

  • 가져올 테이블의 구조 및 전체 데이터 복사
    CREATE TABLE 만들 테이블명
    AS SELECT * FROM 가져올 테이블명;

  • 가져올 테이블의 일부 구조 및 일부 데이터 복사
    CREATE TABLE 만들 테이블명
    AS SELECT 컬럼명1, 컬럼명2, 컬럼명 FROM 다져 올 테이블명;

  • 가져올 테이블의 전체 구조만 복사
    CREATE TABLE 만들 테이블명
    AS SELECT *(컬럼명도 가능) FROM 가져 올 테이블명
    WHERE 1=0; (FALSE를 반환하여 가져올 테이블이 없음)

INSERT ALL INTO 넣을 테이블명1 INTO 넣을 테이블명2
VALUES (컬럼1, 컬럼2, 컬럼3.. 전체컬럼)
SELECT * FROM 가져올 테이블명;

INSERT ALL
INTO 넣을 테이블명1 VALUES (컬럼1)
INTO 넣을 테이블명1 VALUES (컬럼1)
SELECT 가져올 테이블명의 전체컬럼기술 FROM 가져올테이블명;

INSERT ALL
INTO EMP01 VALUES (EMPNO, ENAME, JOB)
INTO EMP02 VALUES (EMPNO, JOB, ENAME, MGR)

SET AUTOCOMMIT ON 을 하게 되면 자동 COMMIT이 된다.
종료시 SET AUTOCOMMIT OFF

--형식 : SAVEPOINT 포인트명
--형식 : ROLLBACK TO 포인트명;

5일차

TRUNCATE(DDL자동 커밋) 데이터와 테이블 모두 삭제

  • 중간에 DDL 사용시 자동 커밋이 되기 때문에 주의

SELECT * FROM DEPT01 AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' MINUTE);

CREATE USER 유저명 IDENTIFIED BY 비밀번호; --유저 생성
ALTER USER 유저명 IDENTIFIED BY 비밀번호; --비밀번호 변경
GRANT RESOURCE, CONNECT TO 유저명; --접근권한 부여

  • 데이터 무결성 : 데이터의 결함이 없는 상태
    제약조건 : NOT NULL => 대부분 레벨로 기술

  • 제약조건 형식=>CREATE TABLE 테이블명( 컬럼명1 자료형 제약조건(NOT NULL) );
    제약조건 => PRIMARY KEY(속성)

  • 중복이 되지 않아야 하는 속성 제약

  1. PRIMARY KEY (중복X + NOT NULL) => 기본키, 복합키(2개이상)
    PRIMARY KEY는 테이블당 한개만 사용이 가능하다 (복합키로로 사용할 때는 2개 이상 사용 가능)
  2. UNIQUE (중복X, NULL가능)
  3. NOT NULL 비어있으면 안된다
  • KEY
    EX 이름 학번 주소 아이디 핸드폰번호
    기본키 : 유일한 속성만 가능
    슈퍼키 : 아이디, 학번 ,아이디 + 이름 , 학교+ 이름 + 주소
    복합키 : 기본키1개 조합 , 슈퍼키중 한 개 이상 조합 (2개이상)
    대체키 : 후보키 중에서 기본키가 되고 남은 키들
    후보키 : 아이디 학번 (고유속성)

  • 개체 무결성 : PRIMARY KEY 중복X + NOT NULL

NULL 검색 => IS NULL
빈문자열로 데이터 추가하여도 NULL로 인식한다
-- constraint 제약조건

PRIMARY KEY = UNIQUE + NOT NULL (한 테이블에 하나만 작성가능)
UNIQUE NULL포함 (한 테이블 안에 여러개 작성가능)
NOT NULL (한 테이블 안에 여러개 작성가능)

  • 컬럼 레벨 방식(단일 컬럼만 가능)
    컬럼명 자료형 PRIMARY KEY 자동으로 이름 생성
    컬럼명 자료형 CONSTRAINT 프라이머리키명(테이블명_컬럼명_PK) RPIMARY KEY

  • 컬럼 여러개를 PRIMARY KEY로 지정하는 방법(테이블 레벨 정의 방법) (복합키)
    CONSTRAINT 프라이머리키명(테이블명_컬럼명_PK) RPIMARY KEY (컬럼1, 컬럼2..)

    SELECT * FROM USER_constraints; 제약조건확인

    PRIMARY KEY를 복합키로 사용하게 되면 두 데이터를 합쳐서 인식한다 (둘 중 하나만 달라도 OK)

  • CHECK(조건식) 삽입 할 데이터에 조건을 걸어준다

    참조 무결성 => FOREIGN KEY (PRIMARY KEY 여도 NULL값이 가능 , 중복허용)

  • 형식
    주인테이블
    DEPT
    DEPTNO NUMBER(4) PRIMARY KEY
    DNAME VARCHAR(10) NOT NULL
    EMP
    EMPNO NUMBER(4) PRIMARY KEY
    DEPTNUM NUMBER(4이상) REFERENCES 참고하는 테이블명(DEPT) 프라이머리키로 지정된 컬럼명(DEPTNO) => 컬럼 레벨 단축 형식

    FOREIGN KEY 테이블 레벨 정의 방법

CONSTRAINT 포린키명 FOREIGN KEY(포린키로 지정 할 컬럼명) REFERENCES 참조 할 테이블명(프라이머키 컬럼명)
주인 테이블에 있는 컬럼 범위 밖에는 사용이 안된다
상속관계에 묶여있는 동안은 기존 삭제 방법으로는 삭제가 안 된다
DROP TABLE 삭제 할 테이블 CASCADE CONSTRAINTS <= 이 형식을 사용해야 상속관계까지 삭제 가능

P PRIMARY KEY R FOREIGN(REFERENCES) KEY U UNIQUE C NOT NULL

profile
나만의 방식을 찾아가는 신입신입 개발자

0개의 댓글