主要: 基礎 基本概念 1) 資料庫分類 層次資料庫,網狀資料庫,關係資料庫 常見:SQL Server, Oracle,infomix,sybase,ibmDB2,Mysql 2)資料庫存儲的本質和表現: 存儲本質: 將 數據值 通過數據管理系統進行有序的存儲 存儲表現: 每個資料庫對應一個文件夾 ...
主要:
- 基礎
- 欄位類型
基礎
基本概念
1) 資料庫分類
層次資料庫,網狀資料庫,關係資料庫
常見:SQL Server, Oracle,infomix,sybase,ibmDB2,Mysql
2)資料庫存儲的本質和表現:
存儲本質: 將 數據值 通過數據管理系統進行有序的存儲
存儲表現:
每個資料庫對應一個文件夾
每個數據表對應一個或多個文件
3)mysql資料庫的各層次關係:
1個資料庫系統包含有多個資料庫
1個資料庫可以有多張數據表
一個數據表可以有多個欄位(數據項)和多行數據(記錄)
4)基本概念
sql :是關係資料庫的 語言標準。 Struct Query Language 結構化查詢語言
資料庫database: 存儲各種數據data
資料庫管理系統dbms: Database Management system
數據表table,欄位field,列column,行row,記錄record
資料庫操作的基本模式(流程)
step 1: 建立連接:身份認證 step 2: 客戶端發送sql命令 step 3: 服務端執行命令,返回結果 step 4: 客戶端接收結果並顯示 step 5: 斷開連接【點擊查看】資料庫操作的基本模式(流程)
mysql系統級操作
安裝與配置 【略】
啟動與停止mysql資料庫服務
命令模式【管理員】: -- 非管理員才做可能發生 提示 “發生系統錯誤 5”
啟動:net start mysql
停止:net stop mysql
服務模式:通過服務來啟動或停止 控制面板》管理工具》服務》mysql 啟動/停止
登錄與退出:
首先設置mysql環境變數
登錄: 形式1: mysql -h 伺服器地址 -u 用戶名 -p -P 埠號 形式2: mysql --host=伺服器地址 --user=登錄名 --port=埠號 --password
預設埠: 3306 退出: exit 或 quit
備份與恢複數據
通常是用於資料庫的“遷移”:將某台資料庫伺服器中的某個庫,“搬遷”到另一個資料庫伺服器中去
也常用於數據的“安全備份”:就是資料庫實際運行中,防止資料庫系統崩潰,防止資料庫被黑客入侵
備份 【管理員身份】: mysqldump -h 伺服器地址 -u 登錄名 -P 埠號 -p 資料庫名>完整路徑的文件名 恢復: 未登錄恢復: mysql -h 伺服器地址 -u 登錄名 -P 埠號 -p 資料庫名<完整路徑的sql文件名 登錄後恢復: source '備份數據文件的完整路徑'【點擊查看】備份與恢復形式
基礎語法
1) 註釋:
單行註釋: #註釋內容 -- 註釋內容(-- 與註釋之間有一個空格) 多行註釋 /*註釋內容*/ 註(經過測試): 如果是 /*! 語句 */; 這個仍然會執行 如 /*!show tables */;【點擊查看】單行註釋與多行註釋
2)語句行
結束符: 分號(預設)
修改結束符: delimiter 結束符 如: delimiter //
3)大小寫
不區分大小寫
但對於區分大小寫的系統中,生成文件或文件夾的操作是區分大小寫的 如: 創建庫,表會生成對應目錄和文件
文件或目錄在Linux,Unix中嚴格區分大小寫。 windows中不區分大小寫
4) 命名規則
字母和下劃線,不用數字開頭。
如果是非常規字元,要使用反引號
資料庫名,表名,視圖名,欄位名,函數名,過程名通常使用小寫,並使用下劃線分割法
欄位類型
1) 形式:
欄位名 類型名 [(M)] [unsigned] [zerofill]
M:顯示長度 與zerofil結合使用 不夠長度左側自動補0
設置zerofill, 則表示該欄位同時具備unsigned。
2) 主要分3類
數值型,字元型,時間型
數值型
1) 整數型:
類型 所占位元組數
tinyint 1位元組 smallint 2位元組 mediumint 3位元組 int 4位元組 bigint 8位元組
create table tab_int( f1 int unsigned, f2 tinyint zerofill, f3 bigint(10) zerofill ); insert into tab_int (f1,f2,f3) values( 15, 15, 15); select * from tab_int;【點擊查看】整數型測試Demo
2) 小數型
單精度浮點型float: (單精度 4個位元組,精度6~7位有效數字)
雙精度double: (雙精度 8個位元組,約20個有效數字,別名:real)
定點型: decimal (別名: dec numeric fixed, 整數最大65位,小數最多30位)
如果整數部分超過最大設定的位數,則會自動設置為最大值。 如 decimal(5,2), 插入數據1234.11 則結果為 999.99
decimal(總的位數,小數位數)
create table tab_float( f1 float, f2 double, f3 decimal(10,3) -- 總數10位數, 小數3位 ); insert into tab_float (f1, f2, f3) values (123.456789, 123.456789, 123.456789), (123456789, 123456789, 1234567), (123456789, 123456789, 1234567.11); select * from tab_float;【點擊查看】浮點型測試Demo
字元型
字元型要使用引號引起來
vachar類型:
概念: 變長字元串,使用時必須設定其長度。
最大長度: 理論最大65535個字元,實際最大隻能是65533個字元
原因: 一個表格的一行 的數據存儲最大容量限制: 65535
編碼不同則最大長度也不同:
存儲中文 gbk: 最大長度是 65533/2 個
存儲中文 utf8: 最大長度是 65533/3 個
實際存儲: 存儲長度由存儲內容決定,設置值為最多可存儲的字元個數
char類型
概念: 定長字元串 , 使用時一般需要設置其長度。 不設置長度,則預設是1.
最大長度: 255個
實際存儲: 如果少於設定長度, 會以空格填滿
適用於: 存儲的數據長度是固定長度的字元。 如: 郵編, 手機號碼等
enum 類型
概念: (枚舉)單選項字元串數據類型, 使用時,需要給定 固定的幾個選項。 存儲的時候,只存儲其中一個值
形式: enum("選項1", "選項2",....)
實際存儲: 字元串選項值對應數字: 1,2,3,4,5,.. 最多65535個選項
寫入數據形式: 可以是該選項字元串本身,也可以用對應的數字
適用於: 存儲表單界面中的 “單選項值”
set 類型
概念: 多選項字元串數據類型, 使用時,需要給定 固定的幾個選項。 存儲的時候,存儲其中若幹個值
形式: set("選項1", "選項2",....)
實際存儲: 字元串選項值對應數字 1,2,4,8,16... 最多64個選項
寫入數據形式: 可以用選項字元串並用逗號隔開, 也可以使用對應的“數字的和”
適用於: 存儲表單界面中的 “多選項值”
-- enum set 使用Demo create table enum_set( id int unsigned auto_increment primary key, gender enum('男','女'), fav set('籃球','足球','跑步','讀書','寫字') ); insert into enum_set (id, gender, fav) values(null,'男','籃球'),(null,1,1); -- 兩行enum欄位一致 insert into enum_set (id, gender, fav) values(null, '男', '籃球,跑步,寫字'),(null,1,19); -- 兩行set欄位一致 -- 籃球=1 跑步=2 寫字=16 ==> 對應的和19 select * from enum_set;【點擊查看】set與enum操作Demo
text 類型
概念: 長文本字元類型。其中存儲的數據不占表格中的數據容量限制
其他同類型: smalltext tinytext longtext
其他類型
binary類型: 定長二進位字元串類型。 存儲二進位值
varbinary 類型: 變長二進位字元串類型。存儲二進位值
blob 類型:二進位數據類型。 存儲二進位值。 適用於存儲圖片,視頻,其他文件等。
時間型
時間類型: 要用引號引起來
1) datetime 類型: 時間日期類型
2) date類型: 日期類型
3) time 類型:時間類型
4) year 類型:年份類型
5) timestamp 類型: 時間戳類型。 是一個數字。 不需要手動插入數據,系統自動填入
js中獲取事件戳: gettime() ; 單位是毫秒
php中獲取時間戳: time(); 單位是秒
mysql中: 自動獲得時間戳的數據值,既 now()
-- 時間類型數據表 create table tab_time( dt datetime, d date, t time, y year, ts timestamp -- 該欄位不需要插入數據,系統自動填入 ); insert into tab_time (dt,d,t,y) values('2018-07-07 24:24:24', '2018-07-07','24:24:24','2018'),(now(),now(),now(),now()); select * from tab_time;【點擊查看】時間類型Demo
其他類型
1) 位類型 bit
使用形式: bit[(M)] 其中M是1-64的數字。 表示使用多少二進位數字來存儲數據
插入形式: b 'value' 如 b '101'
2) 序列類型 serial
實質是 bigint unsigned not null auto_increment unique 的一個別名
3) 布爾類型 bool
實質是 tinyint(1) 的一個同義詞。 其值為0表示false, 否則表示true