-
230109_9일차 : 데이터베이스 / 자바스인개 데이터디자인(12.28-06.23)/기본진도 2023. 1. 9. 17:39
1교시 - 데이터베이스 : ORDER BY(ORDER BY 문법, ORDER BY 원리, ORDER BY 사용방식)
1.ORDER BY - ORDER BY 문법
① 개념 : 특정컬럼을 기준으로 데이터를 오름차순(ASC-기본설정)/내림차순(DESC) 정렬한다.
+ 내림차순 정렬시, 오라클에서는 null을 제일 큰값으로 여겨 가장 위에 나오게 되고, msSQL에서는 null을 가장 작은 값으로 여겨 오름차순 정렬시 가장 위에 나오게됨. => 해결방법 : IS NOT NULL
② 추가 : 여러컬럼도 사용하며, 정렬시 컬럼기재 순서대로 진행한다.
(아래예시 - 우선적으로 부서ID를 기준하고, 다음으로 이름을 기준해서는 내림차순으로 진행된다.)
2. ORDER BY - ORDER BY 원리 :
① SELECT에 입력되지 않은 컬럼도 사용할 수 있다.
- 왜 ? FROM에서 데이터를 가져올 때 "튜플"을 기준으로 가져오고, 그 중 출력하려는 컬럼을 SELECT에 적는 것으로 이미 모든 컬럼을 가져온 상태이다. 즉 SELECT에 입력되지 않은 컬럼도 ORDER BY에 입력이 가능하다.
② 단 GROPU BY가 명시된 경우, GROUP BY에 의해 한정된 컬럼만 사용할 수 있다.
- 왜 ? GROUP BY에 특정컬럼으로 그룹화가 되면, 사용가능한 컬럼에 제약이 생긴다. 이유는 ORDER BY가 GROUP BY -> HAVING -> SELECT -> ORDER BY로 실행되기 때문이다.
3. ORDER BY - ORDER BY 사용방식 : 컬럼이름 외에 AS명칭이나 숫자로도 표현이 가능하다.
+ 실무TIP : 실무에서는 가독성이 떨어지므로 숫자표현방법은 사용하지 않음.
2교시, 3교시 - 데이터베이스 : DML(DML이란?, DML문법, DML실습)
1. DML - DML이란? Data Manipulation Language(데이터 조작어)라는 의미로, 테이블에 원하는 데이터를 입력/수정/삭제한다.
2. DML - DML 문법
① INSERT
- 개념 : 테이블에 새로운 데이터를 튜플(행)단위로 입력한다.
+ 주의 : 괄호 열고 닫기 / 첫 컬럼 앞에는 콤마가 없다 / 첫 입력값에는 콤마가 없다.
+ 테이블 컬럼확인하기 : 테이블명('직원')을 치고 드래그하여, shift + F4
- 에러 CASE
1) 식별자에 NULL을 입력한 경우
2) 자료형에 맞지 않은 입력값을 넣은 경우
3) NOT NULL인 컬럼에 NULL을 넣은 경우
4) '식별자 컬럼'에 중복 값을 넣으려는 경우
+ INSERT시, 입력하지 않은 컬럼(NULLABLE 한 컬럼만)은 자동으로 NULL이 입력된다.
5) 컬럼리스트와 입력값의 개수가 다른 경우
+ 컬럼리스트를 쓰지않아도 INSERT 가능하다(단 모든 VALUES를 넣어야한다). 단 실무에서 권장하지 않는다
② UPDATE
- 개념 : 테이블에 있는 기존의 데이터를 변경한다.
+ 변경할 컬럼과 값을 SET 뒤에 "="로 입력하여 데이터를 수정하며, 여러 컬럼의 값을 동시에 수정할 수 있다.
+ WHERE절에 바꾸고 싶은 행의 조건을 입력할 수 있으며, 따로 입력하지 않으면 모든 행의 데이터가 변경된다.
+ ROLLBACK; : 실행되기전 상태로 되돌림.
COMMIT : 영구적으로 반영하기위함.
③ DELETE
- 개념 : 테이블에 존재하는 데이터를 튜플(행)단위로 삭제한다.
+ WHERE 뒤에 삭제할 행 조건을 입력한다. 그렇지않으면 모든 행이 삭제된다.
+ COMMIT 전에는 데이터를 원상복구 할 수 있다.
+ DELETE 의 경우 조건에 맞는 행이 없으면 '0행이 삭제되었습니다' 라고 출력되고 오류를 발생시키지는 않습니다. (즉, 정상케이스입니다)
3. DML - DML 실습 (문제 11개)
4교시 - 데이터베이스 : DDL(DDL이란?, 테이블생성하기, 제약조건)
1. DDL - DDL이란? 테이블과 같은 객체를 생성/수정/삭제 할 수 있다.
2. DDL - 테이블 생성하기
- CREATE : 새로운 객체(OBJECT)를 생성할 때 사용하는 명령어
- 테이블 생성 전에 필요한 자료형
① VARCHAR2(n)
+ 2 ? 오라클에서 VARCHAR(n)를 다른용도로 쓰기위해 구분지음
② NUMBER(n,m)
+ number(5) => 0~99999(숫자를 다섯자리까지) , 실수도 들어간다(5자리이내라면 - 1.25 등)
③ DATE
+TIMESTAMP는 중복방지용으로 많이 사용된다.
- 테이블 생성 문법 ( 컬럼명과 자료형은 필수 / DEFAULT, NULL여부는 필수아님)
+ DEFAULT : 기본값. 기본값을 설정하지 않으면, NULL값이 들어감.
+ NULL 여부 : NULL값을 넣게할지 말지를 선택한다. 설정하지않으면 NULL값이 들어갈수 있게함.
- 테이블 생성시 이름규칙 주의사항
- 실습
우측과 같이 3번 INSERT 실행 3. DDL - 제약조건
- 개념 : 테이블에 입력 가능한 데이터를 조건으로 제약하는 것이다.
- 종류
① PRIMARY KEY (PK) : NOT NULL + UNIQUE
=> 식별자 규칙을 물리적 모델링한 것으로 NULL값 입력불가, 중복 불가의 특징을 가진다. 특정컬럼을 식별자로 만들면 자동으로 NOT NULL + UNIQUE 성질로 바뀐다.
+ 식별자 : 테이블에서 각각의 튜플을 유일하게 식별하는 컬럼
+ 제약조건명 : 원하는대로 이름지어도 되지만, 협력해서 작업하므로 위와 같이 사용하는 것이 좋다.
+ CREATE 할 때, 해당 컬럼뒤에 PRIMARY KEY 를 추가하면 1개만 설정이 가능하고
/ CREATE 할 때, 아래에서 CONSTRAINT 제약조건명 PRIMARY KEY(000, 000) 로 2개이상 넣을수 있다.
② UNIQUE KEY (UK) : UNIQUE
=> PRIMARY KEY와는 다르게 NULL 값을 입력할 수 있게하며, 중복은 불가하다.
③ NOT NULL : NULL값이 들어오지 않게 한다. ( 이 데이터는 꼭 입력되어야 하는 경우)
④ CHECK : 특정 컬럼에 데이터를 입력할 때 지정한 데이터만 입력할 수 있도록 한다.
⑤ FOREIGN KEY (FK) : 외래키 (정규화로 쪼개진 대상들을 연결하기위해 빌려온 식별자)
=> 테이블끼리 연결되어 있는 관계를 물리적 모델링 한것으로, FK를 설정하면 무결성을 지원
+ 실무에서는 많이 사용되지 않는다. (데이터를 빡세게 관리하는 경우, 많이 사용)
- 문제
+ 회원정보 테이블의 '회원ID'와 일치하는 정보가 없으므로('zzz'없음) => 무결성 제약조건위배로 오류.
(부모한테 없으면, 자식이 입력 불가 / 부모에서 삭제하려해도, 자식이 있으면 부모에서 삭제불가)
5교시 - JAVA : 배열(예제⑥⑦/랜덤기능(Random))
1.예제⑥⑦ -배열
+ 랜덤 기능 (반드시 import해야한다)
6교시,7교시,8교시 - JAVA : 배열(2차원 배열 / 예제①②③④-2차원배열)
1.배열 - 이차원배열
- 개념 : 1차원 배열안에 1차원 배열이 들어가있는 것(방안에 방)
- 이차원 배열 선언 : 자료형[][] 배열명 = new 자료형[(행)크기][(열)크기];
+ 이차원 배열의 주소값
- 이차원 배열에 데이터값 저장하기/확인하기
왼쪽은 num을 이용하여 순차적으로 1부터 25까지 저장한다 + \t : 일정간격으로 출력시키기
2. 예제①②③④-이차원배열
- 예제1
▲ 넣을때는 순서대로 num이 1씩 증가하도록 j, i => 0,0 / 0,1 / 0,2.. 설정하고,
출력할때는 그 출력의 순서를 바꾸어 i, j => 0,0 / 1,0 / 2,0..과 같이 처음 j와i의 순서를 뒤바꾼다.
◀반대의 방법도 있다.
- 예제 2
+ 넣을 때의 수는 21부터 순차적으로 인덱스값을 헤아리면, 0.4 > 0.3 > 0.2 . 0.1 > 0.0 > 1.4 > 1.3 ... 순서이므로. 바깥의 j는 그대로 두고 i는 내부에서 4부터 0까지 순차적으로 빠지게 만들어주면 된다. 출력시에는 원래대로 0.0부터 출력되게 해주면 됨.
- 예제 3
+ 넣을 때의 수는 21부터 순차적으로 인덱스값을 헤아리면, 0.4 > 1.4 > 2.4 > 3.4 > 4.4 > 0.3 > 1.3 ... 순서이므로. 바깥의 j는 4부터 0까지 순차적으로 빠지게 만들어주고, 내부의 i는 순차적으로 0->4로 올라가게 두면 된다. 그리고 arr[ j ][ i ]의 순서를 반대로 바꿔야한다. 출력시에는 원래대로 0.0부터 출력되게 해주면 됨.
- 예제4
+ 넣을 때의 수는 21부터 순차적으로 인덱스값을 헤아리면, 4.4 > 3.4 > 2.4 > 1.4 > 0.4 > 4.3 > 3.3 ... 순서이므로. 바깥의 j는 4부터 0까지 순차적으로 빠지게 만들어주고, 내부의 i도 4부터 0까지 순차적으로 빠지게 두면 된다. 그리고 arr[ j ][ i ]의 순서를 반대로 바꿔야한다.출력시에는 원래대로 0.0부터 출력되게 해주면 됨.
'스인개 데이터디자인(12.28-06.23) > 기본진도' 카테고리의 다른 글
230111_11일차 : 데이터베이스 / 자바 (0) 2023.01.11 230110_10일차 : 데이터베이스 / 자바 (0) 2023.01.10 깃헙특강3 (0) 2023.01.07 230106_8일차 : 데이터베이스 / 자바 (0) 2023.01.06 230105_7일차 : 데이터베이스 / 자바 (0) 2023.01.05