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

자바&Springboot플랫폼 과정/MariaDB

PREPARE/LIMIT/아스키코드/복합조건배열만들기

AI노마더 2023. 12. 5. 18:33

 

PREPARE - EXECUTE 구문

  • 특정 기준에 따라 데이터를 조회할 때 사용합니다. 'students'라는 테이블의 학생들의 키 데이터를 찾는 것을 목표로 합니다. 각 과정은 변수설정(SET) - 쿼리준비 (PREPARE) - 쿼리실행 (EXECUTE) 으로 진행됩니다.

SET @myVal1 = 160;
SET @myVal2 = 170;

PREPARE myQuery
	FROM 'SELECT * FROM students WHERE stu_height BETWEEN ? AND ?';	
	
EXECUTE myQuery USING @myVal1, @myVal2
  • 변수설정 (SET)
    • '@myVal1' = 160' : '@myVal1'이라는 변수에 160이라는 값을 저장합니다.
    • '@myVal2' = 170 : '@myVal2'이라는 변수에 170이라는 값을 저장합니다.
  • 쿼리준비 (PREPARE) 
    • 'myQuery' 라는 이름의 쿼리를 생성합니다. 이 '준비된' 쿼리는 'students' 테이블에서 'stu_height'컬럼이 두개의 물음표 사이의 값에 해당하는 모든 행을 선택합니다. 이 물음표는 매개변수의 역할을 합니다.
  • 쿼리실행 (EXECUTE)
    • 준비된 쿼리를 실행합니다. USING키워드는 쿼리에 실제 값을 지정하는데 사용되고, 여기서 @myVal1과 @myVal2 변수의 값을 매개변수로 사용합니다. 

 

 

LIMIT구문 

  • LIMIT구문은 SQL 쿼리의 결과 집합에서 지정된 수의 레코드만을 반환하도록 하는 데 사용됩니다.
  • 쿼리 결과 중에서 최대 'n'개의 레코드만 반환합니다.

SELECT * FROM students ORDER BY stu_height ASC LIMIT 3;
  • 해당 코드는 Students 테이블에 있는 모든 정보를 stu_height 칼럼의 오름차순으로 정리하고 상위 3개 행만 보여달라는 해석을 할 수 있습니다. 
  • 즉, LIMIT 구문은 대규모 데이터베이스에서 특정 수의 레코드만 빠르게 살펴보고자 할 때, 이 구문을 통해 전체 데이터베이스를 로드하지 않고도 필요한 데이터의 일부분만 효율적으로 접근 할 수 있습니다. 

 

 

 

아스키 코드 (American Standard Code for Information Interchange)

  • 아스키 코드는 문자를 컴퓨터에 표현하는 데 사용되는 코드체계입니다. 아스키코드는 7비트 (0~127)로 구성되어 있으며, 각 코드는 특정 문자나 제어 신호를 나타냅니다. 이 체계에는 대문자와 소문자, 알파벳,숫자, 특수문자 및 일부 제어문자들이 포함됩니다. 
  • 아스키 코드 분류
    • 제어문자 (0~31및 127)
      • 인쇄할 수 없는 제어 신호, 예를 들어 줄 바꿈, 캐리지 리턴등이 여기에 해당합니다. 
    • 인쇄 가능 문자 (32~126)
      • 공백, 알파벳, 숫자, 구두점 및 특수 기호 등 인쇄 및 표시가 가능한 문자들이 여기에 포함됩니다. 

아스키코드 차트

 

함수연습

1부터 10사이의 수 중에 홀수를 출력하시오. 

int main () {
	int i;
	
	for(i = 0; i < 10 ; i++){
		
		if (i % 2 == 0){
			
			continue;
						
		} 
		printf("%d \n", i);
	}
	
	return 0;
}
  • i를 정수자료형으로 선업합니다.
  • for 구문을 이용해서 1부터 10까지 반복할 수 있는 루프를 만듭니다.
  • if 조건문을 활용해 2로 나누었을때 나머지가 0인 수(짝수)를 만족하면 continue로 건너뛰기합니다.
  • 짝수에는 건너뛰고 홀수일 때만 i를 출력합니다. 

 

 

3이 포함된 배열을 임의의 수 10개로 구성된 배열을 생성하고 그 중 3이 몇개 있고 몇번쨰 위치에 있는지 출력하시오.

#include <stdio.h>

int main () {
	int arr[10] = {10,10,10,10,3,10,10,3,10,10,};
	int i;
	int x = 3;
	int count = 0;

	for (i = 0; i < 10 ; i++) {
		if (arr[i] == x) {
				printf("숫자 %d은 %d번방에 있습니다.\n", x, i + 1);
				count++;	
			} 	
	}
	printf ("숫자 %d은 이 배열에 %d번 나왔습니다.", x, count);

	return 0;
}
  • 3을 포함한 임의의 수의 배열 arr을 생성합니다.
  • for 구문을 위해서 i를 정수형으로 선언합니다.
  • x는 미션에서 요구하는 숫자로 정하고  정수형 선언과 함께 3으로 초기화합니다.
  • count는 x가 몇번 배열에 포함 되어 있는지 찾아낼 변수입니다.
  • for 구문에서 배열의 수가 10개 이므로 10번을 반복할 조건을 괄호안에 넣습니다.
    • 10번을 반복할 동안 arr배열 속의 x를 찾아내기 위해서 if문안에 조건을 설정합니다.
    • x를 찾아내었다면 안내문구를 출력하고 배열의 주소는 0부터 시작하므로 반복한 숫자의 1을 더해서 배열의 위치를 찾아냅니다.
    • count변수를 이용해서 x를 찾아낼 때마다 숫자 1을 더합니다.
  • 마지막 안내문구에는 x가 몇번 발견되었는지 안내문구를 출력하고 종료합니다.

 

 

문제 : 정수 10개를 저장할 수 있는 배열이 있다. 
그 안에 임의의 숫자들이 저장되어 있는데... 그 중에 3이 몇개 인지 확인하는 프로그램이다.

int main () {
	int arr[10] = {10,10,10,10,3,10,10,3,10,10,};
	int i;
	int count = 0;

	for (i = 0; i < 10 ; i++) {
		
		if (arr[i] == 3) {	
			printf("숫자 %d은 %d번방에 있습니다.\n\n", 3, i + 1);
			count++;	
				
		} else { 	
			printf ("배열 %d번에는 찾으시는 값이 없습니다. \n\n", i);
	
		}
	}
	
	if (count == 0){
		printf ("이배열에 숫자 3은 발견되지 않았습니다.");
	
	}else {	
		printf ("\n\n숫자 %d은 이 배열에 %d번 나왔습니다.\n\n", 3, count);
	
	}
	
	return 0;
}

 

 

 

10개를 저장할 수 있는 배열에서 1~20까지의 숫자중에 짝수만 들어가야한다. 저장이 끝났으면 그 배열의 값들의 총 합을 구한다. 

#include <stdio.h>
#include <time.h>

int main () {
	int list[10];
	srand(time(0));
	int i;
	int k = 0;
	
		while (i < 10){
			int rdum = rand()% 20 + 1;
			
			if (rdum %2 == 0) {
				list[i] = rdum ;
				i++;
			}
		}
	
	printf ("배열의 구성: ");
	for (i = 0 ; i < 10 ; i++){
		printf("%d, ", list[i]); 
	}
	printf ("\n");
	

	for (i = 0 ; i < 10 ; i++){
		k = k + list [i];
	}	

	printf("총합은 %d입니다. \n", k);
	
	return 0;
}
  • 10개의 정수를 할당할 LIST배열을 선언합니다.
  • srand(time(0))으로 현재시간을 씨드로한 난수 조건을 만듭니다.
  • i 정수형 타입으로 선언하고 
  • 마지막 for구문에서 사용할 k값을 초기화합니다. 
  • while 구문으로 1~20가지의 랜덤한 숫자를 10번 생성하고 짝수 일때만 횟수를 증가시킵니다.
  • 배열의 구성을 출력할 for구문을 만들고 list[i]값이 나열될 수 있게 만듭니다.
  • 다음 for 구문으로 배열의 값을 다 더해줄수 있도록 합니다.