PHP與MySQL 入門學習指南 凱文瑞克 著 第 24章 建立資料表與索引
範例一 CREATE TABLE TEST (NAME VARCHAR(8) BINARY NOT NULL DEFAULT "guest", AGE SMALLINT UNSIGNED ZEROFILL DEFAULT 0); SHOW TABLES; SHOW COLUMNS FROM TEST;
範例二 CREATE TABLE customers (ID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,Name VARCHAR(20) NOT NULL,Address VARCHAR(50),E-Mail VARCHAR(20),Age INT,Gender ENUM('M','F') DEFAULT 'M',Phone_No VARCHAR(15)); SHOW TABLES; SHOW COLUMNS FROM Customers;
CREATE 的參數與命名 語法如下: CREATE TABLE IF NOT EXISTS Table_Name(Column_Name Data_Type);
命名方式 資料表名稱用複數(如Customers)。 複合名稱(compound name)。 所有資料庫物件名稱盡量前後保持一致。
利用 Script 建立 資料庫 將建立資料庫及相關資料表的SQL敘述,寫成一個文字檔,然後再送去MySQL執行,這樣做增加SQL敘述的再利用性。 現在請在記事本中將下列的語法輸入: CREATE DATABASE test1; USE DATABASE test1; CREATE TABLE customers (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,name VARCHAR(20) NOT NULL, address VARCHAR(50),e-Mail VARCHAR(20),age INT,gender ENUM('M','F') DEFAULT 'M',phone_No VARCHAR(15)); INSERT INTO customers (id,name,address,e-mail,age,gender,phone_no) VALUES (NULL,'Lin','Taipei,Taiwan','cc@mail.tnit.edu.tw','20','F','2662-5900');
變更現有資料表相關資訊 變更資料表名稱 變更欄位名稱 變更欄位型別 ALTER TABLE customers RENAME customer_table; 變更欄位名稱 ALTER TABLE customer_table CHANGE name customer_name VARCHAR(20); 變更欄位型別 ALTER TABLE customer_table CHANGE customer_name customer_name VARCHAR(50);
刪除資料表及欄位 刪除資料表 DROP TABLE table_name; 刪除部分欄位 ALTER TABLE table_name DROP filed_name; 刪除資料表中的 primary key ALTER TABLE table_name DROP PRIMARY KEY;
新增資料表及欄位 新增欄位 語法:ALTER TABLE table_name ADD column_name data_type; 將 age 這個欄位加入資料表 ALTER TABLE customer_table ADD age INT;
使用資料庫索引 索引(index)是一個可以加快存取資料庫速度的結構化檔案。 對適當的欄位建立索引可以提昇存取效率,但是建立過多的索引,往往會適得其反,建立索引另外有一項影響是,當新增紀錄時,有索引的資料表會比沒索引的慢。也就是說索引加快 SELECT 敘述的速度,但會降低 INSERT、UPDATE 及 DELETE 的速度。
決定索引中所要包含的欄位 可用一個或一個以上的欄位來建立索引,把握一個大原則,選擇 SQL 敘述或是 敘述的WHERE子句中 常出現的欄位,作為索引。或是以值不會重複的欄位(通常是資料表的 key)來建立索引,不過要分清楚,key 協助我們定義資料庫結構,而索引是改善資料庫存取效能。
建立索引 預設情況下,MySQL的自動為資料表中的 primary key(主鍵值)建立索引。要增加索引敘述如下: CREATE INDEX index_name ON table_name (column_list); 也可以用 ALTER TABLE 建立索引: ALTER TABLE Customers ADD INDEX (IDX_Last_Name);
刪除索引 DROP INDEX index_name ON table_name; 或 ALTER TABLE table_name DROP INDEX column_name;
索引刪除語法 現在要將 customer_table 資料表的 age 欄位為的 index 解除,請輸入如下之命令: ALTER TABLE customer_table DROP INDEX age; 單一欄位索引情況下,刪除該欄位,則索引也會一並刪除;而複合欄位索引,則是刪除其中一個欄位時,不會消失,只有所有欄位都刪除掉之後,此索引才會被刪除。