目錄
1、修改表結構 : 對已經創建的表的結構做修改:alter table 庫.表 執行動作;
2-1、索引介紹:給字段值排序的樹形結構,類似與“書的目錄”
3-3、創建複合主鍵: 表中的多個字段一起做主鍵 ,賦值時,主鍵字段的值不允許同時重複。
3-6、主鍵通常和auto_increment 連用 讓字段的值自動增長,做自加1 計算
1、修改表結構 : 對已經創建的表的結構做修改:alter table 庫.表 執行動作;
1-1、添加新字段 add
alter table db2.t1
add email varchar(50) default "[email protected]" ,add qq char(11) ;-----默認添加到最後的字段
alter table db2.t1
add stu_num char(9) first,------添加到第一個字段
add likes set("eat","sleeps","game","film") after sex;------ 添加到某一個字段之後
1-2、刪除已有字段 drop
alter table db2.t1 drop email , drop qq;----逗號間隔可一次刪多個字段
1-3、修改已有字段類型 modify
修改字段類型時,若新的類型與字段已經存儲數據衝突,不允許修改。
不修改的部分要原樣寫一遍,否則就會使用默認值,通過modify還可以修改字段位置。
alter table t1 modify sex enum('boy','girl',"no") not null default "boy" after name;-----修改sex字段爲多選,且不允許爲空,不賦值時默認值爲boy,並將該字段放在name字段之後
1-4、修改字段名 change
alter table t8 change stu_num stu_id varchar(9);---修改字段名stu_num 爲 stu_id
1-5、修改表名 rename
alter table t8 rename stuinfo;----修改表明爲stuinfo
show tables;
2、MYSQL鍵值:約束如何給字段賦值。
普通索引 index
2-1、索引介紹:給字段值排序的樹形結構,類似與“書的目錄”
算法(筆畫 部首 拼音 BTREE b+tree hash)
二叉樹
索引優點 :加快查詢數據的速度
索引缺點 :減慢寫入數據的速度 ,佔用磁盤空間
2-2、查看索引的兩種方式
desc 表; key ----> MUL
show index from 表\G;
2-3、創建索引的兩種方式及刪除索引
把已有表的字段設置爲index字段
create index aaa on stuinfo(name);-----創建了一個名爲aaa的索引在stuinfo表的(name)字段上
創建表時指定index字段
create table t9(
name char(15) not null default "",
class char(7) default "nsd1804",
age tinyint(2) not null default 19,
sex enum("boy","girl") not null default "boy",
index(name),index(class));------將name和class兩個字段設爲了索引
刪除索引index
drop index aaa on stuinfo;
3、主鍵 primary key 限制如何給字段賦值
primary key 使用規則:
1.一個表中只能有一個主鍵
2.設爲主鍵的字段賦值時不允許賦空值,即不能爲null,且該字段的值不允許重複
3.表中的多個字段一起做主鍵 ,賦值時,主鍵字段的值不允許同時重複。複合主鍵的出現是爲了解決一個主鍵字段無法允許第二個主鍵字段值相同的記錄的寫入,此時就需要再引用一個字段作爲主鍵來二次區分,才能再允許第二條記錄的寫入。注意複合主鍵的字段必須同時設爲主鍵,不允許追加設爲主鍵。
3-1、建表時創建主鍵的兩種格式,兩種方法
1.1 create table t10(stu_id char(9) primary key,
name char(10),
age int(2));
1.2 create table t11(
stu_id char(9) ,
name char(10),
age int(2),
primary key(stu_id));
2.1在已有表裏創建主鍵字段
alter table t10 add primary key(stu_id);
3-2、刪除主鍵
alter table t10 drop primary key;
desc t10;
insert into t10 values("nsd180401","lucy",21);
insert into t10 values(null,"lucy",21);
select * from t10;
3-3、創建複合主鍵: 表中的多個字段一起做主鍵 ,賦值時,主鍵字段的值不允許同時重複。
create table t12(
name char(15),
class char(7),
pay enum("yes","no"),
primary key(name,class)
);
mysql> insert into t12 values("bob","nsd1804","yes");
mysql> insert into t12 values("bob","nsd1804","no");
ERROR 1062 (23000): Duplicate entry 'bob-nsd1804' for key 'PRIMARY'
mysql> insert into t12 values("bob","nsd1805","no");
mysql> insert into t12 values("lucy","nsd1805","yes");
3-4、在已有表裏創建複合主鍵
delete from t12;
alter table t12 add primary key(name,class);
3-5、刪除複合主鍵
alter table t12 drop primary key;
3-6、主鍵通常和auto_increment 連用 讓字段的值自動增長,做自加1 計算
向表中插入記錄時 不給自動增長的字段賦值,字段的值是如何獲得的呢,用當前字段最大的值 +1 後 把結果做當前新記錄字段的值。此外也可手動賦值,但所賦值必須是非當前主鍵字段裏已有的值
create table t1(
id int(2) primary key auto_increment,---將id字段設爲主鍵,且設爲自動增長
name char(15) not null,
age tinyint(2) unsigned default 19,
pay float(7,2) default 26800);
insert into t1 (name,age,pay) values("tom",21,18000);
insert into t1 (name,age,pay) values("lucy",23,18800);
select * from t1;
4、外鍵:讓當前表字段的值,在另一個表字段值範圍裏選擇。
4-1、外鍵的使用規則:
1.兩張表的存儲引擎必須是innodb
2.外鍵字段和參考字段的類型必須一致
3.被參考字段必須是鍵值的一種(主鍵)
4-1、首先創建被參考的表 員工信息表
create table yginfo(
yg_id int(2) primary key auto_increment,-----被參考字段必須爲主鍵
name char(15)
)engine=innodb;-----存儲引擎必須是innodb
insert into yginfo(name)values("bob");
insert into yginfo(name)values("bob");
insert into yginfo(name)values("lucy");
4-2、創建外鍵
create table gztab(
gz_id int(2),
pay float(7,2),
foreign key(gz_id ) ----創建gz_id爲外鍵
references yginfo(yg_id)----以yginfo表(yg_id)字段爲參考字段
on delete cascade ------同步刪除
on update cascade ------同步修改
)engine=innodb; ---- 存儲引擎必須是innodb
4-3、刪除外鍵
show create table gztab;----在展現的表結構中找到外鍵名(CONSTRAINT關鍵字之後)
alter table gztab drop foreign key gztab_ibfk_1;-----刪除外鍵
show create table gztab;------重新查看將不再有外鍵
感謝您的拜讀!!!
目錄
1、修改表結構 : 對已經創建的表的結構做修改:alter table 庫.表 執行動作;
2-1、索引介紹:給字段值排序的樹形結構,類似與“書的目錄”
3-3、創建複合主鍵: 表中的多個字段一起做主鍵 ,賦值時,主鍵字段的值不允許同時重複。
3-6、主鍵通常和auto_increment 連用 讓字段的值自動增長,做自加1 計算