MYSQL中如何设置列默认值的介绍_MySQL
bitsCN.com
MYSQL中如何设置列默认值的介绍
MySQL目前不支持列的Default为函数的形式,如达到你某列的默认值为当前更新日期与时间的功能,你可以使用TIMESTAMP列类型,下面就详细说明TIMESTAMP列类型。
TIMESTAMP列类型
TIMESTAMP值可以从1970的某时的开始一直到2037年,精度为一秒,其值作为数字显示。
TIMESTAMP值显示尺寸的格式如下表所示:
+---------------+----------------+ | 列类型 | 显示格式 | | TIMESTAMP(14) | YYYYMMDDHHMMSS | | TIMESTAMP(12) | YYMMDDHHMMSS | | TIMESTAMP(10) | YYMMDDHHMM | | TIMESTAMP(8) | YYYYMMDD | | TIMESTAMP(6) | YYMMDD | | TIMESTAMP(4) | YYMM | | TIMESTAMP(2) | YY | +---------------+----------------+
“完整”TIMESTAMP格式是14位,但TIMESTAMP列也可以用更短的显示尺寸创造,最常见的显示尺寸是6、8、12、和14。你可以在创建表时指定一个任意的显示尺寸,但是定义列长为0或比14大均会被强制定义为列长14。列长在从1~13范围的奇数值尺寸均被强制为下一个更大的偶数。
所有的TIMESTAMP列都有同样的存储大小,使用被指定的时期时间值的完整精度(14位)存储合法的值不考虑显示尺寸。不合法的日期,将会被强制为0存储。
这有几个含意:
1、虽然你建表时定义了列TIMESTAMP(8),但在你进行数据插入与更新时TIMESTAMP列实际上保存了14位的数据(包括年月日时分秒),只不过在你进行查询时MySQL返回给你的是8位的年月日数据。如果你使用ALTER TABLE拓宽一个狭窄的TIMESTAMP列,以前被“隐蔽”的信息将被显示。
2、同样,缩小一个TIMESTAMP列不会导致信息失去,除了感觉上值在显示时,较少的信息被显示出。
3、尽管TIMESTAMP值被存储为完整精度,直接操作存储值的唯一函数是UNIX_TIMESTAMP();由于MySQL返回TIMESTAMP列的列值是进过格式化后的检索的值,这意味着你可能不能使用某些函数来操作TIMESTAMP列(例如HOUR()或SECOND()),除非TIMESTAMP值的相关部分被包含在格式化的值中。例如,一个TIMESTAMP列只有被定义为TIMESTAMP(10)以上时,TIMESTAMP列的HH部分才会被显示,因此在更短的TIMESTAMP值上使用HOUR()会产生一个不可预知的结果。
4、不合法TIMESTAMP值被变换到适当类型的“零”值(00000000000000)。(DATETIME,DATE亦然)
你可以使用下列语句来验证:
CREATE TABLE test ('id' INT (3) UNSIGNED AUTO_INCREMENT, 'date1' TIMESTAMP (8) PRIMARY KEY('id')); INSERT INTO test SET id = 1; SELECT * FROM test; +----+----------------+ | id | date1 | +----+----------------+ | 1 | 20021114 | +----+----------------+ ALTER TABLE test CHANGE 'date1' 'date1' TIMESTAMP(14); SELECT * FROM test; +----+----------------+ | id | date1 | +----+----------------+ | 1 | 20021114093723 | +----+----------------+
你可以使用TIMESTAMP列类型自动地用当前的日期和时间标记INSERT或UPDATE的操作。如果你有多个TIMESTAMP列,只有第一个自动更新。自动更新第一个TIMESTAMP列在下列任何条件下发生:
1、列值没有明确地在一个INSERT或LOAD DATA INFILE语句中指定。
2、列值没有明确地在一个UPDATE语句中指定且另外一些的列改变值。(注意一个UPDATE设置一个列为它已经有的值,这将不引起TIMESTAMP列被更新,因为如果你设置一个列为它当前的值,MySQL为了效率而忽略更改。)
3、你明确地设定TIMESTAMP列为NULL. |
4、除第一个以外的TIMESTAMP列也可以设置到当前的日期和时间,只要将列设为NULL,或NOW()。
CREATE TABLE test ( 'id' INT (3) UNSIGNED AUTO_INCREMENT, 'date1' TIMESTAMP (14), 'date2' TIMESTAMP (14), PRIMARY KEY('id') ); INSERT INTO test (id, date1, date2) VALUES (1, NULL, NULL); INSERT INTO test SET id= 2; +----+----------------+----------------+ | id | date1 | date2 | +----+----------------+----------------+ | 1 | 20021114093723 | 20021114093723 | | 2 | 20021114093724 | 00000000000000 | +----+----------------+----------------+
第一条指令因设date1、date2为NULL,所以date1、date2值均为当前时间,第二条指令因没有设date1、date2列值,第一个TIMESTAMP列date1为更新为当前时间,而二个TIMESTAMP列date2因日期不合法而变为“00000000000000”
UPDATE test SET id= 3 WHERE id=1; +----+----------------+----------------+ | id | date1 | date2 | +----+----------------+----------------+ | 3 | 20021114094009 | 20021114093723 | | 2 | 20021114093724 | 00000000000000 | +----+----------------+----------------+
这条指令没有明确地设定date2的列值,所以第一个TIMESTAMP列date1将被更新为当前时间。
UPDATE test SET id= 1,date1=date1,date2=NOW() WHERE id=3; +----+----------------+----------------+ | id | date1 | date2 | +----+----------------+----------------+ | 1 | 20021114094009 | 20021114094320 | | 2 | 20021114093724 | 00000000000000 | +----+----------------+----------------+
这条指令因设定date1=date1,所以在更新数据时date1列值并不会发生改变,而因设定date2=NOW(),所以在更新数据时date2列值会被更新为当前时间。此指令等效为:
UPDATE test SET id= 1,date1=date1,date2=NULL WHERE id=3;
因MySQL返回的 TIMESTAMP 列为数字显示形式,你可以用DATE_FROMAT()函数来格式化 TIMESTAMP 列。
SELECT id,DATE_FORMAT(date1,'%Y-%m-%d %H:%i:%s') As date1, DATE_FORMAT(date2,'%Y-%m-%d %H:%i:%s') As date2 FROM test; +----+---------------------+---------------------+ | id | date1 | date2 | +----+---------------------+---------------------+ | 1 | 2002-11-14 09:40:09 | 2002-11-14 09:43:20 | | 2 | 2002-11-14 09:37:24 | 0000-00-00 00:00:00 | +----+---------------------+---------------------+ SELECT id,DATE_FORMAT(date1,'%Y-%m-%d') As date1, DATE_FORMAT(date2,'%Y-%m-%d') As date2 FROM test; +----+-------------+-------------+ | id | date1 | date2 | +----+-------------+-------------+ | 1 | 2002-11-14 | 2002-11-14 | | 2 | 2002-11-14 | 0000-00-00 | +----+-------------+-------------+
在某种程度上,你可以把一种日期类型的值赋给一个不同的日期类型的对象。然而,而尤其注意的是:值有可能发生一些改变或信息的损失:
1、如果你将一个DATE值赋给一个DATETIME或TIMESTAMP对象,结果值的时间部分被设置为'00:00:00',因为DATE值中不包含有时间信息。
2、如果你将一个DATETIME或TIMESTAMP值赋给一个DATE对象,结果值的时间部分被删除,因为DATE类型不存储时间信息。
3、尽管DATETIME, DATE和TIMESTAMP值全都可以用同样的格式集来指定,但所有类型不都有同样的值范围。例如,TIMESTAMP值不能比1970早,也不能比2037晚,这意味着,一个日期例如'1968-01-01',当作为一个DATETIME或DATE值时它是合法的,但它不是一个正确TIMESTAMP值!并且如果将这样的一个对象赋值给TIMESTAMP列,它将被变换为0。
当指定日期值时,当心某些缺陷:
1、允许作为字符串指定值的宽松格式能被欺骗。例如,,因为“:”分隔符的使用,值'10:11:12'可能看起来像时间值,但是如果在一个日期中使用,上下文将作为年份被解释成'2010-11-12'。值'10:45:15'将被变换到'0000-00-00',因为'45'不是一个合法的月份。
2、以2位数字指定的年值是模糊的,因为世纪是未知的。MySQL使用下列规则解释2位年值: 在00-69范围的年值被变换到2000-2069。 在范围70-99的年值被变换到1970-1999。
bitsCN.com

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











하얼빈 의과대학 임상약학 취업 전망은 어떻습니까? 전국 취업 상황이 낙관적이지는 않지만 약학 졸업생의 취업 전망은 여전히 좋습니다. 전반적으로 제약산업 졸업생의 공급은 수요보다 적다. 제약회사와 제약공장은 이러한 졸업생을 흡수하는 주요 통로이기도 하다. 보도에 따르면 최근 몇 년간 조제약품, 천연의약화학 등 전공 대학원생의 수급비율은 1:10에 달하기도 했다. 임상약학전공 취업방향: 임상의학을 전공하는 학생은 졸업 후 의료보건학과, 의학연구 및 기타 학과에서 진료, 예방, 의학연구 등에 종사할 수 있습니다. 채용 직위: 의료 담당자, 제약 영업 담당자, 영업 담당자, 영업 관리자, 지역 영업 관리자, 투자 관리자, 제품 관리자, 제품 전문가, 간호사

최근 몇몇 친구들이 win10 이미지 파일을 다운로드하는 방법을 보고했습니다. 시중에 이미지 파일이 너무 많아서 다운로드할 일반 파일을 찾으려면 어떻게 해야 하나요? 오늘은 편집자가 이미지 다운로드 링크와 자세한 해결 단계를 함께 살펴보겠습니다. win10 이미지 빠른 다운로드 및 설치 튜토리얼 다운로드 링크 >>> 시스템 홈 Ghostwin101909 이미지 64비트 버전 v2019.11<<<>>>Win10 이미지 64비트 v2019.07<<<>>>Win10 이미지 32비트 v2019. 07<< <1. 인터넷으로 검색해 보세요.

임시 폴더를 정리하는 방법 우리가 컴퓨터를 사용하면서 임시 파일(임시 파일)은 점차 쌓이게 됩니다. 이러한 임시 파일은 웹 검색 시 캐시 파일, 소프트웨어 설치 시 임시 파일 등과 같이 컴퓨터를 사용할 때 생성됩니다. 임시 폴더를 오랫동안 정리하지 않으면 많은 양의 디스크 공간을 차지하여 컴퓨터 속도에 영향을 줄 수 있습니다. 따라서 임시 폴더를 정기적으로 청소하는 것은 컴퓨터 성능을 유지하는 데 필요한 단계입니다. 아래에서는 임시 폴더를 정리하는 몇 가지 간단한 방법을 소개합니다. 방법 1: 수동으로 청소

Win10 시스템을 재설정하는 방법은 무엇입니까? 요즘에는 많은 친구들이 Win10 시스템을 사용하는 것을 좋아합니다. 그러나 컴퓨터를 사용할 때 필연적으로 해결할 수 없는 문제가 발생합니다. 그렇다면 어떻게 해야 합니까? 편집기를 따라 Win10 시스템 재설정에 대한 튜토리얼을 시청해 보세요. 필요한 사용자는 놓치지 마세요. Win10 시스템 재설정 튜토리얼 1. Windows를 클릭하고 설정을 선택합니다. 2. 업데이트 및 보안을 클릭합니다. 3. 복원을 선택합니다. 4. 이 컴퓨터를 재설정하려면 오른쪽의 시작을 클릭하세요. 위의 내용은 [Win10 시스템 재설정 방법 - Win10 시스템 재설정 튜토리얼]의 전체 내용입니다. 이 사이트에서 더 흥미로운 튜토리얼을 볼 수 있습니다!

win11 컴퓨터 구성을 확인하는 방법은 무엇입니까? win11 시스템은 매우 실용적인 컴퓨터 운영 체제 버전입니다. 이 버전은 사용자에게 더 나은 컴퓨터 작동 경험을 제공합니다. 따라서 컴퓨터를 사용하는 많은 친구들은 컴퓨터의 구체적인 구성과 이 작업을 수행하는 방법에 대해 궁금해합니다. win11 시스템에서? 많은 친구들이 자세한 작동 방법을 모릅니다. 편집자는 아래의 win11 컴퓨터 구성을 보는 방법에 대한 튜토리얼을 편집했습니다. 관심이 있으시면 편집자를 따라가십시오! Win11 컴퓨터 구성 보기 튜토리얼 1. 아래 작업 표시줄에서 Windows 아이콘을 클릭하거나 키보드의 "Windows 키"를 눌러 시작 메뉴를 엽니다. 2. 시작 메뉴에서 "설정" 또는 "sett"를 찾으세요.

시스템 재설치 시 환경 테스트가 실패하고 다시 작성해야 하는 문제를 해결하는 방법: 휴대폰이 중독되었습니다. 2. 바이러스 백신용 모바일 관리자와 같은 바이러스 백신 소프트웨어를 설치할 수 있습니다. 파일이 휴대폰 내부에 저장되어 휴대폰의 실행 메모리를 점유하게 됩니다. 3. 저장된 소프트웨어와 파일이 휴대폰 메모리를 너무 많이 차지하므로 하드웨어 구성이 설치 요구 사항을 충족하는 한 불필요한 파일과 소프트웨어를 자주 삭제하는 것은 문제가 되지 않습니다. 새 것을 시스템 디스크에서 직접 다시 설치하십시오! USB 플래시 드라이브나 하드 디스크를 사용하여 설치할 수 있으며 이는 매우 빠릅니다. 하지만 핵심은 호환성이 좋고(IDE, ACHI, RAID 모드에서 설치 지원) 자동으로 영구적으로 활성화될 수 있는 검증된 시스템 디스크를 사용하는 것입니다. 그래서

MySQL은 다양한 유형의 애플리케이션 개발에 널리 사용되는 오픈 소스 관계형 데이터베이스 관리 시스템입니다. MySQL 데이터베이스를 사용할 때 데이터베이스 보안을 강화하기 위해 비밀번호를 변경해야 하는 경우가 많습니다. 이 기사에서는 구체적인 코드 예제를 통해 MySQL 비밀번호를 변경하는 방법을 소개합니다. MySQL에서는 다음 단계에 따라 비밀번호를 변경할 수 있습니다. MySQL 데이터베이스 서버에 로그인합니다. 명령 프롬프트 또는 터미널 창을 열고 다음 명령을 실행합니다. mysql-uroo

이 기사에서는 HTML에 요소의 값을 추가하는 방법을 설명합니다. 우리는 HTML의 value 속성과 그것이 사용되는 상황에 대한 기본적인 이해를 가지고 있습니다. HTMLvalue 속성을 더 잘 이해할 수 있기를 바랍니다. HTML에서 value 속성은 함께 사용되는 요소의 값을 설명하는 데 사용됩니다. 다양한 HTML 구성요소에 대해 서로 다른 의미를 갖습니다. 사용법 -,,,,,,,, 요소와 함께 사용할 수 있습니다. - value 속성이 존재하는 경우, 입력 요소의 기본값이 무엇인지 나타냅니다. 다양한 입력 유형에 대해 서로 다른 의미를 갖습니다. 버튼이 "버튼", "재설정" 및 &qu에 나타나는 경우
