sql数据库学习 关于查询和筛选(二)

1.在数据库语言中,可以采用模糊查询的方式来从表中选取想要的数据集合

模糊查询主要是用于处理字符串类型的值,其中运算符包括:like %_[] ^。

like表示查询方式为模糊查询

%表示在查询的字符串前面或者后面有n个任意的字符,例如 查找学生表中含有姓张的 同学名单时,可以采用下列语句

select*from studentinfo

where Name like '张%'

%可以设置在字符串后面 也可以设置在前面,亦或二者均有,表示含有中间字段的数据集合。

下划线_代表一个模糊的字符,即若查询名单中名字为两个字的张姓同学,可用下列语句

select*from studentinfo

where Name like '张_'

而[]则代表一个区段,例如查询电话号码为13开头或者15开头的学生信息可以用

select*from studentinfo

where phonenumber like '1[3-5]%'  --注意添加%

而^表示非的意思 即

select*from studentinfo

where phonenumber like '1[^3-5]%' --表示查询手机号非13  15开头的学生信息

2,关于查询中对于含空值(null)数据操作

对于null的操作,使用is null或者is not null,与其他计算时返回null

举例:

select*from studentinfo

where phonenumber is null--查询未填手机电话号的学生名单信息

select*from studentinfo

where phonenumber is not null--查询所有已填手机电话号的学生名单信息

对于某些字符运算的优先级顺序:按照小括号,not,比较运算符,逻辑运算符的顺序来排

3.连接查询:当查询所需结果来自多张表时,需要采用连接查询的方式

查询学生姓名以及所在班级名称,这两个信息来自两个表

学生表:studentinfo和班级表classinfo

两个表的关系:学生表中一列cid是引用的班级表中的cid,故采用连接查询的关键是找准那些表,这些表的关系

示例如下:


结果

若只想要筛选出学生姓名和班级名称的信息,则可以这么写:


结果

在上述使用中出现了,inner join的语句,这叫内连接这表示用来匹配两个表的关系

同样存在LEFT JOIN 左连接,LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行

RIGHT JOIN右连接 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。

FULL JION 全连接 只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。

4.多表连接

考虑查询学生姓名,考试科目,以及分数,这三个信息来自三张不同的表

假设这三张表分别叫A,B,C只需要找到 其中A和B之间的关系以及B和C的关系即达到目的

语句如下:

select*from scoreinfo as score

inner join studentinfo as stu on score.stuid=stu.sid

inner join sbujectinfo as sub on score.stuid=sub.sid

这样三个表的连接关系确立

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容