MySQL数据库语言

数据库(DB):用来组织、存储和管理数据的仓库

数据库管理系统(DBMS):提供建立及维护数据库,使用户能高效的组织、管理及获取数据的计算机系统软件

数据库系统(DBS):= DB + DBMS

数据库的特点:

数据结构化
数据共享性高,冗余度低,易扩充
数据独立性高
数据由DBMS统一管理和控制
数据库管理系统(DBMS)的三大功能:

数据定义(DDL):用户利用DDL可以方便的建立数据库中各种对象---数据库、表、视图、索引、存储过程、触发器等
数据操纵(DML):对数据库中的数据进行增、删、改、查等各种存取操作
数据控制:指数据的安全控制、完整性控制、并发控制、数据恢复四个方面
数据管理技术及发展的三个阶段:

手工管理
文件管理
数据库管理
数据库的三级模式:

逻辑模式(模式):数据库中整体数据的逻辑结构特征的描述,是所有用户的公共数据视图,综合了所有用户的需求
外模式(子模式):数据库中的局部数据。它是对各个用户或程序所涉及的数据的逻辑结构和数据特征的描述
内模式(物理模式 或 存储模式):是数据物理结构和存储方式的描述,一个数据库只有一个内模式

数据库的两级映像:

外模式 / 模式(不唯一):当模式改变时,由DMA对外模式/模式映像做出改变,使外模式不必修改,因为应用程序是根据外模式编写的,外模式不变应用程序也不用修改,保证了数据与程序的逻辑独立性
模式 / 内模式(唯一):当数据库的存储结构改变时,由DMA对模式/内模式映像做出改变,使模式不变,从而应用程序也不需要改变
数据库的两级映像的作用:

两级映像的存在使得用户可以逻辑地、抽象地处理数据,而不必关心数据在计算机中的具体表达方式与存储方式。这不仅提高了数据库的灵活性和可维护性,还保证了不同应用程序之间的稳定性和互操作性。正是由于这两级映像,数据库系统中的数据才能具有较高的逻辑性独立性和物理独立性。

第二章:数据模型
E-R图转换成关系模型

第三章:关系模型及关系代数
关系的相关名词:

关系:就是一张二维表,二维表的名字就是关系的名字
元组:二维表中的一行数据称为一个元组
属性:二维表中的每一个的名字称为属性
候选码:唯一标识一个元组的属性组
主码:候选码中选择一个作为关系的主码
主属性:包含候选码中的属性
非主属性:不包含在任何一个候选码中的属性
关系的数学定义:

域:一组具有相同数据类型的值的集合。(整数、实数、介于某个取值范围的整数)
笛卡尔积:所有域的所有取值的一个组合,这个组合中每一个元素都不能重复
关系:域的笛卡尔积的有意义的一个有限子集
关系的限定:

关系中每个分量必须取原子值
关系中同一列的数据应具有相同的数据类型
关系中不能有相同的属性名
关系中不能有两个完全相同的元组
关系中的元组和列的位置具有顺序无关性
关系模式和关系的区别与联系?

关系模式是对关系类型的描述,反映了关系的结构和框架。关系是元组的集合,因此关系模式应指出这个元组集合的结构,即它由哪些属性构成、这些属性来自哪些域,以及属性之间的依赖关系。关系模式一般简记为 R(A1,A2,A3.....An),其中R是关系的名称,A1到An是关系的若干属性

关系包括关系的结构和关系的数据,关系的结构用关系模式表示,是相对稳定的,一个关系数据库的结构一旦定义好就不能随便修改;关系的数据是动态的,反映了关系在某一时刻的状态,随着数据库使用过程中对数据的更新操作,关系中的数据会实时发生改变。

关系模式的三类完整性约束

实体完整性约束:是指每个关系中的元组必须是唯一可识别的。具体来说,关系数据库中的每个表都必须有一个主键,且主键值不能为空或重复
参照完整性约束(或引用完整性):是指关系中的外键(4种级联规则restrict、cascade、no action、set null)必须引用另一个关系中的有效主键。外键可以为空或等于被参照关系中的某个主键值。这种约束确保了数据的一致性和关联性。
用户自定义完整性约束(或域完整性、语义完整性):是针对特定应用领域的数据约束条件。这类约束反映了应用语义的要求,防止属性值与应用语义矛盾。
关系的运算:运算对象(关系)、运算符(关系代数运算符)、运算结果是运算的三要素

关系代数运算符:传统的集合运算符、专门的关系运算符、比较运算符、逻辑运算符

传统的集合运算符: 并(∪)、交(∩)、差(-)、广义笛卡儿积(×)。
并(∪):关系R和关系S的所有元组合并,再删去重复的元组,组成一个新的关系,记为RUS
交(∩):既属于关系R又属于关系S的元组组成得集合,组成一个新的关系,记为R∩S
差(-):属于关系R而不属于关系S的所有元组组成的集合,即关系R中删去与关系S相同的元组,组成一个新的关系,记为R-S
广义笛卡儿积(×):集合 A= {1,2},集合 B={a,b},和集合 C= {x,y} 的广义笛卡尔积为{1, a, x),(1, a, y),(1, b, x),(1, b, y), (2,a, x),(2, a, y),(2, b, x),(2, b, y)}。
笛卡尔积和广义笛卡尔积的区别?

笛卡尔积是指两个集合中的元素按照所有可能的组合方式构成的新集合。例如,集合A={1,2} 和集合 B={a,b} 的笛卡尔积为{(1,a),(1,
b),(2, a),(2, b)}。
广义笛卡尔积是指多个集合中的元素按照所有可能的组合方式构成的新集合。例如,集合 A= {1,2},集合 B={a,b},和集合 C= {x,y}
的广义笛卡尔积为{1, a, x),(1, a, y),(1, b, x),(1, b, y), (2,a, x),(2, a, y),(2, b, x),(2, b, y)}。

专门的关系运算符: 选择(σ)、投影(π)、连接(▷◁)、除(÷)。
选择(σ):运算对象是单个关系,从关系中找出满足指定条件的元组
投影(π):运算对象是单个关系,从关系中挑选出若干列组成的新关系
连接(▷◁):两个有联系的关系连接成一个新的关系,目的是实现建立在多个关系上的查询操作
除(÷):保留被除关系中含有全部除关系中相同列的全部取值的元组(不包含相同的列),它是同时从列和行两个角度进行计算

比较运算符: 大于(>)、大于等于(≥)、小于(<)、小于等于(≤)、等于(=)、不等于(≠)。
逻辑运算符: 非(¬)、与(∧)、或(∨)。
第四章:MySQL数据库及SQL简介
外键约束的创建:

级联措施的选项:RESTRICT、NO ACTION、CASCADE、SET NULL

restrict:父表中的某条记录,若子表中有与之对应的记录,则不允许删除或修改该记录
cascade:当删除或修改父表中的某条记录时,会自动删除或修改子表中与之对应的记录
no action:与restrict选项功能相同
set null:当删除或修改父表中某条记录时,子表中与之对应的记录的外键值自动设置为null值
第五章:MySQL数据定义功能(DDL)
创建数据库:([ ]中的内容为可选项、{ }或 | 为必选项,必选其中一个)

creat {database | schema} {if not exists} <数据库名> [default character set <字符集>] [default collate <校验规则>];
AI写代码
sql
创建基本表:

crate table [<库名>] <表名>(
<列名> <数据类型> [<列级完整性约束条件>],
[<列名> <数据类型> [<列级完整性约束条件>],]
[<列名> <数据类型> [<列级完整性约束条件>],]
[..... ,]
[<表级完整性约束条件>,]
[..... ,]
);
AI写代码
sql
列级完整性约束条件:
not null / null:不允许字段值为空,和允许字段值为空
unique约束:唯一性约束,该字段的值不能重复
default:缺省值约束(默认约束),字段中使用频率最高的字段值设置为该列的缺省值,可以减少数据输入的工作量
表级完整性约束:
unique:要求某些字段的组合之不能有重复
primary key:主键约束,实现关系的实体完整性
修改基本表结构:

查看表结构:
describe / explain 表名;
AI写代码
sql
输出结果包含六个字段

修改表结构
1)修改表名

alter table <原表名> rename [to] <新表名>;
AI写代码
sql
2)修改字段名

alter table <表名> change <原字段名> <新字段名> <新数据类型>;
AI写代码
sql
3)修改字段的数据类型

alter table <表名> modify <字段名> <数据类型>;
AI写代码
sql
4)添加字段

alter table <表名> add <字段名> <数据类型>;
AI写代码
sql
5)删除字段

alter table <表名> drop <字段名>;
AI写代码
sql
6)添加或删除外键约束

语法格式1:添加外键约束
alter table <表名> add [constraint <约束名>] foreign key (<外键字段名>) references <对应主键所在表> (<对应主键字段名>);

语法格式2:删除外键约束
alter table <表名> drop foreign key <约束名>;
AI写代码
sql
删除基本表:

drop table <表名>;
AI写代码
sql
第六章:数据操纵语言(DML)
简单查询

select 目标字段 | 字段表达式或函数
from <数据源>
[where <元组选择条件>]
[group by <分组字段>] [having <组删选条件>] //若后面有having则先having对个组进行筛选,然后执行group
[order by <排序字段> <asc | desc>] //排序asc升序(默认),desc降序
[limit [起始列表,]显示的行数]
AI写代码
sql
select语句中的操作符:

查询条件

运算符

算数运算符 + 、- 、 * 、/ 、 %
比较运算符

=、>、>=、<、<=、<>(或!=) 、[NOT] BETWEEN…AND 、IS [NOT] NULL 、[NOT] IN 、[NOT] LIKE、exists

逻辑操作符

与(and 或 &&)、或(or 或 || )、非(not 或 !)、任何一个(any)、每个(all)

集合操作符 并(union)、交(intersect)、差(except)(mysql只支持并,不支持交 差)
其它操作符 *(表中所有字段的简写)、all(保留重复行)、distinct(去除重复行)
比较操作符

1)in / not in 操作符
<字段> [not] in (列表值 | 子查询);

2)between...and...操作符
<字段> [not] between 值1 and 值2;

  1. is null / is not null 操作符 (是空为1,不是为0)
    <字段> is [not] null;

4)like 操作符 (通配符有%和_,其中 % 表示任意数目包括零的字符、 _ 表示只能匹配单个字符)
<字段> [not] like 通配符表达式;

5)exists 操作符
[not] exists (<子查询>);
AI写代码
sql

逻辑操作符

1)and 操作符
条件表达式1 and 条件表达式2;

2)or 操作符
条件表达式1 or 条件表达式2;

3)not 操作符
not 条件表达式;

4)any 操作符
<字段> <比较运算符> any (列表值 | 子查询);

5)all 操作符
<字段> <比较运算符> all (列表值 | 子查询);
AI写代码
sql

集合操作符

列表值1 | 子查询1 union 列表值2 | 子查询2
AI写代码
sql
第七章:MySQL视图和触发器的使用
视图的作用

简化用户的操作
实现数据库系统的安全性
提高数据逻辑独立性
创建视图:

create view <视图名> [<字段名列表>]
as <子查询>
[with check option];
AI写代码
sql
更新视图:对视图的更新其实就是对表的更新

删除视图:

drop view 视图名;
AI写代码
sql
触发器:是提供给程序员或数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,而是由事件来触发

触发器创建语法四要素:

触发地点(table):触发器对哪个表起作用
触发事件(insert / update / delete):在表执行什么操作时触发
触发时间(after / before):在表执行相应操作前还是操作后触发
触发器程序体(begin...end):触发后执行的动作
(每个表每个事件只允许执行一个触发器,因此,每个表最多支持6个触发器,即 before/after insert、before/after update、before/after delete)

触发器的创建:

create trigger <触发器名> <before / after>
<insert | update | delete>
on <表名> for each row
<触发器主体>;

触发器主体:
begin
sql语句
end;
AI写代码
sql
触发器名:触发器的名称,触发器在当前数据库中必须具有唯一的名称,如果在某个数据库中创建,则要在名称前面加上数据库的名称
before / after:触发器被触发的时刻
insert | update | delete:插入表时 / 更改某一行数据 / 删除某一行数据 时激活触发器
表名:与触发器相关联的表名,此表必须是永久性表,不能将触发器与临时表或视图关联起来
触发器主体:触发器动作主体,包含触发器激活时将要执行的MySQL语句,如果要执行多条语句,可以使用begin...end符合语句格式
for each row :行级触发,对于受触发事件影响的每一行都要激活触发器的动作
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_65704814/article/details/134153335

posted @ 2025-06-10 10:20  执笔诉相思  阅读(42)  评论(0)    收藏  举报