zoukankan      html  css  js  c++  java
  • 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中的索引操作可以详细看出执行的语句,来加深理解.
  • 相关阅读:
    HDOJ 1207 汉诺塔II
    [转]写代码的小女孩
    POJ Subway tree systems
    HDOJ 3555 Bomb (数位DP)
    POJ 1636 Prison rearrangement (DP)
    POJ 1015 Jury Compromise (DP)
    UVA 10003
    UVA 103 Stacking Boxes
    HDOJ 3530 Subsequence
    第三百六十二、三天 how can I 坚持
  • 原文地址:https://www.cnblogs.com/wadmwz/p/7470370.html
Copyright © 2011-2022 走看看