当前位置:Gxlcms > 数据库问题 > Mysql之表的操作与索引操作

Mysql之表的操作与索引操作

时间:2021-07-01 10:21:17 帮助过:31人阅读

表的操作: 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之表的操作与索引操作

标签:drop   plain   sel   xpl   直接   表名   自动   incr   tab   

人气教程排行