Oracle DB - Query 구문 (WHERE ~ JOIN)

▣ Where 절(구)에 사용되는 쿼리 구문 ◎ 관계 연산자 (NOT / AND / OR)   - NOT : 가독성이 더 좋은 부정 연산자 !=, <>, ^= 등을 이용하는 것이 좋다.   - AND : 주로 사용되는 조건절   - OR : 사용할 수는 있지만, 왠만하면 AND를 사용한다.   ※ AND와 OR의 혼용 시 괄호 ' ( ) ' 를 사용하여 구분해주어야 한다.    → 연산자 우선순위 때문 : AND > OR ◎ LIKE   - %, _, # 과 같은 와일드 카드 문자 / ESCAPE 문자를 함께 사용하여 원하는 문자열 검색 ◎ BETWEEN ... AND   - AND의 앞과 AND 뒤 값의 사잇 값을 출력해준다.   - 앞의 값은 뒤의 값보다 작아야한다. (유의)   - 날짜를 검색하는 경우 유의한다.    → 날짜 데이터는 시리얼 넘버로 저장되기 때문에 시, 분, 초 값도 역시 존재한다.    → 정확한 데이터를 출력시키려면 날짜 데이터의 포맷을 자유롭게 조절할 수 있어야 함.    → ALTER SESSION SET nls_date_format='YYYY/MM/DD:HH24:MI:SS' ◎ IN   - 지정된 값 중 일치하는 값이 하나라도 있으면 출력해주는 조건   - 가독성이 우수   - OR 이나 = 연산자를 대체한다. ▣ Join   - 복수의 테이블을 묶어서 연관된 칼럼 값을 참조하는 기법   - 테이블을 join하기 위해서는 join 조건이 필요하다   - join 조건은 묶는 테이블의 개수가 n개일때 최소 n-1개가 필요하다. ◎ 등가 join 과 비등가 join   ▷ 등가 join : 칼럼의 내용이 정확히 일치하는 레코드 만을 추려 join한다. ...

Oracle DB - Query 구문 (DISTINCT ~ WHERE)

▣ 쿼리 구문 ◎ DISTINCT - 중복 제거 : SELECT (DISTINCT/ALL(default)) 칼럼 FROM 테이블; ◎ ORDER BY - 정렬 : SELECT 칼럼 FROM 테이블 ORDER BY (정렬할 칼럼) (ASC(default)/DESC) 오름차순 / 내림차순  - 정렬할 칼럼의 순서대로 우선 적용  - Oracle DB는 RDB ◎ WHERE - 조건 검색 : SELECT 칼럼 FROM 테이블 WHERE 조건   - 조건의 좌변에 수식이 들어가는 것은 좋지 않음     → 좌변에 우변과 맞지 않는 데이터 형이 비교된다면 좌변의 내용은 모두 숫자로 바뀌어 비교된다 (full table scan)     → 데이터 자동 형 변환을 통해 모든 데이터를 오류없이 스캔해주지만, 그 속도에 있어서 매우 비효율적이 된다.     → 왠만하면 스캔을 적게해주는 방식으로     → 칼럼을 제외한 수식을 우변으로 옮기자   - 스캔의 종류는 두 가지     ① Full table scan - 모든 레코드를 다 읽어야하므로, 모든 테이블을 스캔하는 시간과 동일한 시간을 소비     ② index scan - 임의의 테이블을 생성해서 정렬이 안되어있는 기본 테이블을 복사하여, 정렬이 된 상태로 붙여넣는다        - binary search를 사용 : 절반의 위치를 질의 낮으면 아래로, 높으면 위로 재검색         → 그러나 RDB에서는 b* tree 방식을 이용하기에 binary search보다 훨씬 빠름        - 모든 레코드(row)에는 rowid가 존재        - rowid는 64^18가지로 이만...

Oracle DB - Query 문 종류와 SELECT문

▣ Oracle SQL ◎ 명령어 구조 -- 자주쓰는 명령어 (99.99퍼) -- SELECT : quary -- 나머지 0.01퍼 정도 -- INSERT : row 생성 UPDATE : row 변경 DELETE : row 삭제 -- 이하는 시스템 관리자(DBA)가 사용 -- CREATE : 테이블 생성 ALTER : 테이블 변경 DROP : 테이블 삭제 -- 이하는 부가권한이 있는 관리자가 사용 (권한 부여 및 삭제) -- GRANT : 권한 부여 REVOKE : 권한 삭제 ▣ 명령어 종류 ◎ select문 : SELECT [col, col, ...] FROM table; → 테이블에 속한 특정 칼럼을 선택해 출력해준다. : SELECT * FROM table; → 테이블에 속한 모든 칼럼을 출력해준다. ▷ FROM절은 생략할 수 없다. ▷ 정해진 포맷이 없기 때문에, 여러 줄에 걸쳐 사용가능 → 가독성 높일 수도 있겠다 ◈ 테이블 구조의 확인 - DESC : DESC (table) → 테이블의 구조를 확인할 수 있다. ex) SQL> DESC emp  이름                                                    널?    유형  ----------------------------------------------------- -------- ------------------------------------  ENO                          ...

전자서명 개념

이미지
▣ 전자서명 전자문서의 단점 - 위변조 용이 - 작성사실 입증의 어려움 전사서명의 요구조건 - 서명자 신원의 확인 - 위조 불가, 변경 불가 (데이터 무결성) - 부인 방지 - 재사용 불가 대칭키 알고리즘에 의한 방법 - 중재된 서명기법  : 서명과 검증을 제3자에 의해서 행할 수 밖에 없음 공개키 알고리즘에 의한 방법 - 메시지 복원형 전자서명 방식 - 문서 자체를 이용하는 서명 방식 - 메시지 부가형 전자서명 방식 - 문서에 서명메시지를 포함하는 방식 인증서는 인감 증명서에 해당 공개키의 소유자를 증명하는 용도 인증서의 정의 - 공개키의 소유자 증명 - 인증기관이 자신의 개인키로 전자서명 인증서 표준 : X.509 - 메시지 다이제스트 알고리즘만을 포함  → 무결성만을 중시 (=속도, =가용성) CA : 인증서 발행기관 RA : 인증서 유저 등록 기관 CRL : 인증서 폐지 목록 ▣ 전자서명 방식 ◎ 부가형 전자 서명 방식  ▷ 설명   메시지를 해시함수 처리 → 해시 코드 (message digest) → 해시코드를 송신자의 개인키로 서명  ● 원본 메시지와 서명을 붙여서 송신   원본 메시지에 해시함수 처리 → 해시 코드 1 획득   서명을 송신자의 공개키로 복호화 → 해시 코드 2 획득  ● 해시 코드 1과 해시 코드 2를 비교   → 동일하면 인증, 다르면 인증 실패  ▷ 제약   기밀성이 보장되지 않음 ◎ 전자 봉투 방식  ▷ 조건   상대방의 공개키가 맞는지 확인되어야함  ▷ 설명   ● 송신자     송신자는 난수를 발생시키고, 이것을 비밀키로 지정한다.     수신자의 공개키로 위 비밀키를 암호화...

해시함수 개념

이미지
해시함수 기밀성 x 무결성 o 무결성 - 메시지의 변조가 되지 않음을 증명 해시함수 : 일방향 함수 → 암호화는 가능하지만 복호화가 불가 SHA와 MD5가 대표적, 그중에서도 MD5를 주로 사용 → 유닉스의 암호 데이터는 MD5로 암호화 보안전문가에게 위협이란 구체적인 위협을 탐지하고 있을 경우만 위협 - 메시지 인증 코드에 대한 변형 - 메시지의 모든 비트들에 대한 함수 - 가변 메시지 M에 one-way Function H를 취해 정해진 크기의 Digest h를 만드는 과정 - 디지털서명, 인증 등의 서비스 제공 메시지 길이에 제약은 있겠지만 가히 무한하게 큰 수일 것. 하지만 해시함수를 적용하게 되면 고정길이로 줄어들기 때문에, 같은 digest를 갖는 메시지는 여러개 나올 수 밖에 없음. (해시함수) 해시함수의 요구조건 1. 어떤 크기의 메시지에도 적용 가능 2. H는 고정된 코드의 hash code (message digest) h를 생성 3. h는 어떤 M에 대해서도 계산하기 쉽다. 4. 주어진 h에 대해 H(M) = h인 M를 찾는 것이 계산적으로 불가능 (one way) 5. 어떤 주어진 블록 M에 대해, H(M') = H(M) 인 M과 M''이 서로 다른 것을 찾는 것이 계산적으로 불가능 6. H(M') = H(M) 인 서로 다른 M과 M'을 찾는 것이 계산적으로 불가능 (collision-free) - 기밀성과 무결성을 동시에 만족하는 형태

Linux Server 실습 - smb.conf (share)

이미지
◎ smb.conf - share 1. 공유 디렉토리 (Public)를 만들고 writable 권한을 갖고 놀아봅시다 - /etc/samba/smb.conf - 사진 첨부 - # A publicly accessible directory, but read only, except for people in # the "staff" group         [public]         comment = Public Stuff         path = /home/pub         public = yes          writable = no          write list = +web webmaster    → 이 부분이 관건 ▷ 주석은 삭제하였다. ▷  writable(쓰기 권한) 이  no 로 설정되어 있더라도,  write list 에  설정된 그룹/유저 는  쓰기가 가능 하다. ▷ 테스트 해보자   - 위 사진처럼 write list에는 web그룹의 webmaster 계정만을 허용한다.   - 경로 path에 속하는 디렉토리는 미리 생성한다.   - 사전에 공유폴더 public 폴더에 비어있는 .txt 파일을 만들어 놓는다.     1. write list에 없는 계정으로 접속 후 텍스트 파일 수정               → 네트워크 드라이브 연결                  → \\DJ\public 에 접속해보자! ...

이론 - samba : smb.conf

◎ smb.conf [Global] - workgroup   • NT 도메인 명 지정 - netbios name   • 네트워크 이름   • 기본값 : 호스트명 - hosts allow (wrapper)   • 허가 항목 지정(지정된 것만 접속 가능)    ex) host allow = 1.1.1. EXCEPT 1.1.1.11 1.1.1.12     = 1.1.1.0/255.255.255.0 - hosts deny (wrapper)   • 접속 거부 항목 지정 (형식은 hosts allow와 동일) - guest account   • 윈도우의 quest 사용자 매핑 계정 설정   • nobody 또는 유닉스 계정으로 매핑 가능   • 주석 처리하면 guest 접속 불가(권장) - security   • user, share, server(domain) 중 설정    security = user    passdb backend = tdbsam → 사용되지 않음   • 일부 예전 버전의 경우 user 설정 시 추가 설정 필요    encrypt passwords = yes → 구 버전 samba에서만 사용    smb passwd file = /etc/samba/smbpasswd Link 디렉토리 접근   보안 설정으로 인해 Symlink 디렉토리에 대한 기본 접근이 불허된다.   이를 허용하기 위해서는 아래와 같이 추가한다.     follow symlinks = yes     wide links = yes     unix extensions = no 언어셋 지정 (반드시 test 후 설정한다.)   unix charset = ...