查询select

单表查询

定义

指查询中仅仅只是涉及一个表的查询。

使用关键字 s e l e c t select select 进行查询,后面跟 列名/* 表示 要查询的列/查询整个表

select sname '姓名',2021-sage '出生年份' /*改变输出的 列名,但并不改变 存储的列名*/
form student
selet *
form student
/*直接输出student中所有的数据*/
select distinct sno
from student
 /*输出student表son这一列中不同的值*/

where

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rgNn5cLZ-1637228293138)(C:\Users\Admin\AppData\Roaming\Typora\typora-user-images\image-20211118152551898.png)]

  • 优先级 由高到低的顺序为: (),not ,比较运算符,逻辑运算符。

  • a n d and and o r or or 更优先

  • 可以使用() 来到达自己想要的优先级

select *
from student
where sdept='计算机'  /*输出系别为计算机的所以数据*/
  • 比较运算符/逻辑运算符 跟我们在数学中其实 差不多
  • < > <> <> ! = != !=效果相同

模糊查询

使用关键字like % _ []

%匹配一串内容 注意 长度可以是 0

例子:

select *
from Products
where prod_name like '%toy'
/*匹配任意以toy结尾的字符串*/
_ 匹配一个字符

例子:

select son,sname
form student
where sname like '_张%'   /*_ 表示张前面只有一个字符  %表示张后面有任意 字符*/
select *
from Products
where prod_name like '1_%'
/*匹配以1开头 _ 匹配一个字符 %匹配 一系列字符*/
/*很多人觉得 1_% 与 1% 有什么区别呢?其实区别很大第一个只是又两个字符,而第二个可能只有一个字符 */
[]匹配其中的任意一个字符 注意这个不能跟 !符合联合使用,但是可以更 not ^ 联合使用

例子:

 SELECT *
 FROM Products  
 WHERE prod_name LIKE '[^BA]%' 
 /*匹配开头没有B or A 字符的字符串*/

范围查询

in关键字为非连续查询

select * from Student where ID in('19100142001','19100142006')/*字符串用'* 数字不用/

Between…and…为连续查询

select * from Student where ID Between 19100142001 and 19100142006
/*sql 中表示差出 [ , )的范围*/

is not null /is null 判断非空/空

select * from Student where name is not null/*或者is null*/

group by分组

😄
大神链接,难以模仿

select name
from Student group by CollegeID
group by+聚会函数
select ID,count(age) from Student group by ID
select gradeId,sex,count(*)/*count(*) 是一个name 也是一个函数*/
from student
where gradeId between 2 and 4/*筛选 gradeId 2--4*/
group by gradeId asc,sex/*进行并组*/

group by+having

having的作用跟where子句功能一样,只不过having只用在group by

select ID from Student group by ID having ID>100
Order by 排序

a s c asc asc 是顺序排序,这个排序默认是顺序排序,所以我们一般忽略 a s c asc asc

select * from student order ID asc age asc
/*在根据 ID 进行升序排序的情况下在根据 age进行升序排序*/

根据降序ID 排序,使用关键字$ desc$

select stu_id,class_id,name,score
from tb_score
where class_id=1
order by score desc
扩展

count(*/列) 表示计算总夯实,()中可以写 * 列名

当我们指定对某一个字段(列)进行计数时,COUNT() 就会忽略 NULL 对非空值进行计数。但是如果没有指定字段(列),使用 COUNT(*) 对整体内容(行)进行计数,计数就会包含空值行。这点要时刻保持清醒!

select count(*) from student

max(列) 求此列的最大值,min(列)求最小值

虽然 MIN() 函数经常用于寻找最小的数值型数字,但是有些(不是所有)数据库管理系统允许将 MIN() 函数用于字符型数据。当用于字符型数据时,MIN() 函数将会为我们返回某字段(列)的第一个数据内容。

select max(son) from student
select min(son) from student

sum(列) 求此列之和

SUM() 是用来返回某一字段(列)数值总和的函数,初学的学习者很容易把它和 COUNT() 函数搞混。

因为在某个条件下,他们返回的是相同的值。比如,在你要统计的字段的内容(行) 都为 1 时,不管你是进行计数还是加和,结果都是相同的。

select sum(age) from student

avg(列) 求平均值

AVG() 函数不仅能计算某字段(列)的平均值,如果你愿意,还能为 SELECT 语句增加条件,以此来计算某些特定条件下某字段的平均值。

select avg(age) from stuent

s e l e c t + c a s e − − − w h e n − − − t h e n select + case --- when --- then select+casewhenthen语句

此语句是一个典型的判断语句

select a.isUse
(case a.isUse
when '0' then '未在线'
when '1' then '在线' else '未上传' end
)as student as a

top取出前多行

select top 1 * from student
select top 50 percent * from Student/*取出百分之多少*/

此语句是一个典型的判断语句

select a.isUse
(case a.isUse
when '0' then '未在线'
when '1' then '在线' else '未上传' end
)as student as a

top取出前多行

select top 1 * from student
select top 50 percent * from Student/*取出百分之多少*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值