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(); }