zoukankan      html  css  js  c++  java
  • 常见SQL语句

    一、常用语句

    1.删除表中所有数据

    DELETE FROM 表名;

    2.计算表中数据条数

    select count(1) from 表名;

    3.查询表中去重后数据条数

    select count(distinct name) from 表名; --表中name去重后的数目

    提示:count不能统计多个字段,需使用嵌套查询

    select count(*) from (select distinct xing, name from 表名) AS M;

    4.选取 name 以字母 "G" 开始的所有数据

    提示:"%" 符号用于在模式的前后定义通配符(默认字母),通配符可用于替代字符串中的任何其他字符,"%"可替代 0 个或多个字符

    SELECT * FROM 表名 WHERE name LIKE 'G%';

    5.选取 name 为 "a" 或 "c" 的所有数据

    SELECT * FROM 表名 WHERE name IN ('a','c');

    等同于

    select * from 表名 where name='a' or name='c';

    提示:IN 与 =在WHERE中使用作为筛选条件之一,均是等于的含义,但IN可以规定多个值,等于只能规定一个值

    6.多表连接查询--在逻辑上可看作是由SELECT语句指定的列组成的新表

    SELECT 表A.xing,表B.name
    FROM 表A
    INNER JOIN 表B
    ON A.id=B.site_id --连接条件
    ORDER BY 表A.id

    提示:不同的SQL JOIN 类型

    • INNER JOIN:如果表中有至少一个匹配,则返回行
    • LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
    • RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
    • FULL JOIN:只要其中一个表中存在匹配,则返回行

    7.表中插入新数据

    (1)不指定要插入数据的列名,只提供被插入的值即可

    • 注意:不指定要插入数据的列名时,需要列出插入行的每一列数据
    INSERT INTO purchase_supplier
    VALUES (1,"啊啊啊",1,1,"JJ001",1,0,"2020-05-26 11:24:41","2020-05-26 11:24:41");
    
    #插入多条数据
    INSERT INTO purchase_supplier
    VALUES (3,"啊23",1,1,"JJ002",1,0,"2020-05-26 11:24:41","2020-05-26 11:24:41"),(4,"啊啊啊啊3",1,2,"JJ004",1,0,"2020-05-26 11:24:41","2020-05-26 11:24:41");
    

    (2)需指定列名及被插入的值

    INSERT INTO table_name (column1,column2,column3,...)
    VALUES (value1,value2,value3,...);
    

    8.更新表中字段

    update 表名 set 字段名=值 where 筛选条件;
    

    9.时间筛选

    SELECT * FROM `表名` WHERE placed_at>='2020-06-01' AND placed_at<='2020-06-02';
    SELECT * FROM `表名` WHERE placed_at  LIKE '%2020-06-01%' ;
    

    10.倒序

    select * from 表名 order by 字段名 desc
    

    二、常见报错

    1.Duplicate entry 'b' for key 'name'
    A:键值b重复,换一个键值

    2.1093 - You can't specify target table 'order_packet_sku' for update in FROM clause

    • 不能先select出同一表中的某些值,再update这个表(在同一语句中)
    • 修改思路:把结果集当作一个表,自我查询一遍

    3.1248 - Every derived table must have its own alias

    • 每个派生出来的表都必须有一个自己的别名
    • 修改思路:加一个没有任何作用的别名t
    #在同一张表中先select再update同时操作的正确例子
    UPDATE `A` set sku_id=100059,count=1,delivery_count=0 WHERE id=(SELECT id from (select * from A order by id DESC limit 1) as t);
    #在同一张表中先select再update同时操作的错误例子,会报错2
    UPDATE `A` set sku_id=100059,count=1,delivery_count=0 WHERE id=(select MAX(id) from `A`);
    
  • 相关阅读:
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    《EffectiveJava中文第二版》 高清PDF下载
    《MoreEffectiveC++中文版》 pdf 下载
    《啊哈c语言》 高清 PDF 下载
  • 原文地址:https://www.cnblogs.com/jasmine0112/p/12559341.html
Copyright © 2011-2022 走看看