SQL语句说明

来源:互联网 发布:python软件开发 编辑:程序博客网 时间:2024/06/08 10:01

一 、 基础概念

1. 数据库(database)  保存有组织的数据的容器(通常是一个文件或一组文件)。

2. 表 (table) 某种特定类型数据的结构化清单。(关键点:存储在表中的数据是一种类型的数据或一个清单

3. 列 (column)表中的一个字段。所有表都是由一个或多个列组成的;行(row)表中的一个记录/数据库记录(record)

4. ★主键(primary key)一列(或一组列),其值能够唯一标识表中每个行。使用关键字primary  key 添加。

     满足条件:1. 任意两行都不具有相同的主键值;

                       2. 每个行都必须具有一个主键值(主键列不允许NULL值,如果主键是NULL,就不能唯一);

                       3. 主键列中的值不允许修改或更新;

                       4. 主键值不能重用(如果某行从表中删除,它的主键不能赋给以后的新行)。

5. 外键:是表中的一个列,其值必须在另一表的主键中列出。使用references 关键字定义。一个表可以有多个外键。

6. SQL (Structured Query  Language) 结构化查询语言。

7. 关键字(keyword)作为SQL组成部分的保留字,关键字不能用作表或列的名字。

8. 子句(SQL语句由子句构成,有些子句是必需的,而有的可选,一个字句通常由一个关键字加上所提供的数据组成。)

9. 字段 (field) 基本上与列的意思相同,经常互换使用,不过数据库一般称为列,而术语字段通常用在计算字段的连接上。

二、 函数的使用

9.  取当前日期函数用法:Access使用NOW() ;MySQL使用curdate();Oracle使用sysdate() ; SQL Server使用 GETDATE() ;

10. 可移植性 (portable)所编写的代码可以在多个系统上运行。

11. 大多数SQL实现支持以下类型的函数

      ① 用于处理文本串(如删除或填充值,转换值为大写或小写)的文本函数;

      ② 用于在数值数据上进行算术操作(如返回绝对值,进行代数运算)的数值函数;-

   ★③ 用于处理日期和时间值并从这些值中提取特定成本(如返回两个日期之差、检查日期有效性)的日期和时间函数; to_char ()函数用来提取日期的成分;to_number()用来将提取出的成分转换为数值; to_date()函数用来将两个串转换为日期。

      ④ 返回DBMS正使用的特殊信息(如返回用户登录信息)的系统函数。

12. 聚集函数 ( aggregate  function )  运行在行组上,计算和返回单个值的函数。

      ① 包括:AVG()返回某列的平均值;COUNT()返回某列的行数;MAX()返回某列的最大值;MIN()返回某列的最小值;SUM()返回某列值之和。

     ② distinct 参数一般只应用于count()函数,对于MAX()以及MIN()函数无意义。

三、分组数据

1.   group by 子句的使用要求:

      ① group by 子句可以包含任意数目的列。这使得能对分组进行嵌套;

      ② 在建立分组时,指定的所有列都一起计算;

      ③ group by 子句中列出的每个列都必须是检所列或有效地表达式(但不能是聚集函数),不能使用别名;

      ④ 除聚集计算语句外,select 语句中的每个列都必须在group by 子句中给出;

      ⑤ 如果分组列中具有NULL 值,则NULL将作为一个分组返回,如果列中有多行NULL值,它们将分为一组。 

2.  一般在使用 group by 子句时,应该也给出 order  by 子句,这是保证数据正确排序的唯一方法。

3.  having 和 where 的差别:where在数据分组前进行过滤,having 在数据分组后进行过滤。

4.  子查询 (subquery)嵌套在其他查询中的查询。注意:子查询最常见的使用是在where子句的IN操作符中,以及用来填充计算列;子查询总是从内向外处理;作为子查询的 select 语句只能查询单个列

5.  组合查询:SQL也允许执行多个查询(多条 select 语句),并将结果作为单个查询结果集返回。这些组合查询通常称为(union)或复合查询(compound  query);可用 UNION操作符来组合数条SQL查询(在查询结果集中自动去除可重复的行)。

     ①  在单个查询中从不同的表类似返回结构数据,需要使用组合查询。

     ②  对单个表执行多个查询,按单个查询返回数据,需要使用组合查询。

     ③  UNION规则:必须由两条以上的select语句组成,语句之间用关键字UNION分隔(因此,如果组合4条select语句,将要使用3个UNION关键字);UNION中的每个查询必须包含相同的列、表达式或聚集函数(各个列不需要以相同的次序列出);列数据类型必须兼容:类型不必完全相同,但必须是DBMS可以隐含地转换的类型(如不同的数值类型或不同的日期类型)。

     ④  如果想返回所有匹配行,可使用UNION ALL关键字。

6.  Oracle 数据库没有 as 关键字。

四、联接表

1.  可伸缩性(scale)能够适应不断增加的工作量而不失败。因此关系数据库的可伸缩性远比非关系数据库要好。

2.  联接:是一种机制,用来在一条 select 语句中关联表,因此称之为联接。使用特殊的语法,可以联接多个表返回一组输出,联接在运行时关联表中正确的行。

3.  创建方式:规定要联接的所有表以及他们如何关联即可。包括内部联接(inner join 关键字)、自联接(等同于子查询)、自然联接(排除多次出现,使每个列只返回一次)、外部联接(使用关键字 outer  join 指定联接的类型;  在使用 outer  join 语法时,必须使用 right 或 left 关键字指定包括其所有行的 表)

4.  外部联接形式:(左外部联接(left outer join)、右外部联接(right outer join)相当于vlookup、全外部联接(full outer join)

5.  完全限定列名:在引用的列可能出现二义性时,必须使用完全限定列名(用一个句点分隔的表名和列名)。应保证所有联接都有 where 子句。

6.  笛卡儿积:由没有联接条件的表关系返回的结果为笛卡儿积。检索出的行的数目将是第一个表中的行数乘以第二个表中的行数。

五、视图

1.   视图是虚拟的表,与包含数据的表不一样,视图只包含使用时动态检索数据的查询。

2.   视图的应用:重用SQL语句;简化复杂的SQL操作,在编写查询后,可以方便地重用它而不必知道它的基本查询细节;使用表的组成部分而不是整个表;保护数据,可以给用户授予表的特定部分的访问权限而不是整个表的访问权限;更改数据格式和表示,试图可返回与底层表的表示和格式不同的数据。


原创粉丝点击