DBMS - Day5 COUNT, FOREIGN KEY

김지원·2022년 6월 15일
0

DBMS

목록 보기
6/17
INSERT INTO `region`.`provinces`(`code`, `name`)
VALUES ('02', '서울'),
       ('031', '경기'),
       ('032', '인천'),
       ('033', '강원'),
       ('041', '충청남'),
       ('042', '대전'),
       ('043', '충북'),
       ('044', '세종'),
       ('051', '부산'),
       ('052', '울산'),
       ('053', '대구'),
       ('054', '경상북'),
       ('055', '경상남'),
       ('061', '전라남'),
       ('062', '광주'),
       ('063', '전라북'),
       ('064', '제주');

SELECT `code`,`name`,1 FROM `region`.`provinces`
ORDER BY `code`;

  • 시/도의 갯수만큼 1이 찍힌다.

반환되는 레코드의 갯수를 셀 때 사용하는 함수

COUNT(x)

: x의 개수를 반환한다.

  • x는 열(Column)이거나 리터럴(Literal= 문자그대로의)일 수 있음.

Literal

num = 5
print(num) => 이거는 값을 준 것이다.
sout(5) => 이거는 리터럴을 준 것이다.
SELECT COUNT(`code`) FROM `region`.`provinces`
ORDER BY `code`;

  • code자리에 1을 넣어도 17이 나오게 된다.
SELECT COUNT(0) FROM `region`.`provinces`
WHERE `name` ='대구'
ORDER BY `code`;

LIKE y : x가 y의 형태를 가진('모든'을 표시하기 위해 % 사용) 이때 y는 문자열 취급

SELECT `code`,`name` FROM `region`.`provinces`
WHERE `name` LIKE '%남'
ORDER BY `code`;

  • %가 하나의 것을 의미하는 것은 아니다.
  • 보통 웹개발에서 검색기능을 구현할 때 사용한다.

무결성을 지켜주기위해서 사용하는 키

  • 무결성 제약 조건이란
    데이터 베이스에 저장된 데이터의 정확성을 보장하기 위해 정확하지 않은 데이터가 데이터베이스 내에 저장되는것을 방지하기 위한 제약 조건

제약조건

FOREIGN KEY ( 외래키 )

CONSTRAINT FOREIGN KEY ( `< 이름>`,...) 
REFERENCES `스키마`.`테이블` (`<참고 >,....`)
  • 단, 외래키가 걸리는 참고 열 은 기본키이거나 UNIQUE이어야 한다.
  • 그리고 <대상 열><참고 열>은 타입이 같아야 한다.
 CONSTRAINT FOREIGN KEY (`province_index`) REFERENCES `region`.`provinces` (`index`)

해석 = province_index은 region.provinces 의 테이블에 있는 index의 값만 들어올 수 있다.

CONSTRAINT UNIQUE (`year`,`province_index`)
=> 따로 UNIQUE를 걸어주면 안되고 같이 걸어줘야한다. 각각의 값은 중복해서 들어올 수 있기 때문이다. 세트일 때만 중복이면 안된다.


CREATE TABLE `region`.`pops`
(
    `index`          INT UNSIGNED     NOT NULL AUTO_INCREMENT,
    `year`           YEAR             NOT NULL,
    `province_index` TINYINT UNSIGNED NOT NULL,
    `pop`            INT UNSIGNED,
    CONSTRAINT PRIMARY KEY (`index`),
    CONSTRAINT UNIQUE  (`year`,`province_index`),
    CONSTRAINT FOREIGN KEY (`province_index`) REFERENCES `region`.`provinces` (`index`)
);
INSERT INTO `region`.`pops`( `year`, `province_index`, `pop`)
VALUES
    ('2019',1,10010983),
    ('2019',9,3466563),
    ('2019',11,2468222),
    ('2019',3,3029285),
    ('2019',15,1480293),
    ('2019',6,1493979),
    ('2019',10,1168469),
    ('2019',8,346275),
    ('2019',2,13653984),
    ('2019',4,1560571),
    ('2019',7,1640721),
    ('2019',5,2194384),
    ('2019',16,1851991),
    ('2019',14,1903383),
    ('2019',12,2723955),
    ('2019',13,3438676),
    ('2019',17,696657);

INSERT INTO `region`.`pops`(`year`, `province_index`, `pop`)
VALUES
    ('2020',1,9911088),
    ('2020',9,3438710),
    ('2020',11,2446144),
    ('2020',3,3010476),
    ('2020',15,1471385),
    ('2020',6,1480777),
    ('2020',10,1153901),
    ('2020',8,360907),
    ('2020',2,13807158),
    ('2020',4,1560172),
    ('2020',7,1637897),
    ('2020',5,2185575),
    ('2020',16,1835392),
    ('2020',14,1884455),
    ('2020',12,2691891),
    ('2020',13,3407455),
    ('2020',17,697578);

INSERT INTO `region`.`pops`(`year`, `province_index`, `pop`)
VALUES
    ('2021',1,9736027),
    ('2021',9,3396109),
    ('2021',11,2412642),
    ('2021',3,3014739),
    ('2021',15,1462545),
    ('2021',6,1469543),
    ('2021',10,1138419),
    ('2021',8,376779),
    ('2021',2,13925862),
    ('2021',4,1555876),
    ('2021',7,1633472),
    ('2021',5,2181835),
    ('2021',16,1817186),
    ('2021',14,1865459),
    ('2021',12,2677709),
    ('2021',13,3377331),
    ('2021',17,697476);
profile
Software Developer : -)

0개의 댓글