SQL查询语言?
写在前面:SQL查询语言对我们应该是非常重要的,以后在就业的时候,还是查询用的多,故而做出本章笔记,意在系统地理清学习思路,不至于思路以及知识点一团糟。
首先对于任何章节,我们都要有个清晰的思路,以下是第三章SQL查询语言的大纲,首先列出来:
1、SQL概述
由以上大纲图,我们可知,在SQL概述中我们主要由四大部分:SQL发展、SQL语言的组成、SQL特点、SQL查询基本概念。
1.1 SQL发展?
以下是SQL发展的过程(以下是SQL语言的名字):
主要是以上四个阶段,每个阶段不再详细叙述,感兴趣的可以查阅资料;
值得一提的是:目前许多数据库厂商都支持SQL-92的绝大多数标准,以及SQL-99和SQL-2003的部分标准,并对SQL语言进行了扩展
(不同厂家都有SQL语言的扩展,并有不同名字:Oracle产品将SQL称为PL/SQL,Sybase和Microsoft SQL Server 产品将SQL称为Transact-SQL。)
1.2 SQL语言的组成
这部分虽然老师没仔细讲解,但我认为这对我们了解SQL语言还是有很大的帮助。
- 数据定义语言(DDL):主要用于定义数据库的逻辑结构,包括数据库、基本表、视图、索引等;DDL包括三类语言,定义、修改、删除。
- 数据操纵语言(DML):主要是对数据库数据的检索和更新。
- 数据库控制语言(DCL):主要是对数据库的对象进行授权、用户维权(创建修改删除)、完整性规则定义、事务定义。
- 其他:嵌入语言和动态语言的定义、规定了SQL语言在宿主语言中使用的规则、扩展了SQL还包括数据库数据的重新组织、备份与恢复等功能。
1.3 SQL特点
我们还是先放大纲图,以便于大家了解。
这些特点在这里不上官方术语,我大概描述主要内容,要想查看具体内容,找到了王珊老师的内容跟我们的很相似,点击这里
- 综合统一:SQL语言将数据定义语言(DDL)、数据操纵语言(DML)、数据控制语言(DCL)的功能于一体。
- 高度非过程化:SQL语言进行数据操作时,用户只需要描述做什么、不必指明怎么做。
- 面向集合的操作方式:采用集合操作方式,其操作对象、操作结果都是元组的集合。
- 同一种语法结构提供两种使用方式:SQL语言既是自含式语言(主要特点为嵌入到高级语言中执行,不能单独使用;),又是嵌入式语言(能嵌入到高级语言程序中的语言)。
- 语言简洁:sql语言
真的好难简洁明了,易学易用。
1.4 SQL查询基本概念
SQL查询的基本概念:基本表、视图、查询表、存储文件。
- 基本表:数据库中独立存在的表称为基本表。(切记是独立存在!!!)
- 视图:视图是指从一个或几个基本表(视图)中导出的表,是虚表,只存放视图的定义而不存放对应的数据。
- 查询表:查询表是指查询结果对应的表。
- 存储文件:存储文件是指数据库中存放关系的物理文件,其逻辑结构组成了关系数据库的内模式,其物理结构对用户是透明的。
2、单表查询
单表查询的大纲图,如下:
2.1 sql三个基本结构的子句
-
SELECT子句
SELECT子句对应于关系代数中的投影运算,用来指定查询结果中所需要的属性或表达式。 -
FROM子句
FROM子句对应于关系代数中的笛卡儿积,用来查询所涉及的表(基本表、视图、查询表) -
WHERE子句
WHERE子句对应于关系代数中的选择运算,用来指定查询结果元组中所需要满足的选择条件。
OK,兜兜转转说了那么多,也没有见着怎么去使用SQL语言,现在开始,不过在本章节全部都是单表查询下的,也就是只是一个表没有和其它表连接在一起,现在开始步入正题:
2.2 投影运算
为了方便理解记忆,我做出了大纲图,如下:
消除重复元组
- sql查询中,默认不消除重复元组,要消除重复元组,可使用关键字DISTINCT。
- 消除重复元组的作用效果是将多个重复的元组消除,例如:
institute | |
---|---|
1 | 会计学院 |
2 | 会计学院 |
3 | 信息管理学院 |
4 | 信息管理学院 |
5 | 计算机学院 |
6 | 计算机学院 |
在使用关键字DISTINCT后,sql语句如下:
SELECT DISTINCT institute
FROM Class
使用方法也是如此在所要消除重复元组的表前加关键词DISTINCT,该语句产生的效果为:
institute | |
---|---|
1 | 会计学院 |
2 | 信息管理学院 |
3 | 计算机学院 |
查询所有列
- 查询所查表的所有列,使用的符号:
*
- 用法举例:
SELECT *
FROM Class
给属性列表取别名
- 主要的作用是在SELECT映射出来的表中的列取别名。
- 方法1:可在列名后加AS别名
- 方法2:直接在列名后加别名
- 用法举例:
1、SELECT classNO AS 班级编号
FROM Class
2、SELECT classNO 班级编号
FROM Class
取别名前:
classNO | |
---|---|
1 | 3 |
2 | 4 |
取别名后:
班级编号 | |
---|---|
1 | 3 |
2 | 4 |
取名是为了帮助我们直观地看出我们所查询的信息。
查询经过计算的列
- SELECT可直接+列名,但也可以加相关函数以及计算方式,在计算列名后有默认显示值,也可取别名。
- 用法:
select lower(classname) 课程名
from class
其中,函数lower()表示将大写字母改为小写字母,查询结果示例:
课程名 | |
---|---|
1 | 大学语文 |
2 | c语言程序设计 |
未完待续,持续更新