• Mysql之表的操作与索引操作


    表的操作:
    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中的索引操作可以详细看出执行的语句,来加深理解.
  • 相关阅读:
    Linux搭建ElasticSearch环境
    从DDD开始说起
    TFS看板晨会
    TFS看板的迭代规划
    TFS看板规则
    TFS看板的设计
    Api容器在应用架构演化中的用途
    基于Abp的WebApi容器
    线程队列
    动态类型序列化
  • 原文地址:https://www.cnblogs.com/wadmwz/p/7470370.html
Copyright © 2020-2023  润新知