数据库系统概论(超详解!!!) 第四节 关系数据库标准语言SQL(上)

news2024/11/25 14:42:30

1.SQL概述

SQL(Structured Query Language)结构化查询语言,是关系数据库的标准语言

SQL是一个通用的、功能极强的关系数据库语言

SQL的动词

基本概念

基本表 :本身独立存在的表; SQL中一个关系就对应一个基本表; 一个(或多个)基本表对应一个存储文件 ;一个表可以带若干索引。

存储文件 :逻辑结构组成了关系数据库的内模式; 物理结构是任意的,对用户透明。

视图: 从一个或几个基本表导出的表; 数据库中只存放视图的定义而不存放视图对应的数据 ;视图是一个虚表; 用户可以在视图上再定义视图。

2.数据定义

关系数据库系统支持三级模式结构,其模式、外模式、和内模式 中的基本对象有表、视图、和索引。因此SQL的数据定义功能包括: 模式定义、表定义、视图和索引的定义

模式:现代关系数据库管理系统提供了一个层次化的数据库对象命名机制

一个关系数据库管理系统的实例(Instance)中可以建立多个数据库, 一个数据库中可以建立多个模式, 一个模式下通常包括多个表、视图和索引等数据库对象。

master为数据库,新建的数据库会在该数据库的目录之下。

1.模式定义

定义模式实际上定义了一个命名空间 。

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

创建新数据库

CREATE DATABASE 数据库名 /*该系统不区分大小写*/
go   /*开始运行*/

进入数据库

USE 数据库名
GO

将会从mater位置,转移到刚刚所建立数据库的位置。以下所有操作都在新建数据库下进行。

2.基本表的基本操作

以下以此表作为实例建立数据库

1.定义基本表

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

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

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

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

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

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

CREATE TABLE Student          
      (Sno   CHAR(8) PRIMARY KEY,       /*Sno为主码*/                                               
        Sname VARCHAR(20) UNIQUE,       /*Sname取唯一值*/ 
        Ssex    CHAR(6),
        Sbirthdate Date,
        Smajor  VARCHAR(40)
      ); 


CREATE TABLE  Course
          (Cno       CHAR(5) PRIMARY KEY,
        	 Cname  VARCHAR(40) NOT NULL,      /*Cname不为空*/      
            Ccredit  SMALLINT,
            Cpno     CHAR(5),
            FOREIGN KEY (Cpno) REFERENCES  Course(Cno)  
                         /*Cpno是外码,被参照表是Course,被参照列是Cno*/
          ); 

CREATE TABLE SC
  (Sno CHAR(8),
   Cno CHAR(5),
   Grade SMALLINT,            
   Semester CHAR(5),          
   Teachingclass CHAR(8),     
   PRIMARY KEY (Sno,Cno),    	/* 主码由两个属性构成,必须作为表级完整性进行定义*/
   FOREIGN KEY (Sno) REFERENCES Student(Sno),
                                /* 表级完整性约束条件,Sno是外码,被参照表是Student */
   FOREIGN KEY (Cno) REFERENCES Course(Cno)
                                /* 表级完整性约束条件, Cno是外码,被参照表是Course*/
);

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

定义表的属性时, 需要指明其数据类型及长度 ,选用哪种数据类型 ,取值范围 ,要做哪些运算。

字符数据类型

精确数值数据类型

近似数数据类型

二进制数据类型

日期和时间数据类型

2.数据录入

INSERT INTO Student
values 
('20180001','李勇','男','2004-3-8','信息安全'),
('20180002','刘晨','女','2003-9-1','计算机科学与技术'), 
('20180003','王敏','女','2005-8-1','计算机科学与技术'),
('20180004','张立','男','2004-1-8','计算机科学与技术'),
('20180005','陈新奇','男','2005-11-1','信息管理与信息系统'),
('20180006','赵明','男','2004-6-12','数据科学与大数据技术'),
('20180007','王佳佳','女','2002-12-7','数据科学与大数据技术'),
('20180008','刘莎莎','女','2003-10-5','信息安全')

INSERT INTO Course
values 
('81001','程序设计基础与C语言',4,NULL),
('81002','数据结构',4,'81001'),
('81003','数据库系统概论',4,'81002'),
('81004','信息系统概论',4,'81003'),
('81005','操作系统',4,'81001'),
('81006','Python语言',3,'81002'),
('81007','离散数学',4,NULL),
('81008','大数据技术概论',4,'81003'),
('81009','DB_Design',2,'81003')
          

INSERT INTO SC
values 
('20180001','81001',85,'20192','81001-01'),
('20180001','81002',96,'20201','81002-01'),
('20180001','81003',87,'20202','81003-01'),
('20180002','81001',80,'20192','81001-02'),
('20180002','81002',98,'20201','81002-01'),
('20180002','81003',71,'20202','81003-02'),
('20180003','81001',81,'20192','81001-01'),
('20180003','81002',76,'20201','81002-02'),
('20180004','81001',56,'20192','81001-02'),
('20180004','81002',97,'20201','81002-02'),
('20180005','81003',68,'20202','81003-01'),
('20180006','81001',null,'20192','81001-02')

3.修改基本表

ALTER TABLE <表名>
[ ADD  <新列名> <数据类型> [ 完整性约束 ] ]
[ ADD <表级完整性约束>]
[ DROP  COLUMN <列名>]
[ DROP CONSTRAINT<完整性约束名>
[ALTER COLUMN <列名><数据类型> ] ;

<表名>是要修改的基本表

ADD子句用于增加新列、新的列级完整性约束条件和新的表级完整性约束条件

DROP COLUMN子句用于删除表中的列

DROP CONSTRAINT子句用于删除指定的完整性约束条件

ALTER COLUMN子句用于修改原有的列定义,包括修改列名和数据类型

不管基本表中原来是否已有数据,新增加的列一律为空值

4.删除基本表

DROP TABLE <表名>

若表上建有视图,表不能删除

5.索引的建立与删除

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

关系数据库管理系统中常见索引: 顺序文件上的索引; B+树索引; 散列(hash)索引; 位图索引

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

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

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

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

建立索引:

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

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

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

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

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

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

CREATE CLUSTERED INDEX Stusname            
ON   Student(Sname);

 在Student表的Sname(姓名)列上建立一个聚簇索引

在最经常查询的列上建立聚簇索引以提高查询效率

一个基本表上最多只能建立一个聚簇索引 ,经常更新的列不宜建立聚簇索引。

CREATE UNIQUE INDEX  Stusno ON Student(Sno);
CREATE UNIQUE INDEX  Coucno ON Course(Cno);
CREATE UNIQUE INDEX  SCno ON SC(Sno ASC,Cno DESC);

 Student表按学号升序建唯一索引      

Course表按课程号升序建唯一索引      

SC表按学号升序和课程号降序建唯一索引

删除索引

DROP INDEX <索引名> ON <表名>;

删除索引时,系统会从数据字典中删去有关该索引的描述。

DROP INDEX Stusname on student;

删除Student表的Stusname索引

6.数据字典

数据字典是关系数据库管理系统内部的一组系统表,它记录了数据库中所有定义信息: 关系模式定义; 视图定义 ;索引定义 ;完整性约束定义 ;各类用户对数据库的操作权限 ;统计信息等。

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

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

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

相关文章

【PostGresql】------ pg多表数据多个条件汇总 使用 union 方法示例代码

1. 示例代码如下&#xff1a; SELECT"ID","DT_DATE","CNAME","RMAN_NAME","DEP_NAME","DEP_ID","INVEST_MAN_NAME","TYPE_NAME","INVEST_LEVEL_NAME","POSITION_NAME",…

常用负载均衡详解

一、介绍 在互联网场景下&#xff0c;负载均衡&#xff08;Load Balance&#xff09;是分布式系统架构设计中必须考虑的一个环节&#xff0c;它通常是指将负载流量&#xff08;工作任务、访问请求&#xff09;平衡、分摊到多个操作单元&#xff08;服务器、组件&#xff09;上去…

Sora 发布的意义能和 ChatGPT 相比吗?

个人觉得&#xff0c;Sora 的发布弥补了ChatGPT语言模型在视频内容领域的不足&#xff0c;简单来说&#xff0c;这两个模型均有自己的优势&#xff0c;ChatGPT是一种语言模型&#xff0c;可以理解和解释自然语言&#xff0c;而Sora是文字到视频转化的应用&#xff0c;将文本内容…

Transformer的前世今生 day04(ELMO、Attention注意力机制)

ELMO 前情回顾 NNLM模型&#xff1a;主要任务是在预测下一个词&#xff0c;副产品是词向量Word2Vec模型&#xff1a;主要任务是生成词向量 CBOW&#xff1a;训练目标是根据上下文预测目标词Skip-gram&#xff1a;训练目标是根据目标词预测上下文词 ELMO模型的流程 针对Wor…

ArmSoM Rockchip系列产品 通用教程 之 RTC 使用

1. RTC 简介​ RTC&#xff1a;(Real_Time Clock)&#xff1a;实时时钟 HYM8563是一种低功耗实时时钟&#xff08;RTC&#xff09;芯片&#xff0c;用于提供精确的时间和日期信息。它提供一个可编程的时钟输出&#xff0c;一个中断输出和一个掉电检测器&#xff0c;所有的地址…

HTML实现卷轴动画完整源码附注释

动画效果截图 页面的html结构代码 <!DOCTYPE html> <html> <head lang=

福克斯2010 1.8L 手动档

老车了记录点东西 好看也便宜 福克斯维修保养费用调查_保养维护_车系文章_空港平行进口汽车交易服务中心 https://tjautoland.net/article-40.html 福克斯自从上市后&#xff0c;凭借其时尚动感的外形、良好的操控性和极佳的驾乘舒适度&#xff0c;在国内紧凑型市场上持续热…

最新ChatGPT/GPT4科研应用与AI绘图及论文高效写作教程

原文链接&#xff1a;最新ChatGPT/GPT4科研应用与AI绘图及论文高效写作教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247598050&idx5&sn70fd3f5946d581ad9c1363295b130ef5&chksmfa823e05cdf5b713baf9cf1381bfb2455ad675a0b21e194bef8b76f35d6aa77…

人工智能快速发展:AI机器人是否能全面替代人工客服?

随着人工智能技术的飞速发展&#xff0c;AI机器人在各个领域的应用越来越广泛。其中&#xff0c;人工客服行业也开始出现了AI机器人的身影。然而&#xff0c;能否完全将人工客服替换为AI机器人仍存在许多争议。 本文将从AI快速发展的背景出发&#xff0c;分析AI机器人取代人工…

SAP SD UKM_ITEMS_READ 信贷风险总额

这几天&#xff0c;业务怀疑 信贷金额不对&#xff0c;来查数据&#xff0c;发现信贷风险总额 是从UKM_ITEMS_READ获取的&#xff0c;但是具体数据在哪里&#xff0c;还是不确认。 最终咨询老师后&#xff0c;提供了文档 SAP S4 HANA信贷管理之信贷未清表_ukm_commts_delete-CS…

Vue3+.NET6前后端分离式管理后台实战(五)

1&#xff0c;Vue3.NET6前后端分离式管理后台实战(五)已经在订阅号发布有兴趣的可以关注一下&#xff01; 2&#xff0c;有兴趣请扫码关注谢谢&#xff01;

阿里云服务器配置openssh-server支持ssh客户端远程终端登陆

登陆云服务器: 成功登陆 更新包: 更新完成 升级最新包 选择YES 空格选中所有并点击ok

【鸿蒙系统】 ---OpenHarmony加快本地编译(二)

&#x1f48c; 所属专栏&#xff1a;【鸿蒙系统】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢…

【3DsMax】UVW展开——以制作牙膏盒为例

效果 步骤 1. 从网上下载牙膏盒贴图&#xff0c;我下载的贴图地址为&#xff08;牙膏盒贴图链接&#xff09; 2. 打开3DsMax&#xff0c;创建一个长方体&#xff0c;设置长宽高分别为180、45、40毫米 打开材质编辑器&#xff0c;点击漫反射后的按钮 双击“位图” 将材质赋予长…

C++初阶 | [九] list 及 其模拟实现

摘要&#xff1a;介绍 list 容器&#xff0c;list 模拟实现&#xff0c;list与vector的对比 list&#xff08;带头双向循环列表&#xff09; 导入&#xff1a;list 的成员函数基本上与 vector 类似&#xff0c;具体内容可以查看相关文档(cplusplus.com/reference/list/list/)&…

JavaScript中new操作符具体干了什么

文章目录 一、是什么二、流程三、手写new操作符 一、是什么 在JavaScript中&#xff0c;new操作符用于创建一个给定构造函数的实例对象 例子 function Person(name, age){this.name name;this.age age; } Person.prototype.sayName function () {console.log(this.name) …

【堆、位运算、数学】算法例题

目录 十九、堆 121. 数组中的第K个最大元素 ② 122. IPO ③ 123. 查找和最小的K对数字 ② 124. 数据流的中位数 ③ 二十、位运算 125. 二进制求和 ① 126. 颠倒二进制位 ① 127. 位1的个数 ① 128. 只出现一次的数字 ① 129. 只出现一次的数字 II ② 130. 数字范围…

Java项目:66 ssm实验室耗材管理系统设计与实现+jsp

作者主页&#xff1a;源码空间codegym 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 管理员管理实验材料&#xff0c;审核教师与学生对实验材料的申请信息&#xff0c;统计每学年实验材料的使用总数信息。 教师申请使用实验材料…

未来有无限可能,加油年轻人!

在浩渺的宇宙中&#xff0c;我们如同微尘般渺小&#xff0c;然而&#xff0c;正是这些微小的存在&#xff0c;构成了世界的五彩斑斓。而对于年轻人来说&#xff0c;他们就是这个世界的未来&#xff0c;是希望的象征&#xff0c;是无限可能的源泉。他们拥有青春的热情&#xff0…

什么是智能体(agent)

智能体&#xff08;Agent&#xff09;是人工智能领域中的一个核心概念。在最基本的层面上&#xff0c;智能体可以被定义为一个实体&#xff0c;它能够在其所处的环境中自主地感知信息&#xff0c;并根据这些信息做出决策&#xff0c;以实现特定的目标或任务。智能体的关键特性包…