数据库:数据查询(指定的列、全部列、经过计算的值、消除重复的行、查询满足条件的元组、比较查询、范围查询、集合查询、字符匹配查询)

数据查询是数据库的核心操作,SQL提供了 select 语句实现查询功能

1、查询指定的列

格式:

select 查询列表,查询列表 from 查询的表名

2、查询全部列(查询的顺序不同)

(1) select 所有的列都列出 from 查询的表名

(2) select * 查询的表名

3、查询经过计算的值(可以是表中的属性列,算术表达式,字符串常量,函数)

select 进行相应的运算方法 from 查询的表名

查询结果的列名,如果查询对应的是基本表列名,结果表该列也是列名,如果是其它表达式,SQL Server则处理为 “ 无列名 ”。

查询表的结果可以指定列名:

select 列(运算表达式)+ 空格(或 as ) +结果表的列名 from 查询的表名

选择表中的若干元组

从行方向查询,关系代数中的选择运算

1、消除重复的行

经过投影运算后,原来不相同的元组可能变成相同了,可以用 distinct 取消重复行,即只保留一行

语法:

select distinct 需要查询的列 from 查询的表名

2、查询满足条件的元组

通过where 子句实现,where(关键字)+ 条件表达式 ,常用的查询条件及谓词,如下表:

查询条件谓词
比较

=(等于)

>(大于)、>=(大于等于)

<(小于)、<=(小于等于)

!=(不等于)、<>(不等于国际通用的)

!>(不大于)、!<(不小于):

not+ (逻辑非)+ 上述比较运算符

确定范围

not(逻辑非)+ between  起始范围  and  结束范围

(闭区间,包括端点值)  

确定集合

in + 集合(前面的值在这个集合里就是逻辑真)

not in

字符匹配

like + 模式

(查询的表达式与查询的模式相匹配就是真,否则为假)

not like 

空值is null (不能使用=)、 is not null 
逻辑运算and (与)、 or (或)、not (非)

 (1)比较查询

语法:(【】代表可省略)

【not】字段表达式 + 比较运算符 +表达式 当运算结果为真时,相应的记录就加入结果集、

:查询计算机科学系全体学生的姓名

select sname from student where sdept = ' CS '(注意:字符串需要加单引号定界)

查询所有年龄在20岁以下的男同学姓名及其年龄

select sname ,sage from student where sage <20 and ssex = ’ 男 ‘

(注意数值不需要单引号定界,还有单引号定界时注意界内空格)

(3)范围查询

范围查询指查找属性值在(或不在)指定范围内的元组,具体格式:

【not】beteen exp1 and exp2 (等价于:属性列x>=exp1 and 属性列 x<=exp2)

:查询年龄在20~23岁(包括20、23)之间的姓名和年龄

select sname, sage from student where beteen 20 and 23

(4)集合查询

查找属性值属于或不属于指定集合的怨怒。

语法:

字段表达式【not 】in (集合元素列表)

:查询信息系(‘is’)、数学系(ma)和计算机系(‘cs’)的姓名和性别:

select sname, sex from student where sdept in ( ' is ' , ' ma ' , ' cs ')

查询不是信息系(‘is’)、数学系(ma)和计算机系(‘cs’)的姓名和性别:

select sname, sex from student where sdept  not in ( ' is ' , ' ma ' , ' cs ')

(5)字符匹配查询:

谓词like 可以用来进行字符的匹配查询。

语法:

match_expression 【not】like pattern

作用是查找指定的属性列与pattern相匹配的元组。

pattern ( 模式 )可以是字符串也可以是含有通配符%和 _ ,

其中:

%代表任意长度(长度可以为 0 ) 的字符串。

_ 代表任意单个字符

当字符串包含通配符时,需要使用 escape ' <换码字符> '进行转义(有点类似重新定义 _ )

例子:

查询姓刘学生的姓名、学号和性别

select sname, sno , sex from student where like ' 刘%'

查询两个字,姓刘学生的姓名、学号和性别

select sname, sno , sex from student where like ' 刘_'

查询以 ‘ DB ’ 开头,且倒数第三个字符为 i 的课程的详细情况

查询左右姓刘学生的姓名、学号和性别

select * from course where cname like  ' DB\_%i__'escape ' \ '

换码字符(转意字符)‘ \ ’ ,表明其后面的一个字符是普通字符而不是通配符。换码符可以任意

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值