MySQL 是一種關(guān)系型數(shù)據(jù)庫(kù),其表定義包含了表的結(jié)構(gòu)和存儲(chǔ)的數(shù)據(jù)格式。一個(gè)表定義包括表名、列名、列的數(shù)據(jù)類(lèi)型和約束條件。
CREATE TABLE table_name ( column1 datatype constraints, column2 datatype constraints, column3 datatype constraints, ... );
在表定義中,列的數(shù)據(jù)類(lèi)型指定了該列可以存儲(chǔ)的數(shù)據(jù)類(lèi)型。MySQL 支持各種數(shù)據(jù)類(lèi)型,包括數(shù)字、字符串、日期和時(shí)間等,以及自定義數(shù)據(jù)類(lèi)型。
CREATE TABLE students ( id INT NOT NULL, name VARCHAR(50) NOT NULL, gender ENUM('Male', 'Female'), birthdate DATE, gpa DECIMAL(4, 2), PRIMARY KEY (id) );
上面的例子中,students 表有 5 個(gè)列,其中 id、name 列是必需的,因此 NOT NULL 約束被添加到這兩個(gè)列中。gender 列使用 ENUM 數(shù)據(jù)類(lèi)型指定可以存儲(chǔ)的值,birthdate 列使用 DATE 數(shù)據(jù)類(lèi)型存儲(chǔ)日期,gpa 列使用 DECIMAL 數(shù)據(jù)類(lèi)型存儲(chǔ) GPA,其中 4 指定了總的數(shù)字位數(shù),2 指定了小數(shù)位數(shù)。
表定義還可以包括約束條件,用于確保表中的數(shù)據(jù)滿(mǎn)足一定的要求。常用的約束條件包括 PRIMARY KEY、FOREIGN KEY、UNIQUE 和 CHECK。
CREATE TABLE orders ( order_id INT NOT NULL PRIMARY KEY, customer_id INT NOT NULL, order_date DATE NOT NULL, FOREIGN KEY (customer_id) REFERENCES customers (customer_id), CHECK (order_date >= '2019-01-01') );
上面的例子中,orders 表使用 PRIMARY KEY 約束指定 order_id 列作為主鍵,使用 FOREIGN KEY 約束指定 customer_id 列參考 customers 表的主鍵列,使用 CHECK 約束指定 order_date 列必須是 '2019-01-01' 或之后的日期。
在 MySQL 中,可以使用 ALTER TABLE 命令修改表定義,包括添加、刪除和修改列、約束條件等。
ALTER TABLE students ADD COLUMN major VARCHAR(50);
上面的例子中,students 表添加了一個(gè)名為 major 的列。