MySQL建表(create table)命令解读

 更新时间:2023年12月21日 08:40:16   作者:睿思达DBA_WGX  
这篇文章主要介绍了MySQL建表(create table)命令的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

create table命令

强调

使用建表命令之前必须使用use命令选择表所在的数据库。

create table命令的格式如下:

create table tablename(
     col_name1 type auto_increment,
     col_name2 type not null|null default val,
     col_name3 type unique,
     .... ,
    primary key(col_name),
    index idx_name(col_name1,col_name2,...),
    foreign key(col_name) references tablename(col_name)
) engine=innoDB|myISAM default charset=字符集;

说明

(1)type:定义字段的数据类型。其中:字符串类型(char,varchar)需要指定长度;整型(int,biging,tinyint等)和日期类型(datetime,timestamp等)只需要指定类型,不需要指定长度;decimal类型需要指定精度和小数位数。

(2)primary key参数指定表的主键。

(3)auto_increment参数指定字段为自增字段,该字段的类型必须为int或bigint才能设置为自增字段。

(4)not null|null参数设置字段能否取空值。

(5)default参数设置字段的默认值。

(6)index参数用来创建索引。idx_name指定索引名,该参数可以省略,如果省略则索引名就是字段名。

(7)foreign key参数用来指定外键。

(8)engine参数用来设置引擎类型,常用的有innoDB和myISAM引擎。

(9)default charset参数设置表所用的字符集。

举例

(1)创建dept表

create table dept(
    dept_id int primary key auto_increment,    --dept_id设置为int类型,自增字段,主键
    dept_name char(20) not null default '',    --dept_name不能为空,默认值为空字符串
    phone char(20)
);

(2)创建emp表

create table emp(
    emp_id int auto_increment,
    emp_name char(20) not null default '',
    birth datetime not null,
    phone char(20) not null,
    addr varchar(200) not null,
    dept_id int not null default 0,
    index idx_emp_name(emp_name),
    index idx_emp_name_birth(emp_name,birth),
    primary key(emp_id),               --emp_id字段为主键
    foreign key(dept_id) references dept(dept_id)
) engine=innoDB default charset=utf8;

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MySql使用存储过程进行单表数据迁移的实现

    MySql使用存储过程进行单表数据迁移的实现

    近期在进行业务解耦,对冗余在一起切又属于不同业务的代码进行分离,同时也将数据库进行分离存储,那么这时候就涉及到多个表的数据要进行迁移,本文就来介绍一下MySql使用存储过程进行单表数据迁移,感兴趣的可以了解一下
    2023-11-11
  • Mysql数据库值的添加、修改、删除及清空操作实例

    Mysql数据库值的添加、修改、删除及清空操作实例

    这篇文章主要给大家介绍了关于Mysql数据库值的添加、修改、删除及清空操作的相关资料,文中通过示例代码以及图文介绍的非常详细,需要的朋友可以参考下
    2021-06-06
  • MySQL中因一个双引号错位引发的血案详析

    MySQL中因一个双引号错位引发的血案详析

    这篇文章主要给大家介绍了关于MySQL中因一个双引号错位引发的血案的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • MySQL 覆盖索引的优点

    MySQL 覆盖索引的优点

    当索引包含了所有查询的数据时,这个索引就称之为覆盖索引。覆盖索引能够成为一个非常有力的工具并且能够显著改善性能,本文将具体讲述覆盖索引的优点
    2021-05-05
  • MySQL关联查询优化实现方法详解

    MySQL关联查询优化实现方法详解

    在数据库的设计中, 我们通常都是会有很多张表 , 通过表与表之间的关系建立我们想要的数据关系, 所以在多张表的前提下, 多表的关联查询就尤为重要,这篇文章主要介绍了MySQL关联查询优化
    2022-11-11
  • MySQL命令提示符出现输入错误时如何修改前面的命令

    MySQL命令提示符出现输入错误时如何修改前面的命令

    本文主要介绍了MySQL命令提示符出现输入错误时如何修改前面的命令,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • mysql中关键词exists的用法实例详解

    mysql中关键词exists的用法实例详解

    在mysql中exists用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回true或false,下面这篇文章主要给大家介绍了关于mysql中关键词exists用法的相关资料,需要的朋友可以参考下
    2022-06-06
  • mysql运行net start mysql报服务名无效的解决办法

    mysql运行net start mysql报服务名无效的解决办法

    这篇文章主要为大家详细介绍了mysql运行net start mysql报服务名无效的解决办法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • 根据mysql慢日志监控SQL语句执行效率

    根据mysql慢日志监控SQL语句执行效率

    根据mysql慢日志监控SQL语句执行效率 启用MySQL的log-slow-queries(慢查询记录)。
    2012-11-11
  • MySQL对于各种锁的概念理解

    MySQL对于各种锁的概念理解

    今天小编就为大家分享一篇关于MySQL对于各种锁的概念理解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12

最新评论