01. Java
02. git
03. Database (v)
04. Jsp [Server]
05. 미니프로젝트 (3W)
06. HTML,CSS
07. JS
08. SpringFramework , SrpingBoot
09. React JS [Front-end]
10. 중간프로젝트 (1M)
11. Linux 명령어
12. AWS 클라우드
13. DevOps - Docker
14. App - Android
15. 최종프로젝트 (1M)
- 개체(Object) or 관계(relation)의 집합
- 관계에 가해지는 연산자의 집합
- 정확성과 일관성을 위한 데이터 무결성
- 관계형 데이터베이스는 SQL문을 사용해 이용되고 수정
- 데이터베이스로부터 데이터를 조회, 삭제, 수정, 변경하는 등의 작업을 수행할 때 사용하는 언어
장점
- 조직에 대한 정보를 정확하고 자세하게 문서화
- 정보 요구사항의 범위를 명확히 기술
- 데이터베이스 설계를 쉽게 이해할 수 있는 표본 제공
- 복수 응용프로그램의 통합화를 위한 효과적 프레임워크 제공
일반적 개념 | 모델링 | DB객체 |
---|---|---|
데이터집합, ralation, 관계집합 | 개체집합, 엔티티 | 테이블 |
행 | 튜플 | 레코드 |
열 | 속성 | 필드 |
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
- 주어진 릴레이션에서 모든 인스턴스 가운데 유일함(Unique)을 보장해주는 하나 이상의 속성의 집합으로, 식별자라고도 함
- 유일성(Uniqueness) : 하나의 키 값으로 튜플을 유일하게 식별할 수 있는 성질
- 최소성(Minimality) : 키를 구성하는 속성들 중 꼭 필요한 최소한의 속성들로만 키를 구성하는 성질을 의미
- 후보키는 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들
- 모든 릴레이션은 반드시 하나 이상의 후보키를 가져야함
- 릴레이션에 있는 모든 튜플에 대해서 유일성과 최소성을 만족
- 후보키 중에서 특별히 선정된 주키이며, 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성
- 중복된 값을 가질 수 없으며, NULL 값을 가질 수 없음
- 후보키의 성질을 만족
- 후보키가 둘 이상이었을 때 기본키를 제외한 나머지 후보키들
- 보조키라고도 함
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 릴레이션을 구성하는 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값을 나타내지는 않음
- 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족하지만, 최소성은 만족시키지 못함
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 참조되는 릴레이션의 기본키와 대응되어 릴레이션 간에 참조 관계를 표현하는데 중요한 도구로 사용
- 외래키로 지정되면 참조 테이블의 기본키에 없는 값은 입력할 수 없음
- CREATE : 테이블 생성 >>
>> CREATE TABLE [테이블명]( >> 속성이름 데이터타입 [NOT NULL] [UNIQUE] [DEFAULT 기본값] [CHECK 체크조건], >> [PRIMARY KEY 속성명], >> [FOREIGN KEY 속성명 REFERENCES 테이블명(속성명)], >> [ON UPDATE <NO ACTION|CASCADE|SET NULL|SET DEFAULT>], >> [ON DELETE <NO ACTION|CASCADE|SET NULL|SET DEFAULT>] >> ); >>
- 예시
CREATE TABLE NEWORDERS( ORDERID INT, CUSTID INT NOT NULL, BOOKID INT NOT NULL, SALEPRICE INT DEFAULT 100000 CHECK(PRICE>1000), PRIMARY KEY(ORDERID), FOREIGN KEY(CUSTID) REFERENCES NEWCUSTOMER(CUSTID) ON DELETE CASCADE );
- ALTER : 테이블 변경
ALTER TABLE [테이블명] [ADD 속성명 데이터타입] [DROP COLUMN 속성명] [ALTER COLUMN 속성명 데이터타입] [ALTER COLUMN 속성이름 <NULL/NOT NULL>] [ADD PRIMARY KEY(속성명)];
- DROP : 테이블 제거
DROP TALBE [테이블명]
- RENAME : 이름 변경
- TRUNCATE : 구조만 남기고 모든 데이터 삭제
- SELECT : 데이터 조회
SELECT [속성명] FROM [테이블명]
- INSERT : 새로운 데이터 추가
INSERT INTO [테이블명(속성명1,속성명2,...)] VALUES(데이터1,데이터2,...)
- UPDATE : 기존의 데이터 변경
UPDATE [테이블명] SET [속성명 = 변경할 데이터] WHERE [조건]
- DELETE : 데이터 제거
DELETE FROM [테이블명] WHERE [조건]
- GRANT : 권한 부여
GRANT [권한] ON [테이블명] TO [사용자 이름]
- REVOKE : 권한 제거
REVOKE [권한] ON [테이블명] FROM [사용자이름]
- COMMIT : 변경된 설정을 적용함
- ROLLBACK : 설정해준 세이브 포인트로 상태를 되돌림
- SAVEPOINT : 세이브포인트 지점 설정
SELECT [DISTINCT] {*|COLUMN [[AS] ALIAS], ...} FROM TABLE;
- SELECT: 하나 이상의 열 나열
- DISTINCT: 중복 제거
- *: 모든 열 선택
- COLUMN : 명명된 열 선택
- AS : 열 별칭(ALIAS) 지정
- ALIAS : 선택된 열을 다른 이름으로 변경
- FROM TABLE : 열을 포함하는 테이블 명시
- SQL문장은 대/소문자를 구별하지 않음
- SQL문장은 한 줄 이상일 수 있음
- 키워드는 단축하거나 줄을 나누어 쓸 수 있음
- 절은 대개 줄을 나누어서 씀
- 탭과 들여쓰기는 읽게 쉽게 하기 위해 사용
- 디폴트 데이터 자리 맞춤 지정
- 날짜와 문자 데이터는 왼쪽 정렬
- 숫자 데이터는 오른쪽 정렬
- 디폴트 열은 대문자로 출력
SELECT FIRST_NAME, LAST_NAME, SALARY, SALARY+SALARY*0.1 FROM EMPLOYEES;
- 곱하기와 나누기는 더하기와 뺴기보다 우선순위가 높음
- 같은 우선순위의 연산자는 좌측에서 우측으로 계산
- 괄호는 강제로 계산의 우선순위를 바꾸거나 문장을 명료하게 하기 위해 사용
SELECT FIRST_NAME, DEPARTMENT_ID, COMMISSION_PCT FROM EMPLOYEES;
- NULL은 이용할 수 없거나, 지정되지 않았거나, 알 수 없거나 또는 적용할 수 없는 값
- NULL은 숫자 0이나 공백과는 다름름
SELECT FIRST_NAME AS 이름, SALARY 급여 FROM EMPLOYEES;
- 열 헤딩 이름 변경
- 열 이름 바로 뒤에 별칭을 두거나 AS와 함께 쓰이기도 함
- 공백이나 특수문자 또는 대/소문자가 있으면 이중 인용부호(" ")가 필요
SELECT FIRST_NAME || ' ' || LAST_NAME || '''s salary is $' || salary AS "Employee Details" FROM EMPLOYEES;
- SELECT 절에 포함된 리터럴은 문자 표현식 또는 숫자
- 날짜와 문자 리터럴 값은 단일 인용부호(' ') 안에 있어야 함
- 숫자 리터럴은 단일 인용부호(' ')를 사용하지 않음 ||를 이용하면 값을 연결
SELECT DISTINCT DEPARTMENT_ID FROM EMPLOYEES;
- 디폴트 출력은 중복되는 행을 포함하는 모든 행
- SELECT절에서 DISTINCT 키워드를 사용해 중복되는 행을 제거
SELECT ROWID, ROWNUM, EMPLOYEE_ID, FIRST_NAME FROM EMPLOYEES;
- ROWID : 데이터베이스에서 행의 주소 반환
- ROWNUM : 쿼리에 의해 반환되는 행의 번호 출력(데이터가 조회된 순서)
SELECT [DISTINCT] {column1,colum2,... } FROM TABLE [WHERE CONDITIONS]
- WHERE 절을 사용해 리턴되는 행을 제한
- WHERE 절은 FROM 절 다음에 옴
- WHERE 절은 열 이름, 비교 연산자, 그리고 비교할 열 이름 또는 값의 목록으로 구성
- 예시
SELECT FIRST_NAME, JOB_ID, DEPARTMENT_ID FROM EMPLOYEES WHERE JOB_ID='IT_PROG';
- 문자 스트림과 날짜 값은 단일 인용부호('')로 둘러쌓여 있으
- 문자 값은 대/소문자를 구분하고, 날짜 값은 날짜 형식을 구분
- 디폴트 날짜 형식은 'DD-MM-YY'
연산자 | 설명 |
---|---|
= | 같다 |
> | 보다 크다 |
>= | 보다 크거나 같다 |
< | 보다 작다 |
<= | 보다 작거나 같다 |
<> | 같지 않다 |
- 값의 범위에 해당하는 행을 출력하기 위해 BETWEEN 연산자를 사용
- 하한 값을 먼저 명시
- 하한 값과 상한 값 모두 포함
SELECT FIRST_NAME, SALARY FROM EMPLOYEES WHERE SALARY BETWEEN 10000 AND 12000;
- 숫자 예시
SELECT EMPLOYEE_ID, FIRST_NAME, SALARY, MANAGER_ID FROM EMPLOYEES WHERE MANAGER_ID IN(101,102,103);
- 문자 예시
SELECT FIRST_NAME, LAST_NAME, JOB_ID, DEPARTMENT_ID FROM EMPLOYEES WHERE JOB_ID IN('IT_fROG','FI_MGR','AD_VP');
- 예시1
SELECT FIRST_NAME, LAST_NAME, JOB_ID, DEPARTMENT_ID FROM EMPLOYEES WHERE JOB_ID LIKE 'IT%';
- 예시2
- 이메일의 두 번쨰 문자가 A인 모든 사원들을 조회
SELECT FIRST_NAME, EMAIL FROM EMPLOYEES WHERE EMAIL LIKE '_A%';
SEELCT FIRST_NAME, MANAGER_ID FROM EMPLOYEES WHERE MANAGER_ID IS NULL;
- AND : 양쪽의 조건이 참이어야 TRUE 리턴
- OR : 한쪽의 조건이 참이면 TRUE 리턴
- NOT : 뒤의 조건에 반대되는 결과 리턴
우선순위 | 연산자 |
---|---|
1 | 모든 비교 연산자 |
2 | NOT |
3 | AND |
4 | OR |
- 예시
- 조건
- JOB_ID가 IT_PROG 이거나 FI_MGR임
- 급여가 6000 이상
SELECT FIRST_NAME, JOB_ID, SALARY FROM EMPLOYEES WHERE (JOB_ID='IT_PROG' OR JOB_ID='FI_MGR') AND SALARY>=6000;
- ASC : 오름차순 정렬 <기본값>
- DESC : 내림차순 정렬
SELECT FIRST_NAME, HIRE_DATE FROM EMPLOYEES ORDER BY HIRE_DATE DESC;
SELECT FIRST_NAME, SALARY*12 AS ANNSAL FROM EMPLOYEES ORDERY BY ANNSAL;