1. 程式人生 > >Mysql DDL語句操作

Mysql DDL語句操作

此內容摘自 "mysql5.7從入門到精通"


  目錄

1.建立表   2.主鍵約束   3.外來鍵   4.使用非空約束   5.唯一約束  6.預設約束  7.主鍵自增

8.修改表名   9.修改某個欄位的資料型別    10.修改欄位名字   11.新增新欄位    12.刪除欄位   13.刪除表的外來鍵約束


1.建立表

  表名不區分大小寫,不能使用SQL關鍵字

    -- 語法                                        --例子
    CREATE TABLE 表名 (                           CREATE TABLE tb_emp (
        欄位名1    資料型別  ,                         id    INT(10)  ,
        欄位名2    資料型別  ,                         name   VARCHAR(20) ,
     );                                           );

2.主鍵約束

    1. 單欄位主鍵

     一個表中只能有一個主鍵

    第一種直接在欄位後面加primary key , 第二種在定義完列後加主鍵

-- 語法
欄位名    資料型別    PRIMARY KEY 

-- 1                                     --2
CREATE TABLE tb_emp2(                    CREATE TABLE tb_emp2(
    id INT(11)  PRIMARY KEY ,                id INT(11)  ,
    name VARCHAR(20),                        name VARCHAR(20),
    salary  INT(10)                          salary  INT(10),
);                                           PRIMARY KEY(id)      
                                         );

  2.多欄位聯合主鍵

-- 語法
PRIMARY KEY (欄位1,欄位2,欄位n)

--例子
CREATE TABLE tb_emp2(
    id INT(11)  ,
    name VARCHAR(20),
    salary  INT(10),
    PRIMARY KEY(id,name)      
);

3.外來鍵

 外來鍵首先他是一個表的欄位,他可以不是主鍵,但必須對應另一個表的主鍵,

-- 語法
CONSTRAINT  外來鍵名  FOREIGN KEY(欄位1)  REFERENCES 表名(主鍵欄位)

CREATE TABLE tb_emp4(
    id INT(11)  PRIMARY KEY ,
    name VARCHAR(20),
    salary  INT(10),
    CONSTRAINT  fk_name  FOREIGN KEY(name)  REFERENCES dept(id)
);

4.使用非空約束

-- 語法
欄位名 資料型別 NOT NULL

-- 例子
CREATE TABLE tb_emp5(
    id INT(11)  PRIMARY KEY ,
    name VARCHAR(20) NOT NULL,
    salary  INT(10) NOT NULL,
);

5.唯一約束

 一個表中可以有多個唯一約束,且值可以為null

-- 語法            
欄位名 資料型別 UNIQUE                   CONSTRAINT 約束名  UNIQUE (欄位名)
   
-- 1                                     --2
CREATE TABLE tb_emp6(                    CREATE TABLE tb_emp7(
    id INT(11)  PRIMARY KEY ,                id INT(11)  PRIMARY KEY ,
    name VARCHAR(20) UNIQUE,                 name VARCHAR(20) ,
    salary  INT(10),                         alary  INT(10),
);                                           CONSTRAINT uq_name UNIQUE (name)
                                        );
    

6.預設約束

 如果新增一條資料時,沒有指定該欄位的值就會使用預設值

-- 語法
欄位名 資料型別 DEFAULT 預設值

-- 例子
CREATE TABLE tb_emp5(
    id INT(11)  PRIMARY KEY ,
    name VARCHAR(20) DEFAULT '匿名使用者',
);

7.主鍵自增

一個表中只能有一個欄位使用auto_increment 約束

-- 語法
欄位名 資料型別 AUTO_INCREMENT

--例子
CREATE TABLE tb_emp5(
    id INT(11)  PRIMARY KEY AUTO_INCREMENT ,
    name VARCHAR(20),
);

8.修改表名

其中TO 為選引數,可省略

-- 語法 
ALTER TABLE 舊錶名 RENAME TO  新表名

--例子
ALTER TABLE tb_emp1 RENAME tb_emp111;

9.修改某個欄位的資料型別

  以下是把name欄位的型別改為int型別

-- 語法
ALTER TABLE 表名 MODIFY  欄位名 資料型別

-- 例子 
ALTER TABLE tb_emp1 MODIFY name INT(20);

10.修改欄位名字

如果不需要修改資料型別可以寫成和原來一樣的,但就是不能為空

-- 語法
ALTER TABLE 表名 CHANGE 舊欄位名 新欄位名 資料型別

-- 例子
ALTER TABLE tb_emp2 CHANGE name emp_name VARCHAR(10);

11.新增新欄位

-- 語法
ALTER TABLE 表名 ADD 新欄位名 資料型別

-- 例子
ALTER TABLE dept ADD managerId INT(10);

12.刪除欄位

-- 語法 
ALTER TABLR 表名 DROP 欄位名

--例子
ALTER TABLE dept DROP managerId;

13.刪除表的外來鍵約束

-- 語法
ALTER TABLE 表名 DROP FOREIGN KEY (外來鍵約束名)

--例子
ALTER TABLE tb_emp4 DROP FOREIGN KEY (fk_name)