前端MySQL
一、引言
MySQL是一個關係型資料庫管理系統,在Web應用方面,MySQL是最好的應用之一。其主要的他點是體積小、速度塊、總體成本低、原始碼開放
二、MySQL的構成
在我們開始學習MySQL 資料庫前,讓我們先了解下RDBMS的一些術語:
- 資料庫: 資料庫是一些關聯表的集合。
- 資料表: 表是資料的矩陣。在一個數據庫中的表看起來像一個簡單的電子表格。
- 列: 一列(資料元素) 包含了相同的資料, 例如郵政編碼的資料。
- 行:一行(=元組,或記錄)是一組相關的資料,例如一條使用者訂閱的資料。
- 冗餘:儲存兩倍資料,冗餘降低了效能,但提高了資料的安全性。
- 主鍵:主鍵是唯一的。一個數據表中只能包含一個主鍵。你可以使用主鍵來查詢資料。
- 外來鍵:外來鍵用於關聯兩個表。
- 複合鍵:複合鍵(組合鍵)將多個列作為一個索引鍵,一般用於複合索引。
- 索引:使用索引可快速訪問資料庫表中的特定資訊。索引是對資料庫表中一列或多列的值進行排序的一種結構。類似於書籍的目錄。
- 參照完整性: 參照的完整性要求關係中不允許引用不存在的實體。與實體完整性是關係模型必須滿足的完整性約束條件,目的是保證資料的一致性。
三、MySQL的常用語法
常識圖
1、增加
insert into 表名(欄位名1,欄位名2,欄位名3...) values(值1,值2,值3...)`
~~~~~~~~~~~~~~~~~~~
insert into student(name,nickname,gender,age,score,className,avator) values('韓梅梅','秀芬','女',22,100,'嘻嘻fault_avator.png');
2、刪除
-- 刪除Id為1的記錄
delete from student where Id = 1
-- 特別注意,如果不跟where條件,則會清空整張表的資料.
delete from student
-- 清空表,並重置Id(Id不清空再新增資料後會繼續新增)
truncate table 表名
3、修改
update 表名 set 欄位1=新值1, 欄位2=新值2... where 條件
-- 修改id為1的記錄 姓名為李雷
update student set name='李雷' where id=1
-- 特別注意,如果不加where條件,則會修改每一行的資料.
update student set name='李雷'
4、查詢
select 列名1,列名2,列名3... from 表名
select * from 表名` *表示所有列
``````````````````````````````````
select name,nickname from student;
select * from student;
四、Node操作MySQL
npm install mysql
var connection = mysql.createConnection({
host : '127.0.0.1',
user : 'root',
password : 'root',
database : 'dbstudy'
});
connection.query('要執行的SQL語句', (error, results,fields) => {
if(error){ //如果連線執行SQL的時候發生了錯誤,error中的值為錯誤資訊. 否則為null
console.log('發生錯誤:'+error);
}else{
//result為SQL語句執行後的結果.
console.log(results);
}
})
五、注意事項
1、mysql外掛文件
在express4.x中已經不需要設定
connection.connect();
connection.end();
在官網文件:http://expressjs.com/en/guide/database-integration.html#mysql
中仍未更新 5-25
2、mysql自動斷開
原因是MySQL的連線超時時間是8小時。若空閒超過8小時,MySQL就會自動斷開連線。
而且再Node中偶爾會因為這個原因報錯或自動斷開
簡單解決方案:
set global interactive_timeout= 秒數;
set global wait_timeout= 秒數;