mysql表与索引操作_Mysql之表的操作与索引操作

本文详细介绍了MySQL数据库的创建、查看、更新和删除等操作,包括表的重命名、添加和删除列、修改字段以及删除表。同时,讲解了非空约束、默认值、唯一约束和主键约束的设置,以及值自动增加的实现。此外,还探讨了索引的创建、查看和删除,包括普通索引、唯一索引、主键索引、复合索引和全文索引的使用,以及如何通过索引提高查询效率。
摘要由CSDN通过智能技术生成

表的操作:

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中的索引操作可以详细看出执行的语句,来加深理解.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值