AI 시대를 향유하는 AI 노마더

자바&Springboot플랫폼 과정/MariaDB

ON UPDATE/ALTER/SWITCH 구문 그리고 탄생석서비스

AI노마더 2023. 12. 4. 15:50

 

기본조건
Employee Table   Eboard Table
     
empno ename phone dept   bno title content empno
1 철수 01011111111 영업   1 제목1 내용1 1
2 영희 01022222222 인사   2 제목2 내용2 1
3 철수 01033333333 개발   3 제목3 내용3 2
            제목4 내용4 3
                 

 

 

ON UPDATE CASCADE 구문

  • 외래 키로 설정된 열에 'ON UPDATE CASCADE'를 추가하면 참조되는 테이블의 키 값이 변경될 떄 참조하는 테이블의 관련 행도 같은 값으로 자동 업데이트됩니다. 이는 데이터의 무결성을 유지하는 데 도움이 된다.
  • 여기서 Eboard 테이블은 Employee 테이블의 정보를 받는 의존 테이블이므로, Eboard테이블 생성시에 같이 작성한다.

 

CREATE TABLE employee(
empno INT PRIMARY KEY AUTO_INCREMENT,
ename VARCHAR(20),
phone VARCHAR(13),
dept CHAR(4)
);

CREATE TABLE eboard(
bno INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR (50),
content VARCHAR (100),
empno INT,
FOREIGN KEY (empno) REFERENCES employee(empno)
ON UPDATE CASCADE
);

 

 

ALTER TABLE : 구조 변경

  • ALTER TABLE은 기존의 테이블 구조를 수정하는 데 사용된다. 이 명령어를 사용하여 테이블에 새로운 열을 추가하거나, 기존 열을 삭제하거나 수정하고, 제약 조건을 추가하거나 제거할 수 있다. 
  • 열 추가, 열 수정, 열 삭제, 제약조건 추가/제거 등의 기능을 수행 할수 있다. 

--- 열추가
ALTER TABLE employee
ADD COLUMN address VARCHAR(100);

--- 열 추가후 DEFAULT설정
ALTER TABLE employee
ADD COLUMN nickname VARCHAR(50) DEFAULT '없음';

--- PHONE칼럼 뒤에 열 추가
ALTER TABLE employee
ADD COLUMN birth DATE AFTER phone;

--- BIRTH칼럼 뒤에 열 추가 
ALTER TABLE employee
ADD COLUMN gender INT AFTER birth;

--- 열 수정
ALTER TABLE employee
MODIFY COLUMN gender CHAR(1),
MODIFY COLUMN bith CHAR(10),
MODIFY COLUMN nickname VARCHAR(50) AFTER birth;

--- 칼럼 이름 변경
ALTER TABLE employee
CHANGE birth birthdate DATE;

--- 칼럼 삭제
ALTER TABLE employee
DROP COLUMN nickname;

--- 테이블 이름변경 
ALTER TABLE eboard RENAME tbl_eboard;

---칼럼 속성 추가 (PK)
ALTER TABLE test 
ADD PRIMARY KEY (id);

 

 

 

 


함수

 

SWITCH -CASE 구문

 

switch(sign){	
		case 1: printf("1월의 탄생석은 가넷(Garnet)입니다. \n"); break;
		case 2: printf("2월의 탄생석은 자수정(Amethyst)입니다. \n"); break;
		case 3: printf("3월의 탄생석은 아쿠아마린(Aquamarine), 혈석(Bloodstone)입니다. \n"); break;
		case 4: printf("4월의 탄생석은 다이아몬드(Diamond)입니다. \n"); break;
		case 5: printf("5월의 탄생석은 에메랄드(Emerald)입니다.  \n"); break;
		case 6: printf("6월의 탄생석은 진주(Pearl), 문스톤(Moonstone)입니다.\n"); break;
		case 7: printf("7월의 탄생석은 루비(Ruby)입니다.\n"); break;
		case 8: printf("8월의 탄생석은 페리도트(Peridot),스피넬(Spinel)입니다. \n"); break;
		case 9: printf("9월의 탄생석은 사파이어(Sappahire)입니다.\n"); break;
		case 10: printf("10월의 탄생석은 오팔(Opal), 핑크투어말린(Pink Tourmaline)입니다.\n"); break;
		case 11: printf("11월의 탄생석은 황옥(Topaz), 시트린(Citrine)입니다.\n"); break;
		default: printf("12월의 탄생석은 터키석(Turquoise),청옥(Zircon)입니다.\n");
	}

 

 

 

탄생석을 찾아주는 함수!

 

  • Switch - case 구문을 활용해서 탄생석을 찾아주는 서비스를 완성하시오!
#include <iostream>

void findBirthStone(int sign){

	switch(sign){	
		case 1: printf("1월의 탄생석은 가넷(Garnet)입니다. \n"); break;
		case 2: printf("2월의 탄생석은 자수정(Amethyst)입니다. \n"); break;
		case 3: printf("3월의 탄생석은 아쿠아마린(Aquamarine), 혈석(Bloodstone)입니다. \n"); break;
		case 4: printf("4월의 탄생석은 다이아몬드(Diamond)입니다. \n"); break;
		case 5: printf("5월의 탄생석은 에메랄드(Emerald)입니다.  \n"); break;
		case 6: printf("6월의 탄생석은 진주(Pearl), 문스톤(Moonstone)입니다.\n"); break;
		case 7: printf("7월의 탄생석은 루비(Ruby)입니다.\n"); break;
		case 8: printf("8월의 탄생석은 페리도트(Peridot),스피넬(Spinel)입니다. \n"); break;
		case 9: printf("9월의 탄생석은 사파이어(Sappahire)입니다.\n"); break;
		case 10: printf("10월의 탄생석은 오팔(Opal), 핑크투어말린(Pink Tourmaline)입니다.\n"); break;
		case 11: printf("11월의 탄생석은 황옥(Topaz), 시트린(Citrine)입니다.\n"); break;
		default: printf("12월의 탄생석은 터키석(Turquoise),청옥(Zircon)입니다.\n");
	}
}

int userInput (){
	int sign;
	
	printf("당신의 탄생석을 알려드리죠!\n");
	printf("태어난 월을 입력하세요 >>");
	scanf("%d", &sign);
	
	return sign;
}
	 

int main() {
	int sign; 
	
	sign = userInput();
	findBirthStone(sign);
	
	return 0;
}

 

 

  • 이번에는 Switch-Case구문 대신에 if 구문으로 같은 서비스를 완성하시오
#include <iostream>

void findBirthStone(int sign){

	if (sign == 1){
		printf("1월의 탄생석은 가넷(Garnet)입니다. \n");
	}
	else if (sign == 2){
		printf("2월의 탄생석은 자수정(Amethyst)입니다. \n");
	}
	else if (sign == 3){
		printf("3월의 탄생석은 아쿠아마린(Aquamarine), 혈석(Bloodstone)입니다. \n");
	}
	else if (sign == 4){
		printf("4월의 탄생석은 다이아몬드(Diamond)입니다. \n");
	}
	else if (sign == 5){
		printf("5월의 탄생석은 에메랄드(Emerald)입니다.  \n");
	}	
	else if (sign == 6){
		printf("6월의 탄생석은 진주(Pearl), 문스톤(Moonstone)입니다.\n");
	}
	else if (sign == 7){
		printf("7월의 탄생석은 루비(Ruby)입니다.\n");
	}
	else if (sign == 8){
		printf("8월의 탄생석은 페리도트(Peridot),스피넬(Spinel)입니다. \n");
	}
	else if (sign == 9){
		printf("9월의 탄생석은 사파이어(Sappahire)입니다.\n");
	}
	else if (sign == 10){
		printf("10월의 탄생석은 오팔(Opal), 핑크투어말린(Pink Tourmaline)입니다.\n");
	}
	else if (sign == 11){
		printf("11월의 탄생석은 황옥(Topaz), 시트린(Citrine)입니다.\n");
	}
	else {
		printf("12월의 탄생석은 터키석(Turquoise),청옥(Zircon)입니다.\n");
	}
}

int userInput (){
	int sign;
	
	printf("당신의 탄생석을 알려드리죠!\n");
	printf("태어난 월을 입력하세요 >>");
	scanf("%d", &sign);
	
	return sign;
}
	 

int main() {
	int sign; 
	
	sign = userInput();
	findBirthStone(sign);
	
	return 0;
}

 

 

 

구구단 만들기 

 

  • 중첩 for 구문을 사용하여 구구단을 완성하시오.
int main() {
	int i, b;
	
	for (i = 2 ; i < 10 ; i++ ){
		printf("%d단 \n", i);
		printf("------------------\n");
	
		for (b = 1; b < 10 ; b++){
			printf ("%d * %d = %d입니다.\n", i, b, i*b);
		}	
		
		printf("\n");		
	}
	
	return 0;
}