PostgreSQL instructions

Postgresql 基本:

建立表:

CREATE TABLE student (
    id bigint NOT NULL,
    name character varying(255),
    created_At timestamp without time zone,
    updated_At timestamp without time zone,
    class_id bigint NOT NULL
);

CREATE TABLE class (
    id bigint NOT NULL,
    class_name character varying(255),
    teacher_id bigint NOT NULL
);

CREATE TABLE teacher (
    id bigint NOT NULL,
    name character varying(255)
);

ALTER TABLE student OWNER TO postgres;    #change owner
ALTER TABLE class OWNER TO postgres;
ALTER TABLE teacher OWNER TO postgres;

# 設定 PK
ALTER TABLE ONLY student
    ADD CONSTRAINT student_pk PRIMARY KEY (id);
ALTER TABLE ONLY class 
    ADD CONSTRAINT class_pk PRIMARY KEY (id);
ALTER TABLE ONLY teacher 
    ADD CONSTRAINT teacher_pk PRIMARY KEY (id);

# 設定 FK
ALTER TABLE ONLY student
    ADD CONSTRAINT fk_student_class_id FOREIGN KEY (class_id);
ALTER TABLE ONLY class 
    ADD CONSTRAINT fk_class_teacher_id FOREIGN KEY (teacher_id);

修改資料:

UPDATE table SET column= ' ' WHERE ... ,  
EX: 
UPDATE icem_department SET province='北京市' WHERE id=3

插入資料:

insert into icem_department values(nextval('seq_department'),'台北車站','url',null,'台灣','台北市','address', 121.456, 23.456, 2208)

seq_deparment 是 .sql 檔案裡定義的規則

CREATE SEQUENCE seq_department
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;

用來規定如何增加 id,cahce 表示在 postgresql 的暫存有幾個

刪除資料:

  • 刪除一筆資料(a row) : DELETE FROM student WHERE id=4;
  • 刪除一個 column : alter table icem_sms_conf drop column smsdynamicvarpair3
  • 刪除一張表: DROP TABLE student

JOIN

https://blog.codinghorror.com/a-visual-explanation-of-sql-joins/


視圖 (view)


在 DBVisual 的操作是直接更改資料庫, .sql 檔案則是在部屬時讓機器去自動跑資料庫的欄位產生

現在我想要把某個 column 從 varchar 改成 text

我可以先產生新的 column 後,把舊的值 copy 過去,再把兩個 column rename 為想要的名字

// create a column
alter table icem_sms_conf
add column smsdynamicvarpair2 text;

// copy old val to new column
update icem_sms_conf
set smsdynamicvarpair2=smsdynamicvarpair;

// rename old
alter table icem_sms_conf
rename smsdynamicvarpair to smsdynamicvarpair3

// rename new to old_name
alter table icem_sms_conf
rename smsdynamicvarpair2 to smsdynamicvarpair

//delete original column
alter table icem_sms_conf
drop column smsdynamicvarpair3

results matching ""

    No results matching ""