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`);
    
  • 相关阅读:
    选择排序
    插入排序
    冒泡排序
    java实现串的匹配和替换
    动态字符串的存储结构的实现
    静态串的存储结构以及增删改查
    链式队列的操作实现
    java中程序的执行的原理如怎么创建空间,创建对象等
    java中的环境变量的配置
    java的JVM以及java中代码的运行过程
  • 原文地址:https://www.cnblogs.com/jasmine0112/p/12559341.html
Copyright © 2011-2022 走看看