数据库学习笔记

目录

 

1)单表查询

2)选择行查询,选择表中的部分行或全部行作为查询的结果

3)查询满足条件的行:用where子句实现条件查询

4)对查询结构排序

5)使用统计函数:又称集函数,聚合函数

6)对查询结果进行分组


1)单表查询


1、查询指定的列
select *from 表名
2、查询表中指定的列。查询多列,列名之间要用逗号隔开
select 列名1,列名2 from 表名
3、指定查询结果的标题
使用as子句,as子句可以省略,[]代表可以省略的意思
select 借书证号 [as] cardno,姓名 [as] name from 表名
4、查询经过计算的列(即表达式的值)
select 书名,单价,八折=单价*0.8 from book

2)选择行查询,选择表中的部分行或全部行作为查询的结果



格式:select [all] [distinct][top n[perecnt]] <目标表达式列表> from 表名
1、消除查询结果的重复行
select distinct 列名 from 表名
如果是all的话,保留查询结果的所有行
2、限制查询结果中的返回行数
->查询表中的前五个记录
select top 5 * from 表名
->查询表中前50%的数据
select top 50 percent *from 表名


3)查询满足条件的行:用where子句实现条件查询



格式:select [all] [distinct] [top n[percent]] <目标列表达式列表> from 表名 where <条件>
说明:在查询条件中可使用以下运算符或表达式:运算符 运算符
标识
比较运算符 <=,<,=,>,>=,!=,<>,!>,!<

范围运算符 between... and,not between... and

列举运算符 in,not in

模糊匹配运算符 like,not like

空值运算符 is null,is not null

逻辑运算符 and,or,not
1、使用比较运算符
select *from 表名 where 可以比较的列名>=2
2、指定范围
格式:表达式[not] between <表达式1> and <表达式2>,否定加not
其中between关键字之后的是范围的下限(低值),and关键字之后的是范围的上限(高值)
列如:查询表中1980至1985年出生的所有列
select *from 表名 where 出生时间 between '1980-01-01' and '1985-12-31'
3、使用列举
使用in关键字可以指定一个值的集合,集合中列出所哟可能的值,当表达式的值与集合中的任一元素个匹配时,即返回true,否则返回false。
格式:<表达式> [not] in(值1,值2,值3),否定加not
查询表中列名2为值1,值2的列名1,列名2
select 列名1,列名2 from 表名 where 列名2 in('值1,值2')
4、使用通配符模糊查询
可用like子句进行字符串的模糊匹配查询,like子句将返回逻辑值(true或false)
格式:<字符型字段> [not] like <匹配串>
含义:查找指定字段值与匹配串相匹配的记录。匹配串中常含有通配符%和_(下划线)。
a%c表示以a开头,以c结尾的任意长度的字符串。
a_c表示以a开头,以c结尾,长度为3的字符串。
查询姓王,名字为两个字的所有学生
select *from 表名 where 姓名 like '王_'
5、使用null查询
当需要判定一个表达式的值是否空 值时,使用is null关键字。
格式:<表达式> is [not] null
查询表中专业名尚不确定的学生情况
select *from 表名 where 专业名 is null
6、多重条件查询:使用逻辑运算符
select *from 表名 where 专业名='计算机' or 专业名='音乐'


4)对查询结构排序



order by子句可用于对查询结果安装一个或多个字段的值(或表达式的值)进行升序(asc)或降序(desc)排序,默认升序
格式:order by {排序表达式[asc | desc]}[,..n] 
查询图书的书名、六折后的书价,并将结果按六折后的书价的降序排列。
select 书名,单价*0.6 as 书价六折 from book order by 单价*0.6 desc


5)使用统计函数:又称集函数,聚合函数



在对表进行检索时,经常需要对结果进行计算或统计,T-SQL提供了一些统计函数。用来增强检索功能。常用的统计函数:
函数名 功能
AVG 求平均值
count 求记录个数,返回int类型整数
max 求最大值
min 求最小值
sum 求和
1、
select avg(借书数) as 平均借书数,sum(借书数) as 借书总数
from xs
where 专业名='计算机'
2、
select max(借书数) as 最多借书数,min(借书数) as 最少借书数
from xs
3、count:
格式:count(*)和count([all][distinct] 字段名),为避免出错,查询记录个数一般使用count(*),而查询某字段有几种取值用count(distinct 字段名)
(1).count(*):

功能:统计记录总数。

例18:查询学生总数
select count(*) as 学生总数
from xs

再如:查询已借阅了图书的学生人数。

select count(*) as 借阅了图书的学生数
from xs
where 借书数<>0

思考:查询计算机专业的学生总数。

(2).count([all]|[distinct] 字段名)

功能:统计指定字段值不为空的记录个数,字段的数据类型可以是text、image、ntext、uniqueidentifier之外的任何类型。

例19:查询学生总数
select count(借书证号) as 总人数 from xs


6)对查询结果进行分组



group by子句用于将查询结果表按某一列或多列值进行分组,列值相等的为一组,每组统计出一个结果。该子句常与统计函数一起使用进行分组统计。格式为:
group by 分组字段[,...n][having <条件表达式>]
例21:统计男、女生各多少人。
select 性别,count(*) as 人数
from xs
group by 性别

再如:查询各专业人数及各专业的总借书数。

select 专业名,count(*) as 各专业人数,sum(借书数) as 各专业的借书总数
from xs
group by 
专业名

说明:在使用group by子句时应注意以下几点:

1.在使用group by子句后,select列表中只能包含:group by子句中所指定的分组字段及统计函数。


2.having子句的用法:
having子句必须与group by 子句配合使用,用于对分组后的结果进行筛选(筛选条件中常含有统计函数)。

例22:查询学生人数在2人以上(含2人)的专业的专业名以及其学生人数
select 专业名,count(*) as 人数
from xs
group by 专业名
having count(*)>=2

3. 
分组查询时:不含统计函数的条件,通常使用where子句;含有统计函数的条件,则只能用having子句。

例如:查询“体育”专业男、女生各有多少人。

select 性别,count(*) as 人数
from xs
where 专业名='体育'
group by 性别

再如:查询平均借书数在2本以上(含)的专业及其学生人数。

select 专业名,count(*) as 人数
from xs
group by 专业名
having avg(借书数)>=2

4、选择从10到15的记录 
select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id
desc

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值