mysql创建表时默认默认_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由于其性能和特性可能是最受欢迎的引擎。但如果你不需要可靠的事务处理,可以使用其他引擎。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/563499.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

csv mysql 导入 mac_将sqlserver导出的csv数据导入到ubuntu和mac上的mysql

最近在捣鼓一些数据相关的东西。将sql server里的数据导入到ubuntu和mac上的mysql,方法有很多。不过我选择了最简单的一种:将sql server的数据导成csv,然后将csv导入到mysql。想法挺好,坑挺多。sql server是windows的,…

2012 安装mysql 5.6_如何安装mysql server 5.6

匿名用户1级2016-02-22 回答有两种方法,一种方法使用mysql的check table和repair table 的sql语句,另一种方法是使用MySQL提供的多个myisamchk, isamchk数据检测恢复工具。前者使用起来比较简便。推荐使用。1. check table 和 repair table登陆mysql 终端…

php mysql循环语句怎么写_mysql数据库循环语句该怎么写???

数据库结构num date2 2013-07-245 2013-07-258 2013-08-0310 2013-08-224 2013-09-10最后要在页面中输出为一个行行统计格式7月份 7条记录8月份 18条记录9月份 4条记录要求sql语句只有一句话,有的人会想可以select (count(条件))关键是还要换行的。。有点不会了。回…

mac mysql 安装 简书_在Mac系统上配置MySQL以及Squel Pro

为了响应nodejs的大红大紫,最近应用其实现了一些server端的功能。数据库方面选择了老少咸宜的MySQL。今后肯定还会有相关应用需求。特此记录Mac系统下如何安装、配置MySQL及其管理工具Squel Pro。为什么选择MYSQL:数据库有很多,为什么么我选择…

ntext在mysql_varchar和text说不清的那些事

数据库定义到char类型的字段时,不知道大家是否会犹豫一下,到底选char、nchar、varchar、nvarchar、text、ntext中哪一种呢?结果很可能是两种,一种是节俭人士的选择:最好是用定长的,感觉比变长能省些空间&am…

win+mysql自动备份吗_Windows下mysql自动备份的最佳方案

网上有很多关于window下Mysql自动备份的方法,其实不乏一些不好的地方和问题,现总结出一个最好的方法供大家参考:新建一个记事本,然后重命名为: mysql_backup.bat 然后单击右键选择编辑,把下面的部分粘贴进来…

字符串转16进制_16、atoi-整数字符串转整数-leetcode8-中等

思路:借助正则表达式。class Solution:def myAtoi(self, s: str) -> int:import repattern re.compile(r^[-]?d) # 生成patterns s.lstrip() #去除左侧空格num_str pattern.findall(s) #找到pattern,返回一个listnum int(*num_str) #用*将list解…

python递归查找_[Python]递归查找文件(最简洁)

google了一下发现大多数人都是自己实现的,其实python标准库里是有相关方法的,更简洁,而且支持pattern匹配。其实自己实现也没多难,但是一个非常重要的经验告诉我,内置方法哪怕代码跟你的一模一样都会比你自己写的快很多…

vue移动端通过px动态计算图片宽高_vue图片宽高自适应_移动web图片高度自适应的解决方案...

由于图片的加载是在dom加载完成之后进行的,于是,在手机端浏览网页时,经常会看到页面刚打开时很多内容叠在一起,当图片加载完成后,页面会由于图片加载完成出现明显的抖动针对这个问题,有以下几种解决方案媒体…

多个数据文件 mysql_mysql多实例(多个配置文件方式)

CleverCode最近在研究mysql的多实例,发现有两种方式:第一种是使用多个配置文件启动不同的进程来实现多实例。这种方式的优势逻辑简单,配置简单,缺点是管理起来不太方便。第二种是通过官方自带的mysqld_multi。使用单独的配置文件来…

mysql 5.1版本无innodb trx_MySQL 5.7: Innodb 事务子系统优化-阿里云开发者社区

MySQL5.7 : Innodb 事务子系统优化之前写了篇博客介绍了Percona Server对Read View的优化,顺带简单提到了MySQL5.7的事务子系统优化,详细见http://mysqllover.com/?p834 。 另外一篇博客http://mysqllover.com/?p1087 也有所涉及。本文总体介绍了几个和…

mysql hex 和 c_什么是MySQL HEX()函数,它与CONV()函数有何不同?

实际上,HEX()函数将十进制或字符串值转换为十六进制值。转换后,MySQL返回该十六进制值的字符串表示形式。语法HEX(Num or Str)众所周知,HEX()函数可以转换数字或字符串,因此语法中的“ Num”表示要转换为十六进制的数字&#xff0…

mysql日期为00_MySQL 8.0.13 设置日期为0000-00-00 00:00:00时出现的问题

刚开始学习 数据库 操作,今天存数据时发现,保存的时候报错 (Error 1292: Incorrect datetime value: 0000-00-00 for column deleted_at at row 1),之后就搜索了下原因,是因为 MySQL存日期时不允许出现这种格式导致的。下面记录下…

MySQL编程技巧_MySQL学习笔记---MySQL开发技巧

SQL语句分类DDL:数据定义语言 --- CREATE、ALTER、DROP、TRUNCATETPL:事务处理语言 --- COMMIT、ROLLBACK、SAVEPOINT、SET TRANSACTIONDCL:数据控制语言 --- GRANT、REVOKEDML:数据操作语言 --- SELECT、UPDATE、INSERT、DELETEj…

cockroachdb mysql_CockroachDB学习笔记——[译]CockroachDB中的SQL:映射表中数据到键值存储...

CockroachDB学习笔记——[译]CockroachDB中的SQL:映射表中数据到键值存储原文标题:SQL in CockroachDB: Mapping Table Data to Key-Value Storage原作者:Peter Mattis , Tamir Duberstein原文日期:Sep 16, 2015译:zif…

kafka topic 目录存放在哪_Kafka系列文章之安装测试-第2篇

前言上篇文章讲解了 Kafka 的基础概念和架构,了解了基本概念之后,必须得实践一波了,所谓“实践才是检验真理的唯一办法”,后续系列关于 Kafka 的文章都以 kafka_2.11-0.9.0.0 为例;另外为了让大家快速入门,…

java开发分支_如何选择Java 的分支?

问题阐述听说Java 无所不能,从简单的手机游戏到世界500 强的官方网站都能开发,作为一名Java 的初学者,我该如何入手?专家解答自诞生之日起,Java 语言就处于不断的发展中。目前,其主要分为以下3 个分支。. J…

蚂蚁爬杆 java_java蚂蚁爬杆

import java.util.List;import java.util.ArrayList;import java.math.BigDecimal;/*-作者:volcano_hosan*-----------蚂蚁爬杆*有一根300厘米的细木杆,在第30厘米、80厘米、110厘米、160厘米、250厘米这五个位置上各有一只蚂蚁。*木杆很细,不能同时通过…

java制作加载界面_Java如何制作启动界面?

展开全部大概的思路就是使用线程来计算耗时的32313133353236313431303231363533e58685e5aeb931333337613133操作,在前段显示启动的窗口,示例如下:java 代码/** To change this template, choose Tools | Templates* and open the template in…

java 生成客户端代码_swagger-codegen生成java客户端代码

前后端分离的时候,需要建立契约,Swagger可达到该目的(略)。建立Rest接口后,通过swagger-codegen项目可以自动生成对应的客户端代码(c、php、java、js、node等等),关于swagger-codegen项目的使用,发现中文文档较少&…