반응형

자격증 219

[SQL 첫걸음] 23강. 서브쿼리

서브쿼리 서브쿼리는 SELECT 명령으로 괄호로 묶어 지정하는 하부의 부수적인 질의이다. 보통 SQL명령의 WHERE구에 주로 지정된다. 1. DELETE의 WHERE구에서 서브쿼리 사용하기 sample54 테이블에서 a값이 가장 작은 행을 삭제하려한다. 보통 아래와 같은 순서로 진행된다. SELECT MIN(a)으로 가장 작은 값 검색 → DELETE문으로 해당 행을 삭제 괄호로 서브쿼리를 지정하면 이 SELECT명령과 DELETE명령을 결합시킬 수 있다. DELETE FROM sample54 WHERE a=(SELECT MIN(a) FROM sample54); ❗ MySQL에서는 데이터를 추가/갱신할 경우 동일한 테이블을 서브쿼리에서 사용할 수 없기 때문에 에러가 발생한다. 아래와 같이 인라인 뷰로 ..

자격증/SQLD 2022.04.04

[SQL 첫걸음] 22강. 그룹화 - GROUP BY

그룹화 - GROUP BY 1. GROUP BY로 그룹화 GROUP BY구를 통해 지정된 열의 값이 같은 행을 하나의 그룹으로 묶어서 집계함수로 넘겨줄 수 있다. SELECT name FROM sample51 GROUP BY name; 결과는 DISTINCT와 같다. GROUP BY의 의미는 집계함수와 함께 사용할 때 나타난다. SELECT name, COUNT(name), SUM(quantity) FROM sample51 GROUP BY name; GROUP BY에 의해 name이 4개의 그룹으로 나뉘고, 각 그룹별로 COUNT와 SUM의 결과가 반환됐다. 2. HAVING 구로 조건 지정 SELECT 열 FROM 테이블 GROUP BY 열 HAVING 조건 WHERE구는 GROUP BY보다 처리 순서..

자격증/SQLD 2022.04.04

[SQL 첫걸음] 21강. COUNT 이외의 집계함수

COUNT 이외의 집계함수 > SELECT SUM(컬러명) FROM 테이블명 > SELECT AVG(컬럼명) FROM 테이블명 > SELECT MIN(컬럼명) FROM 테이블명 > SELECT MAX(컬럼명) FROM 테이블명 1. SUM - 합계 구하기 SUM함수는 수치형 집합만을 지정한다. SELECT SUM(quantity) FROM sample51; 2. AVG - 평균 내기 SUM/COUNT같이 반환값으로 연산도 가능하지만 AVG 함수로 쉽게 평균값을 구할 수 있다. SELECT AVG(quantity), SUM(quantity)/COUNT(quantity) FROM sample51; 3. MIN. MAX로 최소값, 최대값 구하기 MIN과 MAX 집계합수는 문자열형과 날짜시간형에도 사용할 수 있..

자격증/SQLD 2022.04.04

[SQL 첫걸음] 20강. 행 개수 구하기 - COUNT

COUNT SQL에서 대표적인 집계함수(집합을 다루는 함수)는 다음과 같다. 일반적인 함수는 하나의 값을 인수로 받는 반면 집계함수는 집합을 인수로 받는다. > COUNT > SUM > AVG > MIN > MAX COUNT로 행 개수 구하기 COUNT는 인수로 주어진 집합의 개수를 반환한다. SELECT COUNT(*) FROM sample51; SELECT COUNT(*) FROM sample51 WHERE name='A'; sample51에는 총 5개의 행이 있고, COUNT집계함수에서 *은 '모든열=테이블 전체'를 의미하기 때문에 위 명령은 5를 반환한다. 이는 WHERE구를 지정해 검색 조건을 추가할 수 있다. 집계함수와 NULL 값 집계함수는 집합 안에 NULL 값이 있을 경우 이를 제외하고 ..

자격증/SQLD 2022.04.04

[SQL 첫걸음] 19강. 물리삭제와 논리삭제

물리삭제와 논리삭제 데이터베이스에서 데이트를 삭제할 때는 ‘물리 삭제’와 ‘논리 삭제’ 두 가지 방법이 있다 두 종류의 삭제방법 물리삭제 : DELETE 명령을 사용해 직접 데이터를 삭제하는 방식 DELETE FROM 테이블명 WHERE 조건 논리삭제 : 테이블에 '삭제플래그'와 같은 열을 만들어 UPDATE 명령으로 '삭제플래그' 값을 유효하게 갱신해두는 방식. 실제 데이터는 남아있지만 삭제가 설정된 행을 제외하고 SELECT하는 명령 시행 // 예를들어 회원테이블에 삭제일시라는 컬럼이 있을 경우 UPDATE members SET delete_at = now() --> 현재시간 WHERE mber_id = 1 --> 조건 논리삭제는 실제로 데이터를 삭제하지 않기 때문에 삭제 이전으로 되돌릴 수 있다는 ..

자격증/SQLD 2022.04.04

[SQL 첫걸음] 18강. 데이터 갱신하기 - UPDATE

데이터 갱신하기 - UPDATE 테이블에 저장되어 있는 데이터를 갱신하기 위해서는 UPDATE 명령을 사용한다. UPDATE 테이블 SET 열1=값1, 열2=값2... WHERE 조건식; UPDATE로 데이터 갱신하기 데이터를 잘못 입력하거나 변경되어 값을 수정해야 하는 경우 UPDATE 명령으로 셀 값을 갱신할 수 있다. UPDATE sample41 SET a='AAA',b='2021-01-27' WHERE no=3; UPDATE로 갱신할 경우 주의사항 SET구에서 =는 비교 연산자가 아닌 대입 연산자이다. UPDATE sample41 SET no = no+1; 위 명령을 실행하면 WHERE 구가 지정되어 있지 않으므로 테이블의 no열의 모든 행이 no+1로 갱신된다. 복수열 갱신 UPDATE의 SET..

자격증/SQLD 2022.04.04

[SQL 첫걸음] 17강. 삭제하기 - DELETE

삭제하기 - DELETE DELETE로 행 삭제하기 DELETE FROM 테이블 WHERE 조건식 DELETE 명령을 실행하기 전 SELECT 명령으로 기존 테이블의 데이터를 확인하는 것이 좋다. WHERE구를 따로 지정하지 않고 DELETE하면 테이블의 모든 데이터가 삭제된다. 또한 DELETE는 다른 명령처럼 열을 지정할 수 없어 WHERE 조건에 일치하는 모든 행을 삭제한다. DELETE 명령구 MySQL에서는 DELETE명령에서 ORDER BY와 LIMIT구를 사용해 삭제할 행을 지정할 수 있다. DELETE FROM sample41 WHERE no = 1 OR no = 2;

자격증/SQLD 2022.04.04

[SQL 첫걸음] 16강. 행 추가하기 - INSERT

행 추가하기 - INSERT SELECT는 질의를 하면 DB 서버에서 클라이언트로 결과를 반환하는 검색 명령이다. 반대로 INSERT,UPDATE,DELETE 등 데이터를 변경하는 명령은 클라이언트에서 서버로 데이터를 전송한다. INSERT 로 행 추가하기 INSERT [INTO] 테이블 VALUES (값1,값2...); sample41 저장된 데이터가 없는 테이블이다. DESC로 조회한 저장가능한 데이터 유형은 위와 같다. INSERT INTO sample41 VALUES(1,'ABC','2021-01-26'); 위 명령으로 sample41 테이블에 데이터를 추가한 후 다시 조회하면 다음과 같은 결과가 나온다. 값을 저정할 열 지정하기 INSERT [INTO] 테이블(열1,열2...) VALUES (값..

자격증/SQLD 2022.04.04

[SQL 첫걸음] 15강. CASE문으로 데이터 변환하기

임의의 조건에 따라서 독자적으로 변환 처리를 지정해서 데이터를 변환하고 싶을 때 CASE문을 사용할 수 있다. CASE WHEN 조건식1 THEN 식1 [WHEN 조건식2 THEN 식2...] [ELSE 식3] END CASE문 예를 들어, NULL값을 0으로 간주해서 계산하고 싶을 때는 어떻게 해야 할까? NULL값으로 연산한 결과는 모두 NULL이 되는데? 이 경우에 CASE문을 이용해서 처리할 수 있다. RDBMS에서는 사용자가 함수를 작성할 수 있다. 간단한 처리의 경우에는 사용자 정의 함수를 작성하지 않고 CASE문으로 처리할 수 있다. WHEN절: 참과 거짓을 반환하는 조건식을 적어준다. 해당 조건을 만족해서 참이 되는 경우, THEN절에 있는 식이 처리된다. 이때 WHEN과 THEN을 한데 ..

자격증/SQLD 2022.04.04

[SQL 첫걸음] 14강. 날짜 연산

CURREUNT_TIMESTAMP CURRENT_DATE INTERVAL SQL에서의 날짜 시스템 날짜 RDBMS에서는 시스템 날짜와 시간을 확인하는 함수를 제공한다. CURREUNT_TIMESTAMP는 함수이지만 인수를 필요로 하지 않는다. 즉, 괄호를 사용하지 않는 함수이다. #CURREUNT_TIMESTAMP로 시스템 날짜 확인 SELECT CURRENT_TIMESTAMP; # 2020-05-03 20:00:30 위의 예문에서 FROM구를 생략했는데, SELECT구만으로도 실행되지만, Oracle과 같이 전통적인 데이터베이스에서는 FROM구는 생략할 수 없으니 주의하자. 날짜 서식 날짜 데이터를 데이터베이스에 저장할 때는 CURREUNT_TIMESTAMP를 사용해서 시스템 상의 날짜를 저장할 수 있..

자격증/SQLD 2022.04.04
반응형