MySQL基本操作2 日期,時間型別和表的約束

2021-09-25 21:39:51 字數 2702 閱讀 6932

日期和時間型別

常用的日期有如下三個:

datetime 時間日期格式 『yyyy-mm-dd hh:ii:ss』 表示範圍從1000到9999,占用八字節

date:日期 『yyyy-mm-dd』,占用三位元組

timestamp:時間戳,從2023年開始的 yyyy-mm-dd hh:ii:ss格式和datetime完全一致,占用四位元組

建立表:create table birthday(t1 data,t2 datatime,t3 timestamp);

插入資料:insert into birthday(t1,t2)values (『1998-3-8』,『2019-8-5 12:3:1』);(新增資料時,資料戳會自動補上當前時間)

enym和set

enum:列舉,「單選」型別;提供了若干個選項的值,最終乙個單元格中,實際只儲存了其中乙個值

enum(『選項1』,『選項2』,『選項3』,…)

set:集合,「多選」型別; 提供了若干個選項的值,最終乙個單元格中,設計可儲存了其中任意多個值

set(『選項值1』,『選項值2』,『選項值3』, …);

集合查詢使用find_in_set函式

select * from votes where find_in_set(『登山』, hobby);

表的約束

真正約束欄位的是資料型別,但是資料型別約束很單一,需要有一些額外的約束,更好的保證資料的合法性,從業務邏輯角度保證資料的正確性。

比如有乙個欄位是email,要求是唯一的。

表的約束很多,這裡主要介紹如下幾個: null/not null,default, comment, zerofill,primary key, auto_increment,unique key 。

空屬性

兩個值:null和not null(資料庫預設字段基本都是字段為空,但在實際中盡肯能保證欄位不為空,因為欄位為空不能參與運算)

預設值

某一種資料會經常性的出現某個具體的值,可以在一開始就指定好,在需要真實資料的時候,使用者可以選 擇性的使用預設值。

create table tt10 (name varchar(20) not null, age tinyint unsigneddefault 0,*** char(2)default 『男』);

預設值的生效:資料在插入的時候不給該字段賦值,就使用預設值

列描述

comment,沒有實際含義,專門用來描述字段,會根據表建立語句儲存,用來給程式設計師或dba來進行了 解。

通過desc查不到注釋資訊,show可以

zerofil

如果寬度小於設定的寬度,自動填充0。,這只是最後顯示的結果,在mysql中實際儲存的還是1。資料庫內部儲存的還是1,只是設定了zerofill屬性後的一種格式化輸出而已。

主鍵

primary key用來唯一的約束該欄位裡面的資料,不能重複,不能為空,一張表中最多只能有乙個主鍵;主 鍵所在的列通常是整數型別。

建立表的時候直接在字段上指定主鍵

id int unsigned primary key comment 『學號不能為空』,–id為主鍵

在建立表的時候,在所有字段之後,使用primary key(主鍵字段列表)來建立主鍵,如果有多個字段作為主 鍵,可以使用復合主鍵。

primary key(id, course)-- id和course為復合主鍵

當表建立好以後,可以再次追加主鍵

alter table 表名 add primary key(字段列表)

刪除主鍵:alter table 表名 drop primary key;

自增長

auto_increament:當對應的字段,不給值,會自動的被系統觸發,系統會從當前欄位中已經有的最大值+1操作, 得到乙個新的不同的值。通常和主鍵搭配使用,作為邏輯主鍵

id int unsigned primary key auto_increment;

唯一鍵

一張表中有往往有很多字段需要唯一性,資料不能重複,但是一張表中只能有乙個主鍵

唯一鍵就可以解決表中有多個字段需要唯一性約束的問題。

唯一鍵的本質和主鍵差不多,唯一鍵允許為空,而且可以多個為空,空字段不做唯一性比較

id char(10) unique comment 『學號,不能重複,但可以為空』,

外來鍵

用於定義主表和從表之間的關係:外來鍵約束主要定義在從表上,主表則必須是有主鍵約束或unique約束。當定義外來鍵後,要求外來鍵列資料必須在主表的主鍵列存在或為null。

foreign key (欄位名) references 主表(列)

Python2日期時間操作

在日常工作中,經常遇到一下日期時間格式轉化。例如時間比較 時間格式化 從字串轉化為日期等操作,本文將日常要的這些操作進行彙總備忘。想要時間格式比較,需要轉化為統一的資料型別,例如轉化為統一的date型別,或time型別,或datetime型別。bin python coding utf 8 impo...

12 4 日期時間類

作 者 霍雨佳 完成日期 2014 年5月18日 版 本 號 v1.0 問題描述 日期時間類 樣例輸入 樣例輸出 專案要求 定義乙個日期類date,資料成員包括年 月 日,setdate int y,int m,int d 和printdate 函式分別用於設定日期和顯示日期 再定義乙個時間類tim...

37 日期時間類(Date DateFormat)

date類空參構造方法 date 空參構造方法,獲取的是當前系統的日期和時間 實參構造方法 date long date 傳遞毫秒值,把毫秒轉換成date日期 成員方法 long gettime date類的成員方法,把日期轉化成毫秒 date 空參構造方法,獲取的是當前系統的日期和時間 date ...