表操作
建立表
基本文法:create table [if not exists] tablename(字段清單[索引或限制清單]) [表選項清單] ;
字段設定形式
格式:字段名 資料類型 字段屬性1 字段屬性2 ……
- 字段名自定義,需遵守規範
- 資料類型就是前文介紹的數值型 字元串型 日期時間型
- 字段屬性可以有一個或多個,主要有以下幾個
- auto_increment:适用于整數類型,該字段自增,通常用于主鍵
- primary key:設定主鍵,該字段的值在表中确定唯一一行資料
- not null:不能為空,如果沒有設定,預設為空的
- unique key:設定該字段是唯一性的,不重複,與primary key的差別為該字段可以為空
- default:如果沒有設定該字段的值,則為預設值
- comment:該字段的注釋說明
建立表示例
修改表
修改表,指修改表的結構,如同建立表時設定的表結構一樣
建立表可以完成的,通過修改表這種方式也可以做到
比如可以對字段進行修改,添加删除修改,對索引進行修改,添加删除,對表選項進行修改,即使建立的時候不設定表選項值,一般也有其預設值
添加字段
- 文法:alter table table_name add column 新字段名 新字段類型 新字段屬性
- 示例如下
修改字段(可改名)
- 文法:alter table 表明 change column 舊字段名 新字段名 新字段類型 新字段屬性
- 示例如下
删除字段
- 文法:alter table 表名 drop column 字段名
- 示例如下
添加普通索引
- 文法:alter table 表名 add key索引名
- 示例如下
添加主鍵索引(限制)
- 文法:alter table 表名 add primary key(字段名)
- 示例如下
添加唯一索引(限制)
- 文法:alter table 表名 add unique key(字段名)
- 示例如下
修改表名
- 方式一:
- 文法:alter table 表名 rename to 新表明
- 示例如下
- 方式二:
- 文法:rename table 表名 to 新表名
- 示例如下
删除表
- 文法:drop table if exists 表名
- 示例如下
表相關其它操作
顯示目前資料庫所有表
- 文法:show tables;
- 示例如下
檢視表結構
- 文法:desc 表名
- 示例如下
檢視表的建立語句
- 文法:show create table 表名
- 示例如下
從已有表複制表結構
- 文法:create table if not exists 新表名 like 舊表名
- 示例如下
索引
索引可以了解為資料庫内部維護的一張隐藏的表,我們可以為表中的某一個或多個字段建立索引,資料庫會對這個字段的所有資料進行預先的某種 排序,這樣會大幅提高查詢效率,但要考慮增删改帶來的負擔。
資料庫管理系統會建立并維護一個和目前表關聯的“索引表”。
索引主要分為普通索引 主鍵索引 唯一索引 全文索引 外鍵索引五種
普通索引
形式:key(字段名)
就是一個索引,沒有其他作用,加快查詢速度
主鍵索引
形式:primary key(字段名)
是一個索引,同時該字段的值還能唯一确定表中的一行資料,不可重複
唯一索引
形式:unique key(字段名)
是一個索引,并且該字段的值是唯一的,允許為空
全文索引
形式:fulltext(字段名)
外鍵索引
形式:foreign key(字段名) reference 其他表中的字段名
外鍵就是表中的某個字段,其值必須為另一個表中的某個字段值,不可以随意插入
示例
表選項
表選項就是指建立表的時候對表的整體設定
主要有如下幾個:
- charset:指定表中資料存儲的字元集,預設情況使用資料庫的編碼集
- engine:資料存儲引擎,也叫表類型
- 指将資料存儲到硬碟上的機制,一般有兩個大層面,一個盡可能速度快,另一個盡可能功能多
- 主要有InnoDB MyIsam BDM MEMORY等,預設是InnoDB
- 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語句
示例如下:
使用視圖
建立好的視圖可以直接當做表來使用,如下:
删除視圖
同删除表一樣,如下: