SELECT
- 從數據庫中提取數據node
UPDATE
- 更新數據庫中的數據mysql
DELETE
- 從數據庫中刪除數據sql
INSERT INTO
- 向數據庫中插入新數據數據庫
CREATE DATABAS
- 建立新數據庫網站
ALTER DATABASE
- 修改數據庫ui
CREATE TABLE
- 建立新表url
ALTER TABLE
- 變動(改變)數據庫表spa
DROP TABLE
- 刪除表code
CREATE INDEX
- 建立索引(搜索鍵)orm
DROP INDEX
- 刪除索引
SELECT 語句用於從數據庫中選取數據。
語法:SELECT
column_name,column_name FROM
table_name;
SQL SELECT DISTINCT 語句
在表中,一個列可能會包含多個重複值,有時但願僅僅列出不一樣(distinct)的值。
DISTINCT 關鍵詞用於返回惟一不一樣的值。
語法:SELECT DISTINCT
column_name,column_name FROM
table_name;
SQL WHERE 子句
語法:SELECT
column_name,column_name FROM
table_name WHERE
column_name operator value;
SELECT * FROM Websites WHERE id=1;
SQL AND & OR 運算符
若是第一個條件和第二個條件都成立,則 AND 運算符顯示一條記錄。
若是第一個條件和第二個條件中只要有一個成立,則 OR 運算符顯示一條記錄。
AND 運算符實例
下面的 SQL 語句從 "Websites" 表中選取國家爲 "CN" 且alexa排名大於 "50" 的全部網站
SELECT * FROM Websites WHERE country='CN' AND alexa > 50;
OR 運算符實例
下面的 SQL 語句從 "Websites" 表中選取國家爲 "USA" 或者 "CN" 的全部客戶:
SELECT * FROM Websites WHERE country='USA' OR country='CN';
結合 AND & OR
您也能夠把 AND 和 OR 結合起來(使用圓括號來組成複雜的表達式)。
下面的 SQL 語句從 "Websites" 表中選取 alexa 排名大於 "15" 且國家爲 "CN" 或 "USA" 的全部網站:
SELECT * FROM Websites WHERE alexa > 15 AND (country='CN' OR country='USA');
ORDER BY 關鍵字用於對結果集按照一個列或者多個列進行排序。
ORDER BY 關鍵字默認按照升序對記錄進行排序。若是須要按照降序對記錄進行排序,可使用 DESC 關鍵字。
語法: SELECT
column_name,column_name FROM
table_name ORDER BY
column_name,column_name ASC|DESC
;
ORDER BY 實例
SELECT * FROM Websites ORDER BY age;
ORDER BY DESC 實例
下面的 SQL 語句從 "Websites" 表中選取全部網站,並按照 "age" 列降序排序:
SELECT * FROM Websites ORDER BY age DESC;
按價格(price)升序排列,若是價格相同,按銷量(sales)降序排列
ORDER BY price ASC,sales DESC
ORDER BY 多列
下面的 SQL 語句從 "Websites" 表中選取全部網站,並按照 "country" 和 "alexa" 列排序:
SELECT * FROM Websites ORDER BY country,alexa;
INSERT INTO 語句能夠有兩種編寫形式。
第一種形式無需指定要插入數據的列名,只需提供被插入的值便可:
語法:INSERT INTO
table_name VALUES (value1,value2,value3,...);
第二種形式須要指定列名及被插入的值:
語法:INSERT INTO
table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...);
在指定的列插入數據
下面的 SQL 語句將插入一個新行,可是隻在 "name"、"url" 和 "country" 列插入數據(id 字段會自動更新):
INSERT INTO Websites (name, url, country) VALUES ('stackoverflow', 'http://stackoverflow.com/', 'IND');
語法:UPDATE
table_name SET
column1=value1,column2=value2,... WHERE
some_column=some_value;
請注意 SQL UPDATE 語句中的 WHERE 子句!
WHERE 子句規定哪條記錄或者哪些記錄須要更新。若是您省略了 WHERE 子句,全部的記錄都將被更新!
UPDATE Websites SET alexa='5000', country='USA' WHERE name='菜鳥教程';
DELETE 語句用於刪除表中的行。
語法:DELETE FROM
table_name WHERE
some_column=some_value;
請注意 SQL DELETE 語句中的 WHERE 子句!
WHERE 子句規定哪條記錄或者哪些記錄須要刪除。若是您省略了 WHERE 子句,全部的記錄都將被刪除!
DELETE FROM Websites WHERE name='百度' AND country='CN';
刪除全部數據
您能夠在不刪除表的狀況下,刪除表中全部的行。這意味着表結構、屬性、索引將保持不變:
DELETE FROM table_name; 或 DELETE * FROM table_name;
GROUP 聚類-合併相同的
統計每一個班的人數 SELECT * FROM student_table GROUP BY class;
// GROUP BY class,以class爲合併依據,單獨用只是個去重的做用
SELECT class FROM student_table
GROUP BY class; //只是單獨列出有哪些班級
SELECT class,COUNT(class) FROM student_table
GROUP BY class;
//每一個班級的平均分 SELECT class,AVG(score) FROM student_table
GROUP BY class;
SELECT class,AVG(score),MAX(score),MIN(SCORE),AVG(age) FROM student_table
GROUP BY class;
SUM(price) //總和
SELECT * form 表名 WHERE 條件 limit 5,10; //檢索6-15條數據
SELECT * form 表名 WHERE 條件 limit 5,-1; //檢索6到最後一條數據
SELECT * form 表名 WHERE 條件 limit 5; //檢索前5條數據
如分頁:
LIMIT 10; //前10條
LIMIT 5,8; //從5開始,要8個
第1頁 0,20 0-19
第2頁 20,20 20-39
第3頁 40,20
第n頁 (n-1)*20,20
WHERE GROUP ORDER LIMIT
篩選 合併 排序 限制
const mysql=require('mysql'); // 連接數據庫 // createConnection(那臺數據庫,用戶名,密碼,庫) var db=mysql.createConnection({host:'localhost',port:9999,user:'root',password:'root',database:'student'}); // console.log(db) // 查詢 db.query('SELECT * FROM user_table',(err,data)=>{ if(err) console.log(err); else console.log(data); console.log(JSON.stringify(data)); }) //按條件查詢 db.query('SELECT name,age FROM user_table')
數據庫鏈接建議
若是每一個請求都連接一次數據庫也很差。
若是隻鏈接一個也很差,若是其中一個沒有查完,後面的就得等着。
建議,保持20個左右的鏈接:
// 鏈接池 const db=mysql.createPool({host:'localhost',port:9999,user:'root',password:'root',database:'student'}); //錯誤時加一個狀態碼 if(err){ res.status(500),send('database error').end(); }