3.3 数据定义 数据库与系统概论

news2024/11/15 5:06:53

目录

3.3.1 模式的定义与删除

1. 定义模式

2. 删除模式

CASCADE(级联)

RESTRICT(限制)

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

表的定义

2.数据类型

3. 模式与表

4. 修改基本表

5. 删除基本表 

3.3.3 索引的建立与删除

1. 建立索引

2. 修改索引

3. 删除索引

3.3.4 数据字典


SQL的数据定义功能: 定义数据库中的各种对象,模式定义,表定义,视图和索引的定义

现代关系数据库管理系统提供了一个层次化的数据库对象命名机制,一个关系数据库管理系统的实例(Instance)中可以建立多个数据库,一个数据库中可以建立多个模式,一个模式下通常包括多个表、视图和索引等数据库对象。

3.3.1 模式的定义与删除

1. 定义模式

SQL中,模式定义语句如下: CREATE SCHEMA <模式名> AUTHORIZATION <用户名>

[例3.1] 为用户WANG定义一个学生-课程模式S-T

CREATE SCHEMA “S-T” AUTHORIZATION WANG;

如果语句没有指定<模式名>,<模式名>隐含为<用户名>

[例3.2] CREATE SCHEMA AUTHORIZATION WANG;

要创建模式,调用该命令的用户必须拥有数据库管理员权限,或获得了数据库管理员授予CREATE SCHEMA 的权限。

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

在CREATE SCHEMA中可以接受:CREATE TABLE ,CREATE VIEW ,GRANT子句定义模式

即用户可以在创建模式的同时,在模式定义中进一步创建基本表、视图,定义授权。 

[例3.3]为用户ZHANG创建了一个模式TEST,并且在其中定义一个表TAB1

CREATE SCHEMA TEST AUTHORIZATION ZHANG

CREATE TABLE TAB1 ( COL1 SMALLINT, COL2 INT, COL3 CHAR(20), COL4 NUMERIC(10,3), COL5 DECIMAL(5,2) );

2. 删除模式

SQL中,删除模式语句如下: DROP SCHEMA <模式名><CASCADE|RESTRICT>

CASCADE(级联)

删除模式的同时把该模式中所有的数据库对象全部删除

RESTRICT(限制)

如果该模式中定义了下属的数据库对象(如表、视图等),则拒绝执行该删除语句。

仅当该模式中没有任何下属的对象时才能执行。

[例3.4] DROP SCHEMA ZHANG CASCADE;  

含义:删除模式ZHANG,同时该模式中定义的表TAB1也被删除

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

表的定义

定义基本表,基本格式如下:

CREATE TABLE <表名>

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

<表名> :所要定义的基本表的名字

<列名>:组成该表的各个属性(列)

<列级完整性约束条件>:涉及相应属性列的完整性约束条件

<表级完整性约束条件>:涉及一个或多个属性列的完整性约束条件 

如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。

例子:

CREATE TABLE Course (Cno CHAR(4) PRIMARY KEY, /* 列级完整性约束条件,Cno是主码*/

Cname CHAR(40) NOT NULL, /* 列级完整性约束条件,Cname取值非空*/

Cpno CHAR(4), Ccredit SMALLINT,

FOREIGN KEY (Cpno) REFERENCES Course(Cno) /* 表级完整性约束条件【参照完整性】,外码cpno被参照表为course,被参照列为cno*/

2.数据类型

SQL中域的概念用数据类型来实现

定义表的属性时需要指明其数据类型及长度

选用哪种数据类型,考虑两方面:1.取值范围 如:人的年龄一般在100岁左右,选用短整数;教职工适合年龄 2.要做哪些运算 如,年龄可以用CHAR(3); 计算平均年龄:整数型

3. 模式与表

每一个基本表都属于某一个模式

一个模式包含多个基本表

定义基本表所属模式方法: 3种方法

一:在表名中明显地给出模式名

Create table "S-T".Student(......); /*模式名为 S-T*/

Create table "S-T".Course(......);

Create table "S-T".SC(......);

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

方法三:设置所属的模式 (创建表时,表名中无需给出模式名)

创建基本表(其他数据库对象也一样)时,若没有指定模式,系统根据搜索路径来确定该对象所属的模式

关系数据库管理系统会使用模式列表中第一个存在的模式作为数据库对象的模式名

若搜索路径中的模式名都不存在,系统给出错误

显示当前的搜索路径: SHOW search_path;

搜索路径的当前默认值是:$user,PUBLIC

含义:首先搜索与用户名相同的模式名,如果模式名不存在,则使用PUBLIC模式

数据库管理员也可以设置搜索路径,然后定义基本表 SET search_path TO “S-T” , PUBLIC; Create table Student(......); 结果建立了S-T.Student基本表。

含义:关系数据库管理系统发现搜索路径中第一个模式名S-T,就把该模式作为基本表Student所属的模式。

4. 修改基本表

SQL中,修改基本表一般格式:

5. 删除基本表 

3.3.3 索引的建立与删除

建立索引的目的加快查询速度

B+树索引具有动态平衡的优点,HASH索引具有查找速度快的特点

谁可以建立索引:数据库管理员 或 表的属主(即:建立表的人)

谁维护索引:关系数据库管理系统自动完成

使用索引:关系数据库管理系统自动选择合适的索引作为存取路径,用户不必也不能显式地选择索引

索引属于内模式的范畴

索引占用一定的存储空间,当基本表更新时,索引要进行相应的 维护,会增加数据库负担,根据实际需求有选择的创建索引。 SQL标准中没有涉及索引,但商用关系数据库管理系统一般是支 持索引机制。

1. 建立索引

创建索引语句格式如下:

CREATE [UNIQUE] [CLUSTER] INDEX<索引名>

ON <表名>(<列名>[<次序>]);

<表名>:要建索引的基本表的名字

索引:可以建立在该表的一列或多列上,各列名之间用逗号分隔

<次序>:指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASC

UNIQUE:此索引的每一个索引值只对应唯一的数据记录

CLUSTER:表示要建立的索引是聚簇索引

2. 修改索引

修改索引语句格式如下:

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

3. 删除索引

索引一经建立就由系统使用和维护,不需用户干预。如果面临频繁的数据增删改,系统需要花费时间来维护索引, 降低了查询效率。需要删除不必要的索引。删除时,系统会从数据字典中删去有关该索引的描述。

删除索引语句格式如下: DROP INDEX <索引名>;

3.3.4 数据字典

数据字典是关系数据库管理系统内部的一组系统表,它记录了数据库中所有定义信息:

关系模式定义、视图定义、索引定义

完整性约束定义

各类用户对数据库的操作权限

统计信息等

关系数据库管理系统在执行SQL的数据定义语句时,实际上就是在更新数据字典表中的相应信息。

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

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

相关文章

ZYNQ学习之Ubuntu系统的简单设置与文本编辑

基本都是摘抄正点原子的文章&#xff1a;<领航者 ZYNQ 之嵌入式Linux 开发指南 V3.2.pdf&#xff0c;因初次学习&#xff0c;仅作学习摘录之用&#xff0c;有不懂之处后续会继续更新~ 一、Ubuntu的简单操作 1.1 切换拼音输入法 Ubuntu 自带的拼音输入法&#xff0c;有两种…

[NKCTF 2024]web解析

文章目录 my first cms全世界最简单的CTF解法一解法二 my first cms 打开题目在最下面发现是CMS Made Simple&#xff0c;版本为2.2.19 扫一下发现存在后台登陆界面&#xff0c;直接访问 用字典爆破下admin的密码为Admin123 然后直接登录&#xff0c;去漏洞库搜一下其实存在…

从人工智能入门到理解ChatGPT的原理与架构的第一天(First)(含机器学习特征工程详解)

目录 一.ChatGPT的发展历程 二.Attention is all you need 三.对于GPT-4的智能水平评估 四.大语言模型的技术演化 1.从符号主义到连接主义 2.特征工程 2.1数据探索 2.2数据清洗 2.3数据预处理 2.3.1无量纲化 2.3.1.1标准化 2.3.1.2区间缩放法 2.3.1.3标准化与归一…

layui框架实战案例(25):laydate中mark的数据后端生成

mark&#xff0c;自定义日期标记。该属性是对 calendar 属性的进一步延伸&#xff0c;灵活度更高。属性可批量设置多个日期标记&#xff0c;如&#xff1a; mark: {0-10-14: 生日, //每年每月的某一天0-0-10: 工资, // 每月 10 号2008-8-8: 开幕, // 指定的日期 }其中日期的格式…

剧变:人类社会与国家危机的转折点 - 三余书屋 3ysw.net

精读文稿 今天我们解读的这本书是《巨变》。副标题是人类社会与国家危机的转折点&#xff0c;这是一个充满风险和危机的时代。比如作为个人&#xff0c;我们可能会遭遇失业、离婚、亲朋好友的意外去世。作为国家&#xff0c;会遭遇经济危机、社会动荡甚至战争。整个世界也会陷入…

设计模式之桥接模式解析

桥接模式 1&#xff09;概述 1.定义 桥接模式(Bridge Pattern) 将抽象部分与它的实现部分分离&#xff0c;使它们都可以独立地变化。 2.作用 如果系统中某个类存在两个独立变化的维度&#xff0c;通过该模式可以将这两个维度分离出来&#xff0c;使两者可以独立扩展。 3.…

Android开发简易登录界面

title: Android开发第四天 search: 2024-03-22 tags: Android开发 Android开发简易登录界面 文章目录 Android开发简易登录界面一、定义style样式二、完成 activity_main.xml 界面具体设计三、代码简述 背景 &#xff1a;在初学 android 开发的时候&#xff0c;为了尽量熟悉学…

看漫画学Python:有趣好玩

书籍介绍 Python是一门既简单又强大的编程语言&#xff0c;被广泛应用于数据分析、大数据、网络爬虫、自动化运维、科学计算和人工智能等领域。Python也越来越重要&#xff0c;成为国家计算机等级考试科目&#xff0c;某些中小学也开设了Python编程课程。本书秉承有趣、有料、…

js实现操作浏览器返回时,页面有弹窗则关闭弹窗而不实际返回

关于popstate、pushState参考:HTML5的popstate、pushState、replaceState如何玩转浏览器历史记录-CSDN博客文章浏览阅读1.3w次,点赞8次,收藏30次。一、popstate用来做什么的?简而言之就是HTML5新增的用来控制浏览器历史记录的api。二、过去如何操纵浏览器历史记录?window.…

自定义组件学习

效果 自定义组件模块 <template> <div class"flex-1"><div :style"{width: wrapWidth}" class"flex-margin mb8"><OprateSteps :operateHtml"operateHtml" /></div><ul class"datacollect-…

Ftrans安全数据摆渡系统 构建便捷的内外网数据交换通道

安全数据摆渡系统是一种设计用于解决内外网环境下&#xff0c;数据传输、管理、共享问题的安全系统&#xff0c;通过加密、访问控制等策略&#xff0c;提供安全可靠的数据传输和共享服务&#xff0c;尤其适用于对网络安全建设要求高的行业&#xff0c;比如研发型企业、党政机构…

异步引入组件

defineAsyncComponent 函数&#xff1a;用于异步引入组件。 Suspense 标签&#xff1a;异步组件加载时&#xff0c;显示的默认内容。 应用场景&#xff1a;当子组件的数据量较大&#xff0c;导致父组件延迟显示时使用。 语法格式 异步引入组件&#xff1a; import { define…

Java:ArrayList与顺序表

一、线性表 线性表是n个具有相同特征的数据元素的有限序列&#xff0c;它是一种在实际中广泛使用的数据结构&#xff0c;常见的线性表有&#xff1a;顺序表、链表、栈、队列...... 如图&#xff1a;顺序表与链表的区别看了标题的伙伴就应该知道&#xff0c;我们这次要讲解的主…

Java多线程实战-从零手搓一个简易线程池(一)定义任务等待队列

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Java全栈-专栏 &#x1f3f7;️本系列源码仓库&#xff1a;多线程并发编程学习的多个代码片段(github) &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正…

router.push是同步还是异步?push.then和子组件onMounted谁先触发?

直接做实验&#xff1a; <el-button type"danger" click"test">toAbout</el-button>// -----const test () >{router.push(about).then((e)>{console.log(then里面, e);}).finally((e)>{console.log(finally里面, e);})console.log…

【Unity3D小功能】Unity3D中实现点击‘文字’出现‘UI面板’

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址QQ群&#xff1a;398291828 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 宠粉博主又来了&#xff0c;今天有粉丝问我如何实…

机器学习 - 神经网络分类

什么叫做分类问题&#xff1f; A classification problem involves predicting whether something is one thing or another. Problem typeWhat is it?ExampleBinary classificationTarget can be one of two options, e.g. yes or noPredict whether or not someone has hea…

AXI_Lite协议详解

文章目录 摘要一、AXI_Lite接口全局信号&#xff1a;1、写地址通道&#xff1a;2、写数据通道&#xff1a;3、写响应通道&#xff1a;4、读地址通道&#xff1a;5、读数据通道&#xff1a; 二、仿真波形 摘要 AXI4-lite是AXI4-full的简化版。用于简单、低吞吐量的内存映射通信…

基于CNN-RNN的动态手势识别系统构建与应用

一、引言 随着人机交互技术的不断发展&#xff0c;动态手势识别成为了近年来的研究热点。动态手势识别技术能够识别和理解人类的手势动作&#xff0c;从而实现更自然、更直观的人机交互。本文旨在构建一种基于CNN-RNN的动态手势识别系统&#xff0c;以提高手势识别的准确性和实…

36.基于SpringBoot + Vue实现的前后端分离-高校汉服租赁网站系统(项目 + 论文)

项目介绍 本站是一个B/S模式系统&#xff0c;采用SpringBoot Vue框架&#xff0c;MYSQL数据库设计开发&#xff0c;充分保证系统的稳定性。系统具有界面清晰、操作简单&#xff0c;功能齐全的特点&#xff0c;使得基于SpringBoot Vue技术的高校汉服租赁网站系统设计与实现管理…