摘要:一些重要的SQL命令
名称 | 描述 |
---|---|
SELECT | 从数据库中提取数据 |
UPDATE | 更新数据库中的数据 |
DELETE | 从数据库中删除数据 |
INSERT INTO | 向数据库中插入新数据 |
CREATE DATABAS | 创建新数据库 |
ALTER DATABASE | 修改数据库 |
CREATE TABLE | 创建新表 |
ALTER TABLE | 变更(改变)数据库表 |
DROP TABLE | 删除表 |
CREATE INDEX | 创建索引(搜索键) |
DROP INDEX | 删除索引 |
语法:
SELECT column_name,column_name FROM table_name;
在表中,一个列可能会包含多个重复值,有时希望仅仅列出不同(distinct)的值。
DISTINCT 关键词用于返回唯一不同的值。
语法:
SELECT DISTINCT column_name,column_name FROM table_name;
语法:
SELECT column_name,column_name FROM table_name WHERE column_name operator value;
SELECT FROM Websites WHERE id=1;
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
下面的 SQL 语句从 “Websites” 表中选取国家为 “CN” 且alexa排名大于 “50” 的所有网站
SELECT FROM Websites WHERE country='CN' AND alexa > 50;
下面的 SQL 语句从 “Websites” 表中选取国家为 “USA” 或者 “CN” 的所有客户:
SELECT FROM Websites WHERE country='USA' OR country='CN';
您也可以把 AND 和 OR 结合起来(使用圆括号来组成复杂的表达式)。
下面的 SQL 语句从 “Websites” 表中选取 alexa 排名大于 “15” 且国家为 “CN” 或 “USA” 的所有网站:
SELECT FROM WebsitesWHERE alexa > 15AND (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;
SELECT FROM WebsitesORDER BY age;
下面的 SQL 语句从 “Websites” 表中选取所有网站,并按照 “age” 列降序排序:
SELECT FROM WebsitesORDER BY age DESC;
按价格(price)升序排列,如果价格相同,按销量(sales)降序排列
ORDER BY price ASC,sales DESC
下面的 SQL 语句从 “Websites” 表中选取所有网站,并按照 “country” 和 “alexa” 列排序:
SELECT FROM WebsitesORDER 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;
WHERE 子句规定哪条记录或者哪些记录需要更新。如果您省略了 WHERE 子句,所有的记录都将被更新!
UPDATE Websites SET alexa='5000', country='USA' WHERE name='菜鸟教程';
DELETE 语句用于删除表中的行。
语法:
DELETE FROM table_name WHERE some_column=some_value;
WHERE 子句规定哪条记录或者哪些记录需要删除。如果您省略了 WHERE 子句,所有的记录都将被删除!
DELETE FROM Websites WHERE name='百度' AND country='CN';
您可以在不删除表的情况下,删除表中所有的行。这意味着表结构、属性、索引将保持不变:
DELETE FROM table_name; 或 DELETE FROM table_name;
统计每个班的人数
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;
//总和
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();
}
本文地址:https://www.zhuimengzhu.com/details/96.html
转载地址:暂无
转载说明:转载时请在文首注明来源zhuimengzhu.com 及教程作者,并附本文链接。谢谢各位编辑同仁配合。zhuimengzhu 保留追究相应责任的权利。