Database
-
SQL 제약Database 2021. 5. 4. 14:05
제약 "테이블"에 제약을 설정함으로써 저장될 데이터를 제한할 수 있다. NOT NULL 제약으로 NULL 값이 저장되지 않도록 제한할 수 있으며, 기본키(Primary Key), UNIQUE제약 등 데이터베이스 설계에 영향을 주는 중요한 개념이다. 여기서 키 제약(PK, FK)등은 RDBMS에서 반드시 언급되는 사항으로 추가, 삭제에 대해 확실히 알아두어야 한다. 제약은 테이블에 설정하는 것이다. CREATE TABLE로 테이블을 생성할때 제약을 정의할 수 있고 ALTER TABLE로 제약을 새로 정의하거나 변경할 수 있다. 이때, 하나의 열에 대해 설정하는 제약을 "열 제약"이라 부르며, 복수의 열에 대해 설정하는 제약을 "테이블 제약"이라 부른다. 제약은 대표적으로 아래 6가지 제약이 있다. 1. N..
-
SQL 테이블 작성, 삭제, 변경Database 2021. 4. 27. 14:49
데이터베이스 객체의 대표적인 테이블 작성, 삭제, 변경 등에 대해 알아보자. 이전까지는 SQL 명령 중 DML(조작하는 명령)을 알아보았다. DML 명령을 내리기 위해선 당연히 테이블이 생성이 되어있어야 하며, 다룰 수 있는 어떠한 데이터가 존재해야한다. 이젠 SQL 명령 중 DDL(정의하는 명령)을 통해 스키마 내의 객체를 관리하는 방법을 알아보자. 테이블 작성 DDL은 모두 같은 문법을 사용한다. CREATE 로 작성, DROP으로 삭제, ALTER로 변경! CREATE TABLE 테이블명( 열 정의1, 열 정의2, ... ) 열 정의 열명 자료형 [DEFAULT 기본값] [NULL|NOT NULL] 정의하는 열의 자료형 (정수, 실수, 문자열...) NULL 허용 여부등 정의하고자 하는 테이블의 명..
-
SQL 데이터베이스 객체Database 2021. 4. 25. 18:05
데이터베이스 객체 테이블, 뷰, 인덱스 등 데이터베이스 내에 정의하는 모든 것을 일컫는 말이다. 프로그래밍에서의 객체와 혼동하는 경우가 있는데, 보통 데이터베이스 관점으로 바라볼때의 객체는 데이터베이스 객체를 가르킨다. 앞서 알아보았던 SQL 명령은 데이터베이스 객체를 조작하는 SQL 명령일뿐, 데이터베이스 객체라는 개념에 포함되지 않는다. 객체의 이름은 굉장히 중요한 의미를 가진다. 어떤 데이터가 저장되어 있는지 파악하는 기준이 되므로 의미, 관련성이 없는 이름은 붙히지 않는다. 데이터베이스 객체는 이름을 가지며 이름은 아래의 명명규칙을 따른다. 1. 기존 이름이나 예약어와 중복하지 않는다. (foo라는 이름의 테이블을 만들었다면 뷰 또는 모든 객체 역시 같은 이름을 사용할 수 없다.) 2. 숫자로 시..
-
SQL 상관 서브쿼리Database 2021. 4. 19. 13:27
상관 서브 쿼리 부모 명령과 자식인 서브 쿼리가 특정 관계를 맺는 것을 상관 서브 쿼리라고 한다. 상관 서브 쿼리의 경우 부모 명령과 관계를 맺고 있기 때문에 상관 서브 쿼리는 단독 쿼리 즉, 혼자서는 실행을 할 수 없다. 설명만 보면 이해가 가지 않으므로 아래 예시와 함께 이해해보도록 하자! 앞서 DELETE 명령에 대한 서브 쿼리이다. # 상관 서브쿼리 X DELETE FROM ttt_set WHERE A = (SELECT MIN(A) FROM ttt_set); SELECT MIN(A) FROM ttt_set # 상관 서브쿼리 O UPDATE 테이블명1 SET A(열1) = "TEST" WHERE EXISTS (SELECT * FROM 테이블명2 WHERE 열2 =열1); SELECT * FROM 테..
-
SQL 서브쿼리_2Database 2021. 4. 14. 16:00
SELECT 구 + 서브쿼리 서브쿼리는 WHERE 구, SELECT 구, UDDATE의 SET구 등 다양한 구 안에서 사용이 가능하다. 문법적으로 서브쿼리는 하나의 항목으로 취급한다. 단, 문법적으로는 문제가 없어도 실행하면 에러가 발생하는 경우가 종종있는데 이는 서브쿼리가 스칼라 서브쿼리 (하나의 값만 반환하는지)에 대해 생각해볼 필요가 있으며 서브쿼리를 사용할 때는 스칼라 서브쿼리로 되어있어야한다. 즉, SELECT 구 + 서브쿼리를 지정할때 스칼라 서브쿼리가 필요하다. 각 테이블의 행의 개수를 나타내보자. SELECT (SELECT COUNT(*) FROM 테이블명) AS 별명, (SELECT COUNT(*) FROM 테이블명2) AS 별명2; 여기서 주의할점 FROM이 생략되었다는 것이다. MyS..
-
SQL 서브쿼리_1Database 2021. 4. 9. 16:17
서브쿼리 명령에 의한 데이터 질의로, 상부가 아닌 하부의 부수적인 질의를 의미한다. 간단하게 부수적인 질의 정도로 이해하자. SQL 명령을 기술할때 서브쿼리를 사용하면 여러번 입력하여 알아 낼수 있는 정보를 한 줄로 명령 할 수 있다. 서브쿼리는 SQL 명령문 안에 하부 SELECT 명령으로 괄호로 묶어 지정한다.SELECT, WHERE, FROM, 등 다양한 문법에서 기술할 수 있다. 특히나, 서브쿼리는 WHERR 구에서 주로 사용되며 WHERE 구는 SELECT, DELETE, UPDATE 구에서 사용할 수 있는데 이들 중 어떤 명령에서든지 서브쿼리를 사용할 수 있다. DELETE의 WHERE 구에서 서브쿼리 사용하기 아래의 예제에서 A열에서 가장 작은 값을 가지고 있는 행을 삭제해보도록 하자. 해당..
-
SQL GROUP BYDatabase 2021. 4. 9. 15:24
그룹화 - GROUP BY GROUP BY 구를 사용해 집계함수로 넘겨줄 집합을 그룹으로 나눌수 있다. SELECT * FROM 테이블명 GROUP BY 열1, 열2.. 아래와 같은 products 테이블을 예로 GROUP BY를 알아보자! GROUP BY select category_id from products group by category_id; select 구에 category_id 열을 지정하여 그룹화된 열의 데이터가 클라이언트로 반환된다. group by의 결과로 앞서 살펴보았던 DISTINCT (중복제거) 를 사용했을때와 같은 결과가 나온다. 이로 인해, group by 구에 열을 지정하여 그룹화하면 지정된 열의 값이 같은 행이 하나의 그룹으로 묶이는 것을 알 수 있다. 즉 그룹화할 경우 ..
-
SQL COUNT 집계함수Database 2021. 3. 29. 13:18
SQL은 데이터베이스라는 "데이터 집합"을 다루는 언어이다. SQL은 이러한 집합을 다루는 다양한 집계함수를 제공한다. COUNT(집합) SUM(집합) AVG(집합) MIN(집합) MAX(집합) 일반적인 함수는 인수로 하나의 값을 지정하지만, 집계함수는 인수로 집합을 지정한다. 집계 함수의 특징은 복수의 값(집합)에서 하나의 값을 계산해내는 것이다. 일반적인 함수는 하나의 행에 대하여 하나의 값을 반환하지만, 집계함수는 집합으로부터 하나의 값을 반환한다. 이처럼 집합으로부터 하나의 값을 계산하는 것을 집계라 부른다. 위와 같은 이유로 집계함수를 SELECT 구에 사용하면 WHERE 구 유/무와 관계없이 결괏값으로 하나의 행을 반환한다. COUNT SELECT COUNT FROM products; (X) ..