美文网首页这里是 MySql 笔记
3、mysql数据库表操作

3、mysql数据库表操作

作者: go以恒 | 来源:发表于2018-09-15 23:40 被阅读3次

    [toc]

    1、创建表

    create table 表名(
        列名  类型  是否可以为空,
        列名  类型  是否可以为空
    )ENGINE=InnoDB DEFAULT CHARSET=utf8
    
    • InnoDB 支持事务回滚,原子性操作
    • myisam 不支持事务,但速度快
    是否可以为空
    • 是否可空,null表示空,非字符串
    • not null - 不可空
    • null - 可空
    默认值

    默认值,创建列时可以指定默认值,当插入数据时如果未主动设置,则自动添加默认值

    create table 表名(
        nid int not null defalut 2,
        num int not null
    )
    

    2、设置自增和主键

    自增

    自增,如果为某列设置自增列,插入数据时无需设置此列,默认将自增(表中只能有一个自增列)

    注意:

    1. 对于自增列,必须是索引(含主键)
    2. 对于自增可以设置步长和起始值
    create table 表名(
        nid int not null auto_increment primary key,
        num int null
    )
    或
    create table 表名(
        nid int not null auto_increment,
        num int null,
        index(nid)
    )
    

    auto_increment 表示:自增

    primary key 表示: 主键约束(不能重复且不能为空),有加速查找的效果

    主键

    主键,一种特殊的唯一索引,不允许有空值,如果主键使用单个列,则它的值必须唯一,如果是多列,则其组合必须唯一。

    create table 表名(
        nid int not null auto_increment primary key,
        num int null
    )
    

    create table 表名(
        nid int not null,
        num int not null,
        primary key(nid,num)
    )
    

    唯一索引

    唯一索引(此列值不能重复)

    ==unique 唯一索引名称 (列名)==

    create table t1(
        id int ....,
        num int,
        xx int,
        unique uq1 (num),
        constraint ....
    )
    

    联合唯一索引(此两列排列组合值不能重复)

    ==unique 唯一索引名称 (列名,列名)==

    create table t1(
        id int ....,
        num int,
        xx int,
        unique uq1 (num,xx),
        constraint ....
    )
    

    外键

    外键,一个特殊的索引,只能是指定内容

    creat table color(
        nid int not null primary key,
        name char(16) not null
    )
    
    create table fruit(
        nid int not null primary key,
        smt char(32) null ,
        color_id int not null,
        constraint fk_cc foreign key (color_id) references color(nid)
    )
    

    3、查看表设置

    • 查看表设置 desc 表名;
    • 以sql语句的方式查看表设置show create table 表名;
    • 以竖向的方式查看show create table 表名 \G;

    4、设置自增起始值

    • 设置自增起始值alter table 表名 AUTO_INCREMENT=20;

    5、设置步长

    MySQL: 设置自增步长

    基于会话级别:
    • 查看全局变量show session variables like 'auto_inc%';
    • 设置会话步长set session auto_increment_increment=2;
    • 设置起始值(在表里可以设置起始值,不必在这里设置)set session auto_increment_offset=10;
    基于全局级别(基本上不用):
    • 查看全局变量show global variables like 'auto_inc%';
    • 设置会话步长set global auto_increment_increment=2;
    • 设置起始值(在表里可以设置起始值,不必在这里设置)set global auto_increment_offset=10;

    (参考)SqlServer:自增步长:

    基础表级别:
    CREATE TABLE `t5` (
      `nid` int(11) NOT NULL AUTO_INCREMENT,
      `pid` int(11) NOT NULL,
      `num` int(11) DEFAULT NULL,
      PRIMARY KEY (`nid`,`pid`)
    ) ENGINE=InnoDB AUTO_INCREMENT=4, 步长=2 DEFAULT CHARSET=utf8
    
    CREATE TABLE `t6` (
      `nid` int(11) NOT NULL AUTO_INCREMENT,
      `pid` int(11) NOT NULL,
      `num` int(11) DEFAULT NULL,
      PRIMARY KEY (`nid`,`pid`)
    ) ENGINE=InnoDB AUTO_INCREMENT=4, 步长=20 DEFAULT CHARSET=utf8
    

    删除及清空表

    • 删除表: drop table 表名
    • 清空表数据: delete from 表名
    • 清空表数据和自增起始值:
      truncate table 表名

    修改表

    • 添加列:alter table 表名 add 列名 类型
    • 删除列:alter table 表名 drop column 列名
    • 修改列类型:alter table 表名 modify column 列名 类型;
    • 修改列名,类型:alter table 表名 change 原列名 新列名 类型;
    • 添加主键:alter table 表名 add primary key(列名);
    • 删除主键:alter table 表名 drop primary key;</br>
      alter table 表名 modify 列名 int, drop primary key;
    • 添加外键:alter table 从表 add constraint 外键名称(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);
    • 删除外键:alter table 表名 drop foreign key 外键名称
    • 修改默认值:ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
    • 删除默认值:ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;

    相关文章

      网友评论

        本文标题:3、mysql数据库表操作

        本文链接:https://www.haomeiwen.com/subject/xlcxnftx.html