1. 程式人生 > >MySQL:創建、修改和刪除表

MySQL:創建、修改和刪除表

rop ont ... rst incr arc bigint 第一個 desc

1.創建數據庫:CREATE DATABASE 數據庫名;

 刪除數據庫:DROP DATABASE 數據庫名;

 查看數據庫編碼:SHOW CREATE DATABASE 數據庫名;

 修改數據庫默認編碼:ALTER DATABASE 數據庫名 DEFAULT CHARACTER SET 字符編碼名 [COLLATE ...];

 查詢存儲引擎的類型:SHOW ENGINES;

查詢結果中,Engine參數指存儲引擎名稱;Support參數說明MySQL是否支持該類型引擎;Comment參數表示對該引擎的評論;Transaction參數表示是否支持事務處理;XA參數表示是否分布式交易處理的XA規範;Savepoints參數表示是否支持保存點,以方便事務的回滾操作;

InnoDB存儲引擎是default的,也就是數據庫默認的存儲引擎,下面我們簡單介紹一下InnoDB:InnoDB是MySQL的一種存儲引擎,InnoDB給MySQL提供了事務、回滾、崩潰修復能力和多版本並發控制的事務安全。InnoDB是MySQL上第一個提供外鍵約束的表引擎,而且對事務處理的能力,也是其他存儲引擎不能比擬的。不過這種引擎的缺點就是讀寫效率稍差,占用的數據空間相對比較大。

2.創建表:CREATE TABLE 表名 (

        屬性名 數據類型 [完整約束條件],

        屬性名 數據類型 [完整約束條件],

        ...
        ...

        

屬性名 數據類型 [完整約束條件]

         );

  在創建之前要選擇數據庫,格式:USE 數據庫名;

  查看表編碼:SHOW CREATE TABLE 表名;

  查看字段編碼:SHOW FULL COLUMNS FROM 表名;

  約束條件表:

約束條件

說明

PRIMARY KEY

標識該屬性為該表的主鍵,可以唯一的標識對應的元組

FOREIGN KEY

標識該屬性為該表的外鍵,是與之聯系某表的主鍵
NOT NULL

標識該屬性不能為空

UNIQUE

標識該屬性的值是唯一的
AUTO_INCREMENT

標識該屬性的值是自動增加,這是MySQL的SQL語句的特色

DEFAULT

為該屬性設置默認值

 

 1)設置表的主鍵:

  單字段主鍵格式:屬性名 數據類型 PRIMARY KEY

CREATE TABLE student1 (
     id int PRIMARY KEY,
     name varchar(20)
     );

  多字段主鍵格式:PRIMARY KEY(屬性名1,屬性名2....屬性名n)

CREATE TABLE student2 (
        id int,
        stu_id int,
        name varchar(20),
        PRIMARY KEY(id,stu_id)
        );  

 2)設置表的外鍵:

  CONSTRAINT 外鍵別名 FOREIGN KEY(屬性1,屬性2,....屬性n) REFERENCES 表名(屬性1‘,屬性2‘,...屬性n‘)

CREATE TABLE teacher (
       id int PRIMARY KEY,
       stu_id int,
       name varchar(20),
       CONSTRAINT STUID FOREIGN KEY(stu_id) REFERENCES student1(id)
        );

 設置表的非空約束:屬性名 數據類型 NOT NULL

 設置表的唯一性約束:屬性名 數據類型 UNIQUE

 設置表的屬性值自動增加:屬性名 數據類型 AUTO_INCREMENT

  AUTO_INCREMENT約束的字段可以是任何整數類型(TINYINT、SMALLINT、INT和BIGINT),在默認的情況下,該字段的值是從1開始自增

 設置表的屬性的默認值:屬性名 數據類型 DEFAULT 默認值

CREATE TABLE student3 (
        id int PRIMARY KEY AUTO_INCREMENT,
        teacher_id int UNIQUE,
        name varchar(20) NOT NULL,
        sex varchar(10) DEFAULT male
        );

 3)查看表結構:

  查看表基本結構語句:DESCRIBE 表名;

    通過查看表的結構,就很明確的對表進行解讀,而且可以查看一下自己創建的表有沒錯誤,這個SQL語句必須會用

  查看表詳細結構語句:SHOW CREATE TABLE 表名;

    通過這個SQL語句可以查看表的詳細定義,除了字段名、字段的數據類型、約束條件外,還可以查看表的默認存儲引擎和字符編碼

3.修改表

 1)修改表名:ALTER TABLE 舊表名 RENAME 新表名;

 2)修改字段的數據類型:ALTER TABLE 表名 MODIFY 屬性名 數據類型;

            ALTER TABLE 表名 CHANGE change address address char(40) ;

 3)修改字段名:ALTER TABLE 表名 CHANGE 舊屬性名 新屬性名 新數據類型;

 4)增加字段:ALTER TABLE 表名 ADD 屬性名1 數據類型 [完整性約束條件] [FIRST | AFTER 屬性名2];

   “屬性名1”參數指需要增加的字段的名稱;“FIRST”參數是可選參數,其作用是將新增字段設置為表的第一個字段;“AFTER”參數也是可選的參數,其作用是將新增字段添加到“屬性名2”後面;“屬性名2”當然就是指表中已經有的字段

 5)刪除字段:ALTER TABLE 表名 DROP 屬性名;

 6)更改表的存儲引擎:ALTER TABLE 表名 ENGINE = 存儲引擎名;

 7)刪除表的外鍵約束:ALTER TABLE 表名 DROP FOREIGN KEY 外鍵別名;

 8)修改表的字符編碼格式:

    修改表的默認字符集和所有字符列(CHAR,VARCHAR,TEXT):ALTER TABLE 表名 CONVERT TO CHARACTER SET 字符編碼名 [COLLATE ...]

    修改表的默認字符集:ALTER TABLE 表名 DEFAULT CHARACTER SET 字符編碼名[COLLATE...];

    修改字段的字符集:ALTER TABLE 表名 CHANGE 屬性名1 屬性名2 CHARACTER SET 字符編碼名 [COLLATE ...];

4.刪除表:

 刪除沒有被關聯的普通表:DROP TABLE 表名;

 刪除被其他表關聯的父表:

  方法一:先刪除子表,在刪除父表

  方法二:刪除父表的外鍵約束(上面有介紹),再刪該表

 修改表的編碼:ALTER TABLE `Admin_table` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;

MySQL:創建、修改和刪除表