SQL-Server-4-数据操作实例

本文详细介绍了SQL Server中数据操作的实例,包括使用select语句进行查询,如DISTINCT、TOP关键字,别名查询,计算列;使用WHERE子句进行条件筛选,如比较、范围、列表、字符串匹配;涉及聚合函数SUM、AVG、MAX、MIN,数据分组及ORDER BY排序;介绍表连接(内部连接、外部连接)和子查询的应用;最后,还涉及到数据的添加、修改和删除操作。
摘要由CSDN通过智能技术生成

用到student和stu两个库
在这里插入图片描述
在这里插入图片描述

数据操作实例

1. 查询数据

所谓查询,就是对已经存在于数据库中的数据按特定的组合、条件或次序进行检索。查询功能是数据库最基本也是最重要的功能。

1.1 select语句

语法格式:select 列名 from 表名 ---->一定和from搭配
在这里插入图片描述
例子:
从学生表里面查看学生的信息
SELECT 学号,姓名,籍贯 FROM 学生信息

查询所有的列
SELECT * FROM 学生信息

select+DISTINCT关键字查询

如果用户希望在查询返回结果中删除重复行,就可以在SELECT子句中使用DISTINCT关键字。

语法:SELECT DISTINCT 列名称 FROM 表名称

• 例:SELECT DISTINCT 籍贯 FROM 学生信息

select+top关键词查询

• top语句用于规定要返回的记录的数目

语法
select top n *|column from table
top n用于指定查询结果返回的行数

例:select distinct top 8 籍贯
from 学生信息
:distinct关键字去掉重复之后查询时后面的数据往前补。

使用别名查询

• 使用select语句查询数据时,可使用别名的方法根据需要对数据显示的标题进行修改。

  1. 在列的表达式中给出别名
SELECT 列名 ‘别名’ from 表名

例: SELECT 学号 ‘NO’,姓名 ‘Name’,性别 ‘Sex’,年级 ‘Grade’,籍贯 ‘出生所在地’
FROM 学生信息

  1. 使用‘=’表达式
SELECT ‘别名’=列名 from 表名

例:SELECT ‘NO’=学号 ,‘Name’=姓名 ,‘Sex’=性别 ,‘Grade’=年级 ,‘出生所在地’ =籍贯
FROM 学生信息

  1. 使用AS关键字来连接列表达式和指定的别名
SELECT 列名 as ‘别名’ FROM 表名

例:SELECT 学号 AS ‘NO.’, 姓名 AS ‘Name’, 性别 AS ‘Sex’, 年级AS ‘Grade’, 籍贯 AS ‘出生所在地’
FROM 学生信息

:这种最常用,as是别名的标识符。

计算列

在查询时,经常需要对查询到的数据进行再次计算。

例:SELECT 编号 学号,成绩 as ‘调整前成绩’,成绩-10 as ‘调整后成绩’
FROM 成绩表

1.2 选择查询 select+where子句

一般查询都不是针对全表所有行的查询,只是从整个表中选出满足指定条件的内容,这就要用到WHERE子句。

选择行的基本语法:
SELECT 列名
FROM 表名
WHERE 限定条件;

SQL Server支持比较范围列表字符串匹配等选择方法(限定条件)。

1.2.1、比较搜索条件
比较运算符

在这里插入图片描述例:
查询籍贯是 beijing的学生信息:
SELECT 学号,班级编号,姓名,性别,籍贯
FROM 学生信息
WHERE 籍贯=‘beijing’

查询注意:
-确定要查询的表
-确定要查询的列
-限制条件

use stu
select *
from 成绩表
where 成绩>60
逻辑运算符

and 两边条件同时满足
or 两边条件满足一个即可

例:查询籍贯是beijing并且性别是nan的学生信息:
USE stu
SELECT 学号,班级编号,姓名,性别,籍贯
FROM 学生信息
WHERE 籍贯=‘beijing’ AND 性别=‘nan’

1.2.2、范围搜索条件

•范围搜索返回介于两个指定值之间的所有值,可分为包括范围和排除范围两种
类型。用BETWEEN,NOT BETWEEN

例1:查询成绩在 70到80之间的学生信息:
USE stu
SELECT 学号,课程编号,成绩
FROM 成绩表
WHERE 成绩 BETWEEN 70 AND 80
(WHERE 成绩 NOT BETWEEN 70 AND 80)

注:闭区间[],包含70和80

例2:
SELECT 学号,课程编号,成绩
FROM 成绩表
WHERE 课程编号 BETWEEN ‘1001’ AND ‘1002’

1.2.3、列表搜索条件

• IN关键字使用户可以选择与列表中的任意值匹配的行

例:
查询籍贯是 beijing和shanghai的学生:

USE stu
SELECT 学号,班级编号,姓名,性别,籍贯
FROM 学生信息
WHERE 籍贯 IN (‘beijing’,’shenzhen’)

1.2.4、搜索条件中的字符匹配符

LIKE关键字搜索与指定模式匹配的字符串、日期或时间值。
模式包含要搜索的字符串,字符串中可包含2种通配符的任意组合.

通配符
关键字 通配符 含义
like % 代替零个或多个字符
- 代替一个字符
[ ] 匹配指定范围内的单个字符
[^] 代表不在指定范围内的单个字符

格式:where 列名 like ‘ 搜索内容+通配符’
在这里插入图片描述在这里插入图片描述
例:

--查询出表中所有内容
use student
select *
from student
--查询出姓王的同学有哪些?
select *
from student
where sname like '王%'   

输出:
在这里插入图片描述

--查询出姓王,但名是单字符的同学
select *
from student
where sname like '王_'   

输出:
在这里插入图片描述

--查询出名字当中包含大或者小的同学
select *
from student
where sname like '_[大小]%'   

输出:
在这里插入图片描述

--查询出名字当中不包含大或者小的同学
select *
from student
where sname like '_[^大小]%'   

输出:
在这里插入图片描述

--查询出姓王或张的同学
select *
from student
where sname like '[王张]_'   

输出:
在这里插入图片描述

1.2.5、涉及空值的查询

空值(NULL)在数据库中表示不确定的值

例如,学生选修课程后还没有考试时,这些学生有选课记录,但没有考试成绩,因此考试成绩为空值。

• 判断某个值是否为NULL值,不能使用普通的比较运算符。

• 判断取值为空的语句格式为:
列名 IS NULL

• 判断取值不为空的语句格式为:
列名 IS NOT NULL

select *
from sc
where grade is null

输出:
在这里插入图片描述

1.3 聚合函数

对一组值执行计算,并返回单个值。

T-SQL提供的聚合函数有:

(1) SUM([DISTINCT] <列名> ) : 计算列值总和;

(2) AVG([DISTINCT] <列名> ) : 计算列值平均值;

(3) MAX([DISTINCT] <列名> ) : 求列值最大值;

(4) MIN([DISTINCT] <列名> ) : 求列值最小值。

(5) COUNT( * ): 统计表中元组个数;

COUNT([DISTINCT] <列名> ) : 统计本列列值个数;
注意:上述函数中除COUNT(*)外,其他函数在计算过程中均忽略NULL值。
如果没有符合条件的记录,那么聚合函数会返回NULL

语法格式:
SELECT 聚合函数 FROM 表名;

例:

--求总成绩
select sum(grade) as '总成绩'
from sc

--统计学生总人数
select count(*) as '总人数' 
from student

--查询有成绩的学生总人数
select count(distinct sno)    --学生和课程之间一对多的联系,所以不通过grade统计学生总人数,而用姓名sno,而sno中有重复,故要去重复
from sc

注:用聚合函数要记得随手别名查询,否则‘无列名’
总成绩输出:
在这里插入图片描述
总人数输出:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值