數(shù)據(jù)庫和表的概念
1逃延,數(shù)據(jù)庫的概念:存儲數(shù)據(jù)的容器(對比倉庫去理解),、
2轧拄,表的概念:真正的存儲單元
3揽祥,數(shù)據(jù)庫與表的關(guān)系:一對多的關(guān)系,一個庫里通常維護(hù)了多個表
MySQL是關(guān)系型數(shù)據(jù)庫(每個表都存在關(guān)聯(lián))開源免費(fèi)
Oracle:付費(fèi)軟件
SQL:
概念
SQL:結(jié)構(gòu)化查詢語言檩电,Structured Query Language拄丰。
SQL是用于訪問和處理數(shù)據(jù)庫的標(biāo)準(zhǔn)計(jì)算機(jī)語言
SQL是弱語法,不區(qū)分大小寫和單雙引號
SQL能做什么俐末?
1愈案,創(chuàng)建數(shù)據(jù)庫,表鹅搪,視圖站绪,存儲過程等數(shù)據(jù)庫對象
2,數(shù)據(jù)庫記錄的增刪改查
1丽柿,打開數(shù)據(jù)庫
語法:service mysqld start;
2恢准,退出數(shù)據(jù)庫
語法:quit/exit/Ctrl+C,
3,查看所有數(shù)據(jù)庫
語法:show databases;
4甫题,創(chuàng)建數(shù)據(jù)庫
語法:create database 數(shù)據(jù)庫名稱
示例:創(chuàng)建數(shù)據(jù)庫
create database future;
create database if not exists python_ai_test default charset utf8 collate utf8_general_ci;
5馁筐,使用某個數(shù)據(jù)庫
語法:use 數(shù)據(jù)庫名稱;
示例:use mysql; 使用名為mysql的數(shù)據(jù)庫
6坠非,創(chuàng)建表
語法
create table<表名>
(
<字段名1><類型1>
<字段名2><類型2>
.....
<字段名n><類型n>
) DEFAULT CHARSET =utf8;(可省略不寫敏沉,為了防止中文亂碼)
解釋
①,create:創(chuàng)建
②炎码,table:表
③盟迟,字段名:用來標(biāo)示表的一列
④,字段類型:用來聲明每一個字段存儲數(shù)據(jù)的類型潦闲,因?yàn)樵趍ysql中攒菠,數(shù)據(jù)是有類型的(整型,小數(shù)歉闰,字符辖众,時間)
⑤卓起,字符集:UTF8,用來指定表支持中文數(shù)據(jù)存儲
示例:創(chuàng)建項(xiàng)目對應(yīng)的會員表:member(切記不可用中文輸入法0颊āO吩摹!)
主鍵
主鍵是什么啤它?它有什么特征
1饲握,主鍵字段存儲的值不能重復(fù),因此主鍵可以唯一標(biāo)識一行數(shù)據(jù)蚕键。
2救欧,一個表只能有一個主鍵
3,主鍵自動設(shè)置為NOT NULL(非空)
補(bǔ)充 :
NULL 锣光,字段值可為空
NOT NULL,字段值不為空
同一個字段不可能既為NULL笆怠,又為NOT NULL。
在創(chuàng)建數(shù)據(jù)表的時候誊爹,如果字段值為空蹬刷,可以寫NULL,也可省略频丘,不寫的話默認(rèn)為空(如果為空可賦值也可不賦值)
4办成,主鍵是非必須的,也就是說一個表可以不聲明主鍵字段
語法
<字段名><類型>primary key
補(bǔ)充:
1搂漠,自動編號: AUTO_INCREMENT(INCREMENT:增加迂卢,增長)
(1)必須與主鍵PRIMARY KEY組合使用,否則會報(bào)錯桐汤。
(2)默認(rèn)情況下而克,起始值為1,每次的增量為1怔毛,可不進(jìn)行賦值员萍,可保證記錄唯一性)
但是一旦數(shù)據(jù)手動更改為指定數(shù)字,那么下一個的排序是從指定數(shù)字的下一位開始拣度,切記K橐铩!抗果!
(3)而PRIMARY KEY 可以不和AUTO_INCREMENT一起使用筋帖,可以被賦值但是不允許有相同值的出現(xiàn)
(4)COMMENT:備注,后面可以跟雙引號窖张,也可以跟單引號
7幕随,查看幫助
語法:help xxx;
例:help create;
常見的字段類型
每個字段都有自己的類型蚁滋,如整數(shù)型宿接,字符型赘淮,時間類型,日期類型睦霎,浮點(diǎn)型等梢卸。下面介紹常用的數(shù)據(jù)類型。
整型
int:整數(shù)副女,取值范圍為:-2147483648~2147483647
擴(kuò)展:無符號的數(shù)不能為負(fù)數(shù)蛤高,有符號的可以為負(fù)數(shù)
有符號值(位):數(shù)字的最高位用0或1來表示數(shù)字是正數(shù)還是復(fù)數(shù)。
無符號值(位):不存在復(fù)數(shù)的情況碑幅,永遠(yuǎn)是正數(shù)戴陡。
無符號位的存儲范圍是有符號位的兩倍。
要選擇合適的數(shù)據(jù)類型沟涨,而不是最大的數(shù)據(jù)類型恤批。如年紀(jì)選TINYINT即可,也省去字節(jié)裹赴。
字符串型
char(n):n個字符喜庞,最多255個字符,固定長度(沒達(dá)到指定長度后面用空格來補(bǔ)齊)
例:char(5)棋返,但是寫值的時候只寫了abc延都,在存儲時除了將abc存好,后面還補(bǔ)充了2個空格
varchar(n)['vɑ?k?]:可變長度睛竣,最多65535個字符(存什么就是什么晰房,會根據(jù)保存字符去調(diào)整長度)
例:varchar(10),但是寫值得時候只寫了abc,在存儲的時候就只保存 3個字符
時間和日期
data:日期射沟,格式(yyyy-mm-dd嫉你,例如:2016-08-22)
支持2位或者4位(默認(rèn)4位),默認(rèn)1970年到2069年之間的一個日期
time:時間躏惋,格式(hh:mm:ss,例如:18:40:37)
datatime:日期時間幽污,格式(yyyy-mm-dd hh:mm:ss,例如:2016-08-12 18:31:23簿姨,可用來保存注冊日期)
浮點(diǎn)型
float(m,d):單精度浮點(diǎn)型距误,32bit(4字節(jié)),m代表總位數(shù)扁位,d小數(shù)位准潭,如99.99聲明類型為:float(4,2)
double(m,d):雙精度浮點(diǎn)小,64bit(4字節(jié))域仇,m代表總位數(shù)刑然,d小數(shù)位。
區(qū)別:雙精度類型能表示的小數(shù)的精確度更高暇务。
decimal(m,d)[?des?ml]:數(shù)字型泼掠,128bit怔软,m代表總位數(shù),d小數(shù)位(一般公司不用择镇,金融類公司用的較多)
decimal數(shù)據(jù)類型用于精度要求非常高的計(jì)算中挡逼,比如語句DECIMAL(7,3)規(guī)定了存儲的值不會超過7位數(shù)字腻豌,并且小數(shù)點(diǎn)后不超過3位家坎。(用前兩個可能會丟失精度)
補(bǔ)充:
1字=2字節(jié)(1 word = 2 byte)?
1字節(jié)=8位(1 byte = 8bit) ,8bit就是8位吝梅,最大存儲范圍就是8個1虱疏,8個1的存儲范圍就是255,就是2的8次方
unsigned表示無符號苏携,也就是非負(fù)數(shù)订框,只能用于整型數(shù)據(jù)。