| |關聯式資料庫|Index|Key|資料正規化|SQL (1)|SQL (3)|SQL (4)|SQL (5)| | |
|---|---|
| 資料庫簡介 |
|
|
SQL:維護資料庫與資料表 | |
| 以下將介紹部份 MySQL 所支援的 SQL 敘述,其中有些用法可能不適用於其它的資料庫產品。 | |
建立、移除與選擇資料庫 | |
| •CREATE DATABASE:建立資料庫。 | |
| CREATE DATABASE [IF NOT EXISTS] db_name | |
|
•DROP DATABASE:移除資料庫。 | |
| DROP DATABASE [IF EXISTS] db_name | |
|
•USE:選取將連線的資料庫。 | |
| USE db_name | |
建立、修改與刪除資料表 | |
| •CREATE TABLE:建立資料表。 | |
|
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)] [table_options] [select_statement] create_definition: col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [PRIMARY KEY] [reference_definition] or PRIMARY KEY (index_col_name,...) or KEY [index_name] (index_col_name,...) or INDEX [index_name] (index_col_name,...) or UNIQUE [INDEX] [index_name] (index_col_name,...) or FULLTEXT [INDEX] [index_name] (index_col_name,...) or [CONSTRAINT symbol] FOREIGN KEY [index_name] (index_col_name,...) [reference_definition] or CHECK (expr) type: TINYINT[(length)] [UNSIGNED] [ZEROFILL] or SMALLINT[(length)] [UNSIGNED] [ZEROFILL] or MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL] or INT[(length)] [UNSIGNED] [ZEROFILL] or INTEGER[(length)] [UNSIGNED] [ZEROFILL] or BIGINT[(length)] [UNSIGNED] [ZEROFILL] or REAL[(length,decimals)] [UNSIGNED] [ZEROFILL] or DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL] or FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL] or DECIMAL(length,decimals) [UNSIGNED] [ZEROFILL] or NUMERIC(length,decimals) [UNSIGNED] [ZEROFILL] or CHAR(length) [BINARY] or VARCHAR(length) [BINARY] or DATE or TIME or TIMESTAMP or DATETIME or TINYBLOB or BLOB or MEDIUMBLOB or LONGBLOB or TINYTEXT or TEXT or MEDIUMTEXT or LONGTEXT or ENUM(value1,value2,value3,...) or SET(value1,value2,value3,...) index_col_name: col_name [(length)] reference_definition: REFERENCES tbl_name [(index_col_name,...)] [MATCH FULL | MATCH PARTIAL] [ON DELETE reference_option] [ON UPDATE reference_option] reference_option: RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT table_options: TYPE = {BDB | HEAP | ISAM | InnoDB | MERGE | MRG_MYISAM | MYISAM } or AUTO_INCREMENT = # or AVG_ROW_LENGTH = # or CHECKSUM = {0 | 1} or COMMENT = "string" or MAX_ROWS = # or MIN_ROWS = # or PACK_KEYS = {0 | 1 | DEFAULT} or PASSWORD = "string" or DELAY_KEY_WRITE = {0 | 1} or ROW_FORMAT= { default | dynamic | fixed | compressed } or RAID_TYPE= {1 | STRIPED | RAID0 } RAID_CHUNKS=# RAID_CHUNKSIZE=# or UNION = (table_name,[table_name...]) or INSERT_METHOD= {NO | FIRST | LAST } or DATA DIRECTORY="absolute path to directory" or INDEX DIRECTORY="absolute path to directory" select_statement: [IGNORE | REPLACE] SELECT ... (Some legal select statement) | |
| 看完上述的語法,您可能會大吃一驚。其實在實作時,有許多設定可以直接引用其預設值,因此語法得以簡化不少。以下就是兩個 CREATE TABLE 的使用實例,沒那麼複雜: | |
|
CREATE TABLE friend ( sn INT(4) NOT NULL AUTO_INCREMENT, realname CHAR(10), address CHAR(50), phone CHAR(15), PRIMARY KEY (sn) ); | |
| CREATE TABLE new_friend SELECT * FROM old_friend | |
|
•ALTER TABLE:修改現有的資料表。 | |
|
ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...] alter_specification: ADD [COLUMN] create_definition [FIRST | AFTER column_name ] or ADD [COLUMN] (create_definition, create_definition,...) or ADD INDEX [index_name] (index_col_name,...) or ADD PRIMARY KEY (index_col_name,...) or ADD UNIQUE [index_name] (index_col_name,...) or ADD FULLTEXT [index_name] (index_col_name,...) or ADD [CONSTRAINT symbol] FOREIGN KEY [index_name] (index_col_name,...) [reference_definition] or ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} or CHANGE [COLUMN] old_col_name create_definition [FIRST | AFTER column_name] or MODIFY [COLUMN] create_definition [FIRST | AFTER column_name] or DROP [COLUMN] col_name or DROP PRIMARY KEY or DROP INDEX index_name or DISABLE KEYS or ENABLE KEYS or RENAME [TO] new_tbl_name or ORDER BY col or table_options | |
| ALTER TABLE 在 MySQL 裡功用很多,不但可以用來建立或刪除 index,也可以用來更改資料表的名稱或結構。 要使用時,您只要指定 tbl_name,然後就可以在後頭寫上一到多組異動的敘述。例如: | |
| 增加兩個欄位:ALTER TABLE friend ADD email CHAR(50), ADD age INT | |
| 刪除一個欄位:ALTER TABLE friend DROP email | |
| 加上 INDEX:ALTER TABLE friend ADD INDEX (realname) | |
| 刪除 INDEX:ALTER TABLE friend DROP INDEX realname | |
|
•DROP TABLE:移除資料表。 | |
| DROP TABLE tbl_name | |
|
| |
| |關聯式資料庫|Index|Key|資料正規化|SQL (1)|SQL (3)|SQL (4)|SQL (5)| | |


建立、移除與選擇資料庫