数据库讲解---(SQL语句--表的使用)【MySQL版本】

零.前言

数据库讲解(MySQL版)(超详细)【第一章】-CSDN博客

数据库-ER图教程_e-r图数据库-CSDN博客

数据库讲解(MySQL版)(超详细)【第二章】【上】-CSDN博客

一.SQL概述

1.1SQL简介

SQL关系数据库的标准语言,也称“结构化查询语言”,它介于“关系代数”和“元组演算”之间的语言

1.2SQL的特点

  • 高度非过程化”:用户只需要提出“做什么”,无须指明“怎么做”
  • 功能完备并且一体化”:使用SQL可以完成绝大部分数据库的操作
  • 统一的语法结构”:SQL可以用于所有用户模型
  • 语言简洁,易学易用”:SQL功能很强,并且语言简洁

1.3SQL体系结构

SQL支持“外模式、模式、内模式”三级结构:

二.SQL的定义和功能

2.1表结构的定义

SQL创建基本表的语法结构:

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

不同数据的数据类型是不同的,例如:“MySQL”与“Oracle”之间的数据类型就是不完全相同

常见的“完整性约束条件”有:

  • NOT NULL”:非空约束,即该属性值不能为空
  • UNIQUE”:唯一性约束,即该属性值只能出现一次
  • PRIMARY KEY”:主键约束
  • FOREIGN KEY .... REFERENCE ...”:外键约束

主键”的作用主要是:“唯一的标识某个属性为整个表的特征值,即该属性的值必须是唯一且非空的

而“非空约束” + “唯一性约束”组合在一起实现的作用为“属性的值必须是唯一且非空的

这个“组合”与“主键”的“作用基本一致,但是不能混淆在一起使用

一个表只能定义一个主键”,而“非空约束”+“唯一性约束”组合可以无限定义!!

2.1.1下面是一个创建普通“学生”表的例子:

2.1.2下面是一个“课程”表,其中“课程号”为主关键字:

在这里的“课程号”属性中,没必要添加约束:“NOT NULL”和“UNIQUE”,因为“课程号”本身是一个“主键”了

2.1.3下面是一个“学习”表,其中使用多个“属性”作为主关键字:

当我们的“主键”只有一个属性时,可以在“对应属性之后作为列约束添加”也可以在“表完整性约束中添加

但当我们的“主键”拥有多个属性时,只能在“表完整性约束中添加

2.1.4外部关键字的定义

我们假设表B的某个关键字是表A的外键

外部关键字的定义与“主键”的定义方式一样,都有两种定义方式:

  • “外部关键字只有一个属性”:直接在对应属性名之后使用“REFERENCE <表名> [属性]
  • “外部关键字有多个属性”:在表完整性约束中使用“FOREGIN KEY [表A属性] REFERENCE <表B名字> [表B属性]

2.1.5建立一个“学习”表,学号和课程是“主键”也是“外键”,分别参照学生表中的学号和课程表中的课程号

注意:“我们使用了两组FOREGIN KEY来分别对应两个外键属性!!

2.1.6为表中属性指定默认值

我们在定义表时,可以给表中某个属性一个“默认值

使用方法

<属性名> (数据类型) DEFAULT [默认值]

例如,创建一个学生表:

CREATE TABLE 学生
(学号 CHAR(8),排名 CHAR(8),性别 CHAR(4) DEFAULT '男',年龄 SAMLLINT DEFAULT 19
);

2.2表的修改

当我们创建好一张“”后,我们可能需要对表中的某些属性约束进行修改,或者删除/添加属性

为此,我们需要学习表修改的语法:

ALTER TABLE <表名>
[ADD <新列名> (数据类型) [完整性约束],DROP <列名> [完整性约束],DROP COLUMN <列名>,ALTER COLUMN <列名> (数据类型)
];
  • ADD”:可用于增加新列和新的完整性约束条件
  • DROP”:可用于删除指定的属性或者完整性约束条件
  • ALTER”:可用于修改原有的列定义(包括列名、数据类型、完整性约束

2.2.1在学生表中增加“年龄”属性,类型为SAMLLINT

ALTER TABLE 学生 ADD COLUMN 年龄 SMALLINT;

2.2.2在学生表中删除“年龄”属性

ALTER TABLE 学生 DROP COLUMN 年龄;

2.2.3在学生表中将“学号”属性的主键约束删除

ALTER TABLE 学生 DROP 学号 PRIMARY KEY;

2.2.4在学生表中修改“课程”属性的数据类型为“CHAR”,长度为“40”位

ALTER TABLE 学生 ALTER COLUMN 课程 CAHR(40);

2.2.5在学生表中向“学号”属性添加主键约束

ALTER TABLE 学生 DROP PRIMARY KEY;
ALTER TABLE 学生 ADD PRIMARY KEY(学号);

注意:

  • 先删除原有主键,再添加一个主键
  • “当修改某一列属性的属性值长度时,修改后的长度不能小于修改前
  • 向一个属性添加非空约束或者唯一性约束时,该属性值中不能出现空值或者重复值
  • “添加一个主键时,该表不能已存在主键

2.3表的删除

当我们创建了一张“表”之后,不想要这张“表”了,我们就可以删除它:

DROP TABLE <表名> [RESTRICT|CASCADE];

RESTRICT”和“CASCADE”分别表示:“如果有视图存在或作为参照表时,禁止删除”,“将该表与设计的对象一起删除

CASCADE”的使用应该是谨慎的,因为CASCADE会将与该表相关联的表一起删除!

而使用“RESTRICT”时,如果该表有关联对象,那么就会发出提醒,不会删除!

三.索引的建立与删除

3.1索引的介绍

当我们想要从数据库中获得数据时,数据库有两种检索数据的方式:“顺序检索”、“索引检索

顺序检索”:需要SQL检查数据库中的每一个数据项,效率很低,但它是确定记录准确位置的唯一方法

索引检索”:使用索引检索可以快速查找到某个数据。索引实际上是对数据分类,特征相同的属性摆放在一起,从而形成一个树状结构的文件

3.2索引的建立

建立方法:

CREATE [UNIQUE][CLUSTER] INDEX <索引名字> ON <表名> (<列名> [次序],<列名> [次序],.....)
  • “UNIQUE”:“每个索引值对应唯一的数据记录”
  • “CLUSTER”:“表示建立聚簇索引,即索引项的顺序与表中记录的物理顺序一致的索引组织”

ps:一般常用“UNIQUE”

3.2.1为学生、课程和学习表建立索引

CREATE UNIQUE INDEX STU_IDX_SNO ON 学生 (学号);
CREATE UNIQUE INDEX COU_IDX_CNO ON 课程 (课程号);
CREATE UNIQUE INDEX SC_IDX_SNO_CNO ON 学习 (学号 ASC,课程号 DESC);
  • ASC”:升序排序
  • DESC”:降序排序

3.3索引的删除

删除方法:

DROP INDEX <索引名>;

3.3.1删除“STU_IDX_SNO”、“COU_IDX_CNO”、“SC_IDX_SNO_CNO”索引

DROP INDEX STU_IDX_SNO;
DROP INDEX COU_IDX_CNO;
DROP INDEX SC_IDX_SNO_CNO;

注意:

在实际使用中,想要删除某个索引,需要先进入到某个“”中才能删除该“”中某“”的索引

3.4索引的使用技巧

  1. 小表无需使用索引
  2. 索引列中有较多不同数据项时,使用索引之后,性能会有极大提高
  3. 查询返回数据较少时,使用索引辅助查询会优化速度(一般少于全部数据25%)
  4. 索引会占用数据库空间
  5. 不要对经常需要“更新”或“修改”的属性添加索引,会增加系统开销
  6. 不要将索引与表存在一个磁盘上,可能会产生访问冲突

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

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

相关文章

组合逻辑电路中的竞争与冒险

竞争与冒险 进行理想的组合逻辑电路分析与设计时&#xff0c;没有考虑逻辑门的延迟时间&#xff08;原因&#xff09;对电路产生的影响&#xff0c;且认为电路的输入和输出均处于稳定的逻辑电平。 实际上&#xff0c;信号经过逻辑门需要一定的时间。不同路径上门电路数目不同…

【Qt】文件与音视频

目录 一、输入输出设备类 二、文件读写类 三、文件和目录信息类 四、音视频 4.1 音频 4.2 视频 文件操作是应用程序必不可少的部分。Qt作为一个通用开发库&#xff0c;提供了跨平台的文件操作能力。Qt提供了很多关于文件的类&#xff0c;通过这些类能够对文件系统进行操作…

杂谈 EV之我见

每周至少更新一片博文&#xff0c;没有目的的看代码是没有效率的&#xff0c;带着目的去看代码才会有所得&#xff0c; 目前车载行业火爆&#xff0c;得益于EV和AI技术的发展&#xff0c;汽车从一个传统工业产品&#xff0c;摇身一变成为了前沿科技产品。 小米su7的发布会我看…

LeetCode刷题之94.二叉树中序遍历

文章目录 1. 描述2. 分析2.1 递归方法2.2 迭代 3. 解答3.1 递归3.2 迭代 1. 描述 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 示例1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,3,2] 示例 2&#xff1a; 输入&#xff1a;ro…

C++ //练习 12.3 StrBlob需要const版本的push_back和pop_back吗?如果需要,添加进去。否则,解释为什么不需要。

C Primer&#xff08;第5版&#xff09; 练习 12.3 练习 12.3 StrBlob需要const版本的push_back和pop_back吗&#xff1f;如果需要&#xff0c;添加进去。否则&#xff0c;解释为什么不需要。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1…

浏览器工作原理与实践--页面性能:如何系统地优化页面

在前面几篇文章中&#xff0c;我们分析了页面加载和DOM生成&#xff0c;讨论了JavaScript和CSS是如何影响到DOM生成的&#xff0c;还结合渲染流水线来讲解了分层和合成机制&#xff0c;同时在这些文章里面&#xff0c;我们还穿插说明了很多优化页面性能的最佳实践策略。通过这些…

【C语言】扫雷小游戏

文章目录 前言一、游戏玩法二、创建文件test.c文件menu()——打印菜单game()——调用功能函数&#xff0c;游戏的实现main()主函数 game.c文件初始化棋盘打印棋盘随机布置雷的位置统计周围雷的个数展开周围一片没有雷的区域计算已排查位置的个数排查雷(包括检测输赢): game.h文…

【剪映专业版】04全局设置

视频课程&#xff1a;B站有知公开课【剪映电脑版教程】 设置-全局设置 草稿 草稿位置&#xff1a;非系统盘&#xff08;C盘&#xff09; 素材下载位置与 缓存管理&#xff1a;如果下载素材较多&#xff0c;需要定期删除缓存 预设保存位置&#xff1a;非系统盘&#xff08;C盘&a…

JavaScript exec、test和eval方法的使用

一、exec() 1.概述&#xff1a; exec()方法测试字符串中的匹配项。该方法是通用的匹配模式。如果找到匹配项&#xff0c;则返回结果数组&#xff0c;否则返回 null。 2.语法 /*** exec方法说明* param {String} string 必需。要搜索的字符串。* return {Array||Object} r…

动手学深度学习-关于y.sum().backward()中sum的理解

一、原文出处 2.5.2. 非标量变量的反向传播 当y不是标量时&#xff0c;向量y关于向量x的导数的最自然解释是一个矩阵。 对于高阶和高维的y和x&#xff0c;求导的结果可以是一个高阶张量。 然而&#xff0c;虽然这些更奇特的对象确实出现在高级机器学习中&#xff08;包括深度学…

基于SpringBoot2.x、SpringCloud和SpringCloudAlibaba并采用前后端分离的企业级微服务多租户系统架构

简介 基于SpringBoot2.x、SpringCloud和SpringCloudAlibaba并采用前后端分离的企业级微服务多租户系统架构。并引入组件化的思想实现高内聚低耦合并且高度可配置化&#xff0c;适合学习和企业中使用。 真正实现了基于RBAC、jwt和oauth2的无状态统一权限认证的解决方案&#x…

C语言操作符详解(二)

一、位操作符 & 按位与 | 按位或 ^ 按位异或 ~ 按位取反 注意&#xff1a;它们的操作数必须是整数。 下面的码我都只取了后八位 1.1、按位与 使用补码进行按位与 规则:对应二进制位有0就是0,两个同时为1才为1. 1.2、按位或 使用补码进行按位或 规则:对应二进…

GESP C++六级认证真题 2024年3月

C 六级 2024 年 03 月 1 单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09; 第 1 题 在构建哈夫曼树时&#xff0c;每次应该选择&#xff08; &#xff09;合并。 A. 最小权值的节点 B. 最大权值的节点 C. 随机节点 D. 深度最深的节点 第 2 题 面向对象的编程思想主…

【攻防世界】Web_python_template_injection

{{}}是变量包裹标识符&#xff0c;里面存放的是一个变量&#xff0c;当你输入 http://61.147.171.105:55121/{{8*8}} 执行成功&#xff0c;说明存在模版注入。接下来&#xff0c;开始想办法编代码拿到服务器的控制台权限 。 首先&#xff0c;题目告诉我们这是一个 python 注入…

2024年教师资格考试真题及答案1

一、选择题 11.刚被学校领导批评过的宋老师郁闷地走进教室&#xff0c;看见几个学生在大声喧哗&#xff0c;便不分青红皂白地将他们训斥了一番。该做法体现了宋老师&#xff08;&#xff09;。 A.不能平等待生 B.不能调适自我 C.不能严慈相济 D.不能有教无类 答案&#x…

SysTick滴答定时器 - 延时函数

SysTick定时器 Systick定时器&#xff0c;是一个简单的定时器&#xff0c;对于CM3,CM4内核芯片&#xff0c;都有Systick定时器。Systick定时器常用来做延时&#xff0c;或者实时系统的心跳时钟。这样可以节省MCU资源&#xff0c;不用浪费一个定时器。比如UCOS中&#xff0c;分…

每日一题:矩阵置零

给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&#xff1a;[[1,0,1],[0,0,0],[1,0,1]]使用两个标记变量。 class Sol…

【docker】容器技术发展历史

容器技术发展历史 Jail 时代1979 年 贝尔实验室发明 chroot2000 年 FreeBSD 4.0 发行 FreeBSD Jail2001 年 Linux VServer 发行2004 年 Solaris Containers 发行 云时代2006 年 google 推出 Process Containers2008 年 LXC 推出2011 年 CloudFoundry 推出 Warden2013 年 LMCTFY…

1. C# 进程间同步机制(Mutex和EventWaitHandle)实现单一应用启动

文章目录 一. 技能目标二. 技能知识点介绍① Mutex(互斥量)② EventWaitHandle(事件等待句柄) 三. 在WPF应用程序中启动程序的时候检查应用是否已经启动,如果已经启动就将主窗口显示出来 一. 技能目标 在开发应用程序的过程中,我们会遇到这样的情况,当我们启动一个应用的时候,如…

蓝桥杯——求和

题目 给定 n 个整数 a1, a2&#xff0c;…,an&#xff0c;求它们两两相乘再相加的和即: Sa1a2a1a3a1ana2a3 a&#xff08;n-2&#xff09;*an...a(n-1)*an 输入格式 输入的第一行包含一个整数 n。 第二行包含 几 个整数 a1,a2,,an。 输出格式 输出一个整数 S&#xff0c;表示所…