单表查询
定义
指查询中仅仅只是涉及一个表的查询。
使用关键字 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
-
优先级 由高到低的顺序为: (),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+case−−−when−−−then语句
此语句是一个典型的判断语句
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/*取出百分之多少*/