การสร้างตารางใน Informix

  1. สร้างตารางพร้อมกำหนดค่า auto id
  2. สร้างตารางพร้อมกำหนดค่า ENUM
  3. สร้างตารางพร้อมกำหนดค่า Default
  4. เพิ่มคอลัมน์ DATE และ DATETIME
  5. การ select ข้อมูลจากวันที่

1.สร้างตารางพร้อมกำหนดค่า auto id

create table tbtest ( 
    id          SERIAL PRIMARY KEY,
    firstname   VARCHAR(50) NOT NULL,
    username    CHAR(14) NOT NULL,
    num         INT,
    age         INTEGER,
    amount      DECIMAL(15,5),
    url         LVARCHAR(500)
);

SERIAL ใช้กำหนดให้เป็น sequential integers

คอลัมน์ id เป็นค่า auto increment
คอลัมน์ num และ age เป็นข้อมูลชนิด int และ integer ซึ่งเป็นข้อมูลชนิดเดียวกัน
คอลัมน์ amount เป็นข้อมูลชนิด decimal ที่มีทศนิยม 5 ตำแหน่ง

คอลัมน์ username เป็นข้อมูลชนิด CHAR ขนาด 14 bytes
คอลัมน์ firstname เป็นข้อมูลชนิด VARCHAR ขนาด 50 bytes (varchar จะมีขนาดได้ไม่เกิน 255 bytes)
คอลัมน์ url เป็นข้อมูลชนิด LVARCHAR ขนาด 500 bytes (LVARCHAR จะมีขนาดได้ไม่เกิน 32,739 bytes)

ตัวอย่างการใส่ข้อมูล

insert into tbtest (firstname, username, num, age, amount, url) 
values ('phaisarn', 'phaisarn', 5, 30, 123.50, 'https://phaisarn.com');

หรือ กำหนด PRIMARY KEY อีกแบบได้ดังนี้

create table tbtest ( 
    id          SERIAL NOT NULL,
    firstname   VARCHAR(50) NOT NULL,
    username    CHAR(14) NOT NULL,
    num         INT,
    age         INTEGER,
    amount      DECIMAL(15,5),
    url         LVARCHAR(500),

    PRIMARY KEY (id) 
);

2.สร้างตารางพร้อมกำหนดค่า ENUM

create table tbtest
  (
    id          SERIAL NOT NULL,
    firstname   VARCHAR(50) NOT NULL,
    username    CHAR(14) NOT NULL,
    gender      VARCHAR(6) NOT NULL,
    
    check (gender IN ('MALE' ,'FEMALE' ,'OTHER' )),
    PRIMARY KEY (id) 
  );

คอลัมน์ gender มีค่าได้เป็น MALE, FEMALE หรือ OTHER

ตัวอย่างการใส่ข้อมูล

insert into tbtest (firstname, username, gender) 
values ('phaisarn', 'phaisarn', 'MALE' );

3.สร้างตารางพร้อมกำหนดค่า Default

create table tbtest
(
    id          SERIAL  PRIMARY KEY,
    firstname   varchar(50) NOT NULL,
    active      Boolean DEFAULT 'f',
    timestamp   DATETIME YEAR TO FRACTION(5) DEFAULT SYSDATE YEAR TO FRACTION(5) 
);

DATETIME YEAR TO FRACTION(5) ก็คือ TIMESTAMP นั่นเอง

ตัวอย่างการใส่ข้อมูล

insert into tbtest (firstname) 
values ('phaisarn' );

ถ้าจะกำหนดค่าให้ Boolean ใช้ ‘f’ หรือ ‘t’ เช่น

insert into tbtest (firstname, active) 
values ('phaisarn', 't' );

4.เพิ่มคอลัมน์ DATE และ DATETIME

เพิ่มคอลัมน์ DATE

alter table tbtest add (date1 DATE);

ตัวอย่างการใส่ข้อมูล

insert into tbtest (firstname, date1) 
values ('phaisarn', '20/02/2019');

สำหรับ DATE รูปแบบเป็น dd/MM/yyyy

เพิ่มคอลัมน์ DATETIME YEAR TO FRACTION(3)
และ DATETIME YEAR TO FRACTION(5)

alter table tbtest add ( date3 DATETIME YEAR TO FRACTION(3) );
alter table tbtest add ( date5 DATETIME YEAR TO FRACTION(5) );

ตัวอย่างการใส่ข้อมูล

insert into tbtest (firstname, date1, date3, date5)
values (‘phaisarn’, ’22/11/2018′, ‘2018-11-22 09:10:30.123’, ‘2018-11-22 09:10:30.12345’ );

สำหรับ DATETIME YEAR TO FRACTION(3) รูปแบบเป็น yyyy-MM-dd HH:mm:ss.fff
สำหรับ DATETIME YEAR TO FRACTION(5) รูปแบบเป็น yyyy-MM-dd HH:mm:ss.fffff

C# ใช้

DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff", new CultureInfo("en-US")); 

5.การ select ข้อมูลจากวันที่

การ select ข้อมูลจากวันที่ปัจจุบัน

select * 
from  tbtest
where DATE(timestamp) = today

ตัวแปร timestamp เป็นแบบ DATETIME YEAR TO FRACTION(5) เลยต้องใช้ฟังก์ชัน DATE() มาครอบ ให้เหลือแต่วัน แล้วค่อยมาเปรียบเทียบกับ today

การ select ข้อมูลจากวันที่ย้อนหลัง 1 วัน

select * 
from  tbtest
where date1 = today-1;

ตัวแปร date1 เป็นแบบ DATE เลยนำมาเปรียบเทียบกับ today ได้เลย