create 执行存储过程报错出现符号_年薪百万之路--第四十天 存储引擎
生活随笔
收集整理的這篇文章主要介紹了
create 执行存储过程报错出现符号_年薪百万之路--第四十天 存储引擎
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
存儲引擎
日常生活中文件格式有很多中,并且針對不同的文件格式會有對應不同存儲方式和處理機制(txt,pdf,word,mp4...)
針對不同的數據應該有對應的不同的處理機制來存儲
存儲引擎就是不同的處理機制
MySQL主要存儲引擎
* Innodb是MySQL5.5版本及之后默認的存儲引擎存儲數據更加的安全* myisam是MySQL5.5版本之前默認的存儲引擎速度要比Innodb更快 但是我們更加注重的是數據的安全* memory內存引擎(數據全部存放在內存中) 斷電數據丟失* blackhole無論存什么,都立刻消失(黑洞)創建表的完整語法
語法 create table 表名(字段名1 類型(寬度) 約束條件,字段名2 類型(寬度) 約束條件,字段名3 類型(寬度) 約束條件 )注意
1 在同一張表中字段名不能重復 2 寬度和約束條件是可選的(可寫可不寫) 而字段名和字段類型是必須的約束條件寫的話 也支持寫多個字段名1 類型(寬度) 約束條件1 約束條件2...,create table t5(id); 報錯 3 最后一行不能有逗號create table t6(id int,name char,); 報錯寬度和約束條件
寬度一般情況下指的是對存儲數據的限制create table t7(name char); 默認寬度是1insert into t7 values('jason');insert into t7 values(null); 關鍵字NULL針對不同的版本會出現不同的效果5.6版本默認沒有開啟嚴格模式 規定只能存一個字符你給了多個字符,那么我會自動幫你截取5.7版本及以上或者開啟了嚴格模式 那么規定只能存幾個 就不能超,一旦超出范圍立刻報錯 Data too long for .... """嚴格模式到底開不開呢?""" MySQL5.7之后的版本默認都是開啟嚴格模式的 使用數據庫的準則:能盡量少的讓數據庫干活就盡量少 不要給數據庫增加額外的壓力# 約束條件 null not null不能插入null create table t8(id int,name char not null);""" 寬度和約束條件到底是什么關系寬度是用來限制數據的存儲約束條件是在寬度的基礎之上增加的額外的約束基本數據類型
整型
分類:TINYINT SMALLINT MEDUIMINT INT BIGINT
是否有符號默認情況下是帶符號的 超出會如何超出限制只存最大可接受值約束條件之unsigned 無符號
create table t10(id tinyint unsigned)
create table t13(id int(8) unsigned zerofill);
# 用0填充至8位
針對整型字段 括號內無需指定寬度 因為它默認的寬度以及足夠顯示所有的數據了
嚴格模式
# 如何查看嚴格模式
show variables like "%mode";模糊匹配/查詢關鍵字 like%:匹配任意多個字符_:匹配任意單個字符# 修改嚴格模式
set session 只在當前窗口有效set global 全局有效set global sql_mode = 'STRICT_TRANS_TABLES';修改完之后 重新進入服務端即可浮點型
分類
FLOAT、DOUBLE、DECIMAL
存儲限制float(255,30) # 總共255位 小數部分占30位double(255,30) # 總共255位 小數部分占30位decimal(65,30) # 總共65位 小數部分占30位 精確度驗證create table t15(id float(255,30));create table t16(id double(255,30));create table t17(id decimal(65,30));insert into t15 values(1.111111111111111111111111111111);insert into t16 values(1.111111111111111111111111111111);insert into t17 values(1.111111111111111111111111111111);float < double < decimal字符類型
分類
char定長char(4) 數據超過四個字符直接報錯 不夠四個字符空格補全varchar變長varchar(4) 數據超過四個字符直接報錯 不夠有幾個存幾個 char_length統計字段長度select char_length(name) from t18;select char_length(name) from t19; """首先可以肯定的是 char硬盤上存的絕對是真正的數據 帶有空格的但是在顯示的時候MySQL會自動將多余的空格剔除"""# 再次修改sql_mode 讓MySQL不要做自動剔除操作set global sql_mode = 'STRICT_TRANS_TABLES,PAD_CHAR_TO_FULL_LENGTH';char與varchar對比
char缺點:浪費空間優點:存取都很簡單直接按照固定的字符存取數據即可jason egon alex wusir tank 存按照五個字符存 取也直接按照五個字符取varchar優點:節省空間缺點:存取較為麻煩1bytes+jason 1bytes+egon 1bytes+alex 1bytes+tank 存的時候需要制作報頭取的時候也需要先讀取報頭 之后才能讀取真實數據時間類型
分類
date:年月日 2020-5-4datetime:年月日時分秒 2020-5-4 11:11:11time:時分秒11:11:11Year:2020create table student(id int,name varchar(16),born_year year,birth date,study_time time,reg_time datetime);枚舉與集合類型
分類
枚舉(enum) 多選一
集合(set) 多選多
具體使用```pythoncreate table user(id int,name char(16),gender enum('male','female','others'));insert into user values(1,'jason','male'); 正常insert into user values(2,'egon','xxxxooo'); 報錯# 枚舉字段 后期在存數據的時候只能從枚舉里面選擇一個存儲 create table teacher(id int,name char(16),gender enum('male','female','others'),hobby set('read','DBJ','hecha'));insert into teacher values(1,'jason','male','read'); 正常insert into teacher values(2,'egon','female','DBJ,hecha'); 正常insert into teacher values(3,'tank','others','running'); 報錯# 集合可以只寫一個 但是不能寫沒有列舉的 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的create 执行存储过程报错出现符号_年薪百万之路--第四十天 存储引擎的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云计算运维累不累_关于云计算运维管理要点
- 下一篇: devc 无法编译循环语句_鸡生蛋还是蛋