數據庫database
數據庫服務器database server 可以操作數據庫並提供相關服務的軟件。
主要介紹學習到的MySQL的內容。
它是C/S模式(客戶端/服務器),客戶端與服務器通過網絡連接交互數據,當然客戶端與服務器也可以在通一臺電腦上。數據庫的啓動和停止可以在“控制面板|管理工具|服務”裏控制。
安裝的話沒有什麼特別的,安裝過程中需要設置root用戶的密碼,安裝完成後,可進行服務器的配置,1)通過修改配置文件my.ini,使其在Windows下區分大小寫,因爲默認是不區分的;2)防火牆配置,MySQL是以TCP提供服務,端口號默認是3306,要想用客戶端從另一臺電腦上連接它,需配置防火牆,使之開放3306端口,爲簡單起見,可直接禁用防火牆。
安裝好數據庫後,我們可以使用一個客戶端來連接它,從而進行相關的操作。SQLyog就是一個客戶端,供用戶使用來進行數據庫操作。它可以連接到mysql主機、http管道、ssh隧道以及ssl加密,是一款功能強大的數據庫管理工具。
連接好數據庫後,可以在SQLyog客戶端進行相關的操作。可以在客戶端直接進行操作,也可以通過SQL語句。
首先對數據庫的基礎知識進行介紹。
一個庫中,可以存放多個表,表中可以有多個列,每個列的數據類型主要有以下幾種:
1)整數,tinyint(一個字節,-128-127,,smallint(2字節),mediumint(3字節),int(4字節),bigint(8字節)
2)小數,float,double
3)字符串 char(定長字符串,較短長度,查詢快,有可能浪費空間),varchar(可變字符串,中等長度,節省空間,按輸入實際長度保存)
4)長文本 text(存儲超長文本)
5)時間 date(年月日),time(時分秒),datetime(年月日時分秒),timeistamp(整數值)
6)二進制數據 blob(大塊數據)
編輯表的格式,新建表時,要設定其每一列的屬性(類型、索引、自增、默認值),統稱爲schema。
1)列名,有兩種常用的:1.小寫,單詞之間加下劃線,log_text; 2.第二單詞首字母大寫,logText。不能使用SQL的關鍵詞作爲列名字,如int、text、type、limit、group等。
2)列的屬性:非空,空值NULL;自增;主鍵(primary key),用於唯一的標識一條記錄,MySQL可自動檢測是否重複,性質:該字段不允許重複,且不允許爲空值NULL;
索引,用該字段的值單獨存儲,並且是排序後存儲,好處是用於加快排序和查找,壞處是建立和更新索引需要時間,而且索引本身多佔了一些存儲空間。索引又分爲唯一索引(該索引的字段不允許重複)和普通索引(允許重複),主鍵也是一種唯一索引。當數據庫讀多寫少,可添加索引,當寫操作頻繁時,要慎重加索引。
然後是SQL語句的相關介紹。
SQL(structured query language,結構化查詢語言),用於跟SQL服務器對話。SQLyog是將SQL腳本傳給服務器,讓服務器執行,然後服務器將結果傳給SQLyog,SQLyog將結果呈現給用戶。另外SQLyog雖然可視化操作,內部還是SQL語句,可以通過歷史記錄窗口查看。菜單:“工具|歷史記錄”。
下面是SQL語法介紹。
1)使用/* */ 添加註釋。
2)每個SQL語句末尾要加分號,中間可以換行。
3)關鍵詞建議大寫,有的服務器可能並不區分大小寫。
4)創建數據庫 CREATE DATABASE `example`;刪除數據庫 DROP DATABASE `example`(反引號,不是單引號)。
5)創建表 CREATE TABLE `simple`(`id`int(11) NOT NULL,`name`char(32)DEFAULT NULL,PRIMARY KEY('id'));刪除表 DROP TABLE 'simple'。
6)使用SQLyog可以:a.將數據庫的內容導出(備份),數據庫-右鍵“備份”;b.導入數據(恢復),可以將代碼複製到查詢編輯器運行,也可以數據庫-右鍵“導入”。
7)對數據庫進行相關的操作:
a,指定要操作的數據庫 USE <數據庫名>。
b.添加記錄 INSERT INTO<表名><列名>VALUES<數據(列值)>;列名、數據有多個時用括號括起來,表名列名用的反引號,而數據用的單引號;可以一次INSERT多行數據,每行以括號括起來,中間以逗號隔開;空值以NULL指定;數字類型可以不加引號,但字符串類型和日期時間類型都要加引號。
c.查詢記錄 SELECT<列>FROM<表> ; 用*表示所有列,SELECT*FROM`student`;AS:列的別名,SELECT `id` AS `學號` FROM `student`;
查詢條件WHERE SELECT<列>FROM<表>WHERE<條件>,WHERE id=201511,WHERE條件表達式:數值比較,大於,等於,小於,不等於<>,大於或等於>=, 小於或等於<=;日期比較,只要加單引號 WHERE birthday <'19940-1-1';字符串比較:大小比較,按ASII碼比較,字符串比較,LIKE通配符比較%,例 如查找所有以’shao‘開頭的,WHERE 'name' LIKE 'shao%',MySQL還支持用正則表達式REGEXP來匹配字符串;空值比較:判斷是否爲NULL,是空值,WHERE 'birthday' IS(NOT) NULL;WHERE邏輯運算符 AND:並且,OR:或者,NOT:非
查詢記錄:排序與分頁 ORDER BY對結果排序,ASC升序,DESC降序,ORDER BY<列名>ASC SELECT* FROM 'student' ORDER BY 'birthday' ASC
LIMIT(MySQL特有的關鍵字) 分頁顯示 LIMIT start,n;此外MYSQL還內置了好多函數,例如COUNT('id')進行計數,DAYOFWEEK()函數用於求一個日期對應是星期幾。
查詢記錄:聯合查詢 WHERE
內聯(交集) 關鍵字....FROM ....INTER JOIN ....ON.....(ON指定了聯接條件)
外聯 (缺項補NULL) 左外聯:LEFT OUTER JOIN 右外聯:RIGHT OUTER JOIN 全外聯:FULL OUTER JOIN (MySQL不支持),都可簡寫去掉 outer
d修改記錄 UPDATE<表> SET<列1>=<值1>,<列2>=<值2>WHERE<條件>;
e刪除記錄 DELETE FROM<表>WHERE<條件>。
另外,MySQL提供了API(應用程序接口),程序員調用庫裏的函數就能與數據庫交互。