스키마 = 하나의 데이터베이스

db파일을 추가한 후에

요 버튼을 눌러서 스키마(데이터베이스)를 만든다.

# 스키마, 데이터베이스 > 저장소의 한 단위.
# 한 스키마에 테이블 여러개를 만들어서 사용이 가능하다.
# use 스키마 : 사용할 db 선택

use test;

# 테이블 생성
create table tba(
num integer primary key,
name char(10) not null
);

# insert : 테이블에 한 줄 추가
insert into the values(1, 'aaa');
insert into the values(2, 'bbb');
insert into the values(3, 'ccc');
insert into the values(4, 'ddd');

# 검색
# * 는 '모두'를 의미 
select * from tba;

pk : primary key

fk : 다른테이블을 참조하는 키 (부모테이블에 참조하는 키)

읽기 : 검색

쓰기 : 수정, 삭제

 

* 전체컬럼

특정 컬럼이 보고싶다면 select 뒤에 * 빼고 컬럼명을 입력하면 된다.

쿼리문은 대소문자 구분을 하지 않는다.

세미콜론을 붙여줘야한다.

db시스템이 바뀌어도 큰 맥락은 바뀌지 않는다

데이터베이스 시스템을 사용하는 이유는 데이터를 영구적으로 보관하기 위해서

(파이썬에서의 파일과 같다)

하지만 파일이 불편한 점이 있기 떄문에 db를 쓰겠지?

db시스템은 네트워크 서버로 이루어진다.

이러한 데이터를 여러사람이 네트워크를 통해 접근할 수 있도록 전반적으로 관리하고 사용자의 요청을 들어주는 것이 db관리시스템

저장소다.

테이블단위로 데이터를 분류해서 관리한다. (관계형데이터베이스)

하나의 객체가 가지고 있는 정보를 column마다 넣어주는 것

관계형 데이터베이스는 테이블단위로 관리를 한다.

 

관계의 종류가 포함과 상속뿐

포함(has a) 은 다른 객체를 멤버변수로 소유하는 것

상속관계 (is a) 는 본질. 자신 자체. 멤버 변수나 메서드를 정의하지 않아도 상속받아서 애초부터 가지고 있는 것.

상속을 하는 이유는

1) 코드 재사용을 높이기 위해

2) 다형성 구현

다형성 없어도 구현은 할수있지만 case by case가 많아진다.

3) 인터페이스 기반의 조립형

코드를 짜는 패턴이라는 게 있는데 그게 맞게 해야한다.

 

상속디자인 :

상속이란 기능을 쭉 뽑고 각 기능을 명사화 > 객체 도출 > 공통된 코드를 추출하여 부모클래스로 정의 > 비슷한 클래스들을 상속받아서 정의 

 

상속 정의 :

class Parent:

스크립트 언어이기 떄문에 전체 컴파일 후 실행이 아니라 컴파일하며 실행

앞의 코드에서 부모 객체를 생성하지 않아도 가능.

 

자식클래스 생성자에서 부모클래스 생성자 호출을 꼭 넣어줘야해

상위클래스에 있는 메소드 물려받는다.

 

클래스 구성요소 : 멤버변수(이 객체의 데이터를 담기 위함), 메서드

vo클래스는 객체의 값을 저장하거나 값과 관련된 메서드 기능만 제공하는 역할을 한다.

값 할당은 생성자로 하고, 값 변경/

함수를 묶어주면 패키지

함수는 기능을 만드는 것

리스트와 관련된 기능이라고 하면 리스트에 숫자를 저장하거나 탐색하는 등의 기능

 

전역변수 만드는 법 : 함수 밖에 정의한다 > 여러개 함수가 공통적으로 쓸 변수

지역변수 만드는 법 : 함수 안에 정의한다 > 이 변수를 만든 함수에서만 사용

 

 

파라메터로 받아서 리스트에 저장하거나 > 파라메터도 지역변수의 하나인데 함수 정의할떄 괄호안에 지정하는 것

파라메터 : 함수 실행할 때 필요한 값을 호출할 때 받아오고 싶을 때 사용한다.

함수에 파라메터가 정의되어 있다면 호출할 때 꼭 넣어줘라

 

함수안에서 직접 받을거면 파라미터가 필요없다

파라메터로 받아서 멤버 변수에 받은 값을 할당해서 쓸 거라면 파라메터로 작성 필요

 

input()으로 받는다.

vo : 데이터묶어주는 역할 (값을 묶어주는 것)

mvc : model view control

dto : data transfer

 

멤버변수는 생성자에 만드는게 좋다

전역변수는 어디서든 쓸 수 있는 것

global로 선언한 다음 쓸 수 있다.

변수 값을 바꿔야할떄,,

어떤값에서 바꿔도 저장되기위함

 

객체가 생성되는 것을 카운팅

 

정적메서드 및 정적변수 활용예 > 객체생성없이 클래스에서 제공하는 메서드(기능)를 사용하는 클래스

정적클래스는 우리가 자주 사용하는 기능 위주의 클래스

예외처리

클래스를 만드는 이유는 모델링, 캡슐화

 

캡슐화는 한다는 것은 데이터 타입을 정의하는 것

데이터타입을 정의하는 이유는 파이썬에서 기본으로 제공되는 타입에는 값을 하나씩밖에 담을 수 없기 때문에

코드로 표현하여 모델링하려는 사람이나 사물은 하나의 값으로 표현하는 것이 불가능하다.

 

사이즈가 큰 프로그램을 설계할 때 각각의 기능을 명세화했을 때 도출되는 객체들을 하나의 변수에 담기 위함.

 

 

클래스 타입의 변수를 객체라 한다.

 

타입을 만든다는 것은 클래스를 생성하는 거다.

객체를 생성한다 

타입을 만들고 객체를 생성하는 게 선행되어야 메소드 호출, 값넣기 등이 가능하다.

그렇게 순서대로 해야 메모리가 할당된다.

 

타입정의 > 클래스정의 > 이 순서는 메모리없음 > 디자인타임이라고 부른다.

설계를 먼저 해야해

1) 액터선정 : 이 시스템을 외부에서 사용할 사람이나 시스템

모델링의 객체 : 샘플

샘플을 이용하여 클래스가 만들어진다.

 

멤버변수 

 

 

 

함수정의

def \

기본값을 지정할떄 순서

write = 출력 스트림에 쓰는 함수

외부로 내보내는..

read = 입력 스트림에 저장되어 있는 걸 읽는 함수

 

텍스트는 문자열을 읽는거고 바이너리는 바이너리를 읽는거(이미지/사진)

 

<1>

Quiz.

 

1. a라는 이름의 리스트를 생성. 숫자 1,2,3,4,5로 초기화해서 생성하시오

 

a = []
for i in range(1, 6):
    a. append(i)
print(a)

2. a의 요소를 하나씩 출력

 

for i, j in enumerate(a):
    print (j)


3. a의 인덱스가 2인 요소의 값을 13으로 변경하시오

i =a.index(2)
a[i] = 13
print(a)


4. a의 요소중 짝수만 출력

 

even = []
for i, j in enumerate(a):
    if j % 2 == 0:
        even.append(j)
print(even)

 

5. a의 인덱스가 2인 요소를 삭제하시오

 

del a[2]
print(a)


6. 이름이 b인 2줄 3칸 리스트를 생성. 모두 0으로 초기화해서 생성

 

b = [[0] * 3] * 2
print(b)



7. 0번줄의 2번방 요소를 10으로 변경하고 출력

8. b의 요소를 0번 줄은 [1,2,3], 1번 줄은 [4,5,6]로 변경

9. b의 모든 요소 출력

+ Recent posts