【数据库概论】3.1 SQL简述、数据定义和索引

news2024/9/22 13:29:41

第三章 关系数据库标准语言SQL

目录

  • 第三章 关系数据库标准语言SQL
    • 3.1 SQL概述
      • 3.1.1 产生与发展
      • 3.1.2 SQL的特点
      • 3.1.3 SQL的基本概念
    • 3.2 数据库实例
    • 3.3 数据定义
      • 3.3.1 模式的定义和删除
      • 3.2.2基本表的定义、删除和修改
        • 1.常见数据类型
        • 2.定义基本表
        • 3.修改基本表
        • 4.删除基本表
        • 5.模式和表
        • 6.索引的建立和删除

3.1 SQL概述

3.1.1 产生与发展

最早在IBM的关系数据库管理系统原型SystemR上实现,后来美国国家标准局(ANSI)批准SQL作为关系数据库语言的美国标准,同年公布了SQL标准文本。近些年来SQL标准的内容越来越丰富和复杂。目前没有任何一个数据库系统能够支持SQL标准的所有概念和特性,同时不少软件厂商对SQL基本命令集合进行了不同程度的修改和扩充,又可以支持标准外的一些功能特性

3.1.2 SQL的特点

SQL的主要特点包括以下几部分:

1.综合统一

数据库系统的主要功能是通过数据库支持的数据语言来实现的。
非关系模型的数据语言一般分为:

  • 模式数据定义语言(模式DDL)
  • 外模式数据定义语言(外模式DDL)
  • 数据存储有关的描述语言(DSDL)
  • 数据操纵语言(DML)

曾经的用户数据库投入运行后,如果需要修改模式,必须停止现有数据库的运行,修改模式并且编译后再重装数据库,十分麻烦。而SQL可以独立完成数据库生命周期中的全部活动。因此用户在数据库系统投入使用后还可以根据需要随时的逐步的修改模式,并不影响数据库运行,从而使得系统具有良好的可扩展性。

2.高度非过程化

非关系数据库模型的数据操纵语言是面向过程的语言。而使用SQL的时候,只需要提出“做什么”而无需知名怎么做,因此无需了解存取路径。这个工作由系统自动完成。

3.面向集合的操作方式

SQL采用几何操作方式,对于CRUD的操作以及操作对象、查找结果等操作都可以对元组集合进行操作。

4.以统一语法结构提供多种使用方式

SQL既是独立的语言,也是嵌入式语言。SQL可以嵌入到高级语言的程序中,而且无论是独立使用还是嵌入使用,其语法结构是基本一致的吗,因此统一了在不同语境下的语法使用。

3.1.3 SQL的基本概念

在这里插入图片描述
用户可以使用SQL对基本表和视图进行基本操作,他们都是关系集合。
基本表是本身独立存在的表,在关系数据库管理系统中一个关系对应一个基本表。一个或者多个基本表对应一个存储文件,一个表可以带若干索引,索引也可以存放在存储文件中。视图是一个或者几个基本表导出的表,他不独立存储在数据库中,也就是视图是一个虚表,其中的信息是一个或者几个基本表的映射,通常用于供人查看。存储文件是数据的物理形式,存储文件的逻辑结构组成了关系数据库的内模式,其物理结构对最终用户是隐蔽的

3.2 数据库实例

以下的讲解都会以如下数据库为例子:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.3 数据定义

关系数据库系统支持三级模式结构,其模式、外模式和内模式中的基本对象有模式、表、视图和索引等。

在这里插入图片描述

一个关系数据库管理系统的实例中可以建立多个数据库,一个数据库中可以建立多个模式,一个模式下包含多个表、视图和索引等数据库对象。下文中的语句<>括号中的为输入内容,[]括号内的是可选内容

3.3.1 模式的定义和删除

模式定义语句如下:

CREATE SCHEMA AUTHORIZATION [

|]

创建模式需要拥有数据库管理员权限,或者获得了数据库管理员授予的CREATE SCHEMA权限。在创建模式的时候也可以执行创建基本表、视图等语句。定义模式实际上定义了一个命名空间,在这个空间中可以进一步定义该模式包含的数据库对象,比如基本表、视图、索引等,从语句可以看出,定义模式的同时需要将该模式的管理权限授权给某用户。

删除模式语句如下:

DROP SCHEMA <CASCADE|RESTRICT>

其中CASCADE和RESTRICT两者必选其一,CASCADE(级联)表示删除该模式的同时将模式中所有数据库对象都删除,RESTRICT(限制)指的是如果模式中定义了下属的数据库对象,则拒绝执行删除语句,除非该模式没有下属的对象。

3.2.2基本表的定义、删除和修改

1.常见数据类型

在学习如何操作基本表之前,我们先认识一些常用的数据类型

见书本P82在这里插入图片描述

2.定义基本表

定义基本表的格式如下:

CREATE TABLE

(
<列名><数据类型>[列完整性约束条件],
[<列名><数据类型>[列完整性约束条件],…]
[表完整性约束条件]
)

其中主要的列完整性约束条件有:
PRIMARY KEY 主键
FOREIGN KEY (外码名) REFERENCES 被参照表(被参照列) 外键
NOT NULL 非空
UNIQUE 唯一值

3.修改基本表

ALTER TABLE


[ADD [COLUME] <新列名><数据类型>[完整性约束]] // 新增表项
[ADD <表级完整性约束>] // 增加表约束
[DROP [COLUME] <列名> [CASCADE|RESTRICT]] // 删除表项
[DROP CONSTRAINT <完整性约束名> [RESTRICT|CASCADE]] // 删除表约束
[ALTER COLUME <列名><数据类型>] //修改列数据类型

其中ADD用于新增内容,DROP用于删除内容。DROP COLUMN用于删除列,如果指定了CASCADE则会在删除列之前先删除引用该列的其他对象,比如视图;如果指定了RESTRICT,则如果对象被引用,则RDBMS会拒绝删除该列。DROP CONSTRAINT 用于删除指定的完整性约束条件。ALTER COLUMN子句用于修改原有列的定义。

4.删除基本表

DROP TABLE <表名> [RESTRICT|CASCADE]

如果是restrict,则删除是有约束条件的,基本表不能被其他表的约束所引用(比如外键),不能有视图,也不能有触发器,不能有存储过程或者函数。如果有则删除失败。如果选择cascade,则该表删除没有限制条件,删除基本表的同时相关的依赖一并删除。

5.模式和表

一个模式包含了多个基本表,每一个基本表都属于一个模式,当定义一个基本表的时候有三种方法定义它所属的模式:
方法一:在表名中明显给出模式名

CREATE TABLE “S-T”.Student(…) //Student的模式是S-T

方法二:在创建模式语句中同时创建表

方法三,设置所属模式,在创建表时不需要给出模式名

使用语句

SHOW search_path

可以显示当前的搜索路径

6.索引的建立和删除

当表的数据量比较大的时候,查询操作会比较耗时,因此建立索引可以加快查询速度。数据库所以你类似于图书后面的索引内容,能够快速定位到需要查询的内容。数据库索引会有多种类型,包括顺序文件上的索引、B+树索引、散列索引等等。索引虽然会加速查询速度,但是需要占用一定内存空间,当基本表更新的时候,索引也要做出变更,因此需要一些维护开销。一般来说,建立和删除索引由索数据库管理员或者表的属主(owner)负责完成。关系数据库管理系统在执行查询时会自动选择合适的索引,用户不能显式选择索引。索引是关系数据库内部实现技术,属于内模式范畴。

常见索引形式
顺序文件索引是针对按照指定属性值升序或者降序的存储关系。
B+树索引是将索引属性组织成B+树的形式,B+树的叶节点为属性值和相应的元组指针。B+树具有动态平衡的优点
散列索引是建立若干个同,将索引属性按照其散列函数映射到相应的桶中
位图索引是用位向量记录索引属性中可能出现的值,每一个位向量对应一个可能值。

建立索引

在SQL语句中,建立索引语句如下:

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

表名是基本表名字,索引可与建立在该表的一列或者多列上,各列之间用逗号分隔,次序字段可选ASC(升序)和DESC(降序)
UNIQUE指该索引每一个索引值对应唯一的数据记录;CLUSTER指建立聚簇索引,聚簇索引会在后面介绍到

修改和删除

ALTER INDEX <旧索引名> RENAME TO <新索引名>
DROP INDEX <索引名>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/177169.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

英语学习打卡day3

2023.1.22 1.mariner n.水手 2.formation n.队形;组成;形成 n.形状;形式样式;表格 the formation of landscapes Keep the formation 保持队形 The chairs were arranged in the form of circle. fill in the form 填写表格 formal adj.正式的inform 通知deform 变形uniform 统…

06_平台总线匹配规则,自己搭建总线xbus

总结 bus_register() 自己创建平台总线 /sys/bux/xxx device_register() 对平台总线加入dev /sys/bus/xxx/dev driver_register() 对平台总线加入drv /sys/bus/xxx/drv 两个相匹配的时候 直接调用drv->probe 函数 进行基本的class_create() device_create()等 创建设备文件…

TryHackMe-红队-07_武器化

Weaponization 了解并探索常见的红队武器化技术。您将学习如何使用业内常见的方法来构建自定义有效负载&#xff0c;以获得初始访问权限。 什么是武器化 武器化是网络杀伤链模式的第二阶段。在此阶段&#xff0c;攻击者使用可交付的有效负载&#xff08;如word文档&#xff…

七、python-PySpark篇(黑马程序猿-python学习记录)

1. pyspark定义 2. 下载 点击右下角版本 点击解释器设置 点击号 搜索pyspark 选择pyspark 勾选选项 在输入框中输入 -i https://pypi.tuna.tsinghua.edu.cn/simple 点击安装软件包 提示正在安装 等一两分钟就能安装完毕 3. 获取PySpark版本号 # 导包 from pyspark import Spar…

树,二叉树的认识

1.树概念及结构 1.1树的概念 注意&#xff1a;树形结构中&#xff0c;子树之间不能有交集&#xff0c;否则就不是树形结构 1.2 树的相关概念 1.3 树的表示 树结构相对线性表就比较复杂了&#xff0c;要存储表示起来就比较麻烦了&#xff0c;既然保存值域&#xff0c;也要保存…

(18)go-micro微服务ELK介绍

文章目录一 什么是ELK二 Beats的六种工具三 ELK系统的特点四 ELKbeats系统架构五 ELK优点六 最后一 什么是ELK ELK是三个[开源软件]的缩写&#xff0c;分别表示&#xff1a;Elasticsearch , Logstash, Kibana , 它们都是开源软件&#xff0c;新增了一个Beats。 Elasticsearch …

几种觉排序优劣

冒泡排序 比较相邻的元素。如果第一个比第二个大&#xff0c;就交换他们两个。 对每一对相邻元素做同样的工作&#xff0c;从开始第一对到结尾的最后一对。在这一点&#xff0c;最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤&#xff0c;除了最后一个。 持…

23. 异常处理机制

1. 异常 即便 python 程序的语法是正确的&#xff0c;在运行它的时候&#xff0c;也有可能发生错误。运行期检测到的错误被称为异常。 # int不能与str相加, 触发异常 print(22) # 0 不能作为除数, 触发异常 print(1/0) # sum未定义, 触发异常 print(num)异常以不同的类型出现…

【JavaSE专栏4】关键字、标识符和命名规范

作者主页&#xff1a;Designer 小郑 作者简介&#xff1a;Java全栈软件工程师一枚&#xff0c;来自浙江宁波&#xff0c;负责开发管理公司OA项目&#xff0c;专注软件前后端开发&#xff08;Vue、SpringBoot和微信小程序&#xff09;、系统定制、远程技术指导。CSDN学院、蓝桥云…

k8s部署elk+filebeat。springCloud集成elk+filebeat+kafka+zipkin实现多个服务日志链路追踪聚合到es

一、目的 如今2023了&#xff0c;大多数javaweb架构都是springboot微服务&#xff0c;一个前端功能请求后台可能是多个不同的服务共同协做完成的。例如用户下单功能&#xff0c;js转发到后台网关gateway服务&#xff0c;然后到鉴权spring-sercurity服务&#xff0c;然后到业务…

mysql数据库管理-GTID详解

一、GTID概述 1 sql线程执行的事件也可以通过log_slave_updates系统变量来决定是否写入自己的二进制文件中&#xff0c;这是可以用于级联复制的场景。 GTID是MYSQL5.6新增的特性&#xff0c;GTID&#xff08;Global Transaction Identifier&#xff09;全称为全局事务标示符…

17种编程语言实现排序算法-计数排序

开源地址 https://gitee.com/lblbc/simple-works/tree/master/sort/ 覆盖语言&#xff1a;C、C、C#、Java、Kotlin、Dart、Go、JavaScript(JS)、TypeScript(TS)、ArkTS、swift、PHP。 覆盖平台&#xff1a;安卓(Java、Kotlin)、iOS(SwiftUI)、Flutter(Dart)、Window桌面(C#)、…

力扣sql简单篇练习(五)

力扣sql简单篇练习(五) 1 游戏玩法分析 I 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # 第一次登录平台的日期就代表是时间靠前的日期 # 窗口函数是Mysql8版本后才能使用 SELECT e.player_id,e.event_date first_login FROM (SELECT player_id,e…

五、python-地图可视化篇(黑马程序猿-python学习记录)

黑马程序猿的python学习视频&#xff1a;https://www.bilibili.com/video/BV1qW4y1a7fU/ 目录 1. 基础地图 2. 设置分段 1. 基础地图 from pyecharts.charts import Map # 准备地图对象 map Map() # 准备数据 data[ ("北京",99), ("上海",199), ("…

17种编程语言实现排序算法-堆排序

开源地址 https://gitee.com/lblbc/simple-works/tree/master/sort/ 覆盖语言&#xff1a;C、C、C#、Java、Kotlin、Dart、Go、JavaScript(JS)、TypeScript(TS)、ArkTS、swift、PHP。 覆盖平台&#xff1a;安卓(Java、Kotlin)、iOS(SwiftUI)、Flutter(Dart)、Window桌面(C#)、…

Maplab 2.0发布:多传感器融合的SLAM框架,支持多机器人、语义回环检测功能

摘要 将多种传感器和深度学习集成到SLAM系统中是当前研究的重要领域。多模态是一块跳板&#xff0c;既可以在挑战场景下增强鲁棒性&#xff0c;又可以解决不同传感器配置的多机系统建图问题。Maplab 2.0提供了一个更加通用的开源平台&#xff0c;最初的Maplab用于创建和管理视…

5-3中央处理器-数据通路的功能和基本结构

文章目录一.功能二.基本结构三.数据流向&#xff08;一&#xff09;内部单总线方式1.寄存器之间的数据传送2.主存与CPU之间的数据传送3.执行算术或逻辑运算&#xff08;二&#xff09;专用数据通路方式一.功能 数据在功能部件之间传送的路径称为数据通路。路径上的部件称为数据…

合宙ESP32C3上手使用

概述经典款是有ch343 ttl 转usb 需要安装驱动 GPIO20/21新款使用usb 直连不需要驱动 USB GPIO18/19ESP32C3 是ESP-RISC-V CPU 是基于 RISC-V ISA 的 32 位内核&#xff0c;包括基本整数 (I)&#xff0c;乘法/除法 (M) 和压缩 (C) 标准扩展。ESP-RISC-V CPU 内核具有 4 级有序标…

【蓝桥杯】简单数论1——GCDLCM

GCD 最大公约数Greatest Common Divisor(GCD)&#xff1a;整数a和b的GCD是指能同时整除a和b的最大整数&#xff0c;记为gcd(a,b)。由于-a的因子和a的因子相同&#xff0c;因此gcd(a, b) gcd(al, |bl)。编码时只关注正整数的最大公约数。 GCD性质 (1) gcd(a, b) gcd(a, ab) …

一、python准备工作篇(黑马程序猿-python学习记录)

黑马程序猿的python学习视频&#xff1a;https://www.bilibili.com/video/BV1qW4y1a7fU/ 目录 1. python官网 2. 检查是否安装完毕 3. pycharm官网 5. phcharm更换主题 6. 新建第一个python文件 7. pycharm字体大小设置 8. 设置快捷键 设置字体大小 ​​​​​​​9. 安装中文…