6장 #65
Replies: 3 comments
-
6장
sql 기초 기술 규칙
검색결과 정렬
테이블을 요약하는 함수
문자열 집약
→ Seoul,Seoul,Pusan
→ Seoul,Pusan 데이터를 그룹으로 나누는 Group By
나눈 그룹에 조건 추가
데이터를 변경하는 update
위 형태로 where 로 갱신할 대상을 간추려 set에 해당하는 데이터를 갱신한다
INSERTinsert 문의 기본 구문은 아래와 같다
두 개의 insert 쿼리를 1번으로 정리해 처리 시간이 짧아진다 DELETE아래와 같은 형태로 데이터를 제거한다
뷰를 작성하고 복수 테이블에서 선택하기뷰를 사용하는 이점
뷰 작성
뷰로의 입력, 갱신의 제한뷰로는 어떤 행이 대응하는지 모르거나, 어떤 값을 넣으면 좋을지 모르는 경우에는 갱신할 수 없다. group by나 distinct로 얻은 값을 갱신하는 경우는 결과의 기반이 되는 테이블의 n행 중 어떤 수치를 갱신하면 좋을지 모른다. 혹은 두 가지 이상의 테이블을 조합해 작성한 뷰를 갱신할 때 어떤 테이블을 선택해 갱신해야할지 알 수 없다. 실질적으로 뷰로의 삽입은 불가능하다. 서브쿼리
결합
내부결합
외부결합
|
Beta Was this translation helpful? Give feedback.
-
6장 SQL 문의 기본💡목표SQL문 중 SELECT문 (조회)을 통해서 SQL에 익숙해지자 SELECT 문으로 테이블 내용을 살펴보자
테이블을 조작하는 SQL
WHERE 조건이 필요한 이유
SQL의 기초적인 기술 규칙
DISTINCT에 의한 중복 배제
SELECT 문을 응용해보자
검색결과 정렬
테이블을 요약하는 함수
문자열을 집약하는 GROUP_CONCAT
DISTINCT로 중복 회피
데이터를 그룹으로 나누는 GROUP BY
데이터를 갱신, 삽입, 제거해보자
데이터를 변경하는 UPDATE 문
데이터를 입력하는 INSERT문
데이터를 제거하는 DELETE 문
뷰를 작성하고 복수 테이블에서 선택해보자
뷰
서브쿼리
조인
|
Beta Was this translation helpful? Give feedback.
-
SQL문의 기본SQL의 기초적인 기술 규칙
DISTINCT 키워드
집계 함수
GROUP BY
HAVING BY
데이터 삽입
데이터 수정
데이터 삭제
뷰(VIEW)
서브쿼리(SubQuery)
|
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
1. SQL의 기초적인 기술 규칙
2. 테이블을 조작하는 SQL 종류 요약
추가적으로 더 정리하고 싶은 부분을 정리한 내용은 아래와 같음.
2-1. 테이블을 요약하는 함수.
함수엔 크게 두 가지의 종류가 있다.
집약함수의 대표적인 다섯 가지는 아래와 같다.
이러한 집야감수는 기본적으로 NULL을 제외하고 집계한다.
하지만 **COUNT(*)**는 NULL을 포함한 전체 행을 집계한다.
또한 SUM, AVG를 제외한 나머지 함수는 수치 데이터 외에도 사용 수 있다.
예를 들어, city 컬럼의 MAX는 'Y'로 시작하는 'Yosu', MIN은 'A'로 시작하는 'Andong'이 된다.
2-2. 문자열을 집약하는 GROUP_CONCAT
SQL 표준에는 없지만 MySQL에는 GROUP_CONCAT 함수가 있다.
GROUP_CONCAT은 문자열에 대한 집계를 문자열의 결합으로 수행한다.
근데 이 경우에는 예상 외의 길이를 가진 결과가 return 되는 경우가 많기 떄문에, GROUP_CONCAT 함수의 결과를 저장하거나 표시하는 경우 주의할 필요가 있다.
2-3. 데이터를 변경하는 UPDATE문
데이터 변경시엔
UPDATE 테이블명 SET 컬럼명=값사용.하지만 얘는 SET에 명시한 것 외에는 변경되지 않기 떄문에 주로
UPDATE 테이블명 SET 컬럼명 = 값 WHERE 조건사용한다.복수 열의 동시 갱신도 가능하다.
UPDATE CITY SET NAME = '시흥', POPULATION = 432390 WHERE COUNTRYCODE = "KOR" AND DISTRICT = "Kyonggi" AND NAME = "Sihung";2-4. 데이터를 입력하는 INSERT문
행 단위로 수행되기 때문에 테이블 정의를 명확하게 알아야 한다.
SHOW CREATE TABLE 테이블명\G로 확인 가능.단순히 열의 정보를 알고 싶은 경우에는 Oracle과 호환되는 명령인
desc 테이블명으로도 확인 가능하다.INSERT문의 기본 구분은
INSERT INTO 테이블명(열1[,열2,..]) VALUES(값1[, 값2,...])이다.이때 테이블의 모든 컬럼에 대해 값을 설정하면 열 리스트를 생략해도 된다.
VALUES DEFAULT로 해당 행에 해당하는 기본 값을 입력할 수도 있다. 아니면 컬럼 리스트에서 해당 값을 제거하면 자동으로 기본 값이 들어간다.CREATE TABLE 테이블명1 LIKE 테이블명2란 구문으로 테이블명2와 같은 구조의 테이블을 작성할 수도 있다.INSERT문 하나로 신규 복수 행을 입력할 수도 있다.
INSERT INTO city(name, countrycode, district, poluation) VALUES ('Gimpo', '~', '~','~'), ('~','~','~','~')...3. 뷰를 작성하고 복수 테이블에서 선택하기
뷰를 사용하는 이점은 무엇일까
3-1. 뷰를 생성
CREATE VIEW 뷰명 (컬럼명1[,컬럼명2, ...]) AS SELECT 문;3-2. 뷰로의 입력 및 갱신 제한
기본적으로는 어떤 행이 대응하는지 모르거나 어떤 값을 넣으면 좋을지 모르는 경우에는 갱신할 수 없다.
예를 들어 "GROUP BY로 집약한 수치"나 "DISTINCT"로 얻은 값을 갱신하는 경우엔 어떤 수치를 갱신하는 것이 좋을지 모르기 때문에 불가능하고
두 가지 이상의 테이블을 조합해 작성한 뷰를 갱신할 때는 어떤 테이블을 갱신하면 좋을지 몰라 할 수 없다.
뷰에서 원래 테이블의 일부 열만 선택되었다면 데이터를 삽입하려고 해도 선택된 열 이외의 열에 기본값도 없고 NULL도 허용되지 않는 상황에서는 해당 열에 넣을 수 있는 값이 없어서 실질적으로 뷰로의 삽입이 불가능.
4. 서브쿼리의 실행
SELECT 문의 결과를 마치 데이터처럼 다루거나 수치처럼 취급해서 조건문에 이용하는 경우, 이런 쿼리를 서브쿼리라고 부른다.
5. 결합
5-1. 내부 결합
결합은 두 개의 테이블에서 필요한 열을 가지고 올 때 행을 결합하기 위한 조건을 "ON"으로 지정
내부결합에서는 이 ON으로 지정한 결합 조건에 일치하는 행만을 두 개의 테이블로부터 가져올 수 있다.
여기서는 두 개의 테이블에서 결합 조건에 일치하는 것만을 얻어낸다.
5-1. 외부 결합
어떤 테이블을 기준으로 잡고 그 테이블에 있는 정보를 모두 표현하되, 조건과 일치하는 다른 테이블의 값도 함께 표현하는 것을 의미한다.
Beta Was this translation helpful? Give feedback.
All reactions