数据库基础(一) 基础查询语句

1. 查询语法

SELECT [select选项] 
	字段列表[字段别名]/* 
FROM 数据源
[WHERE 子句] 
[GROUP by子句 ][HAVING 子句][ORDER BY 子句][LIMIT 子句];

参考:W3C学校_sql函数

--sql语句中关键字应该用大写字母
--单个查询
SELECT p1 FROM table
--多个查询
SELECT p1,p2 FROM table
--去重查询:去除重复行
SELECT DISTINCT(p1) FROM table
--条件查询:可拓展为很复杂的判断,如where继续嵌套查询;
	--假如想用select使用函数的字段筛选,可以用having子句
SELECT p1 FROM table WHERE p1=1
--函数查询:在查询字段套上函数,如SUM、COUNT、标量值函数等
SELECT function() FROMSELECT SUM(IIF(category="class1",num,0)) Cat FROM table

--多表查询
--多列子查询
SELECT q1,p2 FROM (SELECT p1 q1,p2 FROM table)
--左连查询,返回table_1和table_2匹配上的行
SELECT p1 FROM table_1
	LEFT JOIN table_2
		ON table_1.p1=table_2.p1

参数查询
    ①用户输入的查询语句为: 
        SELECT * FROM Customers WHERE ID = ${ID};  
    ②从客户端动态取到的 ID 数值为: 1; 
    ③根据参数值产生新的查询语句:
        SELECT * FROM Customers  WHERE ID = 1

实际上实际的工程经验中,因为查询涉及表量多,字段判断复杂,许多查询由嵌套加函数综合编写,需要不断积累经验。

下面再讲一下 FROM后面的子句

2.子句

  • GROUP BY
    GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。
    以下为例,表中column_name相同的字段对应的行会合并起来。
    若是多字段分组,就会把多字段同时完全一致的合成一个小组。

    应用场景:
    常常把group by 做统计工作,对每个分组中的数据应用聚合函数(COUNT,SUM, AVG,etc)
    参考博客

    SELECT column_name, aggregate_function(column_name)
    FROM table_name
    WHERE column_name operator value
    GROUP BY column_name
    
  • HAVING
    有时候我们想用合计函数算的字段去条件查询,但是WHERE 关键字无法与合计函数一起使用。
    这时HAVING子句就可以帮忙。
    参考博客

    SELECT column_name, aggregate_function(column_name)
    FROM table_name
    WHERE column_name operator value
    GROUP BY column_name
    HAVING aggregate_function(column_name) operator value
    

    应用场景:
    有时我们用GROUP BY 和合计函数做分组合计,在这个基础上再用HAVING子句来做条件查询。

  • ORDER BY
    ORDER BY 语句用于根据指定的列对结果集进行排序,默认升序,有需要可加上关键字DESC做降序排序;
    也可以一个降序一个升序,但需要在排序字段后都加关键字(DESC或ASC)。
    参考博客

    --从order表中查询,且排序先以Word字段的字母进行排序,然后在此基础上用Num数字进行排序
    SELECT Word, Num FROM Orders 
    ORDER BY Word, Num DESC
    
  • LIMIT
    LIMIT子句用作限制select返回的行数,部分数据库支持该语句,如MySQL
    参考博客

3.主键约束词汇

可用作约束主键检索

CONSTRAINT [PK_dimTime] PRIMARY KEY CLUSTERED
(
#ASC→主键 属性→ID
[lngTimeID] ASC)
#index:指定索引节点行数≥2 ;
#NORECOMPUTE:不自动更新,手动执行不带他的子句PDATESTATISTICS命令 ;
#DUP_KEY:包惟一约束插入重复数据时,
#选择时:返错,跳过继续执行、没选择时返错,rollback插入语句。
#locks:是否允许行/页面 锁
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = O
N, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY])
 ON [PRIMARY]

小思考题:
医院有张源表,
table_1(记录病人入院数据),字段有 patient_Id, report_Date,dept_Code,doct_Code;
现在需要做一个入院周报,根据输入时间参数的不同,统计每个部门的入院人数情况。

答案

SELECT
	p.dept_Code 部门,
	COUNT(p.dept_Code) 入院人数
FROM table_1 p
WHERE 
	p.report_Date>=${begain_Time}
	p.report_Date<=${end_Time}
GROUP BY p.dept_Code
ORDER BY 入院人数 DESC

下一篇了解WHERE中的关键字,以及部分常用的函数
数据库基础(二)WHERE 关键字和常用函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值