반응형

분류 전체보기 288

[SQL 첫걸음] 29강. 인덱스 작성과 삭제

인덱스 작성과 삭제 인덱스(Index)는 DDL(Data Definition Language)을 사용하여 작성하거나 삭제합니다. 사실 표준 SQL에서는 인덱스 자체가 데이터베이스 제품에 의존하는 선택적인 항목으로 취급되어 CREATE INDEX 명령이 존재하지 않습니다. 하지만 대부분의 유명한 데이터베이스 제품에는 인덱스 구조가 도입되어 있고 비슷한 방법으로 이를 관리할 수 있습니다. 인덱스 작성 CREATE INDEX 명령으로 인덱스를 만들 수 있습니다. 이때 인덱스에 이름을 붙여 관리하는데, 인덱스가 데이터베이스 객체가 될지 아니면 테이블의 열처럼 취급될지는 데이터베이스 제품에 따라 다릅니다. Oracle, DB2 등에서 인덱스는 스키마 객체가 됩니다. 따라서 스키마 내에서 이름이 중복되지 않게 관리..

자격증/SQLD 2022.04.04

[SQL 첫걸음] 28강. 인덱스 구조

인덱스 구조 인덱스 인덱스(Index)는 색인이라고도 불리며 그 역할은 검색속도를 향상시키는 데 있습니다. 여기서 검색은 SELECT 명령 및 WHERE 구를 통해 조건을 지정하여 그에 알맞는 행을 찾는 과정을 의미합니다. 테이블에 인덱스가 존재하면 효율적인 검색이 가능해져 WHERE 구로 조건이 지정된 SELECT 명령의 처리 속도가 향상됩니다. 예를 들어 목차를 생각하면 편합니다. 백과사전에 목차가 존재하지 않으면 과일이라는 단어를 찾을 때 앞에서부터 하나씩 다 살펴봐야 합니다. 그러나 목차가 존재하면 해당 목차를 통해 과가 일치하는 곳으로 바로 가서 훨씬 효율적으로 찾을 수 있습니다. 인덱스 또한 이처럼 검색에 사용되는 키워드와 대응하는 행의 장소가 저장되어 있습니다. 이때 인덱스는 테이블과는 별개..

자격증/SQLD 2022.04.04

[SQL 첫걸음] 27강. 제약

제약 CREATE TABLE로 테이블을 정의할 때 NOT NULL과 같은 제약 또한 정의할 수 있습니다. 이러한 제약은 저장될 데이터를 단어 의미 그대로 제한하는 역할을 합니다. NOT NULL 외에도 대표적인 제약조건으로는 기본기(Primary Key) 제약이나 외부참조(정합) 제약 등이 있습니다. > ALTER TABLE 테이블명 ADD 추가할 컬럼명 데이터 유형; > ALTER TABLE 테이블명 DROP COLUMN 삭제할 컬럼명; > ALTER TABLE 테이블명 MODIFY (컬럼명1 데이터 유형 [DEFAULT 식] [NOT NULL], 컬럼명2 데이터 유형 [DEFAULT 식] [NOT NULL]); > ALTER TABLE 테이블명 RENAME COLUMN 변경해야할 컬럼명 TO 새로운 ..

자격증/SQLD 2022.04.04

[SQL 첫걸음] 26강. 테이블 작성·삭제·변경

테이블 작성, 삭제, 변경 데이터베이스 객체인 테이블을 작성, 삭제, 변경하는 명령을 DDL(Data Definition Language)이라 합니다. 테이블 작성 CREATE 명령을 사용하여 테이블, 뷰, 인덱스 등의 객체를 작성할 수 있습니다. 그 형태는 간단하게 표현해보면 아래와 같습니다. CREATE TABLE 테이블명 ( 열 정의1, 열 정의2, ... ) 열을 정의할 때는 열명을 붙이고 자료형으로 INTEGER, VARCHAR 등을 지정합니다. 특히 CHAR 또는 VARCHAR의 경우 문자열형이기 때문에 최대길이를 괄호(())를 사용하여 함께 지정해줘야 합니다. 또한 열을 정의할 때 DEFAULT 키워드를 사용하여 기본값을 설정할 수 있습니다. 마지막으로 NULL을 허용할 것인지 지정해야 합니..

자격증/SQLD 2022.04.04

[SQL 첫걸음] 25강. 데이터베이스 객체

데이터베이스 객체 데이터베이스 객체란 테이블이나 뷰, 인덱스 등 데이터베이스 내에 정의하는 모든 것을 일컫는 말로 구체적으로 이야기하면 실체를 가지는 어떤 것입니다. 따라서 객체의 종류에 따라 데이터베이스에 저장되는 내용도 달라집니다. 쉽게 테이블은 객체이며 해당 테이블을 조작할 수 있는 명령이었던 SELECT, INSERT 등은 객체가 아닙니다. 객체는 이름을 가집니다. 따라서 데이터베이스 내에서 객체를 작성할 때는 이름이 중복되지 않게 해야 합니다. 테이블의 열이나 SELECT 명령에서의 별명(AS) 또한 이름을 갖지만 이것들은 모두 객체가 아닙니다. 실체가 존재하지 않기 때문입니다. 다만 이름을 붙일 때는 제약 사항, 다시 말해 아래와 같은 명명 규칙(Naming Convention)을 따라야 합니..

자격증/SQLD 2022.04.04

[SQL 첫걸음] 24강. 상관 서브쿼리

상관 서브쿼리 서브쿼리의 일종을 상관 서브쿼리라 합니다. 더 자세한 정의는 상관 서브쿼리에서 확인하겠습니다. 1. EXISTS 서브쿼리를 사용해 검색할 때 데이터 존재여부를 판별하기 위해 조건을 지정할 수 있습니다. 이런 경우 EXISTS 술어를 사용할 수 있습니다. 이때 EXISTS 술어는 단지 반환된 행이 있는지를 확인해보고 값의 있으면 참(True), 없으면 거짓(False)을 반환하므로 굳이 스칼라 서브쿼리일 필요는 없습니다. sample551과 sample552에 대해 no=no2인 행의 값을 '있음'으로 수정하려 할 때 다음과 같이 EXISTS를 사용하면 조건에 맞는 행을 갱신할 수 있다. UPDATE sample551 SET a="있음" WHERE EXISTS (SELECT * FROM sa..

자격증/SQLD 2022.04.04

[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
반응형