從零開發(fā)區(qū)塊鏈應(yīng)用(二)--mysql安裝及數(shù)據(jù)庫表的安裝創(chuàng)建

一寸五、mysql在liunx環(huán)境安裝

1.1 下載mysql數(shù)據(jù)庫鏡像

# docker pull mysql:5.7.22

1.2 創(chuàng)建mysql掛載目錄

# mkdir -p /opt/mysql/data

1.3 編寫mysql配置文件

進(jìn)入/opt/mysql目錄中梳杏,編寫mysql配置文件

# cd /opt/mysql
# vim my.cnf 

[client]
port            = 3306
socket          = /tmp/mysql.sock
[mysqld]
datadir=/var/lib/mysql
socket=/tmp/mysql.sock
port=3306
sql_mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
long_query_time = 5
slow_query_log = 1
slow_query_log_file = slow.log
max_connections=3000
skip-name-resolve
back_log=384
log-bin=mysql-bin
binlog_format=mixed
expire_logs_days = 7
server-id = 123

1.4 啟動mysql數(shù)據(jù)庫容器

命令:

# pwd
/opt/mysql

# docker run -itd --restart=unless-stopped -v /etc/localtime:/etc/localtime -v /etc/timezone:/etc/timezone --name mysql -p 3306:3306 -v $(pwd)/data:/var/lib/mysql -v $(pwd)/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.22

注意:

安裝mysql時十性,需要將連接信息保存至安全的文件中塑悼,需要保存如下信息:

Mysql:
連接IP:mysql服務(wù)器內(nèi)網(wǎng)IP地址
連接端口:3306
連接密碼:123456

二厢蒜、mysql庫表創(chuàng)建

2.1 mysql數(shù)據(jù)庫創(chuàng)建

mysql創(chuàng)建數(shù)據(jù)庫斑鸦,并且指定編碼utf8

CREATE DATABASE `mydb` CHARACTER SET utf8 COLLATE utf8_general_ci;

注:utf8mb4兼容utf8,且比utf8能表示更多的字符固以。無特殊情況憨琳,用uft8

2.2 mysql數(shù)據(jù)表創(chuàng)建

CREATE TABLE IF NOT EXISTS `table`(
   `geekdocs_id` INT UNSIGNED AUTO_INCREMENT,
   `geekdocs_title` VARCHAR(100) NOT NULL,
   `geekdocs_author` VARCHAR(40) NOT NULL,
   `submission_date` DATE,
   PRIMARY KEY ( `geekdocs_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

參數(shù)解釋:

  • 如果你不想字段為 NULL 可以設(shè)置字段的屬性為 NOT NULL栽渴,在操作數(shù)據(jù)庫時如果輸入該字段的數(shù)據(jù)為NULL 稳懒,就會報錯场梆。
  • AUTO_INCREMENT定義列為自增的屬性或油,一般用于主鍵,數(shù)值會自動加1腔彰。
  • PRIMARY KEY關(guān)鍵字用于定義列為主鍵霹抛。 您可以使用多列來定義主鍵杯拐,列間以逗號分隔世蔗。
  • ENGINE 設(shè)置存儲引擎污淋,CHARSET 設(shè)置編碼寸爆。

三而昨、mysql常用數(shù)據(jù)類型

3.1 數(shù)據(jù)類型介紹

數(shù)據(jù)類型是指列、存儲過程參數(shù)着憨、表達(dá)式和局部變量的數(shù)據(jù)特征甲抖,它決定了數(shù)據(jù)的存儲格式,代表了不同的信息類型挫剑。
有一些數(shù)據(jù)是要存儲為數(shù)字的樊破,數(shù)字當(dāng)中有些是要存儲為整數(shù)唆铐、小數(shù)艾岂、日期型等...

MySQL 支持多種數(shù)據(jù)類型,主要有數(shù)值類型脆炎、日期/時間類型和字符串類型秒裕。

  • 數(shù)值類型:包括整數(shù)類型 TINYINT簇爆、SMALLINT入蛆、MEDIUMINT哨毁、INT源武、BIGINT话浇、浮點(diǎn)小數(shù)數(shù)據(jù)類型 FLOAT和 DOUBLE幔崖、定點(diǎn)小數(shù)類型 DECIMAL。
  • 日期/時間類型:YEAR 吉嫩、TIME自娩、 DATE、 DATETIME 和 TIMESTAMP智什。
  • 字符串類型: CHAR 荠锭、VARCHAR证九、 BINARY愧怜、 VARBINARY妈拌、 BLOB尘分、 TEXT著摔、 ENUM定续、 SET 摹察。

3.2 整數(shù)類型

3.2.1 MySQL中的整數(shù)型數(shù)據(jù)類型:

類型名稱 大小 范圍(有符號) 范圍(無符號) 用途
TINYINT 1個字節(jié) (-128供嚎,127) (0寸宏,255) 小整數(shù)值
SMALLINT 2個字節(jié) (-32768氮凝,32767) (0罩阵,65535) 大整數(shù)值
MEDIUMINT 3個字節(jié) (-8388608稿壁,8388607) (0傅是,16777215) 大整數(shù)值
INT(INTEGER) 4個字節(jié) (-2147483648,2147483647) (0蕾羊,4294967295) 大整數(shù)值
BIGINT 8個字節(jié) (-9233372036854775808喧笔,9223372036854775807) (0,18446744073 709551615) 極大整數(shù)值

舉例說明:整數(shù)類型的大小與范圍的關(guān)系

例如:整數(shù)類型 int

1字節(jié)=8位
4字節(jié)=32位龟再,每位由0或者1組成书闸,所以int得取值范圍是:2的32次方 位

3.2.2 有符號與無符號

  • 無符號unsigned 表示設(shè)置的的數(shù)據(jù)為0或者正數(shù);

  • 有符號則可以是負(fù)數(shù) -利凑;

  • 舉例說明(使用TINYINT數(shù)據(jù)類型進(jìn)行舉例)

如果帶符號,需要用1位表示符號(1表示負(fù)數(shù),0表示正),剩下7位表示數(shù)據(jù)浆劲,那么表示范圍是-127—127(包括-0和+0)

如果不帶符號,8位全部表示數(shù)據(jù),那么表示范圍是 0–256

3.2.3 類型的大小、取值范圍與數(shù)據(jù)長度

我們經(jīng)常會把數(shù)據(jù)類型設(shè)置成INT(11)哀澈,這后面的數(shù)字11表示的是該數(shù)據(jù)類型指定的顯示寬度牌借。

  • 舉例一:
    例如走哺,假設(shè)聲明一個 INT 類型的字段:
create table t1(year int(4));

我們向表中插入兩條數(shù)據(jù):

insert into t1(year) values(1999),(19999);

可以插入束凑,而且沒有警告谈秫,然后查看表中數(shù)據(jù)如下:

mysql> select * from t1;
+-------+
| year  |
+-------+
|  1999 |
| 19999 |
+-------+
2 rows in set (0.00 sec)
  • 舉例二:
    我們再次向表中插入一條數(shù)據(jù)硕淑,此值超出了int數(shù)據(jù)類型有符號的范圍:2147483647
INSERT INTO t1(YEAR) VALUES(2147483648);

向數(shù)據(jù)庫中插入此數(shù)據(jù)時拇囊,出現(xiàn)了一條警告:

Warning Code : 1264
Out of range value for column 'year' at row 1

然后查看表中數(shù)據(jù)如下:

mysql> select * from t1;
+------------+
| year       |
+------------+
|       1999 |
|      19999 |
| 2147483647 |
+------------+
3 rows in set (0.00 sec)
  • 根據(jù)以上實驗可得出結(jié)論:

顯示寬度和數(shù)據(jù)類型的取值范圍是無關(guān)的纠永,顯示寬度只是指明 MySQL 最大可能顯示的數(shù)字個數(shù)英上,數(shù)值的位數(shù)小于指定的寬度會由空格填充相恃;如果插入了大于顯示寬度的值见剩,只要該值不超過該類型整數(shù)的取值范圍,數(shù)值依然可以插入,而且能夠顯示出來。

長度的作用為為整型指定顯示寬度送火,如INT(11)坚俗,對于存儲來說INT(1)和INT(20)是相同的恩闻,它不會限制值的合法范圍尉剩,只是規(guī)定了MySQL與客戶端的交互應(yīng)該顯示多少位而已皂林,比如你向INT(1)中插入了123456值著隆,數(shù)據(jù)庫中其實已經(jīng)存入了123456浦辨,只是對于客戶端查出來是1而已旦装。

顯示寬度和數(shù)據(jù)類型的取值范圍是無關(guān)的,顯示寬度只是指明 MySQL 最大可能顯示的數(shù)字個數(shù),數(shù)值的位數(shù)小于指定的寬度會由空格填充;如果插入了大于顯示寬度的值,只要該值不超過該類型整數(shù)的取值范圍,數(shù)值依然可以插入强岸,而且能夠顯示出來悯衬。

3.2.4 tinyint、int瘸味、decimal 應(yīng)用場景

  • tinyint尘奏、int赋铝、decimal 應(yīng)用場景

tinyint:tinyint 一般用于存放 status,type 這種數(shù)值小的數(shù)據(jù)臂外,不夠用時可能會用 smallint殖属,為了避免數(shù)據(jù)庫被過度設(shè)計原环,布爾、枚舉類型也采用 tinyint;

int:可用于存儲時間戳與自增ID主鍵;

decimal: DECIMAL類型可用于存儲對精度要求比較高的數(shù)值,比如訂單金額存儲等。

  • 如何選擇適合的數(shù)據(jù)類型

為了更好的提高系統(tǒng)性能城丧,選擇合適的數(shù)據(jù)類型非常重要蚊惯,以下幾個簡單的原則有助于你更好的做出選擇:

更小通常是最好的:越小酝豪,占用cpu、磁盤和內(nèi)存越少重窟;

盡量簡單:簡單的數(shù)據(jù)類型可以減少cpu開銷载萌;

盡量避免null:包含null值的列在sql語句中通常很難優(yōu)化。

3.3 日期/時間類型

mysql(5.5)所支持的日期時間類型有:DATETIME巡扇、 TIMESTAMP扭仁、DATE、TIME厅翔、YEAR乖坠。本篇文章此處主要講解DATETIME類型

幾種類型比較如下:

日期時間類型 占用空間 日期格式 最小值 最大值 零值表示
DATETIME 8 bytes YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 9999-12-31 23:59:59 0000-00-00 00:00:00
TIMESTAMP 4 bytes YYYY-MM-DD HH:MM:SS 19700101080001 2038 年的某個時刻 00000000000000
DATE 4 bytes YYYY-MM-DD 1000-01-01 9999-12-31 0000-00-00
TIME 3 bytes HH:MM:SS -838:59:59 838:59:59 00:00:00
YEAR 1 bytes YYYY 1901 2155 0000

注:dateTime類型用來記錄日期和時間,其作用等價于date類型和Time類型的組合刀闷。一個dateTime類型的字段可以用一個date類型的字段和一個time類型的字段代替熊泵。但是如果需要同時記錄日期和時間,選擇dateTime類型是個不錯的選擇甸昏。

3.4 字符串類型

MySQL 中的字符串類型有 CHAR顽分、VARCHAR、TINYTEXT施蜜、TEXT卒蘸、MEDIUMTEXT、LONGTEXT、ENUM缸沃、SET 等恰起。

3.4.1 MySQL中的字符串?dāng)?shù)據(jù)類型:

下表中列出了 MySQL 中的字符串?dāng)?shù)據(jù)類型,括號中的M表示可以為其指定長度趾牧。

類型名稱 | 說明|存儲需求

類型 大小 用途
CHAR 0-255字節(jié) 定長字符串
VARCHAR 0-65535字節(jié) 變長字符串
TINYTEXT 0-255字節(jié) 短文本字符串
TEXT 0-65535字節(jié) 長文本數(shù)據(jù)
MEDIUMTEXT 0-16777215字節(jié) 中等長度文本數(shù)據(jù)
LONGTEXT 0-4294967295字節(jié) 極大文本數(shù)據(jù)

3.4.2 char和varchar

char類型和varchar類型都是在創(chuàng)建表時指定了最大長度检盼,其基本形式如下:字符串類型(M)。其中翘单,字符串類型參數(shù)指定了數(shù)據(jù)類型是char類型還是varchar類型吨枉,M參數(shù)指定了該字符串的最大長度為M。舉個例子县恕,char(4)就是指數(shù)據(jù)類型是char類型东羹,其最大長度為4。

char類型的長度是固定的忠烛,在創(chuàng)建表時就指定了属提,其長度可以是0~~255的任意值。

比如美尸,char(100)就是指定char類型的長度為100冤议。

varchar類型的長度是可變的,在創(chuàng)建表時指定了最大長度师坎。定義時恕酸,其最大值可以取0~~65525之間的任意值。指定了varchar類型的最大值以后胯陋,其長度可以在o到最大長度之間蕊温。

比如,varchar(100)的最大長度是100遏乔,但是义矛,不是每條記錄都要占用100個字節(jié)。而是在這個最大值范圍內(nèi)盟萨,使用多少分配多少凉翻,varchar類型實際占用的空間為字符串的實際長度加一。這樣捻激,即可有效節(jié)約系統(tǒng)的空間制轰。

3.4.3 char、varchar胞谭、txt 應(yīng)用場景

  • char的優(yōu)缺點(diǎn):定長垃杖,效率高,存在空間浪費(fèi)的可能丈屹;一般用于固定長度的表單提交數(shù)據(jù)存儲缩滨;例如:身份證號,手機(jī)號,電話脉漏,密碼等
  • varchar的優(yōu)缺點(diǎn):存變長大數(shù)據(jù),速度慢袖牙,不存在空間浪費(fèi)侧巨;如果字符串列的最大長度比平均長度大很多;列的更新很少鞭达;所以碎片不是問題司忱;使用了像UTF-8這樣復(fù)雜的字符集,每個字符都使用不同的字節(jié)數(shù)進(jìn)行存儲畴蹭,那么應(yīng)該使用varchar
  • text:存變長大數(shù)據(jù)坦仍,速度慢,不存在空間浪費(fèi)叨襟;一般用來直接存儲一個比較大的文本繁扎,比如說一篇文章,一篇新聞
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末糊闽,一起剝皮案震驚了整個濱河市梳玫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌右犹,老刑警劉巖提澎,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異念链,居然都是意外死亡盼忌,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進(jìn)店門掂墓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谦纱,“玉大人,你說我怎么就攤上這事梆暮》” “怎么了?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵啦粹,是天一觀的道長偿荷。 經(jīng)常有香客問我,道長唠椭,這世上最難降的妖魔是什么跳纳? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮贪嫂,結(jié)果婚禮上寺庄,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好斗塘,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布赢织。 她就那樣靜靜地躺著,像睡著了一般馍盟。 火紅的嫁衣襯著肌膚如雪于置。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天贞岭,我揣著相機(jī)與錄音八毯,去河邊找鬼。 笑死瞄桨,一個胖子當(dāng)著我的面吹牛话速,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播芯侥,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼泊交,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了筹麸?” 一聲冷哼從身側(cè)響起活合,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎物赶,沒想到半個月后白指,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡酵紫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年告嘲,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奖地。...
    茶點(diǎn)故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡橄唬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出参歹,到底是詐尸還是另有隱情仰楚,我是刑警寧澤,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布犬庇,位于F島的核電站僧界,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏臭挽。R本人自食惡果不足惜捂襟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望欢峰。 院中可真熱鬧葬荷,春花似錦涨共、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至扒吁,卻和暖如春照筑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背瘦陈。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留波俄,地道東北人晨逝。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像懦铺,于是被迫代替她去往敵國和親捉貌。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評論 2 351

推薦閱讀更多精彩內(nèi)容