一、修改表結構
Intert into
修改表結構會影響表中已有的紀錄,一般會在寫入紀錄之前,備份一下,或者是在表結構修改好之後,再寫入表紀錄。
Alter table 數據庫.表名 [ 處理動作 ];
//處理動作:
添加新字段 add
[ add 字段名 字段類型(寬度) 約束條件 first; ]
[ add 字段名 字段類型(寬度) 約束條件 after; ]
默認新添加的字段追加在已有字段末尾
First 把新添加的字段添加所有字段的上方
After 字段名 把新字段添加在指定字段名的下方
刪除字段: drop
Drop 字段名;
Drop 字段名, drop字段名;
修改字段類型 modify
[ mydify 字段名1 新字段類型(寬度) 約束條件; ]
[ mydify 字段名2 新字段類型(寬度) 約束條件; ]
[ mydify 字段名3 新字段類型(寬度) 約束條件; ]
更改字段名 change
[ Change 源字段名1 新字段名1 字段類型 約束條件, ]
[ Change 源字段名2 新字段名2 字段類型 約束條件, ]
[ Change 源字段名3 新字段名3 字段類型 約束條件; ]
修改表名
Alter table 源表名 rename to 新表名;
#這裏修改表名之後,/var/lib/mysql對就的目錄/文件也會跟着改變。
//alter table 表名 add sex enum(“man”,”woman”) not null default “man” after age;
添加在age字段的下面
改類型
[ alter table 表 modify 紀錄名 tinyint(2) unasigned,]
[ modify 紀錄名 tinyint(2) unasigned; ]
//改類型時將不改變的類型原樣寫下來。
複製表:
[ create table newtablename SQL查詢語句; ]
[ create table newname select * from mysql.user; ]
//複製表時,如果源表的Key字段有標識時,則新表不會有key屬性,就是說不會被複制過去的。
查詢指定字段的值:
[ select host,user,passwd from mysql.user; ]
//查詢host user passwd這三個類型,其它的不看。
複製源表的表結構
[ Select * from 表名 where 字段=”所有值”; ]
沒有所指紀錄,則只剩下空表,及表結構。
[ create table newtablename SQL沒有查詢結果的語句; ]
//查詢到的沒有結果,那麼只會有表結構,複製即可。
二、Mysql索引類型
表中的索引,由Key來顯示。
1,什麼是索引 //相當與書的目錄
寫入慢,讀取快。
索引算法:排列的方式。
2,索引的優缺點
優點:加快查詢表記錄的速度
缺點:會減慢對錶記錄寫(insert update delete)的速度。
索引會佔用磁盤空間。
默認情況下會將索引信息存儲在
tablename.MYI 保存表索引信息文件
tablename.MYD 存放表內的記錄,即數據
Tablename.frm 存放表結構
3,怎麼查看錶裏是否有索引字段
[ desc tablename; ]
KEY字段。
4,怎麼查看索引信息
[ show idex from dataname.tablename ]
索引類型 索引字段 索引算法(BTREE)default
(B+TREE) hash
BTREE(二叉數據算法)
100
1~50 51~100
1~25 26~50
1~12.5 12.6~25
5,Mysql支持哪些索引
普通索引 index //掌握
唯一索引 unique
主 鍵 primary key //掌握
外 鍵 foreign key //掌握
全文索引 fulltext
創建普通索引字段
1、一個表中可以把多個字段設置爲了INDEX字段
2、INDEX字段值可以重複
3、把經常做查詢條件的字段設置爲INDEX字段
4、INDEX字段的KEY標誌是MUL
//select 字段,字段,字段 from 表名 where 字段=“XXX”
建表時就創建INDEX字段;
Create table 表名(
Name varchar(10),
Age int(2),
Sex enum(“doy”,”gril”) default(“boy”
Index (name)
//如果要兩個索引字段,則再在此處加上即可。也可以”index(name,ID)”
);
在已有的表內添加INDEX字段。
Create index 索引名 on 表名(字段名列表);
//索引名一般爲字段名。 表名,字段列表則要把那個字段做爲INDEX字段。
MUL = index
查看索引名
// show index from 表名;
...
KEY name
...
刪除索引
Drop index 索引名 on 表名;
創建唯一索引
一個表中可以有多個unique字段
Unique字段值不可以重複
Unique字段key標誌是UNI
Unique字段值允許爲NULL,當修改爲不允許爲NULL時字段限制與主鍵相同
在已有的表中設置unique字段
Create unique index 索引名字 on 表名(字段名)
Create unique index 索引名字 on 表名
創建主鍵字段-primarykey
字段的值不可以重複
一個表中只可以有一個primarykey字段
當多個字段都做primarykey字段時,叫複合主鍵,要在建表時一起創建
在複合主鍵的字段,只要字段值不同時重複就可以
Primarykey通常與auto_increment連用
//不是主鍵,不能設置auto_increment功能。要想刪除主鍵功能,則先刪除auto_increment。
Primarykey字段標誌位爲PRI
刪除字段的空值:
[ Delete from 表名 where 字段 is null; ]
修改t30表的stu_id做主鍵
[ alter table t30 add primary key(stud_id); ]
//想讓多個字段做主鍵字段,叫複合主鍵,只能在建表時一起創建。
指定當前值自動增長值+1
[ Alter table t50 modify id int(2) not null auto_increment; ]
//即使用字段被刪除了,還會接着之前的編號。
[ Alter table t40 drop primary key; ]
//刪除主鍵功能,(沒有自動增長功能)
[ Alter table t50 modify id int(2) not null; ]
[ Alter table t50 drop primary key; ]
//先取消自動增長,再刪除主鍵功能
重複主鍵:
兩個主鍵的內容不完全一樣,就可以寫進記錄。
//創建重複主鍵
mysql> create table sername(
-> ip varchar(15),
-> port varchar(5),
-> sername varchar(10),
-> status enum("deny","allow") default "deny",
-> primary key(ip,port)
-> );
普通索引 index
唯一索引 unique
主 鍵 primary key
創建 查看 刪除 使用
外 鍵
使用外鍵 foreign key
多個表中的字段產生關聯關係。
創建外鍵字段:
Foreign key(當前表裏的字段名) references 別一個表名(表名裏的字段名)
on update cascade //同步更新
on delete cascade //同步刪除
使用外鍵的條件:
1、表使用的存儲引擎要是innodb存儲引擎。
2、外鍵字段的類型要匹配
//兩個表內的字段要關聯的
3、被參照的字段要有明確的索引(index primary key)
6,如何在表裏設置索引字段。
7,如何刪除表中字段的索引