美文网首页
数据库查询sql——高级

数据库查询sql——高级

作者: 一杯海风_3163 | 来源:发表于2019-03-12 15:46 被阅读0次

基础篇——增删改查

1.新增语句

INSERT INTO 表名(列名1,列名2,列名3,......) VALUES(值1,值2,值3,......)

# 新增语句可以有两种方式
# 1.指定列名,对应属性值
INSERT INTO do_pack_count(user_id,packed_number,packed_goods_number) values(1,1,1)
# 2.直接插入值
INSERT INTO do_pack_count values(1,1,1)

在sql查询中操作界面如图:


image.png
2. 删除语句

DELECT FROM 表名 WHERE 条件1

DELETE FROM  do_pack_count  WHERE user_id=1
image.png
3.修改(更新)语句

UPDATE 表名 SET 字段1=值1,字段2=值2,..... WHERE 条件1

UPDATE do_pack_count  SET packed_goods_number=8  where user_id=1
image.png
4.查询语句

SELECT * FROM 表名 WHERE 条件1
SELECT 列名1,列名3...... FROM 表名 WHERE 条件1

# 查询表中所有数据
SELECT * FROM do_pack_count ;
# 查询符合条件的,指定列的值
SELECT packed_number,packed_goods_number FROM do_pack_count WHERE user_id=162
image.png
image.png
5.聚合函数

我们通常所有的聚合函数有:
①count(id或其他字段名):计数
②sum(字段名):求和
③avg(字段名):求平均值
聚合函数和GROUP BY语句通常是一起使用

6.having的用法以及与where的不同

HAVING语句通常与GROUP BY语句联合使用,用来过滤由GROUP BY语句返回的记录集。

HAVING语句的存在弥补了WHERE关键字不能与聚合函数联合使用的不足。

语法:

SELECT column1, column2, ... column_n, aggregate_function (expression)
FROM tables
WHERE predicates
GROUP BY column1, column2, ... column_n
HAVING condition1 ... condition_n;

同样使用本文中的学生表格,如果想查询平均分高于80分的学生记录可以这样写:

SELECT id, COUNT(course) as numcourse, AVG(score) as avgscore

FROM student

GROUP BY id

HAVING AVG(score)>=80;

在这里,如果用WHERE代替HAVING就会出错

高级篇——多表查询左连接

左连接查询

SELECT 表1*,表2.列1,表2.列2,表2.列3 FROM 表1 LEFT JOIN 表2 ON 表1.id=表2.表1id
WHERE 条件1。一般经常配合聚合函数COUNT,SUM等一起使用

  SELECT goods.id AS id, 
                 goods_config.id AS goods_spu_id, 
                 goods_config.name AS goods_spu_name, 
                 SUM(CASE WHEN (whi.transport_state = 'onway' OR buyr.buy_receipt_state = 'onway') AND line.cost_time <= '2019-01-01 23:59:59'  THEN 0 ELSE line.qty_remaining END) AS goods_qty,
                 SUM(CASE WHEN (whi.transport_state = 'onway' OR buyr.buy_receipt_state = 'onway') AND line.cost_time <= '2019-01-31 23:59:59'  THEN 0 ELSE line.qty_remaining END) AS goods_qty_end,
                 SUM(CASE WHEN (whi.transport_state = 'onway' OR buyr.buy_receipt_state = 'onway') AND line.cost_time <= '2019-01-31 23:59:59'  AND wh.site='foreign' THEN 0 ELSE line.qty_remaining END) AS goods_qty_end_out,
                 SUM(line.qty_remaining * line.cost_unit) AS cost
  FROM wh_move_line line
                LEFT JOIN wh_move whm ON whm.id = line.move_id
                LEFT JOIN wh_internal whi ON whm.id = whi.move_id
                LEFT JOIN buy_receipt buyr ON whm.id = buyr.buy_move_id
                LEFT JOIN warehouse wh ON line.warehouse_dest_id = wh.id
                LEFT JOIN goods goods ON line.goods_id = goods.id
                LEFT JOIN goods_config ON goods_config.id=goods.goods_config_id
   WHERE wh.type in ('stock','supplier')
                AND wh.active=true
                AND wh.code not in ('Supplier','General')
                AND line.state in ('done','onway')
                AND line.qty_remaining!=0
                AND line.cost_time <= '2019-01-31 23:59:59'
                AND wh.site in ('inland','foreign')
                AND (goods.no_stock IS NULL OR goods.no_stock = false)
                AND goods.is_group=False
                AND goods.not_saleable='on_sale'
  GROUP BY goods.id,goods_config.id,goods_config.name
  ORDER BY goods.id 

聚合函数通常要和GROUP BY 一起使用,要求查询的指定的列中,未使用聚合的函数的列(goods_spu_id,goods_spu_name)必须要出现在GROUP BY后面。

相关文章

  • 数据库知识点

    数据库知识点 数据库相关概念 mysql安装与使用 navicat的使用 SQL语言的查询(重点) 高级(了解) ...

  • 数据库查询sql——高级

    基础篇——增删改查 1.新增语句 INSERT INTO 表名(列名1,列名2,列名3,......) ...

  • Chapter 5 Advanced SQL

    高级SQL(Chapter 5) 使用其他语言调用SQL 动态SQL 运行时以字符串形式构建SQL查询→提交查询→...

  • 数据库:SQL高级查询,分页查询

    分页查询: 一般的分页查询使用简单的 limit 子句就可以实现。 LIMIT 子句可以被用于指定 SELECT ...

  • MySql的基础用法

    概念 SQL:对数据库进行查询和修改的语言叫做SQL,SQL的含义结构化查询语言

  • sql

    sql-基础sql-基础查询-1sql-基础查询-2sql-更新 概览 数据库(Database,DB):将大量数...

  • 第九章 SQL查询数据库(二)

    第九章 SQL查询数据库(二) 调用用户定义函数的查询 InterSystems SQL允许您在SQL查询中调用类...

  • 【数据库】数据库入门(十): 查询优化(Query Optimi

    查询处理 用户提交 SQL 查询请求给数据库管理系统 数据库管理系统处理和执行 SQL 请求,从数据库中获取相应数...

  • SQL基础

    SQL 结构化查询语言 使得我们可以访问数据库 ANSI的标准语言 我们可以通过SQL: 面向数据库查询 从数据库...

  • SQL查询_高级查询

    SQL查询_高级查询 一、子查询 子查询出现的位置一般为条件语句,oracle会先执行子查询,再执行父查询,子查询...

网友评论

      本文标题:数据库查询sql——高级

      本文链接:https://www.haomeiwen.com/subject/njhnpqtx.html