天天看點

MySQL基礎之表操作 索引 限制 視圖等介紹

表操作

建立表

基本文法:create table [if not exists] tablename(字段清單[索引或限制清單]) [表選項清單] ;

字段設定形式

格式:字段名 資料類型 字段屬性1 字段屬性2 ……
  • 字段名自定義,需遵守規範
  • 資料類型就是前文介紹的數值型 字元串型 日期時間型
  • 字段屬性可以有一個或多個,主要有以下幾個
    • auto_increment:适用于整數類型,該字段自增,通常用于主鍵
    • primary key:設定主鍵,該字段的值在表中确定唯一一行資料
    • not null:不能為空,如果沒有設定,預設為空的
    • unique key:設定該字段是唯一性的,不重複,與primary key的差別為該字段可以為空
    • default:如果沒有設定該字段的值,則為預設值
    • comment:該字段的注釋說明

建立表示例

MySQL基礎之表操作 索引 限制 視圖等介紹
MySQL基礎之表操作 索引 限制 視圖等介紹

修改表

修改表,指修改表的結構,如同建立表時設定的表結構一樣

建立表可以完成的,通過修改表這種方式也可以做到

比如可以對字段進行修改,添加删除修改,對索引進行修改,添加删除,對表選項進行修改,即使建立的時候不設定表選項值,一般也有其預設值

添加字段

  • 文法:alter table table_name add column 新字段名 新字段類型 新字段屬性
  • 示例如下
    MySQL基礎之表操作 索引 限制 視圖等介紹

修改字段(可改名)

  • 文法:alter table 表明 change column 舊字段名 新字段名 新字段類型 新字段屬性
  • 示例如下
    MySQL基礎之表操作 索引 限制 視圖等介紹

删除字段

  • 文法:alter table 表名 drop column 字段名
  • 示例如下
    MySQL基礎之表操作 索引 限制 視圖等介紹

添加普通索引

  • 文法:alter table 表名 add key索引名
  • 示例如下
    MySQL基礎之表操作 索引 限制 視圖等介紹

添加主鍵索引(限制)

  • 文法:alter table 表名 add primary key(字段名)
  • 示例如下
    MySQL基礎之表操作 索引 限制 視圖等介紹

添加唯一索引(限制)

  • 文法:alter table 表名 add unique key(字段名)
  • 示例如下
    MySQL基礎之表操作 索引 限制 視圖等介紹

修改表名

  • 方式一:
    • 文法:alter table 表名 rename to 新表明
    • 示例如下
      MySQL基礎之表操作 索引 限制 視圖等介紹
  • 方式二:
    • 文法:rename table 表名 to 新表名
    • 示例如下
      MySQL基礎之表操作 索引 限制 視圖等介紹

删除表

  • 文法:drop table if exists 表名
  • 示例如下
    MySQL基礎之表操作 索引 限制 視圖等介紹

表相關其它操作

顯示目前資料庫所有表

  • 文法:show tables;
  • 示例如下
    MySQL基礎之表操作 索引 限制 視圖等介紹

檢視表結構

  • 文法:desc 表名
  • 示例如下
    MySQL基礎之表操作 索引 限制 視圖等介紹

檢視表的建立語句

  • 文法:show create table 表名
  • 示例如下
    MySQL基礎之表操作 索引 限制 視圖等介紹

從已有表複制表結構

  • 文法:create table if not exists 新表名 like 舊表名
  • 示例如下
    MySQL基礎之表操作 索引 限制 視圖等介紹

索引

索引可以了解為資料庫内部維護的一張隐藏的表,我們可以為表中的某一個或多個字段建立索引,資料庫會對這個字段的所有資料進行預先的某種 排序,這樣會大幅提高查詢效率,但要考慮增删改帶來的負擔。

資料庫管理系統會建立并維護一個和目前表關聯的“索引表”。

索引主要分為普通索引 主鍵索引 唯一索引 全文索引 外鍵索引五種

普通索引

形式:key(字段名)

就是一個索引,沒有其他作用,加快查詢速度

主鍵索引

形式:primary key(字段名)

是一個索引,同時該字段的值還能唯一确定表中的一行資料,不可重複

唯一索引

形式:unique key(字段名)

是一個索引,并且該字段的值是唯一的,允許為空

全文索引

形式:fulltext(字段名)

外鍵索引

形式:foreign key(字段名) reference 其他表中的字段名

外鍵就是表中的某個字段,其值必須為另一個表中的某個字段值,不可以随意插入

示例

MySQL基礎之表操作 索引 限制 視圖等介紹
MySQL基礎之表操作 索引 限制 視圖等介紹

表選項

表選項就是指建立表的時候對表的整體設定

主要有如下幾個:

- charset:指定表中資料存儲的字元集,預設情況使用資料庫的編碼集

- engine:資料存儲引擎,也叫表類型

- 指将資料存儲到硬碟上的機制,一般有兩個大層面,一個盡可能速度快,另一個盡可能功能多

- 主要有InnoDB MyIsam BDM MEMORY等,預設是InnoDB

MySQL基礎之表操作 索引 限制 視圖等介紹

- auto_increment:指定表中字段為auto_increment的id值起始值

- comment:表的注釋說明

限制

顧名思義,就是指資料滿足指定的條件才可以被正确的寫入

主要有如下幾種限制:

  • 主鍵限制:
    • 形式:primary key(字段名)
    • 釋義同主鍵索引
  • 外鍵限制:
    • 形式:foreign key(字段名) references 其他表中的字段
    • 釋義同外鍵索引
  • 唯一限制:
    • 形式:unique key(字段名)
    • 釋義同唯一索引
  • 預設限制:
    • 形式:default 值
    • 次限制隻能建立表的時候寫在字段屬性上
  • 非空限制:
    • 形式:not null
    • 指建立表時的not null屬性
  • 檢查限制:
    • 形式:check(判斷語句)
    • 如:create table user(id int , age int,check(age>10 and age<88))
主鍵限制 唯一限制 外鍵限制和其對應的索引,都是同一件事情,兩個名字而已。

視圖

視圖含義

同函數的含義差不多,函數是指将一段代碼封裝起來,并為之命名,以後用的時候,直接使用該函數名即可

視圖也如此,隻不過他是将一個select語句封裝起來,給其起一個名字,這個名字就是視圖名,以後執行這段語句,直接使用視圖就可以了

建立視圖

文法:create view 視圖名 [(字段名1,字段名2 ……)] as select語句

示例如下:

MySQL基礎之表操作 索引 限制 視圖等介紹

使用視圖

建立好的視圖可以直接當做表來使用,如下:
MySQL基礎之表操作 索引 限制 視圖等介紹

删除視圖

同删除表一樣,如下:
MySQL基礎之表操作 索引 限制 視圖等介紹