A 범퍼카 토토 유형PostgreSQL범퍼카 토토 유형을 사용할 수 있습니다
범퍼카 토토 유형 정의의 두 가지 간단한 예는 다음과 같습니다.
유형 Complex Complex AS (
구문은와 비슷합니다.생성, 필드 이름과 유형 만) 현재 포함될 수 있습니다.as키워드가 필수적입니다. 그것 없이는 시스템이 그럴 것입니다유형 만들기명령은 의미이며 홀수 구문 오류가 발생합니다.
유형을 정의한 후 테이블을 만들 수 있습니다.
테이블 생성 on_hand (
또는 기능 :
함수 생성 price_extension (Inventory_item, Integer)은 숫자를 반환합니다
테이블을 만들 때마다 범퍼카 토토 유형도
테이블 inventory_item 만들기 (
그런 다음inventory_item범퍼카 토토재적용하지 마십시오값으로
문자 그대로 상수로 범퍼카 토토 값을 작성하려면아래.) 따라서 장군
'(val1 , val2, ...) '
예는 다음과 같습니다.
'( "퍼지 주사위", 42,1.99)'
|inventory_item위에 정의 된 유형. 필드를 만들기 위해
'( "퍼지 주사위", 42,)'
null이 아닌 빈 줄을 원한다면 더블을 쓰십시오.
'( "", 42,)'
여기서 첫 번째 필드는 널 비 빈 줄, 세 번째 필드는
(이 상수는 실제로 일반적인 경우에 지나지 않습니다.섹션. 상수는 처음에 문자열로 취급됩니다
therow표현 구문도 가능합니다
행 ( '퍼지 주사위', 42, 1.99)
Row Keyword는 실제로 더 많은 것을 선택하는 한 선택 사항입니다.
( '퍼지 주사위', 42, 1.99)
therowExpression Syntax가 논의됩니다섹션.
범퍼카 토토 열의 필드에 액세스하려면 점을 씁니다.on_hand다음과 같은 것과 함께 예제 테이블
item.name.name on_hand where.price> 9.99; 이름을 선택하십시오.
이름 이후로 작동하지 않습니다항목| 열 이름이 아닌 테이블 이름으로 간주됩니다.on_hand, SQL 구문 규칙 별. 당신은 그것을 써야합니다
select (item) .name from on_hand where (item) .price> 9.99;
또는 테이블 이름을 사용해야하는 경우 (예 :
select (on_hand.item) .name on_hand where (on_hand.item) .price> 9.99;
이제 괄호 화 된 객체는 올바르게 해석됩니다항목열, 그리고 다음
유사한 구문 문제가 필드를 선택할 때마다 적용됩니다.
select (my_func (...)). 필드에서 ...
추가 괄호가 없으면 구문이 생성됩니다
특별 필드 이름*평균"모든 필드", 추가 설명대로섹션 8.16.5.
삽입 및 삽입 및
mytab (complex_col) 값 ((1.1,2.2))에 삽입;
첫 번째 예는 생략row, 두 번째
범퍼카 토토 열의 개별 하위 필드를 업데이트 할 수 있습니다 :
MyTab Set Complex_Col.r = (Complex_Col) .r + 1 Where ...; 업데이트
여기에 우리가 필요하지 않은 (그리고 실제로는 할 수 없음)set, 그러나 우리는 참조 할 때 괄호가 필요합니다
그리고 우리는 서브 필드를 대상으로 지정할 수 있습니다삽입,
mytab에 삽입 (complex_col.r, complex_col.i) 값 (1.1, 2.2);
열의 모든 서브 필드에 대한 값을 공급하지 않았다면
관련된 다양한 특별 구문 규칙과 동작이 있습니다
inPostgreSQL, ainventory_item표시된대로위, 우리는 할 수 있습니다
inventory_item c;에서 c를 선택하십시오.
이 쿼리는 단일 복합 값 열을 생성하므로 우리는 우리를 생성합니다
c
간단한 이름은 열 이름과 일치합니다.c12518_12540
평범한 자격을 갖춘 컬럼-이름 구문table_name.column_name할 수 있습니다필드 선택to
우리가 쓸 때
select c.* inventory_item c;
그런 다음 SQL 표준에 따라 내용을 가져와야합니다.
이름 | Supplier_id |
쿼리가있는 것처럼
inventory_item c;에서 c.name, c.supplier_id, c.price를 선택하십시오.
PostgreSQL이것을 적용합니다위, 당신.*간단한 테이블이 아닐 때마다 적용됩니다myfunc ()
isa, b및c,이 두 쿼리에는 다음과 같습니다
select (myfunc (x)).* some_table에서;
팁 : PostgreSQL손잡이
myfunc ()
두 구문으로 행당 3 회 호출됩니다. 그렇다면select (m).the오프셋 0절은 Optimizer를 유지합니다"평평한"하위 선택
myfunc ()
.
thecomposite_value.*구문은 이러한 종류의 열 확장을 초래합니다select출력, a반환Listin삽입/업데이트/삭제, a값절또는 A행. 다른 모든 맥락에서 (중첩 될 때 포함.*복합 값으로의 값은 변경되지 않습니다."모든 열"somefunc ()
범퍼카 토토 값을 허용합니다
Inventory_item C에서 몇 가지 푸치 (c.*)를 선택하십시오.
두 경우 모두 현재 행inventory_item함수로 전달됩니다.*그러한 경우에는 아무것도 사용하지 않습니다cinc.*테이블 이름 또는 별칭을 참조하려면.*c테이블 이름 또는 열 이름을 의미하며 실제로는c.
이러한 개념을 보여주는 또 다른 예는이 모든 것입니다
선택 * inventory_item c order by c;
이 모든 것주문 by클로즈는 지정합니다inventory_itemc, 첫 번째 사례는 다릅니다
select * from inventory_item c order by row (c.name, c.supplier_id, c.price);
(마지막 경우는 키워드가있는 행 생성자를 사용합니다row생략.)
범퍼카 토토재와 관련된 또 다른 특수 구문 행동기능범퍼카 토토 값의 필드 추출. 그만큼필드(테이블)and테이블.필드상호 교환 가능합니다. 예를 들어,
inventory_item에서 c.name을 선택하십시오. c.price> 1000;
또한 단일 인수를 수락하는 함수가있는 경우
inventory_item c에서 약간의 핀 (c)을 선택하십시오.
기능적 표기법과 필드 표기법 사이 의이 동등성"컴퓨터 필드". 사용하는 응용 프로그램somefunc의 실제 열이 아닙니다
팁 :이 행동으로 인해 a를주는 것은 현명하지 않습니다스키마.func(CompositeValue).
범퍼카 토토 값의 외부 텍스트 표현은 구성됩니다(and)) 주변,) 사이
'(42)'
필드 유형이 정수 인 경우 공백은 무시됩니다.
이전에 표시된대로 복합 값을 작성할 때필수필드 인 경우 그렇게하십시오
완전히 빈 필드 값 ("".
복합 출력 루틴은 현장에 이중 인용문을 표시합니다.
참고 :SQL 명령에 쓰는 내용은텍스트이중 견적과 백 슬래시가 들어있는 필드
삽입 ... 값 ( '( "\"\\ ")');String-Literal 프로세서는 한 수준의 백 슬래시를 제거합니다.( "\"\\ "). 차례로, 문자열은에 공급됩니다.텍스트데이터 유형의 입력 루틴이됩니다"\. (데이터 유형으로 작업하는 경우BYTEA예를 들어, 우리는 최대 8 개가 필요할 수 있습니다섹션)는 두 배를 피하기 위해 사용될 수 있습니다.
팁 :therow생성자 구문row, 개별 필드 값은 동일하게 작성됩니다