常用SQL语句及在node中使用MySQL
摘要:一些重要的SQL命令
SELECT
- 从数据库中提取数据
UPDATE
- 更新数据库中的数据
DELETE
- 从数据库中删除数据
INSERT INTO
- 向数据库中插入新数据
CREATE DATABAS
- 创建新数据库
ALTER DATABASE
- 修改数据库
CREATE TABLE
- 创建新表
ALTER TABLE
- 变更(改变)数据库表
DROP TABLE
- 删除表
CREATE INDEX
- 创建索引(搜索键)
DROP INDEX
- 删除索引
SELECT - 从数据库中提取数据
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');
SQL ORDER BY 关键字
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;
SQL INSERT INTO
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');
SQL UPDATE 语句
语法: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='菜鸟教程';
SQL DELETE 语句
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) //总和
LIMIT限制输出
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
筛选 合并 排序 限制
在node中使用MySQL
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();
}
常用SQL语句及在node中使用MySQL的更多相关文章
- Mysql 常用 SQL 语句集锦
Mysql 常用 SQL 语句集锦 基础篇 //查询时间,友好提示 $sql = "select date_format(create_time, '%Y-%m-%d') as day fr ...
- Mysql 常用 SQL 语句集锦 转载(https://gold.xitu.io/post/584e7b298d6d81005456eb53)
Mysql 常用 SQL 语句集锦 基础篇 //查询时间,友好提示 $sql = "select date_format(create_time, '%Y-%m-%d') as day fr ...
- 50个常用SQL语句
50个常用SQL语句 Student(S#,Sname,Sage,Ssex) 学生表 S#学号,主键 Course(C#,Cname,T#) 课程表 C#课程号,主键 SC(S#, ...
- ios数据库常用sql语句
SQlite常用语句 由于sql语句在程序代码中以字符串的形式存在,没有代码提示,不细心很容易出错,而且不容易被查出来.sql语句字符串是单引号. 写sql语句的时候一定要细心呀.如果写不好可以找公司 ...
- oracle sqlplus及常用sql语句
常用sql语句 有需求才有动力 http://blog.csdn.net/yitian20000/article/details/6256716 常用sql语句 创建表空间:create tables ...
- oracle常用SQL语句(汇总版)
Oracle数据库常用sql语句 ORACLE 常用的SQL语法和数据对象一.数据控制语句 (DML) 部分 1.INSERT (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, ...
- 常用SQL语句(增删查改、合并统计、模糊搜索)
转自:http://www.cnblogs.com/ljianhui/archive/2012/08/13/2695906.html 常用SQL语句 首行当然是最基本的增删查改啦,其中最重要的是查. ...
- oracle 常用sql语句
oracle 常用sql语句 1.查看表空间的名称及大小 select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_sizefrom d ...
- 剑指Offer——常用SQL语句、存储过程和函数
剑指Offer--常用SQL语句.存储过程和函数 常用SQL语句 1.在MySQL数据库建立多对多的数据表关系 2.授权.取消授权 grant.revoke grant select, insert, ...
随机推荐
- Azure RBAC管理ASM资源
上一篇文章介绍了Azure基于ARM的RBAC,给不同的用户分配不同的权限. 但目前在国内使用的大部分用户还是以ASM的资源为主.比如:VM.Storage.Network.WebAPP.SQL Az ...
- echo 的部分用法
echo “内容” > 文件名 (会覆盖文件里的所有内容) echo “内容” >> 文件名 (追加内容到文件里,会另起一行写入) 如果您阅读过此文章有所收获,请为我顶一个,如果文章 ...
- Oracle 文件
参数文件 跟踪文件 告警文件 数据文件 临时文件 控制文件 重做日志文件 密码文件 闪回日志 dum文件 数据泵文件 1参数文件 Parameter file:告诉oracle实例在那里可以找到控制文 ...
- MacOS配置Erlang开发环境
Mac下安装Erlang brew 的安装: $ curl -LsSf http://github.com/mxcl/homebrew/tarball/master | sudo tar xvz -C ...
- Rails的静态资源管理(一)——Asset Pipeline是什么
官方文档:http://guides.ruby-china.org/asset_pipeline.html http://guides.rubyonrails.org/asset_pipeline.h ...
- mysql查询最近30天、7天、每天、昨天、上个月的记录
一些变量说明: add_time为插入的时间 to_days是sql函数,返回的是个天数 data_sub(date,INTERVAL expr type)给指定的日期减去多少天 data()函数 ...
- DAY17-Django之model查询
查询表记录 看专业的官网文档,做专业的程序员! 查询相关API <1> all(): 查询所有结果——QuerySet <2> filter(**kwargs): 它包含了与所 ...
- AOP基础-JDK动态代理
动态代理技术就是用来产生一个目标对象的代理对象的,代理对象应与目标对象(被代理的对象)有相同的方法,实现对目标对象访问的拦截,并增强目标对象的一些功能,而不需要目标对象去做任何的更改,使得目标对象有更 ...
- C++——override
override关键字作用: 如果派生类在虚函数声明时使用了override描述符,那么该函数必须重载其基类中的同名函数,否则代码将无法通过编译.举例子说明 struct Base { virtual ...
- Ros问题汇总
1.ImportError: No module named beginner_tutorials.srv 解决: cd ~/catkin_ws $ source devel/setup.bash $ ...