這是線上平台課程的筆記內容,就是讓自己方便複習用。
老師講課的進度掌握得很好,教得也很淺寫易懂。
線上平台課程內有提供 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
要有firstname、lastname、email、signupdate、frequency,iscustomer
Integer 整數、varchar單字、boolean(是/否)
CREATE TABLE subscribers(
firstname varchar(200),
lastname varchar(200),
email varchar(250),
signupdate timestamp,
frequency integer,
iscustomer boolean
);
可以看到建立出來了。
查看一下欄位。
LAB 建造一個returns table
要有recordid、customerid、datereturned、productid、quantity、orderid
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 內的email的datatype修改成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語句
如果筆記造成任何法律或者侵權的問題,作者會立即將筆記下架。
留言列表