什么是數(shù)據(jù)庫(kù)?數(shù)據(jù)庫(kù)(Database)是按照數(shù)據(jù)結(jié)構(gòu)來(lái)組織、存儲(chǔ)和管理數(shù)據(jù)的倉(cāng)庫(kù)。 每個(gè)數(shù)據(jù)庫(kù)都有一個(gè)或多個(gè)不同的 API 用于創(chuàng)建,訪問(wèn),管理,搜索和復(fù)制所保存的數(shù)據(jù)。 我們也可以將數(shù)據(jù)存儲(chǔ)在文件中,但是在文件中讀寫(xiě)數(shù)據(jù)速度相對(duì)較慢。 所以,現(xiàn)在我們使用關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS)來(lái)存儲(chǔ)和管理大數(shù)據(jù)量。所謂的關(guān)系型數(shù)據(jù)庫(kù),是建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫(kù),借助于集合代數(shù)等數(shù)學(xué)概念和方法來(lái)處理數(shù)據(jù)庫(kù)中的數(shù)據(jù)。 RDBMS 即關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(Relational Database Management System)的特點(diǎn):
需要的軟件有:MySQL服務(wù) RDBMS 術(shù)語(yǔ)
1 -- 查詢的SQL語(yǔ)句 查詢出來(lái)的數(shù)據(jù)都是結(jié)果集 2 -- 語(yǔ)法: select * from 表名 where 條件 3 -- && 用 and 代替 || 用 or 代替 ! 用 not 代替 4 select * from stuInfo; -- 表示查詢所有的數(shù)據(jù)信息 5 select id,name,gender from stuinfo; -- 根據(jù)指定的字段來(lái)查詢 6 select * from stuinfo where id = 2; -- 查詢id為2的那一條數(shù)據(jù) 7 select name,age from stuinfo where id = 3; -- 查詢id為3的那條數(shù)據(jù)中的name age id 8 select * from stuinfo where id =3 or id= 5; -- 查詢id為3 和5 的那兩條數(shù)據(jù) 9 select * from stuinfo where id in (2,3,4,5,7); -- 查詢id為 2 3 4 5 7 的那些數(shù)據(jù)
1 -- 增加語(yǔ)句 2 -- 語(yǔ)法: insert [into] 表名 (字段1,字段2...) values (值1,值2...); 3 insert into stuinfo (id,name,gender,age,phone) values (NULL,'張三','男',20,'1302012345'); 4 insert into stuinfo (name,age,gender) values ('李四',21,'男'); 5 insert into stuinfo values (null,"王五","男",21); -- 如果直接寫(xiě)值的話,必須和字段匹配起來(lái),這樣寫(xiě)會(huì)報(bào)錯(cuò)的 6 insert into stuinfo values (null,"王五","男",21,"1234666"); -- 沒(méi)有字段的時(shí)候,如果要是直接添加值的話,必須和字段對(duì)應(yīng),不能缺少
修改 :-- 修改語(yǔ)句 -- 語(yǔ)法: UPDATE 表名 set 字段1= 值1,字段2 = 值2... where 條件 UPDATE stuinfo set gender = '男'; -- 如果后面沒(méi)有跟條件的話,則表示將表中所有的數(shù)據(jù)中的gender都改成了男 UPDATE stuinfo set gender = '女' WHERE id = 3; -- 將id為3的那條數(shù)據(jù)中的gender修改為“女” UPDATE stuinfo set gender = '女' WHERE age = 21 and name = '李四'; -- 將數(shù)據(jù)表中名字叫"李四"
刪除 :1 -- 刪除語(yǔ)句 2 -- 語(yǔ)法: DELETE FROM 表名 where 條件 3 DELETE FROM stuinfo where id = 7; -- 刪除id=7的數(shù)據(jù) 4 DELETE FROM stuinfo where id = 2 or id = 8; --刪除id=2 和 id=8 的數(shù)據(jù) 5 DELETE FROM stuinfo where id in (4,5,10); -- 刪除id為 4 5 10 的數(shù)據(jù) 6 DELETE FROM stuinfo WHERE gender ='男' AND age = 20; -- 通過(guò)多條件來(lái)刪除數(shù)據(jù) and 在這里表示并且的關(guān)系 7 DELETE FROM stuinfo WHERE id > 10; -- 還可以根據(jù)id的特性 刪除id大于10的數(shù)據(jù) 8 DELETE FROM stuinfo -- 不寫(xiě)條件 則會(huì)刪除庫(kù)中所有的數(shù)據(jù)
mySQL 常用函數(shù):COUNT()函數(shù)SELECT count(*) FROM stuinfo; -- count用來(lái)統(tǒng)計(jì)所有的數(shù)據(jù)條數(shù) 會(huì)根據(jù)里面的參數(shù)來(lái)進(jìn)行統(tǒng)計(jì) SELECT count(id) FROM stuinfo; -- 根據(jù)id來(lái)統(tǒng)計(jì)具體的數(shù)據(jù)條數(shù) SELECT count(phone) FROM stuinfo; -- 根據(jù)phone字段來(lái)統(tǒng)計(jì)具體的條數(shù),如果數(shù)據(jù)為空則會(huì)忽略
MAX, MIN, AVG 函數(shù)
SELECT MAX(age) FROM stuinfo; -- 查詢年齡中的最大值 SELECT MIN(age) FROM stuinfo; -- 查詢年齡中的最小值 SELECT avg(age) FROM stuinfo; -- 查詢年齡中的平均值 average 平均值
1 SELECT * FROM stuinfo order by id; -- order by是用來(lái)排序的,默認(rèn)是以升序進(jìn)行排序 asc就是升序排序 2 SELECT * FROM stuinfo ORDER BY id desc; 3 SELECT * FROM stuinfo ORDER BY age desc; -- desc是降序排列
1 SELECT * FROM stuinfo ORDER BY id; 2 select * from stuinfo limit 3; -- 取結(jié)果集中的前3條 3 SELECT * FROM stuinfo ORDER BY id limit 3; 4 5 -- limit n (索引) m (數(shù)量) 數(shù)據(jù)表中數(shù)據(jù)的索引默認(rèn)也是從0開(kāi)始的,索引只會(huì)對(duì)剩下的數(shù)據(jù)進(jìn)行排序 6 SELECT * FROM stuinfo ORDER BY id LIMIT 3, 3; 7 8 -- 還可以這樣來(lái)實(shí)現(xiàn)一個(gè)分頁(yè) limit count(數(shù)量) offset index(索引); 9 SELECT * FROM stuinfo ORDER BY id limit 3 offset 0; -- 從索引為0的位置向下查詢3條 10 SELECT * FROM stuinfo ORDER BY id limit 3 offset 3; -- 從索引為3的位置向下查詢3條 11 SELECT * FROM stuinfo ORDER BY id limit 3 offset 6; -- 從索引為6的位置向下查詢3條 12 13 -- 經(jīng)過(guò)上面的規(guī)律可以總結(jié)如下: 14 int pageCount = 3 ; -- 每頁(yè)顯示的條數(shù) 15 int pageSize = 1 ; -- 當(dāng)前的頁(yè)碼 1 第1頁(yè) 2 第2頁(yè) 3 第3頁(yè) 16 17 SELECT * FROM stuinfo ORDER BY id LIMIT pageCount offset (pageSize - 1)* pageCount; Node.js 連接 MySQL安裝驅(qū)動(dòng)在項(xiàng)目跟目錄下安裝 : $ cnpm install mysql 連接數(shù)據(jù)庫(kù)let mysql = require('mysql'); let connection = mysql.createPool({ host : 'localhost', // user : 'root', password : '123456', database : 'test' }); connection.connect(); connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) { if (error) throw error; console.log('The solution is: ', results[0].solution); });
數(shù)據(jù)庫(kù)連接參數(shù)說(shuō)明:
數(shù)據(jù)庫(kù)操作( CURD )查詢數(shù)據(jù)var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost', user : 'root', password : '123456', port: '3306', database: 'test' }); connection.connect(); var sql = 'SELECT * FROM websites'; //查 connection.query(sql,function (err, result) { if(err){ console.log('[SELECT ERROR] - ',err.message); return; } console.log('--------------------------SELECT----------------------------'); console.log(result); console.log('------------------------------------------------------------\n\n'); }); connection.end(); 插入數(shù)據(jù)var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost', user : 'root', password : '123456', port: '3306', database: 'test' }); connection.connect(); var addSql = 'INSERT INTO websites(Id,name,url,alexa,country) VALUES(0,?,?,?,?)'; var addSqlParams = ['菜鳥(niǎo)工具', 'https://c.runoob.com','23453', 'CN']; //增 connection.query(addSql,addSqlParams,function (err, result) { if(err){ console.log('[INSERT ERROR] - ',err.message); return; } console.log('--------------------------INSERT----------------------------'); //console.log('INSERT ID:',result.insertId); console.log('INSERT ID:',result); console.log('-----------------------------------------------------------------\n\n'); }); connection.end(); 更新數(shù)據(jù)var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost', user : 'root', password : '123456', port: '3306', database: 'test' }); connection.connect(); var modSql = 'UPDATE websites SET name = ?,url = ? WHERE Id = ?'; var modSqlParams = ['菜鳥(niǎo)移動(dòng)站', 'https://m.runoob.com',6]; //改 connection.query(modSql,modSqlParams,function (err, result) { if(err){ console.log('[UPDATE ERROR] - ',err.message); return; } console.log('--------------------------UPDATE----------------------------'); console.log('UPDATE affectedRows',result.affectedRows); console.log('-----------------------------------------------------------------\n\n'); }); connection.end(); 刪除數(shù)據(jù)ar mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost', user : 'root', password : '123456', port: '3306', database: 'test' }); connection.connect(); var delSql = 'DELETE FROM websites where id=6'; //刪 connection.query(delSql,function (err, result) { if(err){ console.log('[DELETE ERROR] - ',err.message); return; } console.log('--------------------------DELETE----------------------------'); console.log('DELETE affectedRows',result.affectedRows); console.log('-----------------------------------------------------------------\n\n'); }); connection.end();
|
|
來(lái)自: 頭號(hào)碼甲 > 《待分類(lèi)》