数据库学习笔记——SQL语言

Posted 归止于飞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库学习笔记——SQL语言相关的知识,希望对你有一定的参考价值。

3.1 SQL概述

3.1.1 SQL的产生与发展

注意:

  • 目前没有一个数据库系统能够支持SQL标准的所有概念与特性
  • 许多厂商对SQL基本命令集进行了修改与扩充,可以支持标准以外的一些功能特性

3.1.2SQL的特点

SQL集数据查询,数据操纵,数据定义,数据控制功能于一体:

1.综合统一

非关系模型(层次模型、网状模型)

(1)模式数据定义语言

(2)外模式数据定义语言

(3)数据存储有关的描述语言

(4)数据操纵语言

它们分别用于定义模式。外模式、内模式和进行数据的存取与处置。

SQL的操作要求:

  • 定义和修改,删除关系模式,定义和删除视图,插入数据,建立数据库
  • 对数据库中的数据进行查询和更新
  • 数据库的重构和维护
  • 数据库安全性、完整性控制,以及事务控制

2.高度非过程化

非关系数据模型采用的是“面向过程”的语言。

在用SQL语言进行数据操作时,只需要提出做什么,无需指明怎么做,无需了解存取路径。存取路径的选择以及SQL的操作由系统自动完成

3.面向集合的操作方式

4.以同一种语言提供多种使用方式

5.语言简洁,易学易用

SQL功能动词
数据查询SELECT
数据定义CREATE,DROP,ALTER
数据操作INSERT.UPDATE,DELETE
数据控制GRANT,REVOKE

3.1.3 SQL的基本概念

支持SQL的关系数据库管理系统同样支持关系数据库的三级模式结构。

基本表是独立存在的表,在关系数据库管理系统中一个关系就对应一个基本表。

3.2 学术-课程数据库

定义以下三个表:

3.3 数据定义

SQL的数据定义功能包括模式定义,表定义,视图和索引的定义

SQL标准不提供修改模式的定义和修改视图的定义的操作,如果用户想修改,就必须先删除然后重建。

3.3.1 模式的定义与删除

1.定义模式

在SQL语句中,模式定义的语句如下:

CREATE SCHEMA<模式名>AY=UTHORIZATION<用户名>

定义模式实际上定义了一个命名空间,在这个空间内可以进一步定义该模式包含的数据库对象,比如基本表,视图,索引。

2.删除模式

在SQL中,删除模式语句如下:

DROP SCHEMA<模式名><CASCADE|RESTRICT>

其中CASCADE,RESTRICT必选其一。

  • CASCADE(级联),表示在删除模式的同时把该模式下的所有数据库对象全部删除。
  • RESTRICT(限制),表示如果该模式中以及定义了下属的数据库对象,则拒绝该语句的执行。只有在没有任何下属对象时才能执行DROP SCHEMA

3.3.2 基本表的定义、删除与修改

1.定义基本表

**创建了一个模式就建立了一个数据库的命名空间,一个框架。**在这个空间中首先要定义的时该模式包含的数据库基本表。

SQL语言使用到create table语句建立基本表。

参照表与被参照表可以是同一个表

2.数据类型

每一个属性来自一个域,它的取值必须是域中的值。SQL中域的概念用数据类型来实现,定义表的各个属性时需要指明数据类型及其长度。注意:不同关系数据库管理系统中支持的数据类型不完全相同。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-89D7uXdn-1639485052632)(C:\\Users\\小帆\\AppData\\Roaming\\Typora\\typora-user-images\\image-20211127204310675.png)]

在选择属性的数据类型时,需要根据实际情况进行确定,一个是取值范围,一个是需要进行的运算。

3.模式与表

每个基本表都属于一个模式,一个模式包含了多个基本表。

如果需要定义基本表,有三种方法:

  • 在表名中明显地给出模式名
  • 在创建模式语句中创建表
  • 设置所属的模式,这样在创建表时表名中不必给出模式名。

使用以下语句显示当前搜索路径:

SHOW serch_path

4.修改基本表

随着应用需求的变化,有时需要修改已建立好的基本表。SQL语句使用ALTER TABLE语句修改基本表。其一般格式为:

5.删除基本表

当某个基本表不再需要时,可以使用DROP TABLE语句删除它。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ax8vKjZ4-1639485052634)(C:\\Users\\小帆\\AppData\\Roaming\\Typora\\typora-user-images\\image-20211129214838005.png)]

3.3.3 索引的建立和删除

常见的索引有:顺序文件的索引,B+树索引,散列索引,位图索引。

1.建立索引

建立索引时加快查询速度的有效手段。数据库索引类似于弹一首后面的索引,加速定位到需要查询的内容。一般使用的SQL语句为

CREATE [UNIQUE][CLUSTER] INDEX<索引名>
ON<表名>(<列名>)[<次序>]

UNIQUE 表示索引的每一个索引值只对应唯一的数据记录。

CLUSTER表示所有要建立的是聚簇索引。

2.修改索引

对于已经建立好的索引,可以使用ALTER INDEX语句对其重新命名。

ALTER INDEX <OLD> RENAME TO <NEW>

3.删除索引

使用DROP INDEX语句可以删除不必要的索引。

3.3.4 数据字典

3.4 数据查询

数据查询是数据库的核心操作,SQL提供了SELECT语句进行数据查询,一般格式为

整个SELECT语句的意思是,根据WHERE子句的条件表达式从FROM子句指定的基本表,视图,或派生表中找出满足条件的元组,再按SELECT子句的目标表达式选出的元组中的属性值形成结果表。

3.4.1 单表查询

单表查询是仅涉及到一个表的查询。

1.选择表中的若干列

选择表中的全部或者部分列即关系代数的投影运算。

(1)查询指定列

(2)查询全部列

(3)查询经过计算的值

SELECT中的<目标表达式>不仅可以是算术表达式,还可以是字符串常量,函数。

2.选择表中的若干元组

(1)消除取值重复的行

可以使用DISTINCT消除元组投影后的某些列中。

(2)查询满足条件的元组

可以使用WHERE语句实现查询满足条件按的语句。

3.ORDER BY子句

用户可以用ORDER BY子句对查询结果按照一个或多个属性列的升序(ASC)或降序(DESC)排列,默认值为升序。

对于控制,排序时按照具体的系统实现决定。

4.聚集函数

为增强检索功能,SQL提供了很多聚集函数:

当聚集函数遇到空值时,除了COUNT(*)外,都跳过控制而只处理非空值。

3.4.2 连接查询

当一个查询针对两个以上的表时,则称之为连接查询。

连接查询时关系数据库中最主要的查询,包括:等值查询、自然连接查询、非等值连接查询、自身连接查询、外连接查询和符合条件连接查询。

1.等值与非等值连接查询

连接查询的Where子句中用来连接两个表的条件为“连接条件”或“连接谓词”,其一般格式为

连接谓词中的列名称为连接字段。

注意:连接条件中的各个连接字段类型必须是可比的,但是名字不必相同。

2.自身连接

连接操作可以是一个表与其自己进行连接,即表的自身连接

3.外连接

左外连接列出左边关系中所有元组,右外连接列出右边关系所有的元组。

4.多表连接

两个以上的表进行连接即为多表连接。

3.4.3 嵌套查询

上层循环块称为外层循环或父循环,下层循环称为内层循环或子循环。

嵌套循环使用多个简单循环构成复杂循环,从而增强SQL的查询能力,以层层嵌套循环的方式构造程序正是sql的结构化含义所在。

3.4.4 集合查询

3. 4. 5 基于派生表的查询

子循环不仅出现在where语句中,也可以出现在from语句中,这时子循环生成的临时派生表成为主循环的查询对象。

通过from子句生成的派生表时,AS关键字可以省略,但必须为派生表关系知道的一个别名。

3.4.6 SELECT语句的一般格式

3.5 数据更新

3.5.1 插入数据

1.插入元组

insert into<表名>[<属性列1>...] values(<常量>...)

功能:将新元组插入指定表中。

注意:若INTO语句中没有指明任何属性列名,则新插入的元组必须再每个属性列上均有值。且字符串常量需要用单引号括起来。

2.插入子循环结果

子循环可以嵌套再SELECT语句中用故意构造父循环的条件。

3.5.2 修改数据

3.5.3 删除数据

注意:delete * from table_name 仅仅能删除表中的数据,不能清空标识,删除表中数据后再写入数据时,标识符会从删除前标识最大加一开始

表的定义仍在字典中,DELET语句删除的时表中的数据,而不是表的定义。

3.6 空值的处理

空值即“不知道”,“不存在”,“无意义”的值。一般有以下情况;

因此,空值是一个特殊的值,含有不确定性,对于关系运算带来特殊的问题,需要做特殊的处理。

1.空值的产生

2.空值的判断

判断一个值是否为空值,使用IS NULL或IS NOT NULL来表示。

3.空值的约束条件

4.空值的算数运算、比较运算和逻辑运算。

3.7 视图

3.7.1 定义视图

1.建立视图

2.删除视图

3.7.2 查询视图

首先坚持表,视图是否存在,若存在,则从数据字典中取出视图地定义,把定义中的子查询和用户地查询结合起来,转换为等价地对基本表地查询,然后秩序修正了的查询。这个转换过程为视图消解

3.7.3 更新视图

视图的更新类似于表格:即插入(INSERT)、删除(DELETE)、修改(UPDATE)。

由于视图式不实际存储数据的虚表,因此对视图的更新最终要转换道对基本表的更新。

3.7.4 视图的作用

1.视图可以简化用户的操作

2.视图使用户以多种视角看待同一数据

3.视图对重构数据库提供了一定逻辑独立性

4.视图能对机密数据提供安全保护

5。适当利用视图可以更清晰地表达查询

以上是关于数据库学习笔记——SQL语言的主要内容,如果未能解决你的问题,请参考以下文章

LINQ学习笔记

pl/sql 基础笔记(上)

学习笔记:python3,代码片段(2017)

数据库学习笔记——SQL语言

MySQL学习笔记 SQL的语言分类

sql 入门经典(第五版) Ryan Stephens 学习笔记 (第一章)