Postgresql_DB_가이드 30

목록 선택

이전 섹션에 표시된 대로 명령의 테이블 표현식 은 테이블, 뷰를 결합하고, 행을 제거하고, 그룹화하는 등의 방법으로 중간 가상 테이블을 구성합니다. 이 테이블은 최종적으로 선택 목록SELECT 에 의해 처리되도록 전달됩니다 . 선택 목록 은 중간 테이블의 실제로 출력 되는 열 을 결정합니다. 7.3.1. 선택 목록 항목 가장 간단한 종류의 선택 목록은 *테이블 표현식이 생성하는 모든 열을 내보내는 것입니다. 그렇지 않으면 선택 목록은 쉼표로 구분된 값 표현식 목록입니다( 섹션 4.2 에 정의됨 ). 예를 들어 열 이름 목록이 될 수 있습니다. 선택 a, b, c에서 ... 열 이름 a, b및 c는 절에서 참조하는 테이블 열의 실제 이름 이거나 섹션 7.2.1.2FROM 에서 설명한 대로 테이블에 지정된 ..

테이블 표현식

테이블 표현식 은 테이블을 계산합니다. 테이블 표현식에는 FROM선택적으로 WHERE, GROUP BY및 HAVING절이 오는 절이 포함됩니다. 간단한 테이블 표현식은 디스크의 테이블, 즉 기본 테이블을 참조하지만 더 복잡한 표현식을 사용하여 기본 테이블을 다양한 방식으로 수정하거나 결합할 수 있습니다. 테이블 표현식 의 선택적 WHERE, GROUP BY및 HAVING절은 절에서 파생된 테이블에서 수행되는 연속 변환의 파이프라인을 지정합니다 FROM. 이러한 모든 변환은 쿼리의 출력 행을 계산하기 위해 선택 목록에 전달되는 행을 제공하는 가상 테이블을 생성합니다. 7.2.1. FROM조항 _ 이 FROM절은 쉼표로 구분된 테이블 참조 목록에 제공된 하나 이상의 다른 테이블에서 테이블을 파생합니다. 에서..

쿼리 개요

데이터베이스에서 데이터를 검색하거나 검색하는 명령을 쿼리 라고 합니다 . SQL에서 SELECT명령은 쿼리를 지정하는 데 사용됩니다. SELECT명령 의 일반적인 구문은 다음과 같습니다. [ 와 함께with_queriesselect_list ] table_expression[ sort_specification] 에서 선택 다음 섹션에서는 선택 목록, 테이블 표현식 및 정렬 사양에 대한 세부 정보를 설명합니다. WITH쿼리는 고급 기능이므로 마지막으로 처리됩니다. 간단한 쿼리의 형식은 다음과 같습니다. SELECT * FROM table1; 이라는 테이블이 있다고 가정하면 table1이 명령은 에서 모든 행과 모든 사용자 정의 열을 검색합니다 table1. (검색 방법은 클라이언트 응용 프로그램에 따라 다..

수정된 행에서 데이터 반환

때때로 수정된 행이 조작되는 동안 데이터를 얻는 것이 유용합니다. , 및 명령 INSERT에는 모두 이를 지원하는 선택적 절이 있습니다. 를 사용 하면 데이터를 수집하기 위해 추가 데이터베이스 쿼리를 수행하지 않아도 되며 수정된 행을 안정적으로 식별하기 어려울 때 특히 유용합니다.UPDATEDELETERETURNINGRETURNING 절의 허용된 내용은 명령의 출력 목록 RETURNING과 동일 합니다( 섹션 7.3 참조 ). 여기에는 명령 대상 테이블의 열 이름이나 해당 열을 사용하는 값 ​​표현식이 포함될 수 있습니다. 일반적인 속기는 대상 테이블의 모든 열을 순서대로 선택하는 입니다.SELECTRETURNING * 에서 INSERT사용 가능한 데이터 RETURNING는 삽입된 행입니다. 이것은 클라..

데이터 업데이트

데이터베이스에 이미 있는 데이터를 수정하는 것을 업데이트라고 합니다. 개별 행, 테이블의 모든 행 또는 모든 행의 하위 집합을 업데이트할 수 있습니다. 각 열은 별도로 업데이트할 수 있습니다. 다른 열은 영향을 받지 않습니다. 기존 행을 업데이트하려면 UPDATE 명령을 사용하십시오. 여기에는 세 가지 정보가 필요합니다. 업데이트할 테이블 및 열의 이름 열의 새 값 업데이트할 행 SQL은 일반적으로 행에 대한 고유 식별자를 제공하지 않는다는 것을 5장 에서 상기하십시오 . 따라서 업데이트할 행을 직접 지정하는 것이 항상 가능한 것은 아닙니다. 대신 행을 업데이트하기 위해 충족해야 하는 조건을 지정합니다. 테이블에 기본 키가 있는 경우에만(선언 여부와 상관없이) 기본 키와 일치하는 조건을 선택하여 개별 행..

데이터 삽입

테이블이 생성될 때 데이터가 포함되지 않습니다. 데이터베이스를 많이 사용하기 전에 가장 먼저 해야 할 일은 데이터를 삽입하는 것입니다. 데이터는 한 번에 한 행씩 삽입됩니다. 단일 명령에 둘 이상의 행을 삽입할 수도 있지만 완전한 행이 아닌 항목은 삽입할 수 없습니다. 일부 열 값만 알고 있더라도 전체 행을 생성해야 합니다. 새 행을 작성하려면 INSERT 명령을 사용하십시오. 명령에는 테이블 이름과 열 값이 필요합니다. 예를 들어, 5장의 제품 테이블을 고려하십시오 . CREATE TABLE 제품( product_no 정수, 이름 텍스트, 가격 숫자 ); 행을 삽입하는 명령의 예는 다음과 같습니다. 제품 값에 삽입(1, '치즈', 9.99); 데이터 값은 쉼표로 구분된 열이 테이블에 나타나는 순서대로 ..

생성된 열

생성된 열은 항상 다른 열에서 계산되는 특수 열입니다. 따라서 테이블에 대한 뷰와 열에 대한 것입니다. 생성된 열에는 저장 열과 가상 열의 두 가지 종류가 있습니다. 저장된 생성 열은 작성(삽입 또는 업데이트)될 때 계산되고 일반 열인 것처럼 저장소를 차지합니다. 가상 생성 열은 스토리지를 차지하지 않으며 읽을 때 계산됩니다. 따라서 가상 생성 열은 뷰와 유사하고 저장된 생성 열은 구체화된 뷰와 유사합니다(항상 자동으로 업데이트된다는 점만 제외). PostgreSQL은 현재 저장된 생성 열만 구현합니다. 생성된 열을 생성하려면 의 GENERATED ALWAYS AS절을 사용하십시오 CREATE TABLE. 예를 들면 다음과 같습니다. CREATE TABLE 사람( ..., height_cm 숫자, hei..

제약

데이터 유형은 테이블에 저장할 수 있는 데이터의 종류를 제한하는 방법입니다. 그러나 많은 응용 프로그램에서 제공하는 제약 조건이 너무 조잡합니다. 예를 들어 제품 가격이 포함된 열은 양수 값만 허용해야 합니다. 그러나 양수만 허용하는 표준 데이터 유형은 없습니다. 또 다른 문제는 다른 열 또는 행과 관련하여 열 데이터를 제한할 수 있다는 것입니다. 예를 들어, 제품 정보가 포함된 테이블에는 각 제품 번호에 대해 하나의 행만 있어야 합니다. 이를 위해 SQL을 사용하여 열과 테이블에 대한 제약 조건을 정의할 수 있습니다. 제약 조건을 사용하면 테이블의 데이터를 원하는 만큼 제어할 수 있습니다. 사용자가 제약 조건을 위반하는 열에 데이터를 저장하려고 하면 오류가 발생합니다. 이는 값이 기본값 정의에서 나온 ..

기본값

열에 기본값을 할당할 수 있습니다. 새 행이 생성되고 일부 열에 값이 지정되지 않으면 해당 열이 각각의 기본값으로 채워집니다. 데이터 조작 명령은 해당 값이 무엇인지 알 필요 없이 열을 기본값으로 설정하도록 명시적으로 요청할 수도 있습니다. (데이터 조작 명령에 대한 자세한 내용은 6장 에 있습니다.) 기본값이 명시적으로 선언되지 않은 경우 기본값은 null 값입니다. null 값은 알 수 없는 데이터를 나타내는 것으로 간주될 수 있기 때문에 일반적으로 의미가 있습니다. 테이블 정의에서 기본값은 열 데이터 유형 뒤에 나열됩니다. 예를 들어: CREATE TABLE 제품( product_no 정수, 이름 텍스트, 가격 숫자 기본값 9.99 ); 기본값은 표현식이 될 수 있으며 기본값이 삽입될 때마다 평가됩..

테이블 기본 사항

관계형 데이터베이스의 테이블은 종이에 있는 테이블과 매우 유사합니다. 행과 열로 구성됩니다. 열의 수와 순서는 고정되어 있으며 각 열에는 이름이 있습니다. 행 수는 가변적입니다. 이는 주어진 순간에 저장되는 데이터의 양을 반영합니다. SQL은 테이블의 행 순서에 대해 어떠한 보장도 하지 않습니다. 테이블을 읽을 때 정렬이 명시적으로 요청되지 않는 한 행은 지정되지 않은 순서로 나타납니다. 이에 대해서는 7장 에서 다룹니다 . 또한 SQL은 행에 고유 식별자를 할당하지 않으므로 테이블에 완전히 동일한 여러 행이 있을 수 있습니다. 이것은 SQL의 기초가 되지만 일반적으로 바람직하지 않은 수학적 모델의 결과입니다. 이 장의 뒷부분에서 우리는 이 문제를 처리하는 방법을 볼 것입니다. 각 열에는 데이터 유형이 ..