您好,欢迎访问一九零五行业门户网

mysql创建数据表时指定默认值教程

指定默认值
如果在插入行时没有给出值,mysql允许指定此时使用的默认值。默认值用 create table 语句的列定义中的 default 关键字指定。
请看下面的例子:
输入:
create table orderitems ( order_num int not null, order_item int not null, prod_id char(10) not null, quantity int not null default1, item_price decimal(8,2) not null, primary key ( order_num,order_item) )engine = innodb;
输出:这条语句创建包含组成订单的各物品的 orderitems 表(订单本身存储在 orders 表中)。 quantity 列包含订单中每项物品的数量。在此例子中,给该列的描述添加文本 default 1 指示mysql,在未给出数量的情况下使用数量 1 。
不允许函数 与大多数dbms不一样,mysql不允许使用函数作为默认值,它只支持常量。
使用默认值而不是 null 值 许多数据库开发人员使用默认值而不是 null 列,特别是对用于计算或数据分组的列更是如此。
延伸知识:
什么是引擎类型?
你可能已经注意到,迄今为止使用的 create table 语句全都以engine=innodb 语句结束。
与其他dbms一样,mysql有一个具体管理和处理数据的内部引擎。在你使用 create table 语句时,该引擎具体创建表,而在你使用 select语句或进行其他数据库处理时,该引擎在内部处理你的请求。多数时候,此引擎都隐藏在dbms内,不需要过多关注它。
但mysql与其他dbms不一样,它具有多种引擎。它打包多个引擎,这些引擎都隐藏在mysql服务器内,全都能执行 create table 和 select等命令。
为什么要发行多种引擎呢?因为它们具有各自不同的功能和特性,为不同的任务选择正确的引擎能获得良好的功能和灵活性。
当然,你完全可以忽略这些数据库引擎。如果省略 engine= 语句,则使用默认引擎(很可能是 myisam ),多数sql语句都会默认使用它。但并不是所有语句都默认使用它,这就是为什么 engine= 语句很重要的原因(也就是为什么本书的样列表中使用两种引擎的原因)。
以下是几个需要知道的引擎:
1.innodb 是一个可靠的事务处理引擎,它不支持全文本搜索;
2.memory 在功能等同于 myisam ,但由于数据存储在内存(不是磁盘)中,速度很快(特别适合于临时表);
3.myisam 是一个性能极高的引擎,它支持全文本搜索,但不支持事务处理。
引擎类型可以混用。除 productnotes 表使用 myisam 外,本书中的样例表都使用 innodb 。原因是作者希望支持事务处理(因此,使用 innodb ),但也需要在 productnotes 中支持全文本搜索(因此,使用 myisam )。
外键不能跨引擎 混用引擎类型有一个大缺陷。外键(用于强制实施引用完整性)不能跨引擎,即使用一个引擎的表不能引用具有使用不同引擎的表的外键。
那么,你应该使用哪个引擎?这有赖于你需要什么样的特性。 myisam由于其性能和特性可能是最受欢迎的引擎。但如果你不需要可靠的事务处理,可以使用其他引擎。
以上就是mysql创建数据表时指定默认值教程的详细内容。
其它类似信息

推荐信息