Mysql基礎1-基礎語法-字段類型
主要:
- 基礎
- 字段類型
基礎
基本概念
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
數據庫操作的基本模式(流程)

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
備份與恢復數據
通常是用於數據庫的“遷移”:將某台數據庫服務器中的某個庫,“搬遷”到另一個數據庫服務器中去
也常用於數據的“安全備份”:就是數據庫實際運行中,防止數據庫系統崩潰,防止數據庫被黑客入侵

基礎語法
1) 注釋:

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字節

2) 小數型
單精度浮點型float: (單精度 4個字節,精度6~7位有效數字)
雙精度double: (雙精度 8個字節,約20個有效數字,別名:real)
定點型: decimal (別名: dec numeric fixed, 整數最大65位,小數最多30位)
如果整數部分超過最大設定的位數,則會自動設置為最大值。 如 decimal(5,2), 插入數據1234.11 則結果為 999.99
decimal(總的位數,小數位數)

字符型
字符型要使用引號引起來
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個選項
寫入數據形式: 可以用選項字符串並用逗號隔開, 也可以使用對應的“數字的和”
適用於: 存儲表單界面中的 “多選項值”

text 類型
概念: 長文本字符類型。其中存儲的數據不占表格中的數據容量限制
其他同類型: smalltext tinytext longtext
其他類型
binary類型: 定長二進制字符串類型。 存儲二進制值
varbinary 類型: 變長二進制字符串類型。存儲二進制值
blob 類型:二進制數據類型。 存儲二進制值。 適用於存儲圖片,視頻,其他文件等。
時間型
時間類型: 要用引號引起來
1) datetime 類型: 時間日期類型
2) date類型: 日期類型
3) time 類型:時間類型
4) year 類型:年份類型
5) timestamp 類型: 時間戳類型。 是一個數字。 不需要手動插入數據,系統自動填入
js中獲取事件戳: gettime() ; 單位是毫秒
php中獲取時間戳: time(); 單位是秒
mysql中: 自動獲得時間戳的數據值,既 now()

其他類型
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