我的Linux生涯之Mysql:Day02[Mysql的基本管理]

一、修改表結構
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,如何刪除表中字段的索引

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章