• 常用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();
    }
    
  • 相关阅读:
    Linux # $
    python英文学习字典
    python中read(),readline(),和readlines()
    if _name_ =="_main_"
    win10菜单打不开,任务栏右击没有反应
    python中csv转json文件出现:File was loaded in the wrong encoding: 'UTF-8'
    Python字典
    python 匿名函数实现求素数平方和
    Python快速排序的实现
    P1880 [NOI1995]石子合并
  • 原文地址:https://www.cnblogs.com/adoctors/p/9250964.html
Copyright © 2020-2023  润新知