nodejs高階 6 連線MySQL資料庫

2022-03-07 21:10:43 字數 3561 閱讀 9131

連線mysql資料庫需要安裝支援

npm install mysql

我們需要提前安裝按mysql sever端

建乙個資料庫mydb1

mysql>create database mydb1;

mysql>show databases;

+--------------------+

| database |

+--------------------+

| information_schema |

| mysql |

| mydb1 |

| performance_schema |

+--------------------+

4 rows in

set (0.00 sec)

然後建一張表user如下

create table user(  

id int not null

primary key auto_increment,  

name varchar(

100) not null

,  pwd varchar(

100) not null

,create_date timestamp null default now()

)engine=innodb default charset=utf8;  

create unique index t_quiz_idx_0 on user(name);

接下來我們利用nodejs連線mysql資料庫

1

var mysql  = require('mysql');  //

呼叫mysql模組2//

建立乙個connection  

3var connection =mysql.createconnection();

10//

建立乙個connection  

11 connection.connect(function

(err)  

16     console.log('[connection connect]  succeed!');  

17}); 

18//

----插入

19var useraddsql = 'insert into user (name,pwd) values(?,?)';

20var param = ['fff','123'];

21 connection.query(useraddsql,param,function

(err,rs)

26         console.log('insert success');

27});

28//

執行查詢  

29 connection.query('select * from user where id=?',[2], function

(err, rs)  

34for(var i=0;i)

37});   

3839

//關閉connection  

40 connection.end(function

(err)  

45     console.log('[connection end] succeed!');  

46 });

但是實際每次建立連線都需要一定的開銷,執行效率就會有影響。下面介紹一種連線池連mysql的方法:node-mysql

node-mysql是目前最火的node下的mysql驅動,是mysqlpool的乙個模組。

下面的**是提供乙個連線池,getpool函式返回createpool建立的資料庫連線池物件。

1

var mysql  = require('mysql');  //

呼叫mysql模組 

2function

optpool()); 

1112

this.getpool=function

() 22

}; 23 module.exports = optpool;

下面的**展示如何使用這個連線池,插入和查詢的使用。需要注意的是conn.release(); //釋放乙個連線放回連線池 需要再操作結束後再執行,否則後面的資料庫操作會報錯。

1

var optpool = require('./models/optpool'); 23

var optpool = new

optpool(); 

4var pool =optpool.getpool(); 56

//執行sql語句 7//

從連線池中獲取乙個連線

8 pool.getconnection(function

(err,conn) 

17         console.log('insert success'); 

18//

conn.release(); //放回連線池

19})

20//

查詢 21     conn.query('select * from user', function

(err, rs)    

26for(var i=0;i)

29         conn.release(); //

放回連線池

30});

31 });

下面介紹乙個複雜一點的增刪查改的資料庫操作,因相互之間有依賴,所以**可讀性就變得特別差。這樣就引出了我們接下來要介紹餓流程控制的內容《nodejs高階(7)—async非同步流程控制》

1

var optpool = require('./models/optpool'); 23

var optpool = new

optpool(); 

4var pool =optpool.getpool(); 56

var insertsql = 'insert into table1(name,pwd) values("conan","123"),("fens.me","456")';

7var selectsql = 'select * from table1 limit 10';

8var deletesql = 'delete from table1';

9var updatesql = 'update table1 set name="conan update" where name="conan"';

1011 pool.getconnection(function

(err,conn)

3233

//update

34 conn.query(updatesql, function

(err3, res3)

47});

48});

49});

50});

51});

52 })

執行結果

MySQL高階6 連線查詢 sql92標準

高階6 連線查詢 含義 又稱多表查詢,當我們查詢的字段來自於多個表時,就會用到 笛卡爾乘積現象 表1有m行,表2有n行,結果為m n行 發生原因,沒有有效的連線條件 如何避免,新增有效的連線條件 分類 按年代分類 sql92標準 僅僅支援內連線 按功能分類 內連線 等值連線 非等值連線 自連線外連線...

《學習》5連線查詢(高階查詢)

create table t tid int unsigned not null auto increment,tname varchar 30 primary key tid engine myisam auto increment 1 default charset utf8 insert in...

再看資料庫 (6)連線

連線是多表查詢的基礎。因為關聯式資料庫不包括指標或其它關聯記錄與記錄的機制,連線成為了生成跨表資料關係的唯一機制。這也就是要用連線的原因。1 內連線 使用比較運算子比較被連線列的列值。等值 不等 以外運算子 自然 但它使用選擇列表指出查詢結果集合中所包含的列。並刪除連線表中的反覆列。演示樣例 資料庫...