文科生的SQL初体验之模糊查询
程序员文章站
2022-04-05 17:11:51
...
模糊查询
- %:0-多个任意字符,_表示一个字符[]^表示一个字符
- %与_写在[]中表示本身的含义
select* from UserInfo
where sname like '%三%'
--姓张的学生
select* from UserInfo
where sname like '张%'
--查询名字为2个字姓黄的学生
select* from UserInfo
where sname like '黄_'
--查询使用电话为13段的学生信息
select*from sphone like '13%'
--取使用qq邮箱的学生
select* from UserInfo
where semail like '%@qq%'
由图我们可以看到,1[^5-9]表示1后面除了5-9的数字
更改
update Studentinfo set sphone =null
where sid in(5,6)
--电话为Null的学生信息
select*from studentinfo
where sphone is null
优先级:小括号,not,比较运算符,逻辑运算符
连接查询
select*from studentinfo
inner join classinfo on studentinfo.cid= classinfo.cid
如果只想要几个列
select si.same,ci.ctitle
from studentinfo as si
inner join classinfo as ci on si.cid= ci.cid
扩展
select si.same,ci.ctitle
from studentinfo as si
inner join classinfo as ci on si.cid= ci.cid
--查询青龙班所有学生的姓名
where ci.title='青龙'
外键的连接
连接:join表名on关联条件
内连接:inner join 结果显示两表中完全匹配的数据
左外连接:left outer join,显示两表中完全匹配的数据,左表中特有的数据
右外连接:right outer join,两表中完全匹配的数据,右表中特有的数据
完全外连接:full outer jion,两表中完全匹配的数据,左表中特有的数据
其中join左边的表是左表右边的表是右表
select*
from classinfo as ci
left join studentinfo as si on ci.cid=si.cid
可以看到以左表为准
当我们调换顺序
select*
from studentinfo as ci
right join classinfo si on ci.cid=si.cid
多表连接,vlookup函数的SQL的做法
select stu.sname,sub.stitle,score,scorevlaue
from scoreinfo as score
inner join studentinfo as stu on score.studid=stu.sid
inner join subjectinfo as sub on score.subid=sub.sid
当我们值查询几列时
注意外键连接,只要连接成通路就好