列屬性:
更加保證數據的合法性
列屬性包括:NULL/NOT NULL、default、Primary key(主鍵)、unique key(唯一鍵)、auto_increment()、comment()
空屬性:
兩個值:NULL(默認的)、NOT NULL(不為空)
列描述:
comment,描述,沒有實際含義,是專門用來描述字段,會根據表創建語句保存,用來給程序員(數據庫管理員)來進行了解的
默認值:
default,在需要真實數據的時候,用戶可以選擇性地使用默認值
主鍵
定義:
1、主關鍵字(主鍵,primary key)是被挑選出來,作表的行的惟一標識的候選關鍵字。
2、一個表只有一個主關鍵字。
3、主關鍵字又可以稱為主鍵。
4、主鍵可以由一個字段,也可以由多個字段組成,分別成為單字段主鍵或多字段主鍵
優點:主鍵本身不允許為空
缺點:只能使用一個字段作為主鍵
增加主鍵:
方案一:在創建表的時候,直接在字段之后,跟primary key關鍵字(主鍵本身不允許為空)
方案二:在創建表的時候,在所有的字段之后,使用primary key(主鍵字段列表)來創建主鍵,如果有多個字段作為主鍵,可以是復合主鍵
方案三:當表已經創建好之后,額外追加主鍵(如果追加主鍵時,主鍵不唯一,就會追加失?。?/b>,可以通過修改表字段屬性,也可以直接追加
alter table 表名 add primary key(字段列表);
主鍵約束:
主鍵對應的字段中的數據不允許重復,一旦重復,數據操作(增和改)失敗
更新主鍵 & 刪除主鍵
alter table 表名 drop primary key;
主鍵分類:業務主鍵(身份證等,不常用)、邏輯主鍵(只是啥都可以,常用)
create table my_student(
id int primary key auto_increment comment '邏輯主鍵:自增長',
number char(10) not null comment '學號',
name varchar(10) not null
)
自動增長
自動增長:auto_increment,當對應的字段,不給值,或給默認值、或給NULL值,會自動的被系統觸發,系統會從當前字段中已有的最大值基礎上,再進行+1操作,得到一個新的不同的數據
特點:
任何一個字段要做自增長,前提必須本身就是一個索引
自增長字段必須是數字,而且是整型
一張表最多只能有一個自增長
修改自增長:alter table 表名 auto_increment=值;
查看自增長對應的變量:show variables like 'auto_increment%';
刪除自增長:alter table 表名 modify 字段 類型;
唯一鍵(unique key)
desc 查看列和數據的類型
默認允許自動為空,而且可以多個為空(不參加運算)
增加唯一鍵:
方案一:在創建表的時候,字段之后直接跟unique / unique key
方案二:在所有的字段之后增加unique key(字段列表);
方案三:在創建表之后增加唯一鍵
更新唯一鍵 & 刪除唯一鍵
錯誤的刪除方法:alter table 表名 drop unique key;(唯一鍵可以有多個)
alter table 表名 drop index 索引名字(默認字段名);(正確)
索引
建立在字段上? ,將已有的數據,或未來可能新增的數據,本身會產生一個文件,耗費磁盤和空間
意義:
提升查詢數據的效率
約束數據的有效性、唯一性等
MySQL中提供了多種索引
主鍵索引:primary key
唯一索引:unique key
全文索引:fulltext index
普通索引:index
AVG([distinct] expr)? 求平均值
COUNT({*|[distinct] } expr) 統計行的數量
MAX([distinct] expr) 求最大值
MIN([distinct] expr) 求最小值
SUM([distinct] expr 求累加和