数据库知识点4

本文介绍了SQL的基本操作,包括数据删除、检索、汇总等,并详细解释了如何使用各种子句进行数据筛选、排序及分组统计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据删除
(1) 删除表中的全部数据:delete from T_Person
(2) delete只是删除数据,表还在,和drop table不同。
(3) delete也可以带where子句来删除一部分数据:delete from T_Person where FAge>30
数据检索
(1) 简单的数据检索:select * from T_Employee
(2) 只检索需要的列:select FName from T_Employee
(3) 列别名:select FNumber as 编号,FName as 姓名 from T_Employee
(4) 还可以检索不与任何表关联的数据:select 1+1select newId()select getDate()
数据汇总
(1) SQL聚合函数:max(最大值)min(最小值)avg(平均值)sum()count(数量)
数据排序
(1) order by子句位于select语句的末尾,它允许指定按照一个列或者多个列进行排序,还可以指定排序方式是升序(从小到大排序,ASC)还是降序(从大到小排序,DESC)
(2) 按照年龄从大到小排序,如果年龄相同则按照工资从大到小排序
  select * from T_Employee order by FAge Desc,FSalary Desc
(3) order by子句要放到where子句之后:
  select * from T_Employee where FAge>23 order by FAge Desc,FSalary Desc
通配符过滤(模糊匹配)
(1) 通配符过滤使用Like
(2) 单字符匹配的通配符为半角下划线”_”,它匹配单个出现的字符,以任意字符开头,剩余部分为”erry”
  select * from T_Employee where FName like ‘_erry’
(3) 多字符匹配的通配符为半角百分号”%”,它匹配任意次数(零或者多个)出现的任意字符,”K%”匹配以K开头,任意长度的字符串。检索姓名中包含”n”的员工的信息:
  select * from T_Employee where FName like ‘%n%’
空值处理
(1) 数据库中,一个列如果没有指定值,那么值就为null,这个nullC#中的null不一样,数据库中的null表示不知道,而不是表示没有,因此select null+1结果是null,因为不知道1的结果还是不知道
(2) select * from T_Employee where FName=null    and     select * from T_Employee where FName!=null。都没有任何返回结果,因为数据库不知道
(3) SQL中使用is nullis not null来进行空值判断。
 select * from T_Employee where FName is null
 select * from T_Employee where FName is not null
多值匹配
(1) select FAge,FNumber,FName from T_Employee where FAge in(34,23,35)
(2) 范围值:
1) select * from T_Emploee where FAge>=23 and FAge<=27
2) select * from T_Employee where Fage Between 23 and 27
数组分组
(1) 按照年龄进行分组统计各个年龄段的人数:
   select FAge,Count(*) from T_Employee Group by Fage
(2) Group by子句必须放在where语句的后面
(3) 没有出现在Group by子句中的列是不能放到select语句后的列名列表中的(聚合函数除外)。
  1) 错误:select FAge,FSalary from T_Employee group by Fage
  2) 正确:select Fage,Avg(FSalary) from T_Employee group by Fage
Having子句
(1) where中不能使用聚合函数,必须使用HavingHaving要位于Group by之后。
   select Fage,Count(*) as 人数 from T_Employee Group by FAge Having Count(*)>1
(2) 注意Having中不能不能使用为参数分组的列,Having不能代替where,作用不一样,Having是对组进行过滤。
限制结果集行数
(1) select top 5 * from T_Employee order by FSalary Desc
(2) (*)检索按照工资从高到低排序检索从第六名开始一共三个人的信息
  select top 3 * from T_Employee where FNumber not in (select top 5 FNumber from T_Employee order by Fsalary desc) order by FSalary Desc
(3) SQL Server2005后增加了Row_Number函数简化实现
去掉数据重复
(1) select FDepartment from T_Employee——>select distinct FDepartment from T_Employee
(2) distinct是对整个结果集进行数据重复处理的,而不是针对某一个列,因此下面的语句并不会只保留Fdepartment进行重复值处理。
   select distinct FDepartment,FSubcompany from T_Employee
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值