博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库查询
阅读量:3945 次
发布时间:2019-05-24

本文共 2809 字,大约阅读时间需要 9 分钟。

文章目录

数据查询

基本查询

select 目标列表表达式

from 表名 或 视图名
where 条件表达式

eg:在“课程”表中查询所有学生的“课程号”和“课程名称”。

use studentgoselect distinct 课程号,课程名称from 课程go

注意:目标列表表达式可以是:(属性列,字符串常量,算数表达式,函数)

distinct 目标属性 :去掉重复行

带有where字句的查询

(1)比较大小

where A 比较符号 B
(2)确定范围
范围内:where between …and …
范围外:where not between …and …

eg:在“课程号”表中查询“学分”在4-6之间的课程的“课程号”和“课程名称”。

use studentgoselect 课程号,课程名称from 课程where 学分>=4 and 学分<=6go

(3)确定集合

指定集合内:where 列名 in(‘A’,‘B’,‘C’)
指定集合外:where 列名 not in(‘A’,‘B’,‘C’)
(4)字符匹配
匹配: like 匹配串
不匹配:not like 匹配串

注意:匹配符可以结合% -使用

% 表示任意的,表示0到无穷大的长度
- 表示单个字符
like 匹配的意思(后边有匹配符号只能用like)
is 匹配的意思(为空只能用is,不能用=)
= 等于
>< 不等于的意思

eg:在“课程”表中查询所有“课程名称”中包含“数据库”字样的课程的全部信息

use studentgoselect *from 课程where 课程名称 like '%数据库%'

(5)涉及空值的查询

use studentgoselect 课程名称,学分from 课程where 先修课程 is nullgo

(6)多重条件的查询

and 并且
or 或

带有group by 字句的查询(分组功能)

(1)简单分组查询

select 目标列表表达式
from 表名
where 条件表达式
group by 列名

(2)带having 字句的分组查询

select 目标列表表达式
from 表名
group by 列名 having 条件表达式

eg:查询至少选修了2门课程以上的学生的学号。

use studentgoselect distinct 学号from 学生成绩group by 学号having count(*)>=2 go

带有order by 子句的查询(排序功能)

select 目标列表表达式

(into 新表名)
from 表名 或 视图名
where 条件表达式
order by 列名 asc 或 desc

eg:在“课程”表中查询所有“课程名称”中包含“数据库”字样的课程的全部信息,将查询结果按“课程名称”降序排列。

use studentgoselect *from 课程where 课程名称 like '%数据库%'order by 课程名称 DESCgo

多表查询

连接查询:

(1)内连接
select 列名
from 表1 inner join 表2 on 连接条件表达式

(2)外连接(左外连接+右外连接)

左外连接:
select 列名
from 表1 left join 表2 on 连接条件表达式

右外连接:

select 列名
from 表1 right join 表2 on 连接条件表达式
(3)交叉连接(笛卡尔积)
select 列名
from 表1 cross join 表2 on 连接条件表达式

子查询(嵌套查询功能)

集合比较运算符:

all 全部都满足
any 满足任何一个
between 在某个范围内
exists 查询结果包含一些行(结果不为空)
in 操作数等于列表中的一个
not 取值反
some 有一些满足

子查询:将第一步查询嵌入到第二步查询的条件中(嵌套查询)

(1)无关子查询

(先执行子查询语句,得到的结果传递给父查询语句使用)
use 数据库名
select 列名
from 表格
where 列名 比较运算符(select 列名
from 表格
where 列名)

eg:查询其它系中比“管理系”的所有学生年龄都小的学生的“姓名”、“年龄”和“性别”。

use studentgoselect 姓名,性别,年龄from 学生信息where 所在系 != '管理系' and 年龄

eg:查询“赵燕”同学选修的所有课程“课程名称”、“学分”、“分数”,对结果按照“分数”升序排列。

use studentgoselect 课程名称,学分,分数from 学生成绩,课程where 学生成绩.课程号 = 课程.课程号 and 学号 in(														select 学号														from 学生信息			where 姓名 = '赵燕')order by 分数go

(2)相关子查询

(子查询的执行依赖于父查询,多数情况下是因为子查询的where 子句引用了父查询的表)
(3)表数据维护的子查询
插入子查询结果
带子查询的删除语句

联合查询

(1)集合并运算(会自动去除重复)

union

(2)集合交运算

intersect

(3)集合差运算(前—后的意思)

except

输出结果选项

(1)输出前n行

use 数据库名
select top n 列名
from 表格
where 条件语句
(2)百分比输出
use 数据库名
select top n percent 列名
from 表格
where 条件语句
(3)查询结果输出到新建表中
use 数据库名
select 列名 into 新表格
from 原表格
where 条件语句

输出结果插入到另一个表中

select 目标列表表达式 into 新表名

from 表名
where 条件表达式

eg:将“学生信息”表中“计算机系”的学生的全部信息插入到“计算机系学生信息”表中。

use studentgoselect *into 计算机系学生信息from 学生信息where  所在系 = '计算机系'go

eg:创建和“学生信息”表的表结构相同的“管理系学生信息”表,但该表中不包含任何记录。之后用带子查询的INSERT将“管理系”学生的全部信息插入到“管理系学生信息”表中。

use studentgoselect * into 管理系学生信息from 学生信息where 学号 is null gouse student	--调用数据库goinsert into 管理系学生信息select * from 学生信息where 所在系 = '管理系'go

转载地址:http://grawi.baihongyu.com/

你可能感兴趣的文章
SMS 和 MMS 在输入字母的响应不一致
查看>>
如何判断手机是否处于漫游状态?
查看>>
恢复出厂设置时删除手机上所有联系人
查看>>
根据Sim卡的插卡情况过滤通话记录
查看>>
联系查看两张卡的未接电话记录
查看>>
把拒接电话作为已经接电话写到call log中
查看>>
FDN号码完全匹配
查看>>
Cosmos 拨号界面保存号码时先提示选择存储位置
查看>>
换卡或不插卡时删除通话记录
查看>>
静音模式下,来闹钟能响铃。
查看>>
调整提醒的优先级
查看>>
恢复出厂设置时清除闹钟
查看>>
如何添加一个提醒
查看>>
Cosmos 关机情况下来闹钟后增加是否开机选择功能
查看>>
日历的提醒内容可以根据需要修改
查看>>
如何使USSR编辑界面默认输入法为123
查看>>
手机中嵌入默认的快速拨号号码
查看>>
Call Setting中的Line Switch功能作用
查看>>
GPS数据解析
查看>>
The top 6 programming languages for IoT projects
查看>>