日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 39 t.id 39_Day39----MySQL系列

發布時間:2025/4/17 数据库 70 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 39 t.id 39_Day39----MySQL系列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、數據庫引擎

什么是引擎?

一個功能的核心部分,在數據庫中同樣也是有引擎的。核心功能是存儲數據 涉及到存儲數據的代碼 就稱之為存儲引擎

為什么要被分類?

為了讓這個功能更加適合用戶的需求

創建表時在最后指定引擎名稱 engine = xxx

create table t1(id int)engine=innodb

create table t2(id intnot null)engine=csv

create table t3(id int)engine=memory

create table t4(id int)engine=blackhole#innodb,默認的引擎,因為它是永久存儲并且支持事務,行鎖,外鍵#csv,不能為空#memory,在重啟mysql或者重啟機器后,表內數據清空#blackhole,往表內插入任何數據,都相當于丟入黑洞,表內永遠不存記錄

insert into t1 value(1);

insert into t2 value(1);

insert into t3 value(1);

insert into t4 value(1);

select* from t1;#有值

select * from t2;#有值

select * from t3;#有值

select * from t4;#為空

二、表詳細

create table 表名(

字段名 數據類型[(顯示的長度)約束條件],

字段名 數據類型[(顯示的長度)約束條件],

..........

字段名 數據類型[(顯示的長度)約束條件]);

注意:①與Python的不同,最后不需要加逗號

②表名、字段名和數據類型都是必須有的

③顯示的長度和約束條件是可選的

④字段名、表名甚至庫名都不能是關鍵字

三、整型類型

整型

*** *** *** ***** ***

tinyint smallint mediumint int bigint

字節數:1 2 3 4 8

默認情況下整型是有符號的 需要用一個二進制位存儲符號

給整型加上 約束 unsigned來表示無符號

如果數據超出范圍就盡可能保存最大的 例如 在無符號下 保存256 其實存的255

如果有符號 例如 tinyint 保存-1280 其實存的是-128 是最小值

修改嚴格模式:

以上特性的出現是因為 mysql處于非嚴格模式

查看當前模式 show variables like "sql_mode";

修改為嚴格模式 set global sql_mode = "STRICT_TRANS_TABLES";

嚴格模式下 如果值超出范圍就直接報錯,在一些版本中默認就是嚴格模式!

在我們的正常開發中,我們應該先判斷數據的正確性,沒有問題在發給數據庫

怎么選擇: 得根據實際情況來判斷,能夠保存你的數據的最小類型

長度限制對于整型的意義:

create table t10(id int(1));

insert into t10 value(454555);

select *from t10;

發現這個數也存儲成功

說明 這里長度指的不是存儲容量限制

而是顯示的寬度

如果你的數據超過了顯示寬度 有幾個顯示幾個

如果不足 則補全到指定長度 得告訴它用什么來補全

create table t13(id int(10) zerofill);

總結 不是容量限制 而是 顯示寬度

要限制顯示寬度

1.創建表時 給整型加上寬度

2.加上zerofill結束

四、浮點型

浮點型: 小數型

分類: float ***** double **** decimal *****

字節數: 4 8 不確定(手動指定)

給浮點設置寬度限制

float(m,d)

double(m,d)

decimal(m,d)

長度說明 *****

m表示 這個浮點數整體的長度

d表示 小數部分的長度

例如: float(5,3) 最大值: 99.999

區別 *****

相同點: 小數部分最大長度都是30

float和double的最大長度為255

不同點: decimal的整體最大長度65

精度不同

double 比 float 精度高

decimal 是準確的 不會丟失精度

如何選擇:你對精確度要求高你就使用 decimal

五、字符型

char 定長字符

varchar 變長字符

char類型的長度是固定 無論你存儲的數據有多長 占用的容量都一樣

char(3) 存儲的數據為 "a" 在硬盤保存的數據還是占3字符長度 實際保存的是"a "

varchar 長度是可變的 存儲的數據有多長就占用多長

varchar(3) 存儲的數據為 "a" 在硬盤保存的數據還是占1字符長度 實際保存的是"a"

yxx exx lxx zxx cx wxx char(3)

(1bytes+yx)(1bytes+exx)(1bytes+lx)(1bytes+zxx) varchar(3)

如果是可變長度 則有問題 不知道數據從哪里開始到哪里結束 所以需要有一個位置保存數據的長度

vharchar 能支持的最大長度是65535 用于保存數據長度的數據最長兩個bytes

如果是char類型 如果你的數據不足指定長度 就在后面用空格補全

驗證:

使用一個 char_length的函數 可以查看字符的長度

create table t18(a char(4),b varchar(4));

insert into t18 value("x","x");

select char_length(a),char_length(b) from t18;

兩個字段的長度都為1

結論:

這是因為 mysql在存儲時 自動加上的空格 對使用者而言是沒有意義的 所以mysql自動幫你處理掉空格了

我們可以設置sql模式 來讓它現出原形

set global sql_mode = "PAD_CHAR_TO_FULL_LENGTH,STRICT_TRANS_TABLES"

設置完成后重啟msyql 再次查詢長度

注意:

當你在執行這樣的查詢語句時 mysql會自動將參數末尾的空格去除

select *from t19 where name = "yh"

當你在使用模糊搜索時 要注意 定長字符 后面可能會有空格 所以最好在后面加上百分號 %

select *from t19 where name like "yh";

% 任意個數的任意字符

_ 1個任意字符

如何選擇

char

存取效率高

浪費存儲空間

varchar

存取效率低于char

節省存儲空間

使用起來感受不到區別 通常用的是char

char和varchar 長度都比較小 最大就是65535

大文本類型:

TEXT系列 TINYTEXT TEXT MEDIUMTEXT LONGTEXT 文本是帶有編碼

BLOB 系列 TINYBLOB BLOB MEDIUMBLOB LONGBLOB 也是字符數據 但是不帶編碼

二進制類型: 用于存儲多媒體數據 比如視頻 但是我們一般不會將多媒體數據存到數據 而是存儲文件路徑地址

BINARY系列 BINARY VARBINARY 存儲二進制數據

六、時間日期

time 時分秒

year 年份

date 日期

datetime 年月日時分秒

舉例:create table t3 (id int,時間 time);

七、集合與枚舉

set 多選多

enum多選一

舉例:?create table t1 (id int(5),name char(10),sex enum("男","女"),hobby set("read","run","watch TV"));

總結

以上是生活随笔為你收集整理的mysql 39 t.id 39_Day39----MySQL系列的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。