본문 바로가기

프로그래밍 언어

[MySQL] 그룹화(GROUP BY), 그룹화 조건(HAVING) 2023-04-11 TIL 22강 그룹화 - GROUP BY SELECT [열명] FROM [테이블명] GROUP BY [열명] : 그룹화하기 DISTINCT를 지정했을 때와 같은 결과가 나옴 열을 지정하여 그룹화하면 지정된 열의 값이, 같은 행이 하나의 그룹으로 묶임 SELECT name FROM sample51 GROUP BY name; GROUP BY로 그룹화된 각각의 그룹이 하나의 집합으로서 집계함수의 인수로 넘겨진다 SELECT name, COUNT(name), SUM(quantity) FROM sample51 GROUP BY name; HAVING 구로 조건 지정 집계함수는 WHERE 구를 사용할 수 없다 WHERE 구로 행을 검색하는 처리가 GROUP BY로 그룹화하는 처리보다 먼저이기 때문.. 더보기
[MySQL] 합계(SUM), 평균(AVG), 최솟값(MIN), 최댓값(MAX) 2023-04-10 TIL 21강 COUNT 이외의 집계함수 SUM : 합계 구하기 SUM 집계함수에 지정되는 집합은 수치형 뿐이다(문자열형, 날짜시간형은 불가) NULL 값을 무시한다 SELECT SUM(quantity) FROM sample51; AVG : 평균 구하기 AVG 집계함수에 지정되는 집합은 수치형 뿐이다(문자열형, 날짜시간형은 불가) NULL 값을 무시한다 SELECT AVG(quantity), SUM(quantity)/COUNT(quantity) FROM sample51; NULL을 0으로 간주하여 평균을 내고 싶다면 CASE를 사용하여 NULL을 0으로 변환한 뒤에 AVG 함수로 계산한다 SELECT AVG(CASE WHEN quantity is null THEN 0 ELSE quan.. 더보기
[MySQL] 행 개수 구하기(COUNT), 중복 제거하기(DISTINCT) 2023-04-07 TIL 20강 행 개수 구하기 - COUNT SELECT COUNT(*) FROM [테이블명] : 행 개수 구하기 집계함수는 집합으로부터 하나의 값을 반환한다 *을 인수로 사용할 수 있는 것은 COUNT 함수뿐이다 SELECT COUNT(*) FROM sample51; WHERE구로 조건을 지정하면 테이블 전체가 아닌, 검색된 행이 COUNT 로 넘겨진다 SELECT COUNT(*) FROM sample51 WHERE name = 'A'; COUNT는 NULL 값을 무시한다 특정 열을 선택하여 COUNT할 경우 null값은 무시한다 COUNT(*)의 경우 모든 열의 행수를 카운트하기 때문에 NULL값이 있어도 해당 정보가 무시되지 않는다 SELECT COUNT(no), COUNT(na.. 더보기
[MySQL] 물리삭제(DELETE)와 논리삭제(UPDATE) 2023-04-05 TIL 19강 물리삭제와 논리삭제 데이터베이스에서 데이터를 삭제하는 방법은 용도에 따라 크게 '물리삭제'와 '논리삭제'로 나뉜다. 이번 내용은 시스템 설계 분야에 관한 것으로, 시스템을 구축할 때 자주 사용하는 말이다. 물리삭제 SQL의 DELETE명령을 사용해 직접 데이터를 삭제하는 것 논리삭제 테이블에서 실제로 행을 삭제하는 대신, UPDATE 명령을 이용하여 값을 갱신하는 것 '삭제플래그' 사용, 참조할 때 삭제플래그가 삭제로 설정된 행을 제외 결과적으로 해당 행이 삭제된 것처럼 보임 논리삭제의 장점은 데이터를 삭제하지 않기 때문에 삭제되기 전의 상태로 간단히 되돌릴 수 있다는 것 논리삭제의 단점은 삭제해도 데이터베이스의 저장공간이 늘어나지 않는 점과 오히려 데이터베이스의 크기가.. 더보기
[MySQL] 데이터 갱신하기(UPDATE) 2023-04-03 TIL 18강 데이터 갱신하기 - UPDATE UPDATE [테이블명] SET [업데이트할 열명=값] WHERE [행 조건식] : 데이터 갱신 UPDATE는 셀 단위로 데이터 갱신 가능 WHERE구를 생략하면 모든 행이 갱신됨 SET구를 사용하여 갱신할 열과 값을 지정 UPDATE sample41 SET b='2023-04-03' WHERE no=2; UPDATE 명령으로 증가 연산하기 UPDATE sample41 SET no=no+1; UPDATE [테이블명] SET [업데이트할 열명1=값1, 열명2=값2, ...] WHERE [행 조건식] : 복수열 갱신 UPDATE sample41 SET a='DEF', b='2023-01-25' WHERE no=2; SET 구의 실행순서 SET.. 더보기
[MySQL] 삭제하기(DELETE) 2023-03-29 TIL 17강 삭제하기 - DELETE DELETE FROM 테이블명 WHERE 조건식 : 삭제하기 WHERE 조건식을 사용하지 않고 DELETE 명령을 실행하면 테이블의 모든 데이터가 삭제됨 삭제는 행 단위로 수행됨(열이나 하나의 셀만 삭제할 수 없음) 어떤 행부터 삭제할 것인지는 의미가 없으므로 ORDER BY 구는 사용할 수 없음 DELETE FROM sample35 WHERE no=3; 더보기
[MySQL] 행 추가하기(INSERT), NOT NULL 제약, DEFAULT 2023-03-16 TIL 16강 행 추가하기 - INSERT INSERT INTO [table명] VALUES(값1, 값2, ...) : 테이블에 행 추가하기 테이블에 행 단위로 데이터 추가 insert into sample41 values(1, 'Beauty', '2023-03-16'); INSERT INTO [table명](열1, 열2, ...) VALUES(값1, 값2, ...) : 값을 지정할 열 지정하기 테이블에 행 단위로 데이터 추가 insert into sample41(a, no) values('Jeong', 2); NOT NULL 제약 행을 추가할 때 유효한 값이 없는 상태(NULL)로 지정하고 싶을 때는 VALUES구에서 NULL로 값을 지정할 수 있다 하지만 NOT NULL 제약이 걸.. 더보기
[MySQL] 데이터 변환(CASE,WHEN,THEN,ELSE,END), 검색/단순 CASE, 디코드/인코드 2023-03-14 TIL 15강 CASE 문으로 데이터 변환하기 검색 CASE : CASE WHEN 조건식 THEN 식 ... RDBMS에 갖추어져 있는 기존의 연산자나 함수만으로는 처리할 수 없는 것을 처리해줌 예를 들면, NULL값으로 연산한 결과는 모두 NULL이 되지만, NULL 값을 0으로 계산하고 싶은 경우 select a, case when a is null then 0 else a end "a(null=0)" from sample37; select a as '코드', -> case -> when a = 1 then '남자' -> when a = 2 then '여자' -> else '미지정' -> end as '성별' from sample37; COALESCE : NULL값을 0으로 반환하.. 더보기