十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
MySQL目前不支持列的Default 为函数的形式 如达到你某列的默认值为当前更新日期与时间的功能 你可以使用TIMESTAMP列类型下面就详细说明TIMESTAMP列类型 TIMESTAMP列类型 TIMESTAMP值可以从 的某时的开始一直到 年 精度为一秒 其值作为数字显示 TIMESTAMP值显示尺寸的格式如下表所示 + + +| 列类型| 显示格式 || TIMESTAMP( ) | YYYYMMDDHHMMSS | | TIMESTAMP( ) | YYMMDDHHMMSS || TIMESTAMP( ) | YYMMDDHHMM || TIMESTAMP( ) | YYYYMMDD || TIMESTAMP( ) | YYMMDD || TIMESTAMP( ) | YYMM || TIMESTAMP( ) | YY |+ + + 完整 TIMESTAMP格式是 位 但TIMESTAMP列也可以用更短的显示尺寸创造最常见的显示尺寸是 和 你可以在创建表时指定一个任意的显示尺寸 但是定义列长为 或比 大均会被强制定义为列长 列长在从 ~ 范围的奇数值尺寸均被强制为下一个更大的偶数 列如 定义字段长度 强制字段长度TIMESTAMP( ) TIMESTAMP( )TIMESTAMP( ) TIMESTAMP( )TIMESTAMP( ) TIMESTAMP( )TIMESTAMP( ) TIMESTAMP( )所有的TIMESTAMP列都有同样的存储大小 使用被指定的时期时间值的完整精度( 位)存储合法的值不考虑显示尺寸 不合法的日期 将会被强制为 存储 这有几个含意 虽然你建表时定义了列TIMESTAMP( ) 但在你进行数据插入与更新时TIMESTAMP列实际上保存了 位的数据(包括年月日时分秒) 只不过在你进行查询时MySQL返回给你的是 位的年月日数据 如果你使用ALTER TABLE拓宽一个狭窄的TIMESTAMP列 以前被 隐蔽 的信息将被显示 同样 缩小一个TIMESTAMP列不会导致信息失去 除了感觉上值在显示时 较少的信息被显示出 尽管TIMESTAMP值被存储为完整精度 直接操作存储值的唯一函数是UNIX_TIMESTAMP() 由于MySQL返回TIMESTAMP列的列值是进过格式化后的检索的值 这意味着你可能不能使用某些函数来操作TIMESTAMP列(例如HOUR()或SECOND()) 除非TIMESTAMP值的相关部分被包含在格式化的值中 例如 一个TIMESTAMP列只有被定义为TIMESTAMP( )以上时 TIMESTAMP列的HH部分才会被显示 因此在更短的TIMESTAMP值上使用HOUR()会产生一个不可预知的结果 不合法TIMESTAMP值被变换到适当类型的 零 值( ) (DATETIME DATE亦然) 你可以使用下列语句来验证 CREATE TABLE test ( id INT ( ) UNSIGNED AUTO_INCREMENT date TIMESTAMP ( ) PRIMARY KEY( id ));INSERT INTO test SET id = ;SELECT * FROM test;+ + +| id | date |+ + +| | |+ + +ALTER TABLE test CHANGE date date TIMESTAMP( );SELECT * FROM test;+ + +| id | date |+ + +| | |+ + +你可以使用TIMESTAMP列类型自动地用当前的日期和时间标记INSERT或UPDATE的操作 如果你有多个TIMESTAMP列 只有第一个自动更新 自动更新第一个TIMESTAMP列在下列任何条件下发生 列值没有明确地在一个INSERT或LOAD DATA INFILE语句中指定 列值没有明确地在一个UPDATE语句中指定且另外一些的列改变值 (注意一个UPDATE设置一个列为它已经有的值 这将不引起TIMESTAMP列被更新 因为如果你设置一个列为它当前的值 MySQL为了效率而忽略更改 ) 你明确地设定TIMESTAMP列为NULL 除第一个以外的TIMESTAMP列也可以设置到当前的日期和时间 只要将列设为NULL 或NOW() CREATE TABLE test ( id INT ( ) UNSIGNED AUTO_INCREMENT date TIMESTAMP ( ) date TIMESTAMP ( ) PRIMARY KEY( id ) );INSERT INTO test (id date date ) VALUES ( NULL NULL);INSERT INTO test SET id= ;+ + + +| id | date | date |+ + + +| | | || | | |+ + + + 第一条指令因设date date 为NULL 所以date date 值均为当前时间 第二条指令因没有设date date 列值 第一个TIMESTAMP列date 为更新为当前时间 而二个TIMESTAMP列date 因日期不合法而变为 UPDATE test SET id= WHERE id= ;+ + + +| id | date | date |+ + + +| | | || | | |+ + + + 这条指令没有明确地设定date 的列值 所以第一个TIMESTAMP列date 将被更新为当前时间UPDATE test SET id= date =date date =NOW() WHERE id= ;+ + + +| id | date | date |+ + + +| | | || | | |+ + + + 这条指令因设定date =date 所以在更新数据时date 列值并不会发生改变 而因设定date =NOW() 所以在更新数据时date 列值会被更新为当前时间 此指令等效为 UPDATE test SET id= date =date date =NULL WHERE id= ; 因MySQL返回的 TIMESTAMP 列为数字显示形式 你可以用DATE_FROMAT()函数来格式化 TIMESTAMP 列SELECT id DATE_FORMAT(date %Y %m %d %H:%i:%s ) As date DATE_FORMAT(date %Y %m %d %H:%i:%s ) As date FROM test;+ + + +| id | date | date |+ + + +| | : : | : : || | : : | : : |+ + + +SELECT id DATE_FORMAT(date %Y %m %d ) As date DATE_FORMAT(date %Y %m %d ) As date FROM test; + + + +| id | date | date |+ + + +| | | || | | |+ + + +在某种程度上 你可以把一种日期类型的值赋给一个不同的日期类型的对象 然而 而尤其注意的是 值有可能发生一些改变或信息的损失 如果你将一个DATE值赋给一个DATETIME或TIMESTAMP对象 结果值的时间部分被设置为 : : 因为DATE值中不包含有时间信息 如果你将一个DATETIME或TIMESTAMP值赋给一个DATE对象 结果值的时间部分被删除 因为DATE类型不存储时间信息 尽管DATETIME DATE和TIMESTAMP值全都可以用同样的格式集来指定 但所有类型不都有同样的值范围 例如 TIMESTAMP值不能比 早 也不能比 晚 这意味着 一个日期例如 当作为一个DATETIME或DATE值时它是合法的 但它不是一个正确TIMESTAMP值!并且如果将这样的一个对象赋值给TIMESTAMP列 它将被变换为 当指定日期值时 当心某些缺陷 允许作为字符串指定值的宽松格式能被欺骗 例如 因为 : 分隔符的使用 值 : : 可能看起来像时间值 但是如果在一个日期中使用 上下文将作为年份被解释成 值 : : 将被变换到 因为 不是一个合法的月份 以 位数字指定的年值是模糊的 因为世纪是未知的 MySQL使用下列规则解释 位年值 在 范围的年值被变换到 在范围 的年值被变换到 lishixinzhi/Article/program/MySQL/201311/11205
创新互联公司成立于2013年,是专业互联网技术服务公司,拥有项目成都网站制作、网站设计网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元库伦做网站,已为上家服务,为库伦各地企业和个人服务,联系电话:028-86922220
先把分类全取出来,并随机排序,取排在第一个分类。
例如:西装
然后查询的时候 order by (category='西装') desc,category 即可实现要求。
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。
由于MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。
MySQL这个名字,起源不是很明确。一个比较有影响的说法是,基本指南和大量的库和工具带有前缀“my”已经有10年以上,而且不管怎样,MySQL AB创始人之一的Monty Widenius的女儿也叫My。这两个到底是哪一个给出了MySQL这个名字至今依然是个迷,包括开发者在内也不知道。
MySQL的海豚标志的名字叫“sakila”,它是由MySQL AB的创始人从用户在“海豚命名”的竞赛中建议的大量的名字表中选出的。获胜的名字是由来自非洲斯威士兰的开源软件开发者Ambrose Twebaze提供。根据Ambrose所说,Sakila来自一种叫SiSwati的斯威士兰方言,也是在Ambrose的家乡乌干达附近的坦桑尼亚的Arusha的一个小镇的名字。
MySQL,虽然功能未必很强大,但因为它的开源、广泛传播,导致很多人都了解到这个数据库。它的历史也富有传奇性。
修改日期类型为timestamp 并允许空,如下:
CREATE TABLE `test` (`aaaa` varchar(50) NOT NULL,`createday` timestamp NULL DEFAULT
CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP) ENGINE=InnoDB DEFAULT
CHARSET=utf8;
如果是在navicat下操作的话,设置字段的类型为timestamp,默认值写上CURRENT_TIMESTAMP
扩展资料
mysql中的时间类型:
mysql中我们用的时间类型有DATE DATETIME TIME TIMESTAMP四种:
1、DATE只表示日期,检索以YYYY-MM-DD的格式显示,范围是1000-01-01到9999-12-31。
2、TIME只表示时间,检索以HH:MM:SS格式显示,范围是00:00:00到23:59:59。
3、DATETIME表示了日期和时间,检索以YYYY-MM-DD HH:MM:SS格式显示。
4、TIMESTAMP和DATETIME表示格式一样两者的不同点如下:
当使用timestamp的时候,数据有更新的时候这个字段自动更新为当前时间,所以可以作为lastmodify使用,这个变化是默认设置,如果想使时间不更新可以设置DEFAULT CURRENT_TIMESTAMP
timestamp的范围不能早于1970或者晚于2037,超过这个时间范围的话为0。
timestamp存储的时候是转为UTC存储的,获取的时候根据客户端所在时区进行展示。
timestamp占4个字节,datetime占8个字节。
--SQL:
CREATE TABLE test(
i_a int NOT NULL DEFAULT 1,
ts_b timestamp NOT NULL DEFAULT NOW(),
c_c char(2) NOT NULL DEFAULT '1'
);
int类型:默认值也得是整型,并且default后边不要()括号。
char类型:默认值使用单引号。
DATETIME类型:NOW()函数以'YYYY-MM-DD HH:MM:SS'返回当前的日期时间,可以直接存到DATETIME字段中。不支持使用系统默认值。
DATE类型:CURDATE()以'YYYY-MM-DD'的格式返回今天的日期,可以直接存到DATE字段中。不支持使用系统默认值。
TIME类型:CURTIME()以'HH:MM:SS'的格式返回当前的时间,可以直接存到TIME字段中。不支持使用系统默认值。
第一步:
我们打开mysql命令行编辑器。
第二步:
我们输入密码,登录Mysql数据库。
第三步:
我们先显示数据库,选择一个我们要创建表的数据库。
第四步:
我们使用那个数据库,当然也可以直接新建一个数据库。
第五步:
我们在那个数据库中创建一个表。
最后:
我们输入describe 表名;我们就可以显示表内容了。
扩展资料:
与其他的大型数据库,例如 Oracle、DB2、SQL Server等相比,MySQL[1]
自有它的不足之处,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于 MySQL是开放源码软件,因此可以大大降低总体拥有成本。
Linux作为操作系统,Apache 或Nginx作为 Web 服务器,MySQL 作为数据库,PHP/Perl/Python作为服务器端脚本解释器。由于这四个软件都是免费或开放源码软件(FLOSS),因此使用这种方式不用花一分钱(除开人工成本)就可以建立起一个稳定、免费的网站系统,被业界称为“LAMP“或“LNMP”组合。
参考资料:百度百科-mysql应用环境
1、首先新建一张表结构。
2、select * from t_temp_test 查看下这张表已经建好在数据库里面了。
3、查看该t_temp_test表结构 sp_help t_temp_test,可以看到字段column_b 的默认值定义为空,默认属性是DF__t_temp_te__colum__19DA45DB。
4、修改表的默认值先要把表的默认属性删除了才能修改,删除表的默认属性。
5、删除之后再执行sp_help t_temp_test,这个时候默认值属性已经被删除了的。
6、然后再重新给字段新加上默认属性alter table t_temp_test add constraint DF__t_temp_te__colum__19DA45DB DEFAULT (('123')) for column_b。
7、执行完毕再查询表结构sp_help t_temp_test可以看到表的默认值已经被更改为字符串‘123’。