mysql中的列屬性
列屬性列屬性:真正約束欄位的是資料型別,但是資料型別的越是很單一,需要一些額外的屬性來約束資料的合法性
列屬性包括哪些?
null , notnull , default , primary key , auto_increment , comment
列描述列描述:comment 沒有實際意義,是專門用來描述欄位會根據表建立語句儲存,用來給資料庫管理員了解.
預設值預設值 : 某一種資料經常性出現某個具體的值,可以一開始就定義好,在需要真實資料的時候,使用者可以選擇性的使用預設值.
預設值關鍵字: default
如何使用預設值 :
在插入資料的時候,不給該字段賦值,想使用預設值可以不一定要去指定列表,故意不適用字段列表:可以使用default關鍵字來代替值.
intsert into my_table values ('老衲',18,default);
主鍵主鍵 : primary key 主要的鍵,一張表中只能有乙個字段可以使用對應的鍵,用來唯一的約束該欄位裡面的資料,不能重複 ,
一張表中只能有乙個主鍵,主鍵不能為空.
增加主鍵:
1,在建立表的時候,直接在字段之後新增primary key.
2,在建立表的時候,在所有字段之後,使primary key (主鍵字段列表)來建立主鍵(如果多個欄位做為主鍵,可以使用復合主鍵)
3,當表已將建立之後,再次額外追加主鍵,可以修改字段屬性,也可以直接追加
alter table 表名 modify 字段列表 primary key ;
alter table 表名 add primary key(字段列表);
主鍵前提: 表中字段對應的資料本身是獨立的(不重複)
主鍵約束:
主鍵對應得字段中的資料不允許重複,一旦重複,資料操作失敗
更新主鍵 & 刪除主鍵
不能更新主鍵,只能在刪除後才能新增主鍵
刪除主鍵
alter table 表名 drop primary key ;
主鍵分類
業務主鍵 : 在主鍵建立過程中,很少使用真實業務資料作為主鍵字段
邏輯主鍵 : 沒有業務含義,無論是什麼值都沒有關係 (id)
自動增長
自動增長 auto_increment :當對應的字段,不給值,或者預設為null的時候,會自動的被系統出發,系統會從當前欄位中已有的最大值進行+1操作,得到乙個新的不同的字段. 自增長通常是作為主鍵的.
特點:auto_increment
1,任何乙個欄位要做自增長前提是本身必須是乙個索引(key一欄的值)
2,自增長字段必須是數字必須是整型
3,一張表只能有乙個自增長字段
自增長為什麼是從1開始?為什麼每次都增長1?
所有系統的變數(如字符集,校對集)都是有系統變數控制的
檢視自增長對應的變數: show variables like 'auto_increment%';
auto _increment_offset 起始值
auto _increment_increment 步長
修改變數實現不同的效果:修改是對整個資料庫修改,而不是單張表(一般沒有必要修改)
修改自增長步長: set auto _increment_set = 5;
刪除自增長
alter table 表名 drop id int ;
注意在刪除的時候,不要加主鍵 primary key
唯一鍵一張表中很多字段需要具有唯一性,資料不能重複,但是一張表中只能有乙個主鍵.
唯一鍵(unique key) 就可以解決表中多個字段需要唯一性約束的問題
本質:唯一鍵預設允許為空,切可以多個為空(因為空字段不參與唯一性比較)
增加唯一鍵:
1.建立表的時候,可以在字段後面直接新增unique key 標示
2.在所有的字段之後增加unique key (字段列表),同樣支援復合唯一鍵
3.在建立表之後增加唯一鍵
alter table 表名 add unique key (欄位名);
唯一鍵約束:
可以為空,可以多個為空.如果唯一鍵not null那就和主鍵約束完全一致
更新唯一鍵 & 刪除唯一鍵
刪除:alter table 表名 drop index 索引名字;
--唯一鍵預設時候欄位名作為索引名.(刪除的是唯一鍵約束而不是字段)
索引幾乎所有的索引都建立在字段之上.
索引:系統根據某種演算法.將已有的資料(未來可能新增的資料),單獨建立乙個檔案,
檔案能夠實現快速匹配資料,並且能夠快速找到對應表中的記錄.
索引的意義:
1.提公升查詢的效率
2.約束資料的有效性(唯一性等)
增加索引的前提條件:
1.檔案本身會產生索引檔案(有時候索引檔案會表資料檔案大)占用空間
2.如果某個字段需要作為查詢的條件經常使用,那麼可以使用索引
3.如果某個字段需要進行資料有效性的約束,也可能使用索引
mysql中提供了多種索引
1.主鍵索引 : primary key
2.唯一索引 : unique key
3.全文索引 : fulltext index
4.普通索引 : index
全文索引:
針對文章內部的關鍵字進行索引
例 :
1.新增primary key(主鍵索引)
mysql>alter table `table_name` add primary key ( `column` )
2.新增unique(唯一索引)
mysql>alter table `table_name` add unique ( `column`)
3.新增index(普通索引)
mysql>alter table `table_name` add index index_name ( `column` )
4.新增fulltext(全文索引)
mysql>alter table `table_name` add fulltext ( `column`)
5.新增多列索引
mysql>alter table `table_name` add index index_name ( `column1`, `column2`, `column3` )
5 mysql中的庫操作
對資料庫的操作包括對資料庫的增 刪 改 查 接下來介紹一下基本的sql語句 建立資料庫 create database 資料庫名稱 字符集 charset utf8 create database czpdb charset urf8 czpdb 資料庫在磁碟中就是乙個資料夾,它下邊的db.opt檔...
5 Mysql效能分析
1.慢查詢日誌 2.檢視問題sql的執行計畫 3.優化慢sql 4.檢視慢sql執行時的效能使用情況 5.調整系統引數 6.提公升伺服器硬體1.引數,開啟sql sql set global slow query log on set global long query time 1 配置檔案 my...
5) MySQL插入資料
mysql insert語句允許您將一行或多行插入到表中。下面說明了insert語句的語法 insert into table column1,column2.values value1,value2,首先,在insert into子句之後,在括號內指定表名和逗號分隔列的列表。然後,將括號內的相應列...