连续范围问题也是一个非常经典的SQL编程问题。为了使讲解易于理解,我们先来创建一些测试数据。CREATE TABLE t ( a INT UNSIGNED NOT NULL PRIMARY KEY );INSERT INTO t VALUES(1);INSERT INTO ...
2.6 关于数字的经典SQL编程问题2.6.1 数字辅助表数字辅助表是一个只包含从1到N的N个整数的简单表,N通常很大。因为数字辅助表是一个非常强大的工具,可能经常需要在解决方案中用到它,笔者建议创建一个持久的...
位类型,即BIT数据类型可用来保存位字段的值。BIT(M)类型表示允许存储M位数值,M范围为1到64,占用的空间为(M+7)/8字节。如果为BIT(M)列分配的值的长度小于M位,在值的左边用0填充。例如,为BIT(6)列分配...
DECIMAL和NUMERIC类型在MySQL中被视为相同的类型,用于保存必须为确切精度的值。对于前面提到的工资数据类型,当声明该类型的列时,可以(并且通常必须)指定精度和标度,例如:salary DECIMAL(5,2)在上述例子中...
MySQL数据库支持两种浮点类型:单精度的FLOAT类型及双精度的DOUBLE PRECISION类型。这两种类型都是非精确的类型,经过一些操作后并不能保证运算的正确性,例如M*G/G不一定等于M,虽然数据库内部算法已经使其尽可...
2.5 数字类型2.5.1 整型MySQL数据库支持SQL标准支持的整型类型:INT、SMALLINT。此外MySQL数据库也支持诸如TINYINT、MEDIUMINT和BIGINT等类型。表2-14显示了各种整型占用的存储空间以及取值范围。表 2-14 整...
1.计算日期是星期几 这个问题看上去非常简单,比如可以使用MySQL数据库内置的WEEKDAY函数来取得星期几。WEEKDAY函数返回值为0~6,0代表Monday,1代表Tuesday,……,6代表Sunday;也可以使用DAYOFWEEK函数,其...
很多与时间相关的查询问题都要求统计和标示出重叠的部分。下面将列举几个关于这些问题的示例。在这些示例中,需要使用sessions表,可以通过下列语句创建并填充该表。# 建立sessions表CREATE TABLE sessions( ...
2.4 关于日期的经典SQL编程问题前面已经介绍了时间和日期类型及相关的函数,这一节将探讨与日期相关的SQL编程问题。2.4.1 生日问题与日期相关的第一个问题是根据某个用户的出生日期和当前日期,计算他最近的生...
日期函数可能是比较常使用的一种函数。下面介绍一些最为常用的日期函数及一些容易忽略的问题。1. NOW、CURRENT_TIMESTAMP和SYSDATE这些函数都能返回当前的系统时间,它们之间有区别吗?先来看个例子。mysql> S...
YEAR类型占用1字节,并且在定义时可以指定显示的宽度为YEAR(4)或YEAR(2),例如:mysql> CREATE TABLE t ( a YEAR(2));Query OK, 0 rows affected (0.05 sec)mysql> INSERT INTO t SELECT '...
TIMESTAMP和DATETIME显示的结果是一样的,都是固定的YYYY-MM-DD HH:MM:SS的形式。不同的是,TIMESTAMP占用4字节,显示的范围为1970-01-01 00:00:00UTC到2038-01-19 03:14:07UTC。其实际存储的内容为1970-01-0...
DATETIME占用8字节,是占用空间最多的一种日期类型。它既显示了日期,同时也显示了时间。其可以表达的日期范围为1000-01-01 00:00:00到9999-12-31 23:59:59。DATE占用3字节,可显示的日期范围为1000-01-01...
MySQL数据库中有五种与日期和时间有关的数据类型,各种日期数据类型所占空间如表2-1所示。表 2-1 各种日期数据类型及其所占用的空间类型所占空间DATETIME8字节DATE3字节TIMESTAMP4字节YEAR1字节TIME3字节
SQL_MODE可能是比较容易让开发人员和DBA忽略的一个变量,默认为空。SQL_MODE的设置其实是比较冒险的一种设置,因为在这种设置下可以允许一些非法操作,比如可以将NULL插入NOT NULL的字段中,也可以插入一些非法...
ZEROFILL属性非常有意思,更像是一个显示的属性。很多初学者往往对MySQL数据库中数字类型后面的长度值很迷茫。下面通过SHOW CREATE TABLE命令来看一下t表的建表语句。mysql> SHOW CREATE TABLE t\G;******...
2.1 类型属性在介绍数据类型前,先来介绍两个属性:UNSIGNED和ZEROFILL,是否使用这两个属性对选择数据类型有着莫大的关系。2.1.1 UNSIGNEDUNSIGNED属性就是将数字类型无符号化,与C、C++这些程序语言中的unsi...
数据类型在数据库中扮演着基础但又非常重要的角色。对数据类型的选择将影响与数据库交互的应用程序的性能。通常来说,如果一个页内可以存放尽可能多的行,那么数据库的性能就越好,因此选择一个正确的数据类型至...
这一章先介绍了MySQL的历史以及它的分支版本,概括出MySQL数据库所经历的三个阶段:初期开源数据库阶段、Sun MySQL阶段、Oracle MySQL阶段。不论MySQL数据库处于哪个阶段,它都是开源的。此外还介绍了MySQL数据...
iMySQL-Front是一个开源的、跨平台的MySQL图形化的查询工具,支持Windows、Linux、Mac OS系统。其官方网站为http://code.google.com/p/imysql-front/。图1-4为iMySQL-Front在Mac OS下工作的截图。iMySQL-Front...