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)
- 공백, 알파벳, 숫자, 구두점 및 특수 기호 등 인쇄 및 표시가 가능한 문자들이 여기에 포함됩니다.
- 제어문자 (0~31및 127)
함수연습
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 구문으로 배열의 값을 다 더해줄수 있도록 합니다.
'자바&Springboot플랫폼 과정 > MariaDB' 카테고리의 다른 글
TRIGGER/TRANSACTION (1) | 2023.12.07 |
---|---|
관계 데이터 모델의 컨셉과 구조 (2) | 2023.12.06 |
ON UPDATE/ALTER/SWITCH 구문 그리고 탄생석서비스 (1) | 2023.12.04 |
검색미션/라인그리기/가위바위보 게임 만들기 (0) | 2023.12.01 |
CHECK/GROUP BY/DISTINCT와 세부검색 그리고 게임만들기 (3) | 2023.11.30 |