20 Eylül 2020 Pazar

UPDATE ... WHERE

Örnek
Şöyle yaparız.
UPDATE test_table SET ("column_a","column_b") = ('value-a','value-b')
         WHERE "column_a" = 'value-c' 
Aynı şeyi ROW ile şöyle yaparız. Bu kullanımı hiç görmemiştim
UPDATE test_table SET ("column_a") = ROW ('value-a') WHERE "column_a" = 'value-c' 

10 Eylül 2020 Perşembe

Sütun Tipleri

C# Eşleşmesi
Postgre ile C# arasındaki eşleşme şöyle
Postgresql  .Net System Type
----------  ------------ ------------------ ----------------
int8        Int64
bool        Boolean
bytea       Byte[]
date        DateTime
float8      Double
int4        Int32
money       Decimal
numeric     Decimal
float4      Single
int2        Int16
text        String
time        DateTime
timetz      DateTime
timestamp   DateTime
timestamptz DateTime
interval    TimeSpan
varchar     String
inet        IPAddress
bit         Boolean
uuid        Guid
array       Array

Metin Tipleri
Metin tipleri arasında en uygun olanı her zaman "text" tipi. varchar tipinin aksine metin için üst sınır tanımlamıyor.

array tipi
Sütun Tipleri - Array yazısına taşıdım.

bigserial
Sütun Tipleri - Serial yazısına taşıdım.

boolean
true, false ve null değeri alabilir.

bytea
PostgreSQL iki çeşit BLOB sütunu sağlar. Bunlar şöyle. bytea binary string anlamına gelir.
bytea - data stored in table
oid - table holds just identifier to data stored elsewhere
date - LocalDate
Sütun Tipleri - DATE yazısına taşıdım.

float8
float8 aynı zamanda "double precision" olarak ta bilinir

int8/bigint tipi
8 byte uzunluğundadır.

integer/int/int4 tipi
Aynı zamanda int ve int4 olarak ta bilir. 4 byte uzunluğundadır.

interval
Date/Time Sütun tiplerinden bir tanesidir

smallint/int2 tipi
2 byte uzunluğundadır

json ve jsonb
Sütun Tipleri - json yazısına taşıdım.

jsonb
Sütun Tipleri - jsonb yazısına taşıdım.

location
Şöyle yaparız.
CREATE TABLE tweets (
  id bigint,
  location point
)
oid
Sütun Tipleri - OID yazısına taşıdım.

real
real gibi tipler kullanılmamalı. Açıklaması şöyle.
nexact means that some values cannot be converted exactly to the internal format and are stored as approximations, so that storing and retrieving a value might show slight discrepancies. Managing these errors and how they propagate through calculations is the subject of an entire branch of mathematics and computer science and will not be discussed here, except for the following points:
  • If you require exact storage and calculations (such as for monetary amounts), use the numeric type instead.
  • If you want to do complicated calculations with these types for anything important, especially if you rely on certain behavior in boundary cases (infinity, underflow), you should evaluate the implementation carefully.
  • Comparing two floating-point values for equality might not always work as expected.
Şöyle yaparız
CREATE TABLE test (id integer, value real);
INSERT INTO test VALUES (1, 0.1);
Şöyle yaparız.
SELECT * FROM test where value = '0.1';
 id | value
----+-------
  1 |   0.1
(1 row)
Şöyle yaparız.
SELECT * FROM test where value = 0.1::real;
serial
Sütun Tipleri - Serial yazısına taşıdım

text
Sütun Tipleri - Text yazısına taşıdım.

TIME WITH TIME ZONE
 Java'daki java.time.OffsetTime sınıfına denk gelir.

TIME WITHOUT TIME ZONE - LocalTime
 Java'daki java.time.LocalTime sınıfına denk gelir.

TIMESTAMP WITH TIME ZONE
Date/Time Sütun Tipleri - TIMESTAMP WITH TIME ZONE yazısına taşıdım.

TIMESTAMP WITHOUT TIME ZONE - LocalDateTime
Date/Time Sütun Tipleri - TIMESTAMP WITHOUT TIME ZONE yazısına taşıdım.

uuid
Sütun Tipleri - uuid yazısına taşıdım.

varchar
Sütun Tipleri - varchar yazısına taşıdım.