0


【Access】Access:SQL 语句汇总


一、SQL 的功能

SQL 功能

操作语句

备注

数据定义

CREATE,ALTER,DROP

数据查询

SELECT

数据查询与数据修改又合并称为数据操纵

数据修改

INSERT,UPDATE,DELETE

数据控制

GRANT,REVOKE,……



二、考试重点

【Access】win 10 / win 11:Access 下载、安装、使用教程(「管理信息系统」实践专用软件)https://gusanshang.blog.csdn.net/article/details/130353056**【本科自考】**

自考院校:[508] 610 华南师范大学(面向社会)

自考专业:[080901] 计算机科学与技术

自考科目:[02383] 管理信息系统

自考方式:上机实践考核

自考工具:Access

Excel 数据导入

创建表 create table

单表查询 select from where group by having order by

  • 集合函数

多表查询

  • 笛卡儿积
  • 条件链接\内连接
  • 左外连接、右外连接、全外连接(没有)
  • 嵌套查询

数据的增删改 update、delete、insert



三、关系的定义

(1)新建关系

新建关系:即新建数据库中的表,命令格式如下

create  table  关系名
    (
    属性名  域  [default  缺省值] [not null ]
    { , 属性名  域  [default  缺省值] [not null ] }  
    [ , primary  key  (属性名 {, 属性名}) ]
    { , foreign  key  (属性名 {, 属性名})  
          references  被参照关系名 (属性名 {, 属性名}) }
    [ , check  (条件) ] 
 )

示例 1:

create  table  S (
   SNAME  PERSON-NAME  not  null ,
   AGE  SMALLINT  default   22,
   SEX  VARCHAR (1),
   primary  key  (SNAME ),
   check  ( AGE<200  and  AGE>0 )
 )

示例 2:

create  table   R ( 
   SName  VARCHAR(4), 
   CName  VARCHAR(4),
   RESULT INT,
   primary  key  (SName, CName),
   foreign  key  (SName)  references  S (SName),
   check  ( (RESULT  IS  NULL) OR
               (RESULT  BETWEEN  0  AND  100) )
)


(2)删除关系

删除关系:即删除数据库中的表 ,命令格式如下

drop table 关系名

【注意 Warning!

删除关系的定义后,关系的结构和内容、相关索引、以及由它导出的视图都被删除。

示例:

drop table   SC


四、SQL 的「数据查询」功能

  • **基本结构 **
  • **聚集函数 **
  • **集合运算 **
  • 连接关系

(1)基本结构

① Select 语句的基本结构

语义次序:

From (取出R1表中的记录) → Where (选择符合条件的行) → Select (选择显示的列)


② Select 子句

作用:从 (From 子句列出的) 关系中选出指定属性

要点:属性列表中,可以用表达式来构造的新属性

  • 相当于广义投影运算

示例:

  • S: 学生关系
  • 问:所有学生的姓名和年龄?
Select 姓名, 年龄 
From   S

  • 问: 每个学生的出生年份
Select   姓名, 2020 - 年龄
From    S

用表达式构造的新属性无属性名,但可采用以下方式命名表达式 as 属性名原有属性也可用如下方式重新命名旧属性名 as 新属性名
示例:

Select   姓名 as 学生姓名, 2020 - 年龄 as 出生年份
From    S

要点:Select 后面,属性列表前,可加上关键字 all 或者distinct

  • all 关键字表明结果中不消去重复元组
  • distinct 关键字表明结果中消去重复元组
  • 没说明 all 或 distinct 的情况下,默认是 all ,即不消去重复行

示例:

Select  all 课程
From        R

Select  distinct  课程
From             R


③ Where 子句

作用:选出满足条件的行

  • 等价于选择运算

【Where 子句】条件中的运算符号运算符号格式示例备注****比较运算符①<
②<=
③>
④>=
⑤<>逻辑运算符① and
② or
③ not范围运算between 下界 and 上界
not between 下界 and 上界① 年龄 between 20 and 23
② 年龄 between 23 and 20(下界<上界)集合运算in 集合
not in 集合① 姓名 in { '小陈’ , '小李’ }
② 姓名 not in { '小陈’ , '小李’ }匹配运算like 匹配串
② **not like *匹配串① 姓名 like '陈
② 姓名 like '陈??’① 'wh*' 将找到 what、white 和 why,但找不到 awhile 或watch
② ? 匹配任意单个字母字符
③ %代表任意多个字符

** 示例:**

  • S :学生关系
  • 问:所有男学生的信息?
Select  * 
From    S 
Where   性别='男'

  • 问:所有大于 22 岁的男学生的信息?
Select  * 
From    S 
Where  性别='男' and 年龄>22


④ 空值的处理

空值判定

A   is   [not ]   null

判断指定 A(属性,表达式等)的值是否为空值

示例:

  • 找出年龄值未知的员工姓名
  • 正确语法
Select 姓名 
From   employee
Where 年龄 is  null

  • 错误语法
Select 姓名 
From   employee
Where 年龄= null


(2)聚集函数

① Select 子句

  • sum(字段):对字段的所有值求和,忽略空值
  • avg(字段):对字段的所有值求平均值,忽略空值
  • count(*) :统计记录的总数 count(字段):统计字段值的总数,忽略空值
  • max(字段):对字段的所有值求最大值,忽略空值
  • min(字段):对字段的所有值求最小值,忽略空值

② Group By 子句

Group By 子句的作用:在 Where 子句筛选出元组后,对它们分组

  • 分组属性: 属性1,属性2,……

同时 Select 子句的作用发生变化:对分组进行统计

**1. **每个分组在结果中被统计为一个元组

**2. **在 Select 子句出现的属性只能是:

① 分组属性

② 聚集函数(任意属性)

③ 由①和②组成的表达式

示例:

  • 关系 R: 选修成绩
  • 问: 每门课程的平均和最高成绩?
Select    课程, 
          Avg(成绩) as 平均成绩, 
          Max(成绩) as 最高成绩 
From      R
Group By  课程 


③ Having 子句

出现在 Group By 子句后面:

  • Having 子句只能配合 Group By 子句使用,而不能单独出现

Having 子句作用:在分组后,筛选满足条件 Q 的分组

在分组限定条件中出现的属性只能是以下形式:

① 分组属性

② 聚集函数(任意属性)

Having 子句中的条件和 Where 子句中条件的不同:

1. Where 子句中的条件用于限定元组,施加在单个元组上

  • 不满足条件的元组将不会参与到下一步的分组运算 (Group By 子句) 或投影运算 (Select 子句) 等

**2. **Having 子句中的条件用于限定 Group By 子句产生的各个分组,施加在整个分组上

  • 不满足条件的分组,将不会参与下一步的统计运算 (Select 子句)

示例:

  • 关系 R: 选修成绩
  • 问: 平均成绩大于85的学生姓名?
Select    姓名
From      R
Group By  姓名 
Having    Avg(成绩) > 85

  • 问: 成绩大于 85 的学生姓名? (对比以上问题)
Select   distinct  姓名
From     R
Where    成绩 > 85


④ Order By 子句

Order By 子句的作用:在 Select 子句得出结果后,对结果进行排序

  1. 先按属性1的值,升序(asc)或降序(desc)排列,缺省是升序;
  2. 属性1的值相同时,再按属性2值升序或降序排列…

示例:

R: 选修关系

问: 从高到低列出物理课程的成绩

Select    姓名, 成绩
From      R
Where     课程='物理' 
Order By  成绩  desc


⑤ 空值的处理

示例:

Select avg(年龄)    as  平均已知年龄,                
       count (年龄) as  已知年龄人数,                
       count (*)   as  总人数, 
       min(年龄)    as  最小年龄,
       max(年龄)    as  最大年龄
From   employee


(3)集合运算

① From 子句:笛卡儿积

示例:

select  ∗
from    s,sc


② From 子句

要点:From 子句中,关系可用如下方式重命名

旧关系名  新关系名
  • 等价于更名运算
  • 一个关系在 From 子句中多次出现时,从第二次开始必须重命名
  • 关系重命名后,Select 和 Where 子句中的前缀是使用新的关系名

示例:

  • 关系 R: 选修成绩
  • 问: 谁的物理成绩高于王红的物理成绩?
Select    S.姓名 
From      R, R  as  S
Where     R.课程='物理' and R.姓名='王红' 
      and S.课程='物理' and R.成绩 < S.成绩


(4)连接关系

连接类型:

  • inner join : 内连接,结果不包含失配元组 * (备注:* 这里失配元组指的是因不满足连接条件,无法和其它元组相连接的元组)
  • outer join : 外连接,结果包含失配元组 * (备注:* 这里失配元组指的是因不满足连接条件,无法和其它元组相连接的元组)
  • left outer join : 左外连接,结果包含左边关系的失配元组
  • right outer join : 右外连接,结果包含右边关系的失配元组
  • full outer join : 全外连接,结果包含两边关系的失配元组

① 条件连接 / 内连接

示例:

select  ∗
from    s,sc
where   s.sno=sc.sno
select      ∗
from        s   
inner join  sc
on          s.sno=sc.sno


② 外连接

示例:

select            ∗
from              s 
right outer join  sc
on                s.sno=sc.sno
select           ∗
from             sc 
left outer join  s
on               s.sno=sc.sno


③ 左外连接

示例:

Select           Emp.姓名, Dept.名称 as 部门
From             Emp 
left outer join  Dept 
on               Emp.部门号=Dept.部门号


④ 右外连接

示例:

Select            Emp.姓名, Dept.名称 as 部门
From              Emp 
right outer join  Dept 
on                Emp.部门号=Dept.部门号


⑤ 左 / 右外连接

示例:

select           ∗
from             s 
left outer join  sc
on               s.sno=sc.sno
select            ∗
from              sc 
right outer join  s
on                s.sno=sc.sno


⑥ 全外连接

示例:

Select           Emp.姓名, Dept.名称 as 部门
From             Emp 
full outer join  Dept
on               Emp.部门号=Dept.部门号



五、SQL 的「数据修改」功能

  • **插入:Insert 语句 **
  • **删除:Delete 语句 **
  • **更新:Update 语句 **

(1)插入:Insert 语句

① 格式一

注意:

  • 所列值的个数必须和属性的个数相等,且一一对应
  • 在插入的新元组中,对没有指定的属性填入缺省值(Create Table时定义),没有缺省值时填入空值

示例:

Insert Into R Values (‘刘朝', '物理', 80)

示例:

  • 新建表 S
Create  Table  Student (
               学号   VARCHAR (4),
               姓名  VARCHAR(10)  not  null,
               年龄  SMALLINT  default  22,
               班级  VARCHAR(20)
)
  • 在 S 中插入元组
Insert  Into  Student (学号, 姓名)  Values  (1, '小刘') 


② 格式二

注意:

同样地,对其它的属性填入缺省值或空值

** 示例:**

  • 添加所有学生选修数学课程的信息
Insert  Into  R(姓名, 课程)
Select        姓名,课程  
From          S,  C
Where         课程='数学'


(2)删除:Delete 语句

说明:

  • 在关系中找到满足条件的元组,并删除之
  • 如果没有 Where 子句,表示删除关系的全部元组 (保留结构)
  • 一次只能删除一个关系中的元组

示例:

  • 删除全部选修信息
Delete  From  R


(3)更新:Update 语句

说明:

  • 在关系中找到满足条件的元组,然后更新:表达式1的值赋予属性1;表达式2的值赋予属性2……
  • 没有 Where 子句时,则对关系的全部元组都要更新

示例:

  • 给销售部门的职工增加10%的工资
Update  employ 
Set     工资=工资*1.1
Where   部门='销售'



六、汇总

具体 SQL 实战操作查看我的另一博文:

【Access】实战:Access 操作 SQL 「学生」

① 创建表格

CREATE TABLE table_name 
( column1 datatype, column2 datatype, column3 datatype, ..... );

② 插入数据

INSERT INTO table_name 
       (column1, column2, column3, ....) 
VALUES (value1, value2, value3, ....);

③ 查询数据

SELECT column1, column2, ... 
FROM table_name 
WHERE condition;

④ 更新数据

UPDATE table_name 
SET column1 = value1, column2 = value2, .... 
WHERE condition;

⑤ 删除数据

DELETE FROM table_name 
WHERE condition;

⑥ 连接数据

SELECT * 
FROM table1 
INNER JOIN table2 
ON table1.column = table2.column;

⑦ 排序数据

SELECT column1, column2, ... 
FROM table_name 
ORDER BY column1 
ASC/DESC, column2 
ASC/DESC, ...;

⑧ 分组数据

SELECT column1, SUM(column2) 
FROM table_name 
GROUP BY column1;

⑨ 创建索引

CREATE INDEX index_name ON table_name 
(column1, column2, ...);

⑩ 删除索引

DROP INDEX index_name ON table_name;
标签: 数据库 sql Access

本文转载自: https://blog.csdn.net/qq_39720249/article/details/130355925
版权归原作者 顾三殇 所有, 如有侵权,请联系我们删除。

“【Access】Access:SQL 语句汇总”的评论:

还没有评论