表的操作: 1.表的創建: create table if not exists table_name(欄位定義); 例子: create table if not exists user(id int auto_increment, uname varchar(20), address varch ...
表的操作: 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中的索引操作可以詳細看出執行的語句,來加深理解.