知識(shí)無底,學(xué)海無涯,到今天進(jìn)入MySQL的學(xué)習(xí)4天了,知識(shí)點(diǎn)雖然簡單,但是比較多,所以寫一篇博客將MySQL的基礎(chǔ)寫出來,方便自己以后查找,還有就是分享給大家。
1、SQL簡述
1)SQL的概述
Structure Query Language(結(jié)構(gòu)化查詢語言)簡稱SQL,它被美國國家標(biāo)準(zhǔn)局(ANSI)確定為關(guān)系型數(shù)據(jù)庫語言的美國標(biāo)準(zhǔn),后被國際化標(biāo)準(zhǔn)組織(ISO)采納為關(guān)系數(shù)據(jù)庫語言的國際標(biāo)準(zhǔn)。數(shù)據(jù)庫管理系統(tǒng)可以通過SQL管理數(shù)據(jù)庫;定義和操作數(shù)據(jù),維護(hù)數(shù)據(jù)的完整性和安全性。
2)SQL的優(yōu)點(diǎn)
簡單易學(xué),具有很強(qiáng)的操作性
絕大多數(shù)重要的數(shù)據(jù)庫管理系統(tǒng)均支持SQL
高度非過程化;用SQL操作數(shù)據(jù)庫時(shí)大部分的工作由DBMS自動(dòng)完成
3)SQL的分類
?DDL(Data Definition Language) 數(shù)據(jù)定義語言,用來操作數(shù)據(jù)庫、表、列等;常用語句:CREATE、 ALTER、DROP
?DML(Data Manipulation Language) 數(shù)據(jù)操作語言,用來操作數(shù)據(jù)庫中表里的數(shù)據(jù);常用語句:INSERT、 UPDATE、 DELETE
?DCL(Data Control Language) 數(shù)據(jù)控制語言,用來操作訪問權(quán)限和安全級(jí)別;常用語句:GRANT、DENY
?DQL(Data Query Language) 數(shù)據(jù)查詢語言,用來查詢數(shù)據(jù) 常用語句:SELECT
2、數(shù)據(jù)庫的三大范式
第一范式(1NF)是指數(shù)據(jù)庫表的每一列都是不可分割的基本數(shù)據(jù)線;也就是說:每列的值具有原子性,不可再分割。
第二范式(2NF)是在第一范式(1NF)的基礎(chǔ)上建立起來得,滿足第二范式(2NF)必須先滿足第一范式(1NF)。如果表是單主鍵,那么主鍵以外的列必須完全依賴于主鍵;如果表是復(fù)合主鍵,那么主鍵以外的列必須完全依賴于主鍵,不能僅依賴主鍵的一部分。
第三范式(3NF)是在第二范式的基礎(chǔ)上建立起來的,即滿足第三范式必須要先滿足第二范式。第三范式(3NF)要求:表中的非主鍵列必須和主鍵直接相關(guān)而不能間接相關(guān);也就是說:非主鍵列之間不能相關(guān)依賴。
3、數(shù)據(jù)庫的數(shù)據(jù)類型
使用MySQL數(shù)據(jù)庫存儲(chǔ)數(shù)據(jù)時(shí),不同的數(shù)據(jù)類型決定了 MySQL存儲(chǔ)數(shù)據(jù)方式的不同。為此,MySQL數(shù)據(jù)庫提供了多種數(shù)據(jù)類型,其中包括整數(shù)類型、浮點(diǎn)數(shù)類型、定點(diǎn) 數(shù)類型、日期和時(shí)間類型、字符串類型、二進(jìn)制…等等數(shù)據(jù)類型。
1)整數(shù)類型
根據(jù)數(shù)值取值范圍的不同MySQL 中的整數(shù)類型可分為5種,分別是TINYINT、SMALUNT、MEDIUMINT、INT和 BIGINT。下圖列舉了 MySQL不同整數(shù)類型所對(duì)應(yīng)的字節(jié)大小和取值范圍而最常用的為INT類型的,
數(shù)據(jù)類型 字節(jié)數(shù) 無符號(hào)數(shù)的取值范圍 有符號(hào)數(shù)的取值范圍:
TINYINT 1 0~255 -128~127
SMALLINT 2 0~65535 -32768~32768
MEDIUMINT 3 0~16777215 -8388608~8388608
INT 4 0~4294967295 -2147483648~ 2147483648
BIGINT 8 0~18446744073709551615 -9223372036854775808~9223372036854775808
2)浮點(diǎn)數(shù)類型和定點(diǎn)數(shù)類型
在MySQL數(shù)據(jù)庫中使用浮點(diǎn)數(shù)和定點(diǎn)數(shù)來存儲(chǔ)小數(shù)。浮點(diǎn)數(shù)的類型有兩種:單精度浮點(diǎn)數(shù)類型(FLOAT)和雙精度浮點(diǎn)數(shù)類型(DOUBLE)。而定點(diǎn)數(shù)類型只有一種即DECIMAL類型。下圖列舉了 MySQL中浮點(diǎn)數(shù)和定點(diǎn)數(shù)類型所對(duì)應(yīng)的字節(jié)大小及其取值范圍:
數(shù)據(jù)類型 字節(jié)數(shù) 有符號(hào)的取值范圍 無符號(hào)的取值范圍:
FLOAT 4 -3.402823466E+38~-1.175494351E-38 0
和1.175494351E-38~3.402823466E+38
DOUBLE 8 -1.7976931348623157E+308~2.2250738585072014E-308 0和2.2250738585072014E-308~1.7976931348623157E+308
DECIMAL(M,D) M+2 -1.7976931348623157E+308~2.2250738585072014E-308 0
和2.2250738585072014E-308~1.7976931348623157E+308
從上圖中可以看出:DECIMAL類型的取值范圍與DOUBLE類型相同。但是,請(qǐng)注意:DECIMAL類型的有效取值范圍是由M和D決定的。其中,M表示的是數(shù)據(jù)的長 度,D表示的是小數(shù)點(diǎn)后的長度。比如,將數(shù)據(jù)類型為DECIMAL(6,2)的數(shù)據(jù)6.5243 插人數(shù)據(jù)庫后顯示的結(jié)果為6.52
3)字符串類型
在MySQL中常用CHAR 和 VARCHAR 表示字符串。兩者不同的是:VARCHAR存儲(chǔ)可變長度的字符串。
當(dāng)數(shù)據(jù)為CHAR(M)類型時(shí),不管插入值的長度是實(shí)際是多少它所占用的存儲(chǔ)空間都是M個(gè)字節(jié);而VARCHAR(M)所對(duì)應(yīng)的數(shù)據(jù)所占用的字節(jié)數(shù)為實(shí)際長度加1。
插入值 CHAR(3) 存儲(chǔ)需求 VARCHAR(3) 存儲(chǔ)需求
‘’ ‘’ 3個(gè)字節(jié) ‘’ 1個(gè)字節(jié)
‘a(chǎn)’ ‘a(chǎn)’ 3個(gè)字節(jié) ‘a(chǎn)’ 2個(gè)字節(jié)
‘a(chǎn)b’ ‘a(chǎn)b’ 3個(gè)字節(jié) ‘a(chǎn)b’ 3個(gè)字節(jié)
‘a(chǎn)bc’ ‘a(chǎn)b’ 3個(gè)字節(jié) ‘a(chǎn)bc’ 4個(gè)字節(jié)
‘a(chǎn)bcd’ ‘a(chǎn)b’ 3個(gè)字節(jié) ‘a(chǎn)bc’ 4字節(jié)
4)字符串類型
文本類型用于表示大文本數(shù)據(jù),例如,文章內(nèi)容、評(píng)論、詳情等,它的類型分為如下4種:
數(shù)據(jù)類型 儲(chǔ)存范圍
TINYTEXT 0~255字節(jié)
TEXT 0~65535字節(jié)
MEDIUMTEXT 0~16777215字節(jié)
LONGTEXT 0~4294967295字節(jié)
5)日期與時(shí)間類型
MySQL提供的表示日期和時(shí)間的數(shù)據(jù)類型分別是 :YEAR、DATE、TIME、DATETIME 和 TIMESTAMP。下圖列舉了日期和時(shí)間數(shù)據(jù)類型所對(duì)應(yīng)的字節(jié)數(shù)、取值范圍、日期格式以及零值:
數(shù)據(jù)類型 字節(jié)數(shù) 取值范圍 日期格式 零值
YEAR 1 1901~2155 YYYY 0000
DATE 4 1000-01-01~9999-12-31 YYYY-MM-DD 0000-00-00
TIME 3 -838:59:59~ 838:59:59 HH:MM:SS 00:00:00
DATETIME 8 1000-01-01 00:00:00~9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 0000-00-00 00:00:00
TIMESTAMP 4 1970-01-01 00:00:01~2038-01-19 03:14:07 YYYY-MM-DD HH:MM:SS 0000-00-00 00:00:00
①YEAR類型
YEAR類型用于表示年份,在MySQL中,可以使用以下三種格式指定YEAR類型 的值。
使用4位字符串或數(shù)字表示,范圍為’1901’—'2155’或1901—2155。例如,輸人 ‘2019’或2019插人到數(shù)據(jù)庫中的值均為2019。
使用兩位字符串表示,范圍為’00’—‘99’。其中,‘00’—'69’范圍的值會(huì)被轉(zhuǎn)換為 2000—2069范圍的YEAR值,‘70’—'99’范圍的值會(huì)被轉(zhuǎn)換為1970—1999范圍的YEAR 值。例如,輸人’19’插人到數(shù)據(jù)庫中的值為2019。
使用兩位數(shù)字表示,范圍為1—99。其中,1—69范圍的值會(huì)被轉(zhuǎn)換為2001— 2069范圍的YEAR值,70—99范圍的值會(huì)被轉(zhuǎn)換為1970—1999范圍的YEAR值。例 如,輸人19插入到數(shù)據(jù)庫中的值為2019。
請(qǐng)注意:當(dāng)使用YEAR類型時(shí),一定要區(qū)分’0’和0。因?yàn)樽址袷降摹?’表示的YEAR值是2000而數(shù)字格式的0表示的YEAR值是0000。
②TIME類型
TIME類型用于表示時(shí)間值,它的顯示形式一般為HH:MM:SS,其中,HH表示小時(shí), MM表示分,SS表示秒。在MySQL中,可以使用以下3種格式指定TIME類型的值。
以’D HH:MM:SS’字符串格式表示。其中,D表示日可取0—34之間的值, 插人數(shù)據(jù)時(shí),小時(shí)的值等于(DX24+HH)。例如,輸入’2 11:30:50’插人數(shù)據(jù)庫中的日期為59:30:50。
以’HHMMSS’字符串格式或者HHMMSS數(shù)字格式表示。 例如,輸人’115454’或115454,插入數(shù)據(jù)庫中的日期為11:54:54
使用CURRENT_TIME或NOW()輸人當(dāng)前系統(tǒng)時(shí)間。
③DATETIME類型
DATETIME類型用于表示日期和時(shí)間,它的顯示形式為’YYYY-MM-DD HH: MM:SS’,其中,YYYY表示年,MM表示月,DD表示日,HH表示小時(shí),MM表示分,SS 表示秒。在MySQL中,可以使用以下4種格式指定DATETIME類型的值。
以’YYYY-MM-DD HH:MM:SS’或者’YYYYMMDDHHMMSS’字符串格式表示的日期和時(shí)間,取值范圍為’1000-01-01 00:00:00’—‘9999-12-3 23:59:59’。例如,輸人’2019-01-22 09:01:23’或 ‘20140122_0_90123’插人數(shù)據(jù)庫中的 DATETIME 值都為 2019-01-22 09:01:23。
以’YY-MM-DD HH:MM:SS’或者’YYMMDDHHMMSS’字符串格式表示的日期和時(shí)間,其中YY表示年,取值范圍為’00’—‘99’。與DATE類型中的YY相同,‘00’— '69’范圍的值會(huì)被轉(zhuǎn)換為2000—2069范圍的值,‘70’—'99’范圍的值會(huì)被轉(zhuǎn)換為1970—1999范圍的值。
以YYYYMMDDHHMMSS或者YYMMDDHHMMSS數(shù)字格式表示的日期 和時(shí)間。例如,插入20190122090123或者190122090123,插人數(shù)據(jù)庫中的DATETIME值都 為 2019-01-22 09:01:23。
使用NOW來輸人當(dāng)前系統(tǒng)的日期和時(shí)間。
④TIMESTAMP類型
TIMESTAMP類型用于表示日期和時(shí)間,它的顯示形式與DATETIME相同但取值范圍比DATETIME小。在此,介紹幾種TIMESTAMP類型與DATATIME類型不同的形式:
使用CURRENT_TIMESTAMP輸人系統(tǒng)當(dāng)前日期和時(shí)間。
輸人NULL時(shí)系統(tǒng)會(huì)輸人系統(tǒng)當(dāng)前日期和時(shí)間。
無任何輸人時(shí)系統(tǒng)會(huì)輸入系統(tǒng)當(dāng)前日期和時(shí)間。
6)二進(jìn)制類型
在MySQL中常用BLOB存儲(chǔ)二進(jìn)制類型的數(shù)據(jù),例如:圖片、PDF文檔等。BLOB類型分為如下四種:
數(shù)據(jù)類型 儲(chǔ)存范圍:
TINYBLOB 0~255字節(jié)
BLOB 0~65535字節(jié)
MEDIUMBLOB 0~16777215字節(jié)
LONGBLOB 0~4294967295字節(jié)文章來源:http://www.zghlxwxcb.cn/news/detail-744585.html
文章來源:網(wǎng)絡(luò) 版權(quán)歸原作者所有
上文內(nèi)容不用于商業(yè)目的,如涉及知識(shí)產(chǎn)權(quán)問題,請(qǐng)權(quán)利人聯(lián)系小編,我們將立即處理文章來源地址http://www.zghlxwxcb.cn/news/detail-744585.html
到了這里,關(guān)于利用MySQL玩轉(zhuǎn)數(shù)據(jù)分析之基礎(chǔ)篇的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!