標籤:drop plain sel xpl 直接 表名 自動 incr tab
表的操作:1.表的建立:create table if not exists table_name(欄位定義);例子:create table if not exists user(id int auto_increment,uname varchar(20),address varchar(200),updateTime datetime,primary key(id)); // 設定主鍵2.表(show tables;)定義查看:show create table table_name;DESC table_name;show full columns from table_name;3.表的更新:(1) 表的重新命名:alter table old_user_name rename to new_user_name;rename table old_user_name to new_user_name ;(2) 增加列:alter table table_name add column column_nname(修飾);在表的第一個位置增加欄位,在語句最後加上FIRST,在表的指定欄位之後添加,在最後加上AFTER 屬性名稱;例子:alter table user add column age int not null default 0 after uname;//在uname列後增加age列,並且不為空白,預設為0.(3) 刪除列:alter table table_name drop (column) column_name;(4).欄位修改:alter table table_name change cloumn old_column_name new_cloumn_name 屬性名稱 資料類型;例子:alter table user change column adddress address varchar(1024) not null default ‘beijing‘;// 將adddress重新命名為address,範圍為1024,不為空白,預設值為beijing(5).表的刪除:drop table table_name;(6):複製表:create table new_table_name like old_table_name ;4.動作表的約束:(1).非空約束(not null); 直接跟在欄位後,比如:name varchar(20) not null;(2).設定欄位預設值(default 預設值); 直接跟在欄位後,比如:name varchar(20) default ‘name‘;(3).設定唯一約束(unique); 唯一約束指的是不能添加重複值 ;直接跟在欄位後,比如:name varchar(20) unique;(4).設定主鍵約束(primary key);單欄位主鍵:constraint pk_name primary key(name);直接跟在欄位後,比如:id int primary key;多欄位主鍵:constraint pk_name1_name2 primary key(name1, name2);這個語句放在建立表的最後就可以.(5).設定值自動增加(auto_increment);直接跟在欄位後,比如:id int auto_increment;(6).設定外鍵約束(foreign key):文法:constraint 外鍵約束名 foreign key(屬性名稱1) references 表名(屬性名稱2);設定外鍵只能放在外鍵存在的表中,放在建表的最後一句,設定之後 不能插入父表中不存在的值.文法例子:constraint fk_deptno foreign key(deptno) references t_dept(deptno);上面6個中除了外間約束和多欄位主鍵約束只能放在建立表的最後一句,其餘都應該放在建立表時的欄位之後,多個約束條件直接緊隨其後.比如:name varchar(20) not null default ‘name‘;//設定name不為空白預設值為name. 索引的操作:1.索引的建立(1).普通索引:create index index_name on table_name(屬性名稱);例子: create index idx_name on users(username);查詢時:通過explain select * from users where username = "條件";可以看出type為rel,而普通查詢是ALL,也就是全盤掃描,降低效率,建立索引可以提高尋找效率.(2).唯一索引(值唯一不可以重複):create unnqiue index index_unique_name on table_name(屬性名稱);例子:create unique index idx_unique_name on users(username); // 不可以添加姓名相同的記錄.(3).主鍵索引(一定是唯一索引,但唯一索引不一定是主鍵索引):alter table table_name add primary key(屬性名稱);(4).複合索引:alter table table_name add index index_name(屬性名稱1,屬性名稱2....);複合索引只有在複合尋找中才起作用,也就是說多條件查詢時起作用.(5).全文索引(innodb不支援全文索引):create fulltext index index_name on table_name(屬性名稱);2.索引的查看:show create table table_name;show index from table_name;3.索引的刪除:drop index index_name on table_name;索引是不能直接更新的,只有通過先刪除再添加來模仿更新.通過mysql workbench中的索引操作可以詳細看出執行的語句,來加深理解.
Mysql之表的操作與索引操作