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

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

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) 
);

บรรทัดที่ 6 : ดึงค่าจาก SYSDATE มาเป็นค่า default

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

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

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

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

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

การค้นหาค่าจาก Boolean ใช้ ‘f’ หรือ ‘t’

select * from tbtest
where active = '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.แก้ไขขนาดของคอลัมน์

สร้างตารางทดสอบ

create table tbtest ( 
    id          SERIAL PRIMARY KEY,
    col1        CHAR(14) NOT NULL,
    timestamp   DATETIME YEAR TO FRACTION(5) DEFAULT SYSDATE YEAR TO FRACTION(5) 
);

ลองใส่ข้อมูล

insert into tbtest (col1) values ('abcdefghijklmnopqrstuvwxyz')

จะเห็นแค่ a-n

ทีนี้ปรับขนาดคอลัมน์จาก 14 เป็น 26

ALTER TABLE tbtest modify col1 char(26)

จะเห็น a-z ละ