数据库讲解---(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.hqwc.cn/news/604032.html

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

相关文章

网工内推 | 深信服、宁德时代,最高20K招安全工程师,包吃包住

01 深信服科技 招聘岗位&#xff1a;安全服务工程师 职责描述&#xff1a; 1.负责现场安全服务项目工作内容&#xff0c;包含渗透测试、安全扫描、基线核查、应急响应等&#xff1b; 2.协助用户完成安全测试漏洞整改、复测工作&#xff1b; 3.为用户提供网络、主机、业务系统等…

c语言 :柔性数组与c/c++内存领域的划分

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一 柔性数组&#xff08;1&#xff09;什么是柔性数组1&#xff09;柔性数组的声明2&#xff09;柔性数组的特性 &#xff08;2&#xff09;柔性数组的使用 二 c/c内…

C++类与对象中(个人笔记)

类与对象中 类的6个默认成员函数1.构造函数1.1特性 2.析构函数2.1特性 3.拷贝构造函数3.1特性 4.赋值运算符重载4.1特性 5.日期类的实现6.const成员6.1const成员的几个问题 7.取地址及const取地址操作符重载 类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为…

硬盘容量骤降为0?原因解析与数据恢复秘籍

当我们打开计算机&#xff0c;准备进入日常的工作或娱乐时&#xff0c;突然发现硬盘容量显示为0&#xff0c;这无疑是一个令人头痛的问题。硬盘&#xff0c;作为我们存储重要数据和文件的关键设备&#xff0c;一旦容量显示为0&#xff0c;就意味着我们可能面临数据丢失的风险。…

电视盒子哪个好?2024口碑网络电视盒子排行榜

多年来电视盒子始终占据重要地位&#xff0c;功能上并没有受到影响。在这么多品牌中哪些电视盒子的评价是最好的呢&#xff1f;小编根据各大电商平台的用户评价情况整理了口碑最好的网络电视盒子排行榜&#xff0c;跟着小编一起看看市面上的电视盒子哪个好吧。 TOP 1&#xff1…

什么是产品知识库?中小型企业要怎么搭建?

在日常的工作中&#xff0c;业务信息与产品知识的有效管理对于企业的成长是至关重要的。一份完整且结构化的产品知识库对于中小型企业来说既是高效工具又是增长动力&#xff0c;那么&#xff0c;什么是产品知识库&#xff1f;中小型企业又该如何搭建&#xff1f;接下来让我们详…

纯C语言手搓GPT-2,前OpenAI、特斯拉高管新项目火了

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站https://ai.hzytsoft.cn/ 更多资源欢迎关注 「Real men program in C.」 众所周知&#xff0c;大语言模型还在快速发展&#xff0c;应该有…

自动驾驶中的多目标跟踪_第三篇

自动驾驶中的多目标跟踪:第三篇 附赠自动驾驶学习资料和量产经验&#xff1a;链接 在前一节&#xff0c;我们回顾了贝叶斯滤波&#xff0c;并给出了线性高斯条件下的闭式解–卡尔曼滤波。在这一节&#xff0c;我们来讨论杂波背景下的单目标滤波问题。 模型 &#xff08;三&…

【鸿蒙开发】ArkTS和组件

1. 初识ArkTS语言 ArkTS是HarmonyOS优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript生态基础上做了进一步扩展&#xff0c;继承了TS的所有特性。 当前&#xff0c;ArkTS在TS的基础上主要扩展了如下能力&#xff1a; 基本语法&#xff1a;ArkTS定义了声明式UI描述、自…

安装电脑监控软件能否提高企业信息安全指数?

随着信息技术的飞速发展&#xff0c;企业信息安全问题日益凸显&#xff0c;成为影响企业运营和发展的重要因素。为了提高企业信息安全指数&#xff0c;许多企业开始考虑安装电脑监控软件。然而&#xff0c;这种举措究竟能否有效提升企业的信息安全水平呢&#xff1f;本文将对此…

Vue文档

Vue是什么&#xff1f;为什么要学习他 Vue是什么&#xff1f; Vue是前端优秀框架&#xff0c; 是一套用于构建用户界面的渐进式框架 为什么要学习Vue Vue是目前前端最火的框架之一Vue是目前企业技术栈中要求的知识点Vue可以提升开发体验Vue学习难度较低… Vue开发前的准备 安…

5【PS让图片动起来】系列3-【时间轴 花瓣飘落】

【问题介绍】上章将花瓣拆分为一片片花瓣&#xff0c;现在让这片花瓣【动态】飘落吧~ PS选择“窗口”→ “时间轴” 下方弹出时间轴&#xff0c;其中01:00f就是这个位置为1秒的。中间的0 10f 20f等&#xff0c;为帧速率&#xff0c;也就是一秒的动画时间里有几帧的意思 下图…