數據庫表的基本操作

1.創建表

CREATE TABLE 表名 (列名1 數據類型 約束,
                   列名2 數據類型 約束,
                   ...);

下面創建五個表

-- ----------------------
-- Create Customers table
-- ----------------------
CREATE TABLE Customers
(
  cust_id      char(10)  NOT NULL ,
  cust_name    char(50)  NOT NULL ,
  cust_address char(50)  NULL ,
  cust_city    char(50)  NULL ,
  cust_state   char(5)   NULL ,
  cust_zip     char(10)  NULL ,
  cust_country char(50)  NULL ,
  cust_contact char(50)  NULL ,
  cust_email   char(255) NULL 
);

-- -----------------------
-- Create OrderItems table
-- -----------------------
CREATE TABLE OrderItems
(
  order_num  int          NOT NULL ,
  order_item int          NOT NULL ,
  prod_id    char(10)     NOT NULL ,
  quantity   int          NOT NULL ,
  item_price decimal(8,2) NOT NULL 
);


-- -------------------
-- Create Orders table
-- -------------------
CREATE TABLE Orders
(
  order_num  int      NOT NULL ,
  order_date datetime NOT NULL ,
  cust_id    char(10) NOT NULL 
);

-- ---------------------
-- Create Products table
-- ---------------------
CREATE TABLE Products
(
  prod_id    char(10)      NOT NULL ,
  vend_id    char(10)      NOT NULL ,
  prod_name  char(255)     NOT NULL ,
  prod_price decimal(8,2)  NOT NULL ,
  prod_desc  text          NULL 
);

-- --------------------
-- Create Vendors table
-- --------------------
CREATE TABLE Vendors
(
  vend_id      char(10) NOT NULL ,
  vend_name    char(50) NOT NULL ,
  vend_address char(50) NULL ,
  vend_city    char(50) NULL ,
  vend_state   char(5)  NULL ,
  vend_zip     char(10) NULL ,
  vend_country char(50) NULL 
);


-- -------------------
-- Define primary keys
-- -------------------
-- 主鍵 ALTER TABLE 表名 ADD PRIMARY KEY(列名);
-- 或者直接在創建表時指定主鍵

ALTER TABLE Customers ADD PRIMARY KEY (cust_id);
ALTER TABLE OrderItems ADD PRIMARY KEY (order_num, order_item);
ALTER TABLE Orders ADD PRIMARY KEY (order_num);
ALTER TABLE Products ADD PRIMARY KEY (prod_id);
ALTER TABLE Vendors ADD PRIMARY KEY (vend_id);


-- -------------------
-- Define foreign keys
-- -------------------
-- 外鍵 ALTER TABLE 表名 ADD CONSTRAINT 外鍵名 FOREIGN KEY(列名) REFERENCES 表名(主鍵);

ALTER TABLE OrderItems ADD CONSTRAINT FK_OrderItems_Orders FOREIGN KEY (order_num) REFERENCES Orders (order_num);

ALTER TABLE OrderItems ADD CONSTRAINT FK_OrderItems_Products FOREIGN KEY (prod_id) REFERENCES Products (prod_id);

ALTER TABLE Orders ADD CONSTRAINT FK_Orders_Customers FOREIGN KEY (cust_id) REFERENCES Customers (cust_id);

ALTER TABLE Products ADD CONSTRAINT FK_Products_Vendors FOREIGN KEY (vend_id) REFERENCES Vendors (vend_id);

2.更新表

2.1 刪除,添加或修改表字段

如果你需要指定新增字段的位置,可以使用MySQL提供的關鍵字 FIRST (設定位第一列), AFTER 字段名(設定位於某個字段之後)。

-- 添加一列
ALTER TABLE Vendors ADD vend_phone CHAR(20);
-- 將新增列放在第一列
ALTER TABLE Vendors ADD vend_phone CHAR(20) FIRST;
-- 放在vend_name列之後
ALTER TABLE Vendors ADD vend_phone CHAR(20) AFTER vend_name;
-- 刪除列vend_phone
ALTER TABLE Vendors DROP COLUMN vend_phone;

2.2 修改字段類型及名稱
如果需要修改字段類型及名稱, 你可以在ALTER命令中使用 MODIFY 或 CHANGE 子句

 ALTER TABLE Vendors MODIFY vend_phone CHAR(10);
 -- 使用 CHANGE 子句, 語法有很大的不同。 在 CHANGE 關鍵字之後,緊跟着的是你要修改的字段名,然後指定新字段名及類型。
 ALTER TABLE Vendors CHANGE vend_phone v_p CHAR(10);

2.3 ALTER TABLE 對 Null 值和默認值的影響
當你修改字段時,你可以指定是否包含只或者是否設置默認值。

ALTER TABLE testalter_tbl MODIFY vend_id BIGINT NOT NULL DEFAULT 100;

2.4 修改字段默認值

 -- 使用ALTER 來修改字段的默認值
 ALTER TABLE Vendors ALTER vend_phone SET DEFAULT 000-0000-0000;
 -- 你也可以使用 ALTER 命令及 DROP子句來刪除字段的默認值
 ALTER TABLE Vendors ALTER vend_phone DROP DEFAULT;

2.5 修改字段的順序

-- 調整某個字段到表的第一個位置,
ALTER TABLE table_name MODIFY 屬性名 數據類型 FIRST;
-- 調整某個字段到表的某個字段之後,
ALTER TABLE table_name MODIFY 屬性名1 數據類型 AFTER 屬性名2

說明:屬性名1是要調整的字段,屬性名2 是要調整到字段後面。

3.刪除表

DROP TABLE CustCopy;

4.重命名錶

ALTER TABLE Vendors RENAME TO alter_tbl;
-- RENAME TABLE Vendors TO alter_tbl;

5.表約束

完整性是指數據的準確性和一致性,而完整性檢查就是指的是檢查數據的準確性和一致性。

5.1 設置非空約束(NOT NULL,NK)

CREATE TABLE table_name(屬性名 數據類型 NOT NULL...);

5.2 設置字段的默認值 (DEFAULT)
當數據庫表插入一條數據時候,如果沒有爲某個字段賦值,那麼數據庫系統就會自動給該字段賦值。

 CREATE TABLE table_name(屬性名 數據類型 DEFAULT 默認值, ...);

5.3 設置唯一約束(UNIQUE,UK)

CREATE TABLE table_name(
                 屬性名 數據類型 UNIQUE,
                …
        )

5.4 設置主鍵約束
當數據庫表中的某個字段用來唯一標識所有的記錄的時候,就可以設置PK約束。主鍵字段是唯一、非空的值。

CREATE TABLE table_name(
                 屬性名 數據類型 PRIMARY KEY,
                …
        )    

主鍵約束相當於非空約束+唯一約束。
多字段主鍵(聯合主鍵)設置如下,

 CREATE TABLE table_name(
                 屬性名 數據類型,
                …
                CONSTRAINT 約束名  PRIMARY KEY(屬性名1,屬性名2…)
        ); 

5.5、設置字段值自動增加(AUTO_INCREMENT)
設置AUTO_INCREMENT約束後,字段會生成一個唯一的ID值。該字段必須是整數類型。

CREATE TABLE table_name(
                 屬性名 數據類型 AUTO_INCREMENT,
                …
        );

5.6 設置外鍵約束(FOREIGN KEY,FK)
設置外鍵約束的兩個表必須具有父與子的關係。設置FK約束的字段,必須依賴於數據庫中已經存在的父表的主鍵。

 CREATE TABLE table_name(
                 屬性名 數據類型,
                …
                CONSTRAINT 外鍵約束名  FOREIGN  KEY   (屬性名1REFERENCES 表名 (屬性名2)
        );   
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章