오늘의 구문
GROUP BY구문 활용
- 이 구문은 SQL에서 데이터를 특정 칼럼의 값에 따라 그룹화하기 위해 사용된다.
- 주로 집계함수와 함께 사용되고, 각 그룹에 대한 합계, 평균, 카운트, 최대값, 최소값등을 계산할 때 유용하다.
예시
- 직원들 중 성별이 'M'인 사람들의 수를 계산하고 성별별로 그룹화 하시오
SELECT gender, COUNT(gender) FROM employees GROUP BY gender HAVING gender = 'm' ;
- 130000명이 이상인 그룹을 선택하고 그 수를 계산하시오.
SELECT gender, COUNT(gender) FROM employees GROUP BY gender HAVING COUNT(gender) > 130000;
DISTINCT 구문
- 테이블에서 중복된 레코드를 제거하고 고유한 레코드만을 섡택하는 데 사용된다.
- 특정 칼럼에 어떤 다양한 값들이 존재하는지 파악할 때 유용하다.
예시
- emolyees테이블에서 어떤 부서들이 있는지 나열하되 중복되지 않게 하시오.
SELECT DISTINCT department FROM employees;
CHECK 구문
- 테이블의 특정 칼럼이나 칼럼들에 대해 특정 조건을 충족하도록 하는 제약조건이다.
- 데이터 베이스에 데이터가 입력되거나 수정될 때 해당 데이터가 조건을 만족하는지 확인한다.
- 조건을 만족하지 않으면 그 작업을 거부하고 오류 메시지를 반환한다.
예시
- 학년의 정보를 받는데 1,2,3학년 학생의 정보만 받으시오.
stu_grade CHAR(1) CHECK(stu_grade IN('1','2','3')),
- 성별의 정보를 받는데 'M' 또는 'F'로 표기한 정보만 받으시오.
stu_gender CHAR(1) CHECK(stu_gender IN('M','F')),
WHILE 구문
- while ( a ){ b } 의 구조에서 해석은, while 구문안의 a의 값이 참인 동안 지속하여 b를 실행한다.
예시
#include <stdio.h>
int main() {
int n = 0;
while ( n < 10){
printf("Hello\n");
n = n + 1;
}
return 0;
}
FOR 구문
- for ( a ; b ; c ) { d } 의 for 구문 구조에서 프로세스의 순서는 a로 인자를 초기화 하여 b의 조건이 거짓이 되는 순간 d를 실행하게 되고 참인동안은 c를 출력하게 된다.
예시
#include <stdio.h>
int main() {
int n;
for ( n = 0 ; n < 10 ; n = n + 1 ) {
printf("hello\n");
}
return 0;
}
수업내용
세부검색 미션
1.학생테이블에서 학과명을 조회하시오. (단, 중복된 자료는 제외합니다.)
SELECT DISTINCT stu_dept FROM students;
2. 학생테이블에서 '컴퓨터 정보' 학과 2학년 학생의 이름, 학과, 학년, 반 정보를 조회하시오.
SELECT stu_name, stu_dept, stu_grade, stu_class FROM students WHERE stu_dept = '컴퓨터정보';
3. 학생테이블에서 체중이 60KG이상이고 70KG 이하인 학생들의 모든 정보를 조회하시오.
SELECT * FROM students WHERE stu_weight BETWEEN 60 AND 70 ;
4. 학생 테이블에서 학번, 이름을 조회할 때 조회결과 열의 제목이 ID, NAME으로 표시되도록 하시오
SELECT stu_no AS 'ID', stu_name AS 'NAME' FROM students ;
5. 2014학번 학생의 정보를 검색하시오
SELECT * FROM students WHERE stu_no LIKE '2014%';
6. 성이 김씨인 학생들의 정보를 검색하시오.
SELECT * FROM students WHERE stu_name LIKE '김_%';
7. 학생 중 이름의 두번쨰 문자가 '수'인 학생의 이름을 검색하시오.
SELECT * FROM students WHERE stu_name LIKE '_수%';
8. 학과가 '컴퓨터 정보' 이거나 '기계과' 인 학생의 학번과 이름을 검색하시오. in절 사용으로.
SELECT stu_no, stu_name FROM students WHERE stu_dept IN ('컴퓨터정보','기계') ;
9. 학생의 키 정보가 null인 학생의 학번, 이름, 키 정보를 조회하시오.
SELECT stu_no, stu_name, stu_height FROM students WHERE stu_height IS NULL ;
10. 학생의 키 정보가 null이 아닌 학생의 학번, 이름, 키 정보를 조회하시오.
SELECT stu_no, stu_name, stu_height FROM students WHERE stu_height IS NOT NULL;
MariaDB 샘플 데이터 다운
1. 구글에 mariadb 샘플 데이터 검색
2. 'GitHub에 있는 test_db...' 을 클릭한다.
3. 'Code' 클릭
4. ZIP 파일을 다운로드한다.
게임 만들기 '베스킨 라빈스 31'
고객님이 주어준 설정
- 컴퓨터가 숫자를 가지고 있는데 그걸 내가 맞추는 거고 5번의 기회가 주어진다.
- 컴퓨터가 10라는 숫자를 가지고 있는데 내가 12라고 말했다.
- 컴퓨터의 숫자가 내가 제시한 것보다 크다면 '숫자를 높여주세요'
- 내가 제시한 숫자가 너무 크다면 '숫자를 낮혀주세요'
- 5번 동안 못맞추면 아쉽습니다. 다음기회에
- 맞추면 축하드립니다.
- 최대값 31
구현코드
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
srand(time(0));
int target = rand() % 30 + 1;
int guess;
int attempts = 0;
int maxAttempts =5;
printf("환영합니다. 베스킨 라빈스 31입니다. 숫자를 맞춰주세요!!\n");
while (attempts < maxAttempts){
printf("숫자를 말씀해주세요\n");
scanf("%d", &guess);
if (guess == target) {
printf("축하합니다. 정답입니다. 집에가세요!\n");
return 0;
}
else if (guess < target) {
printf("조금 더 높은 수를 말씀해주세요!\n");
}
else {
printf("조금 더 낮은 수를 말씀해주세요!\n");
}
attempts ++;
}
printf("아쉽게도 5번의 기회를 모두 소진하셨습니다. 정답은 %d이었습니다", target);
return 0;
}
'자바&Springboot플랫폼 과정 > MariaDB' 카테고리의 다른 글
ON UPDATE/ALTER/SWITCH 구문 그리고 탄생석서비스 (1) | 2023.12.04 |
---|---|
검색미션/라인그리기/가위바위보 게임 만들기 (0) | 2023.12.01 |
테이블내 세부검색하기 (0) | 2023.11.30 |
테이블 생성과 함수의 구조 (0) | 2023.11.28 |
Maria DB 설치 와 테이블만들기 (1) | 2023.11.27 |