반응형

#1. SQL의 종류

1) DML (Database Manipulation Language) : 데이터를 조작하는 형태의 SQL

   - SELECT, INSERT, UPDATE, DELETE

2) DDL(Database Definition Language) : 데이터를 정의하는 형태의 SQL

   - CREATE, DROP, ALTER, RENAME

3) DCL (Database Control Language) : 데이터를 통제하는 형태의 SQL

   - GRANT, REVOKE

4) TCL (Transaction Control Language) : DML에 의해 처리된 결과를 트랜잭션별로 제어하는 형태의 SQL

  - COMMIT, ROLLACK, SAVEPOINT 

** DDL 명령어의 경우 실행시 AUTO COMMIT 하지만 DML 명령어의 경우 COMMIT을 입력해야 함.

 

#1.1. 테이블 : DB 기본 단위, 데이터를 저장하는 객체

- 가로 = 행 = ROW = 튜플(Tuple) = 인스턴스(Instance)

- 세로 = 열 = 컬럼

 

#2. 절차/비절차 데이터 조작어

- 비절차적 데이터 조작어 (DML) : 사용자가 어떤 데이터만을 원하는지 명확하게 명세함

- 절차적 데이터 조작어(PL/SQL, T-SQL(SQL Server)) : 어떻게 데이터를 접근하는지 명확하게 명세함

 

#3. Oracle 과 SQL Server의 문맥점 차이점

Oracle SQL Server
여러 컬럼을 동시에 수정하는 구문을 지원함 여러 컬럼을 동시에 수정하는 구문을 지원하지 않음
괄호를 사용함 괄호를 사용하지 않음
DDL 문장 수행 후 자동으로 Commit을 수행함 DDL 문장 수행 후 자동으로 Commit을 수행하지 않음
NULL값을 가장 큰 값으로 간주하여 오름차순으로 정렬하였을 경우 가장 마지막에 위치함 NULL 값을 가장 작은 값으로 간주하여 오름차순으로 정렬하였을 경우 가장 위쪽에 위치함
' '이 저장이 되면 NULL로 저장이 됨
이를 찾으려면 IS NULL로 찾아야 함
' '이 저장이 되면 NULL로 저장이 됨.
이를 찾으려면 =' ' 로 찾아야 함

 

 

#4. 제약 조건의 종류

1) PRIMARY KEY (기본키) 의 속성 : UNIQUE,  NOT NULL

2) UNIQUE KEY (고유키)의 속성 : UNIQUE, NULL이 가능함

3) CHECK : 데이터 무결성을 확인하기 위해 특정 컬럼에 설정하는 제약 (입력 값 범위 제한)

4) FOREIGN KEY (외래키)의 속성 

    - 테이블 간의 관계를 정의하기 위해 PK를 다른 테이블의 외래키로 참조하도록 생성

    - NULL이 가능함

    - 한 테이블의 여러 FK가 존재 가능함

    - 참조 무결성 제약을 받을 수 있음 (2개의 관계 변수간의 일관성)

 

#5. 인덱스 생성하기

CREATE 인덱스_이름 ON 테이블명 (인덱스 생성하고 싶은 컬럼명);

 

#6. 테이블명 바꾸기

RENAME 테이블명 TO 변경할 테이블명;

 

#6-1. 테이블 구조 변경

- 추가 : ALTER TABLE PLAYER ADD (ADDRESS VARCHAR2(80));

- 수정 : ALTER TABLE PLAYER MODIFY (ORIG_YYYY VARCHAR(20) DEFAULT '20220901' NOT NULL);

- 삭제 : ALTER TABLE PLAYER DROP COLUMN ADDRESS;

- 제약조건 삭제 : DROP CONSTRAINT 조건명;

- 제약조건 추가 : ADD CONSTRAINT 조건명 조건 (컬럼명);

- 테이블명 변경 : RENAME PLAYER TO PLAYER_NEW_NAME;

- 테이블 삭제 : DROP TABLE PLAYER;

- 테이블 데이터 (전체) 삭제 : TRUNCATE TABLE PLAYER;

- 컬럼명 변경 : RENAME COLUMN TEAM_ID TO T_ID;

 

#7. 참조 동작

1) DELETE

   - Cascade : Master 필드 삭제 시 Child 데이터도 삭제

   - Set Null : Master 필드 삭제 시 Child 필드는 Null 값으로 대체

   - Set Default : Master 필드 삭제 시 Child 필드는 Default 값으로 대체

   - Restrict : Child 필드에 PK가 없는 경우에만 Master 필드 삭제 허용

   - No Action : 참조 무결성을 위반하는 삭제/수정 액션을 취하지 않음

2) INSERT

   - Automatic : Master 필드에 PK가 없는 경우 PK를 생성 후 Child 필드 입력

   - Set Null :  Masetr 데이터블에 PK가 없는 경우 Child 외부 값을 Null로 처리

   - Set Default : Masetr 데이터블에 PK가 없는 경우 Child 외부 값을 Default 값으로 처리

   - Defendent : Master 테이블에 PK가 존재할 경우 Child 필드 입력

   - No Action : 참조 무결성을 위반하는 입력 액션을 취하지 않음

 

#8. TCL

- 트랜잭션 (Transaction) : 밀접히 관련되어 분리될 수 없는 1개 이상의 DB 조작. (논리적 연산 단우)

- COMMIT : 올바르게 반영된 데이터를 DB에 반영

- ROLLBACK : Transaction 시작 이전의 상태로 되돌림. (COMMIT 되지 않은 모든 Transaction을 롤백함)

- SAVEPOINT : 저장 지점

 

#9. 트랜잭션의 특징

1) 원자성 : 트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 아니면  전혀 실행되지 않아야 함

2) 일관성 : 트랜잭션 실행 전 DB 내용이 잘못 되지 않으면 실행 후도 잘못 되지 않아야 함.

3) 고립성 : 트랜잭션 실행 도 중 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안 된다.

4) 지속성 : 트랜잭션이 성공적으로 수행되면 DB의 내용은 영구적으로 저장이 된다.

 

#10. 연산자의 종류

1) BETWEEN a AND b : a와 b 값 사이에 있으면 됨

2) IN (List) : List에 있는 값 중 어느 하나라도 일치하면 됨

3) IS NULL : NULL 값인 경우 (Oracle은 VARCHAR2 빈 문자열을 NULL로 판단)

4) NULL 값 과의 수치 연산(+,-,x,%)은 NULL값을 리턴한다.

5) NULL 값 과의 비교 연산은 거짓(FALSE)를 리턴한다.

6) 연산자의 우선 순위 : () -> NOT -> 비교 연산자 -> AND -> OR

7) ROWNUM : 원하는 만큼의 행을 가져올 때 사용 ex) WHERE ROWNUM = 1;

 

#11. 단일행 함수

1) SELECT, WHERE, ORDER BY 절에서 사용 가능

2) 행에 개별적으로 조작

3) 여러 인자가 있어도 결과는 1개만 출력

4) 함수 인자에 상수, 변수, 표현식 사용 가능

5) 함수 중첩 가능

 

#12. 문자형 함수

1) LOWER : 문자열을 소문자로 변환

2) UPPER : 문자열을 대문자로 변환

3) ASCII : 문자의 ASCII 값 변환

4) CHR : ASCII 값에 해당하는 문자 변환

5) CONCAT : 문자열1,2를 연결

6) SUBSTR : 문자열 중 m위치에서 n개의 문자 반환

7) LENGTH : 문자열 길이를 숫자 값으로 반환

 

#13. 숫자형 함수

1) SIGN(숫자) : 숫자가 양수면 1, 음수면 -1, 0이면 0 반환

2) MOD(숫자1, 숫자2) : 숫자1을 숫자2로 나우어 나머지 반환

3) CEIL(숫자) : 크거나 같은 최소 정수 반환

4) FLOOR(숫자) : 작거나 같은 최대 정수 반환

 

#14. NULL 함수

1) NVL(식1, 식2) : 식1의 값이 NULL이면 식2 출력 / 공집합을 바꿔주진 않음

2) NULLIF(식1, 식2) : 식1이 식2와 같으면 NULL을 아니면 식1을 출력

3) COALESCE(식1, 식2) : NULL이 아닌 최초의 표현식, 모두 NULL이면 NULL 반환

 

#15. 다중행 집계 함수

1) 여러 행들의 그룹이 모여서 그룹당 단 하나의 결과를 돌려주는 함수이다.

2) GROUP BY 절은 행들을 소그룹화 한다.

3) SELECT, HAVING, ORDER BY 절에 사용 가능

   - ALL : DEFAULT 옵션, 생략 가능

   - DISTINCT : 같은 값을 하나의 데이터로 간주 옵션 

4) COUNT (*) : NULL 포함 행의 수

    COUNT(표현식) : NULL 제외 행의 수

    SUM, AVG : NULL 제외 합계, 평균 연산

    STDDEV : 표준 편차

    VARIAN : 분산

 

반응형

'Development > DB' 카테고리의 다른 글

[DB] 데이터 모델링의 이해  (0) 2022.09.04
[DB] SQL의 기본과 활용 - 2  (0) 2022.09.02
[DB] Oracle Listener  (0) 2020.04.08
[DB] DB Sequence 생성과 삭제  (0) 2020.04.08
[DB] ROWNUM과 ROWID  (0) 2020.04.08
반응형

#. NPKI (National Public Key Infrastructure) : 국가 공개키 기반 구조

 

#. CA (Certificate Authority) 

- 인증 기관 

- 5대 인증 기관(코스콤, 한국전자인증, 한국정보인증, 금융결제원, 한국무역정보통신)

 

[출처] 한국전자인증(https://www.crosscert.com/solution/03_1_02.jsp)

 

 

#. RA (Registration Authority) 

- 등록 기관 

- 공인인증서의 접수 및 등록 등의 일을 수행

- 은행, 증권회사, 인증기관(한국전자인증, 한국정보인증)

- 사용자 인증서 관리(등록, 재등록,정보 수정, 정보 삭제, 정보 조회)

- 공인인증서 관리(효력정지, 효력회복, 폐지)

 

#. PKI (Public Key Infrastructure)

 

# OCSP (Online Certificate Status Protocol)

- 온라인 인증서 상태조회 프로토콜

- CRL을 통한 검증 메커니즘

- 사용자의 실수 또는 고의로 폐기된 인증서가 사용되는 것을 방지하기 위해 CA를 통해 발급된 인증서의 유효성(폐기) 여부를 실시간 검증하여 폐지 및 정지된 인증서에 대한 정보를 실시간으로 제공하는 서비스

- 인증서가 유효한지 1분마다 체크

 

[출처] 한국전자인증(https://www.crosscert.com/solution/03_1_05.jsp)

 

 

# CRL (Certificate Revocation List)

- 인증서 폐기목록 리스트

- 인증서가 유효한지 12~48시간 마다 체크

 

# LDAP

- 조직이나 개체 그리고 인터넷이나 기업 내의 인트라넷 등 네트워크 상에 있는 파일이나 장치들과 같은 자원 등의 위치를 찾을 수 있게 해주는 프로토콜

 

#. 인증의 3요소 (암기시 .부.인)

- 무결성, 부인방지, 인증

반응형

'Development > Security' 카테고리의 다른 글

[Security] 대칭키 암복호화  (0) 2019.09.22
[Security] Proguard 사용시 파일 목록과 내용  (0) 2019.09.22
[Security] Base64 정리  (0) 2019.09.09
[Security] 전자서명  (0) 2019.09.05
[Security] 공개키 인증서  (0) 2019.09.04
반응형

이번 포스팅은 Android에서 키보드가 뷰 레이아웃에 영향 주지 않게 하는 방법에 대하여 알아보도록 하겠습니다.

 

화면에서 어떠한 정보를 입력하기 위해 우리는 소프트웨어 키보드가 화면 하단에서 상단으로 업로드가 되며 데이터를 입력할 수 있습니다.

 

이때 키보드가 위로 업로드되면서 기존에 화면에 있던 레이아웃들이 영향을 받게 되는 경우가 있습니다.

 

예를 들어 기존에 화면에 있던 레이아웃이 layout_weight로 구성이 되어 있다면 키보드가 위로 업로드되면서 기존에 화면에 있던 레이아웃들은 정한 layout_weight 값에 따라 화면이 조정이 됩니다.

 

하지만, 키보드가 업로드되면서 기존에 화면에 있던 레이아웃에 영향을 주지 않고 싶을 땐 어떻게 할까요?

 

바로 AndroidMenifest.xml에서 해당 Activity 정보에 windowsoftInputMode 설정을 재정의 해주면 됩니다.

 

 

# adjustNothing




  <activity name = ".InputActivity"
    activity android: windowsoftInputMode = "adjustNothing"
           ......
    />

 

위와 같이 adjustNothing을 설정해주면 '화면에서 어떠한 것도 조정하지 않는다'는 의미로 기존에 화면에 있던 레이아웃을 건들지 않고 키보드만 위로 업로드가 됩니다.

 

참고) 이와 반대로 적용을 하고 싶다면 adjust 속성으로 변경하시면 adjustNothing과 정반대로 작동을 합니다.

 



 주의) adjustNothing 적용 시 키보드가 화면을 가릴 수 있습니다.


          이 점은 적용시 주의해야 합니다.

 

 

# adjustResize




   <activity name = ".InputActivity"
    activity android: windowsoftInputMode = "adjustResize"
           ......
    /> 

 

위와 같이 adjustResize을 설정해주면 '화면에서 키보드가 올라와도 EditText와 UI가 화면에 보이도록 Activity를 resize 한다.'라는 의미입니다.

 

따라서 스크롤이 적용되어 키보드가 가린 부분을 화면을 아래로 밀어 내리면서 사용자가 볼 수 있습니다.

 

반응형
반응형

이번 포스팅은 Oracle Listener에 대하여 하도록 하겠습니다.

Oracle Listener는 네트워크를 이용하여 클라이언트에서 오라클 서버로 연결하기 위한 오라클 네트워크 관리자입니다.

네트워크를 통한 연결은 모두 리스너가 담당하며 리스너와 연결되기 위해서는 클라이언트에 오라클이 설치되어 있고 이를 통해 오라클 서비스명이라는 것을 만들어 접속을 해야 합니다.

오라클 서버에서 리스너를 가동해 주어야 클라이언트에서 접속을 할 수 있습니다.

lsnrctl 명령어로 리스너를 관리할 수 있습니다.

 

<WINDOWS CMD 콘솔 명령>

C:\>lsnrctl help => 도움말

C:\>lsnrctl status => 현재 상태

C:\>lsnrctl start => 시작

C:\>lsnrctl stop => 중지

C:\>lsnrctl reload =>재시작

C:\>lsnrctl => 관리 모드 재실행

 

<관련 파일>

listener.ora / tnsnames.ora

 

만약 제가 서버라면 두 개의 파일이 모두 있고,

                클라이언트라면 tnsnames.ora 파일만 있는 것을 확인할 수 있습니다.

반응형

'Development > DB' 카테고리의 다른 글

[DB] SQL의 기본과 활용 - 2  (0) 2022.09.02
[DB] SQL의 기본과 활용 - 1  (0) 2022.08.31
[DB] DB Sequence 생성과 삭제  (0) 2020.04.08
[DB] ROWNUM과 ROWID  (0) 2020.04.08
[DB] ORACLE DB 사용자 계정 패스워드 없애는 방법  (0) 2020.04.08
반응형

1. SEQUENCE의 정의

- 지정된 수치로 증가하거나 감소시키는 일종의 번호표.

- 최대 15개까지는 생성 가능합니다.

 

2. SEQUENCE의 생성

- CREATE SEQUENCE 생성할 시퀀스 이름

- [INCREMENT BY 정수]

  > INCREMENT BY 정수는 SEQUENCE 번호 간의 증가치입니다, 생각하면 SEQUENCE는 1씩 증가

- [START WITH 정수]

  > START WITH 정수는 생성되는 첫 번째 SEQUENCE 번호 

- [MAXVALUE 정수 OR NOMAXVALUE]

  > MAXVALUE 정수는 생성 가능한 SEQUENCE의 최대값 (기본값 38)

- [MINVALUE 정수 OR NOMINVALUE]

  > MINVALUE 정수는 생성 가능한 SEQUENCE의 최소값

- [CACHE 정수 OR NOCACHE]

  > CACHE 정수 OR NOCHACHE는 오라클 서버가 미리 지정하고 메모리에 유지할 값의 수 (기본값 20)

 

예) 테이블에 INSERT 할 때 사용

SQL> INSERT INTO (USERID, USERNAME) VALUES(생성한 시퀀스 이름. NEXTVAL, '은스타');

예) 30부터 시작해서 2씩 증가하고 범위가 100까지인 SEQUENCE 생성

CREATE SEQUENCE MEMBER_SEQ

INCREMENT BY 2

START WITH 30

MAXVALUE 100

 

3. SEQUENCE 수정

ALTER SEQUENCE 수정할 시퀀스 이름

[INCREMENT BY 정수]

[MAXVALUE 정수 OR NOMAXVALUE]

[MINVALUE 정수 OR NOMINVALUE]

[CACHE 정수 OR NOCACHE]

 

본인의 SEQUENCE 이거나 SEQUENCE ALTER 권한이 있을 때만 수정이 가능합니다.

아직 생성되지 않은 SEQUENCE만이 ALTER SEQUENCE 명령에 영향을 받습니다.

유효성 검사를 하게 됩니다. 

 

예를 들어 새로운 MAXVALUE는 현재의 SEQUENCE보다 커야 합니다.

START WITH 옵션은 ALTER SEQUENCE를 써서 변경할 수 없습니다.

다른 번호에서 다시 시작하려면 이전 SEQUENCE를 삭제하고 다시 생성해야 합니다.

 

4. SEQUENCE 삭제

DROP SEQUENCE 삭제할 시퀀스 이름

반응형

'Development > DB' 카테고리의 다른 글

[DB] SQL의 기본과 활용 - 1  (0) 2022.08.31
[DB] Oracle Listener  (0) 2020.04.08
[DB] ROWNUM과 ROWID  (0) 2020.04.08
[DB] ORACLE DB 사용자 계정 패스워드 없애는 방법  (0) 2020.04.08
[DB] ORACLE DB SYSTEM, SYS 암호 변경  (0) 2020.04.08
반응형

#1. ROWNUM

1) ROWNUM은 쿼리의 결과로 나오게 되는 각각의 ROW들에 대하여 순서 값을 가리키는 의사 칼럼

예) SELECT USERID, USERNAME, ROWNUM

      FROM MEMBERS

      WHERE ROWNUM <= 10

 

#2. ROWID

1) ROWID는 테이블에 저장된 각각의 ROW들이 저장된 주소 값을 가진 의사 칼럼.

2) 모든 테이블의 모든 ROW들은 오직 자신만의 유일한 ROWID값을 갖고 있다고 할 수 있음.

3) 어떤 ROW라도 ROWID로 식별할 수 있다는 의미

4) ROWID의 특징

  - 단일 ROW에 접근하는 가장 빠른 수단

  - 테이블에 ROW들이 어떻게 저장되는지를 보여줍니다.

  - 한 테이블에서 ROWID 값은 유일한(UNIQUE) 값.

반응형

+ Recent posts