暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Access数据库相关知识

规划人在路上 2021-04-27
846


-1st- 

规范化

 

建立一个规范的数据库其实是一个比较高深的学问,不过好在我们并不需要太规范。

 

我们只要记住:一张表只有一个主题,如“居住区情况”表

每个表需要遵循以下范式:

 

第一范式:表的每个字段只能包含一个值,并且该表不能包含重复的数据组

 

第二范式:将不直接依赖表主键的数据迁移到另一个表,即需要识别不同的“实体”

 

*主键,是表中每条数据的唯一识别编码。实体,可以理解为一个不能再细分的主题。

 

比如,公园到访者的数据表,可能包含的实体有:公园信息(主键是公园编号),到访者的信息(主键是到访者编号),到访者居住地的信息(主键是居住地编号)一共有2个实体,即3张表。

 

第三范式:要求移除所有可以派生自表中(或其他数据库的其他表中)其他字段包含的数据字段

 

-2nd- 

创建表格

 

可以手动创建表格,并在Access中手动输入数据,倒是还是建议把原始乱七八糟的Excel表格导入Access之后,再利用SQL查询语句,按照规范化标准来建立数据库。而不是用Excel处理后再导入Access,因为太低效了。

 

为了后期便于表格的交叉查询,表格名称请用英文命名,表格中的字段也要使用英文。可以采用“驼峰命名法”或下划线分隔的方式,如表名PeopleDense,字段名Grid_id

 

-3rd-

导入导出

 

Access支持多种导入、导出数据的方式。以Excel文件格式为例

 

1)导入:表对象中,右键——导入——Excel,一路确定,按需修改


2)导出:选中表格,或者某个查询结果(需先保存)——右键——导出——Excel,选择保存位置——确定

 

-4th- 

SQL查询

 

01   简介

 

SQL(StructuredQuery Language),结构化查询语句。不同的数据库软件语法有所不同。接下来的语法规则,主要是针对Access数据库。

 

SQL语句是Access中管理、处理数据的最高效方法,使用:创建选项卡——查询功能块——查询设计(会自动跳出来一个选择表格的窗口,关掉)——选择SQL视图(左上角)

 

*一个表格一共有三个视图,1)数据表视图:类似Excel的显示界面,用于显示数据;2)设计视图,用于限定、备注、创建、删除字段;3)SQL视图,用于书写SQL查询语句

 

SQL语句符合英文语言习惯:我要选择什么数据,从哪个表,限定条件是什么,查询结果如何排序……

 

02   语法

 

I      简单查询  

 

i      提取列(Select)

 

    SELECT column1
    FROM Table1

     

    ii     限定列提取条件(Where)

     

      SELECT Column1(*代表所有列)
      FROM Table1
      Where Column1 = 'Row1';
            Column1 > x;
      Column1 IN/NOT IN ('x','y','z');
      Column1 BETWEEN x AND y;
      Column1 LIKE/NOT LIKE 'a_ xxx';
      Column1 IS/IS NOT NULL

       

      1.    多个限定条件时,每个条件之间用AND/OR连接

       

      2.    通配符的使用(引自某本书):


      字符

      说明

      示例

      *(星号)

      匹配任意数量字符

      Ford*可以找到Ford Mustang

      ?(问号)

      匹配单个字符

      F?rd可以找到Ford

      [](方括号)

      匹配字符列表一个字符

      19[67]1可以找到19611971

      !(感叹号)

      配合方括号使用,可以排除字符列表中的字符

      19[!67]可以找到1951,但不能找到19611971

      -(连字符)

      配合方括号使用,可以匹配指定范围内的字符

      196[2-8]可以找到19621968

      #(井号)

      匹配一个数字

      1:##可以找到1:18,但不能找到1:9

       

      3.    不能将条件写成 where 1<Column1<2,而要分成两个条件,whereColumn1>1 and Column1<2

       

      iii     对查询结果排序(Order by)

       

        SELECT x
        FROM x
        ORDER BY Column1;
        (按照Column1排序结果,默认升序排列)
        ORDER BY Column1 ASC/DESC;
        (升序/降序)
        ORDER BY Column1 DESC,Column2 ASC;
        (先按Column1降序排列,接着在Column1中按Column2升序排列)

         

        iv     限定查询数量(Limit)

         

          Select x
          from x
          limit a;
          (从第一条数据开始获取a行数据)
          limit a offset b;
          (从(b+1)条数据开始,取 a条数据)

           

          v     聚合函数(分组查询Group by)

           

          包括COUNT计数、SUM(求和)、AVG(求平均)、MAX(最大)、MIN(最小),在select中使用。

           

            SELECT COUNT(Column1)
            FROM Table1;
            (计算统计结果中行的数目)

             

            函数和列名共用的情况

              SELECT Column1,Count(*)
              FROM Table1
              GROUP BY Column1;(按Column1分组)
              (HAVING COUNT(*)>1;)
              (Having用于添加条件,在分组查询结果中再进行筛选)

               

              Select中使用聚合函数的列,可以不在Group by中列出,没有使用聚合函数的列一定要在Group by 中列出。

               

              各语句执行顺序是:WHERE字句、GROUP字句、聚合函数、HAVING字句

               

              vi     一些规则

               

              1)As用于查询后重命名字段,或查询中简化表格名称,如Select Column1 as Name from……;Select x fromPeopleDense as t

              2)(‘’)单引号用于限定字符内容

              3)([])方括号用于限定容易产生歧义的名称,如[Grid_id]>1

              4)(())圆括号用于运算分级

               

              II     高级查询  

               

              i      提取列并去重(Distinct)

               

                SELECT Distinct column1
                FROM Table1

                 

                ii     条件语句

                 

                1.    IIF

                 

                  Select iif(expression, truepart, falsepart)
                  From x

                   

                  2.    SWITCH

                   

                    SELECT
                    SWITCH(
                    condition,result
                    …………
                    True,result
                    )
                    From table

                     

                    1)不必枚举所有情况,true不是非得有——可用于拆分信息

                     

                      Select
                      count(switch(xb='1',1))as male,
                      count(switch(xb='1',1)as female
                      From x

                       

                      2)Result可以是包含其他列的表达式,Condition也可以包含其他列

                       

                      iii     常用函数

                       

                      1.    字符函数

                       

                      用法与Excel相同,如Left(字段名称,所取字符数),Mid(),Right()和Replace()函数等

                       

                      更多请转:http://accessoft.com/article-show.asp?id=3333

                       

                      2.    运算结果限定

                       

                      1)Round(Value,num),对Value进行四舍五入,结果保留num位数。

                       

                      2)int()/fix()

                      Int(向下取整)和Fix(向上取整)均删除数字的小数部分, 并返回得到的整数值。

                      Int和Fix之间的区别在于, 如果Number为负数, 则int返回小于或等于number的第一个负整数, 而Fix返回大于或等于的第一个负整数

                       

                      III     交叉查询  

                       

                      i      多个表

                       

                      从多个表中查询数据,From字句中列出涉及的表格名称,Where语句中添加多个表格的关联字段即可

                       

                      查询两个表:

                        SELECT A.Column1,B.Column2
                        FROM Table1 AS A,Table2 AS B
                        WHERE A.Column3=B.Column4

                         

                         

                        查询三个及以上的表:

                          SELECT A.Column1,C.Column2
                          FROM Table1 AS A,Table2 AS B,Table3 AS C
                          WHERE A.Column3=B.Column3
                          AND B.Column4=C.Column4

                           

                          ii     嵌套表

                           

                          分步查询,语句撰写思路是先写第一步语句,验证通过后在外层继续写第二步语句……

                           

                            SELECT A.Column1,B.Column2
                            FROM (
                            Select Column1
                            From Table1) AS A,Table2 AS B
                            WHERE A.Column3=B.Column4

                             

                            iii     联合查询

                             

                            把两次查询的结果放在一张表中显示,前提是他们的字段数目相同

                             

                              Select Column
                              From Table1
                              Union
                              Select Column
                              From Table2

                               

                              看上去好像和前面的多个表、嵌套查询相似,但是有的时候还是会用上联合查询的。

                               

                              IV    管理表格  

                               

                              简单的创建表格、字段,修改某行信息等操作可以在数据表格视图完成,但是涉及大量的修改、更新和维护就需要用到SQL查询语句了。

                               

                              i      删除操作

                               

                              1.    删除行

                               

                                Delete from table_name
                                Where row='xx';

                                 

                                2.    删除列

                                 

                                  Alter table table_name
                                  Drop column column_name

                                   

                                  3.    删除表

                                   

                                    Drop table table_name;

                                     

                                    ii     更新查询

                                     

                                    用于更新表格信息。

                                     

                                      Update table1,table2
                                      Set
                                      table1.column1=table2.column2,
                                      table1.column3=5*column3
                                      Where table1.ID=table2.ID

                                       

                                      iii     追加查询

                                       

                                      用于在已有表格中新增记录行

                                       

                                      1.    单记录追加查询

                                       

                                        INSERT INTO table [(Column1[,Column2……])]
                                        [IN externaldatabase]
                                        VALUES (value1[, value2[, …])

                                         

                                        2.    多记录追加查询

                                         

                                          INSERT INTO table [(Column1[, Column2……)]
                                          [IN externaldatabase]
                                          SELECT x
                                          FROM x
                                          Where x

                                           

                                          Table表格可以链接外部数据插入

                                          IN语句:IN"Path" "Type;"

                                            IN "c:\documents\xldata.xls""EXCEL 5.0;"

                                             

                                            iv     查询并创建表格

                                             

                                            用于将查询结果保存为数据库中的表格

                                             

                                              Select Columns into TableName
                                              From table
                                              Where conditions

                                               

                                               

                                              -5th-

                                              后话

                                               

                                              数据库使用,尤其是SQL语句的书写过程中还会遇到各种各样的问题,这里不可能一一而足,后面需要自行搜索解决,如“Access的SQL xxx怎么实现”。更多信息请转Access官方帮助文档。

                                               

                                              其实完整的数据库学习还应当包括窗体和报表,窗体可以用于设定简单的数据录入、管理的程序界面,报表呢则是更规范地展现查询结果——这些,我都不常用上,感兴趣的自行学习。

                                              文章转载自规划人在路上,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                              评论