[211207] 교육 37일차

oxllz·2022년 2월 14일
0

교육

목록 보기
25/41

기본키

CREATE TABLE temp_03T (
	no INT NOT NULL auto_increment PRIMARY KEY ,
	data VARCHAR(20) NULL 
);


INSERT INTO temp_03T VALUES ( default, '애플' );
INSERT INTO temp_03T VALUES ( default, '애플' );
INSERT INTO temp_03T VALUES ( default, '애플' );

SELECT * FROM temp_03T;
nodata
1애플
2애플
3애플

auto_increment PRIMARY KEY : 자동 일련번호 지정, 입력시에 default 를 이용


DELETE FROM temp_03T WHERE no = 2;
SELECT * FROM temp_03T;
nodata
1애플
3애플

부여된 일련번호중에 도중에 삭제되는 레코드가 생겨도 비어있는 번호를 채우는 일을 벌어지지 않는다.


auto_increment : 자동증가 일련번호

PRIMARY KEY

레코드와 레코드를 구분하는 기준이 되는 필드
1. NOT NULL - 생략불가
2. NO DUPLICATED - 중복불가
3. NO CHANGE - 변경불가


NULL

INSERT INTO temp_03T VALUES ( default, NULL );
  • 'NULL' 주의 ( NULL / "NULL" )

NULL 비교

SELECT * FROM temp_03T WHERE data = NULL; (X)
SELECT * FROM temp_03T WHERE data IS NULL; (0)
  • NULL 과 비교하는 경우에는 = 아닌 IS 를 쓴다.

CREATE TABLE temp_04T (
	data VARCHAR(20) NOT NULL,
	data2 VARCHAR(20) NULL
);
INSERT INTO temp_04T VALUES ('애플','애플');
INSERT INTO temp_04T VALUES ('애플',NULL); -- OK
INSERT INTO temp_04T VALUES (NULL,'애플'); -- 에러
  • NOT NULL 로 지정된 필드는 입력시 NULL 값을 허용 안함

외래키

다른 테이블에서 지정된 PK를 내 쪽에서 참조하여 사용하는 필드

"PK를 가지고 있다는 것은 그 PK를 중심으로
하나의 테이블을 구성하고 있는 경우가 대부분이 된다"
: 엔티티 ( Entity ) 라고 한다.


Entity

Entity 의 개념
1. 추상명사에 해당한다
2. 단일한 성격의 PK 를 가지고 있고
3. 2개 이상의 속성으로 표현되어야 한다.

속성

엔티티에 종속되어 엔티티를 표현

관계

  1. 일대일 관계 : 이건 Be 동사에 해당하는 경우. - 보류

  2. 일대다 관계
    하나의 회원은 여러개의 게시글을 작성한다 ( O )
    하나의 게시글은 여러 회원에 의해서 작성된다 ( X )
    하나의 게시글은 하나의 회원에 의해서 작성된다 ( O )
    "물리적으로 구현시 다 쪽에서 1 쪽의 PK 를 FK로 참조하는 형태로 구현한다."

  3. 다대다 관계
    하나의 회원은 여러 게시글을 추천한다 ( O )
    하나의 게시글은 여러 회원에 의해 추천된다 ( O ) "물리적으로 구현시 양쪽의 PK 를 조합한 필드를 PK로 갖는 새로운 테이블을 만들어서 구현한다."

ALTER

ALTER TABLE User_FT DROP active;

  • active 컬럼을 삭제

ALTER TABLE User_FT CHANGE pwd passwd CHAR(4);

  • pwd 컬럼의 이름을 passwd 로 변경, 같이 자료형도 CHAR(4)로 변경

ALTER TABLE User_FT MODIFY phone CHAR(4);

  • phone 필드의 자료형을 VARCHAR(20) 에서 CHAR(4) 로 변경

ALTER TABLE User_FT RENAME User_GT;
-- User_FT 테이블 이름을 User_GT 로 바꿈


문자열 처리

SELECT stId, SUBSTR(name,1,2) FROM StudentT;

SELECT stId, LENGTH(name) FROM StudentT;

  • 문자열 길이. UTF-8 에선 한글 한글자 3글자 취급

SELECT stId, REVERSE(name) FROM StudentT;

SELECT stId, CONCAT(name,'***') FROM StudentT;

  • 문자열 이어붙이기

SELECT CONCAT( name, addr ) FROM StudentT;
SELECT CONCAT( name, ":", addr ) FROM StudentT;

  • 문자열끼리 합치기

서브쿼리

하나의 문장이 동작한 결과물을 이용해 다른 문장이 연속해서 동작하는 문장

SELECT * FROM ScoreT WHERE subId = 'KOR1' and stId 
IN ( SELECT stId FROM StudentT WHERE addr LIKE '%역삼%' )

여러 검색 결과를 이용할 때는 IN/ NOT IN
유일한 검색 결과를 이용할 때는 부등호( <=, = , >=)

AGGREGATE FUNCTIONS

  • 통계처리되어 유일한 결과를 보여준다.
    (WHERE, SELECT, FROM 절에서 사용)
  • COUNT
  • MIN / MAX
  • AVG
  • SUM

0개의 댓글