close

這是線上平台課程的筆記內容,就是讓自己方便複習用。

老師講課的進度掌握得很好,教得也很淺寫易懂。

線上平台課程內有提供 SQL套件,如果有興趣的朋友一定要去支持老師的課程。

這樣才能取得老師提供的套件包做練習使用。

如果有想要知道老師的課程,再詢問我。


CH10  修改database、新增、索引。

新建資料庫

CREATE DATABASE table_name;

 

CREATE DATABASE northwind2;

 

圖形化操作也可以,就跟我們一開始做的一樣。

 

 

移除資料庫

DROP DATABASE table_name;

 

移除 mydb

DROP DATABASE mydb;

如果正在被讀取,會出現下面的錯誤!!

所以要做的事情是

 

確認圖示變成X

 

再一次DROP

 

圖形化的刪除也是可以。


創建TABLE

 

這算是最麻煩的一塊。

CREATE TABLE table_name(

欄位1,type

欄位2,type

…);

 

INT (4Bytes)整數

smallint/bigint 這些有需要可以自己查一下。

 

如果有一個ID自斷,每次插入紀錄時他們自動生成。

這個狀態下我們要用SERIAL,因為INT可以到 負的 會出問題。

所以自動產生的值,我們用SERIAL

SERIAL (4 Bytes)

Smallserial/bigserial

 

NUMERIC(十進制、小數)

NUMERIC (total_digits,digits_in_fraction)

這個狀況下,我們是告訴資料庫,整數有幾位,小數有幾位。

 

浮點數FLOAT DOUBLE

 

varchar文字 CHARACTER、也可以查詢一下TEXT

 

時間類型的數據

Timestamp(包含日期&時間)

Date(日期)

Time(時間00:00:00)

Interval(年分)

 

BOOLEAN (1Byte) 檢查True/False  /1

 

這邊簡單說明,其他的要自己查一下文件。用到才知道。

 


我們可以工具檢查一下表的創建。

 

 

這邊可以看到他提供給妳的基本語法&狀態。

這要另外學習。但是可以簡單的測試。比較簡單還是用工具處理。

 

 

我們來建立一個表subscribers

要有firstnamelastnameemailsignupdatefrequencyiscustomer

Integer 整數、varchar單字、boolean(/)

CREATE TABLE subscribers(

    firstname varchar(200),

    lastname varchar(200),

    email varchar(250),

    signupdate timestamp,

    frequency integer,

    iscustomer boolean

);

 

可以看到建立出來了。

 

查看一下欄位。

 

 

LAB 建造一個returns table

要有recordidcustomeriddatereturnedproductidquantityorderid

record serial 自動增長

customerid char(5) 這邊的原因我們可以查詢一下,

northwind表中的customerid是用文字儲存,且只有五個字。

quantity smallint數量不會太大,所以用smallint

 

CREATE TABLE returns (

    record serial,

    customerid char(5),

    datereturned timestamp,

    productid int,

    quantity smallint,

    ordered int

);

 

SELECT customerid FROM customers;

char(5)的原因。

 

檢查一下。

 


ALTER TABLE  更改表中欄位名稱

 

ALTER TABLE table_name

RENAME 欄位_oldname TO 欄位_newname

 

ALTER TABLE subscribers

RENAME firstname TO first_name;

 

 

也可以靠圖形化做到這一件事情。

也可以在這邊更改。

 


ALTER 2 重新命名整個TABLE

 

ALTER TABLE oldtable_name

RENAME TO newtable_name;

 

把訂閱者更改成MAIL訂閱者

ALTER TABLE subscribers

RENAME TO email_subscribers;

 


ALTER 第二部分

更改DATA TYPE

ALTER TABEL table_name

ALTER COLUMN column SET DATA TYPE datatype;

 

email_subscribers 內的emaildatatype修改成var(255)

ALTER TABLE email_subscribers

ALTER COLUMN email SET DATA TYPE varchar(255);

 

ALTER TABLE bad_orders

ALTER COLUMN quantity SET DATA TYPE int;

 

檢查狀況是否改變了。

 

如果要修改DATA TYPE也可以從這邊圖形化的進行。

有許多ALTER TABLE的語句用在處理Trigger!!

後面會介紹到。

 


創造指數 INDEX

建立索引表

CREATE INDEX index_name

ON table_name (欄位1,欄位2…)

 

或者唯一索引,這邊指的是他只允許表中的值是唯一的。(不能重複)

類似用在自動生長ID上,不重複的感覺。

因此若有另一個具有該值的紀錄,他將拒絕數據不讓他進入此表。

CREATE UNIQUE INDEX index_name

ON table_name (欄位1,欄位2…)

 

INDEX在表當中非常重要。

如果SELECT開始變慢,那是因為我們正在使用WHERE來進行搜尋(在沒有INDEX2的欄位上)

如果加上INDEX,那搜索可以快上百倍。

 

現在來創建第一個索引,將在email_subscribers上面增加。

且必須是UNIQUE

 

Index命名通常會組合欄位&TABLE名稱來使用。

CREATE INDEX email_email_subscribers

ON email_subscribers (email);

 

要加上UNIQUE

CREATE UNIQUE INDEX email_email_subscribers

ON email_subscribers (email);

現在有INDEX了。

 

LAB 建立一個包含兩個欄位。欄位包含customerid & orderid

 

CREATE INDEX oredr_customer_badorder

ON bad_orders (orderid,customerid);

 

也可以透過圖形化去做。


DROP INDEX

移除索引

 

DROP INDEX index_name;

甚至不用定義是哪張表的。處理名稱就好了。

移除email_email_subscribers索引。

 

DROP INDEX email_email_subscribers;

 

LAB 移除order_customer_badorder INDEX

DROP INDEX order_customer_badorder;

 

或者用圖形化。 這樣也是可以。

 


DROP TABLE

移除表 CREATE 剛好相反。指令也很簡單。

DROP TABLE table_name;

 

把之前建立的TABLE移除掉。

DROP TABLE email_subscribers;

 

LAB 透過圖形化也很簡單。

<本篇完>

 


第一篇:  IT讀書室-SQL語法學習- postgre安裝與匯入

第二篇:  IT讀書室-SQL語法學習- SELECT查詢

第三篇:  IT讀書室-SQL語法學習- WHERE條件

第四篇:  IT讀書室-SQL語法學習- 中間的SELECT語句

 


如果筆記造成任何法律或者侵權的問題,作者會立即將筆記下架。

 

 

arrow
arrow
    全站熱搜

    IT001 發表在 痞客邦 留言(0) 人氣()