MySQL笔记 FOR LEVEL2

本文详细介绍了MySQL数据库的基础知识,包括数据库系统的特点、数据模型、关系数据库、数据库设计步骤和方法,以及SQL语言的基础操作如数据定义、查询、更新。此外,还涉及了数据库设计的完整性约束、数据的备份与恢复、存储过程和函数等高级主题,是学习MySQL数据库的全面指南。
摘要由CSDN通过智能技术生成

数据库技术的基本概念与方法

文章目录

1.1 数据库基础知识

1.1.1 数据库相关的基本概念
  • 数据:描述事物的符号记录称为数据。
  • 数据库:长期储存在计算机内的、有组织的、可共享的数据的集合。
  • 数据库管理系统:数据库管理系统(DataBase Management System , DBMS)是位于操作系统与用户之间的一层数据管理软件,是数据库系统的核心。
    • 数据定义:DBMS提供数据定义语言(Data Definition Language , DDL)
    • 数据操纵:DBMS提供数据操纵语言(Data Manipulation Language , DML)
    • 数据库的建立和维护功能
    • 数据库的运行管理
    • 提供方便、有效存取数据库信息的接口和工具
  • 数据库系统:数据库系统(DataBase System , DBS)是指引入数据库技术的计算机系统。一个完整的数据库系统不仅包括数据库,还包括支持数据库的硬件、数据管理系统及相关软件、数据库管理员与用户。
1.1.2 数据库系统的特点
  • 数据结构化:在数据库系统中,数据不再针对某一应用,而是面向全局应用,具有整体的结构化。
  • 数据冗余度小:数据库系统从整体和全局上看待和描述数据,数据不仅面向某个应用,而且面向全局应用,从而可大大减少数据冗余,节约存储空间,避免因数据的重复存储和不同拷贝而造成数据之间的不一致性。
  • 数据共享性好:同样,由于数据库系统是从整体和全局上看待和描述数据,使得数据不仅面向某个应用,而且面向整个系统,因此数据可以被多个用户和多个应用共享使用。
  • 数据独立性高:数据独立性包括数据的物理独立性和数据的逻辑独立性。物理独立性是指用户的应用程序与存储在磁盘上数据库中的数据是相互独立的;逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的。
  • 数据库保护:数据库管理系统具有对数据的统一管理和控制功能,主要包括数据的安全性、完整性、并发控制与故障恢复等,即数据库保护
    • 数据的安全性
    • 数据的完整性
    • 并发控制
    • 故障恢复
1.1.3 数据库系统的结构
  • 客户/服务器结构 Client/Serve C/S 2层结构
  • 浏览器/服务器结构 Brower/Serve B/S 3层结构
    –>上述两种数据库结构的区别:https://blog.csdn.net/qq_36885128/article/details/88104609?ops_request_misc=&request_id=&biz_id=102&utm_term=c/s%20%E4%B8%8Eb/s%E7%9A%84%E5%8C%BA%E5%88%AB&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-0-88104609.142v42pc_rank_34,185v2control&spm=1018.2226.3001.4187
1.1.4 数据模型

数据库中的数据是有一定结构的,这种结构用数据模型(Data Model)表示

  • 概念模型:最典型的概念模型是实体联系(Entity-Relationship , E-R)模型,使用E-R图表示
    • 实体:矩形
    • 属性:椭圆
    • 联系:菱形
  • 逻辑模型
    • 层次模型:数据库最早使用的一种模型
    • 网状模型:网状模型以网状结构表示实体与实体之间的联系。网状模型是层次模型的扩展
    • 关系模型:大多数商业数据库基于关系模型
    • 面向对象模型:面向对象模型既是概念模型又是逻辑模型
  • 物理模型:用于描述数据在存储介质上的组织结构

1.2 关系数据库

关系数据库是目前应用最广泛的数据库,它以关系模型作为逻辑数据模型,采用关系作为数据的组织方式。其数据库操作建立在关系代数的基础上,具有坚实的数学基础。关系数据库具有较高的数据独立性,当数据的存储结构发生变化时不会影响应用程序,这样能大大减少系统维护的工作量。

1.2.1 基本概念

关系数据库的结构就是二维表

1.2.2 基本性质

关系数据库具有下列基本性质:

  • 关系必须满足最基本的要求,即:每一列都必须是不可再分的数据项。
  • 表的任意两个元组不能完全相同。
  • 表中的每一列是同一数据类型,且列的值来自相同的域。
  • 不同列的值可以出自同一个域,但列名不能相同。
  • 表中列的顺序可以任意交换,行的顺序也可以任意交换。

1.3 数据库设计基础

数据库设计是建立数据库及其应用系统的一项重要工作,也是信息系统开发和建设中的核心技术

1.3.1 数据库设计的步骤
  • 需求分析
  • 概念结构设计
  • 逻辑结构设计
  • 物理结构设计
  • 数据库实施
  • 数据库运行与维护
1.3.2 关系数据库设计的方法
  • 概念结构的设计方法:将需求分析得到的用户需求抽象为信息结构(即概念模型)的过程,它是整个数据库设计的关键,通常使用E-R图来描述现实世界的概念模型
  • 逻辑结构的设计方法:把概念结构设计阶段已设计好的基本E-R图转换为关系模型,关系模型的逻辑结构是一组关系模式的集合

1.4 MySQL概述(略)

1.4.1 MySQL系统特性
  • 使用C和C++编写,保证了可移植性
  • 支持多种操作平台
  • 为多种语言提供了应用程序编程接口
  • 支持多线程服务
  • 优化SQL查询算法
  • 既能作为一个单独的应用程序运行,也能作为一个库嵌入软件
  • 提供多语言支持
  • 提供多种连接数据库的途径
  • 提供用于管理、检查、优化数据库操作的管理工具
  • 可以支持上千万条记录,数据类型丰富
  • 支持多种存储引擎
1.4.2 MySQL服务器的安装与配置(略)
1.4.3 MySQL服务器的启动与关闭(略)
1.4.4 MySQL客户端管理工具(略)

MySQL编程语言

2.1 结构化查询语言SQL

  • SQL不是某个特定数据库供应商特有的语言,所有关系型数据库都支持SQL
  • SQL简单易学,语句全都是由具有很强描述性的英语单词所组成,而且这些单词的数目不多
  • SQL尽管看上去很简单,但实际上是一种强有力的语言,灵活使用其语言元素可以进行复杂和高级的数据库操作

2.2 MySQL语言组成

  • MySQL数据库所支持的SQL语言主要包括以下几个方面
    • 数据定义语言(DDL):CREATE、ALTER、DROP
    • 数据操纵语言(DML):SELECT、INSERT、UPDATE、DELETE
    • 数据控制语言(DCL):GRANT、REVOKE

2.3 MySQL函数

2.3.1 聚合函数
  • COUNT() 计数,忽略NULL值 常用COUNT(*)
  • SUM() 求和
  • AVG() 求平均
  • MAX() 取最大值
  • MIN() 取最小值
2.3.2 数学函数
  • ABS() 绝对值
  • FLOOR() 返回小于或等于参数的最大整数
  • CEIL() 返回大于或等于参数的最小整数
  • RAND() 返回0~1之间的随机数,其中加参数则会输出一个对应参数的固定的随机数
2.3.3 字符串函数
  • UPPER() UCASE() 转大写
  • LOWER() LCASE() 转小写
  • LEFT(s,n) 返回字符串s前n个字符
  • SUBSTRING(s,n,len) 返回字符串s从第n个位置开始长度为len的字符串
  • NULLIF(v1 , v2) 比较两个字符串,如果v1与v2相等,则返回NULL,否则返回v1
2.3.4 日期和时间函数
  • CURDATE() CURRENT_DATE() 返回当前年月日
  • CURTIME() CURRENT_TIME() 返回当前时间
  • NOW() 返回当前年月日时间
2.3.5 其他函数
  • IF(expr , v1 , v2) 条件判断函数,如果表达式expr成立,执行v1,否则执行v2
  • IFNULL(v1 , v2) 条件判断函数,如果表达式v1不为空,则显示v1值,否则显示v2值(可以理解为v2为默认值)

数据定义

3.1 定义数据库

涉及数据库的创建、选择、查看、修改、和删除操作

3.1.1 创建数据库

创建数据库语法:

CREATE {DATABASE|SCHEMA}[IF NOT EXISTS]db_name
[[DEFAULT] CHARACTER SET [=] charset_name]
[[DEFAULT] COLLATE [=] collation_name];

其中character是字符集,collate是比较规则

3.1.2 选择与查看数据库

选择数据库语法:

USE db_name;

查看数据库语法:

SHOW {DATABASES|SCHEMAS};

MySQL自动安装的数据库代表的含义

数据库名称 数据库作用
mysql 描述用户访问权限
information_schema 保存关于MySQL服务器所维护的所有其他数据库的信息,如数据库名、数据库的表、表字段的数据类型与访问权限
performance_schema 主要用于收集数据库服务器性能参数
test 用户利用该数据库进行测试工作
3.1.3 修改数据库

修改数据库语法:

ALTER {DATABASE|SCHEMA}[db_name]
[DEFAULT] CHARACTER SET [=] charset_name
[DEFAULT] COLLATE [=] collation_name;

数据库的全局特性储存在数据库目录中的db.opt

3.1.4 删除数据库

删除数据库语法:

DROP {DATABASE|SCHEMA}[IF EXISTS] db_name;

3.2 定义表

3.2.1 MySQL常用的数据类型(略)
3.2.2 创建表

创建表语法:

CREATE TABLE tb_name
(
	字段1 数据类型 [列级完整性约束条件][默认值]
	[,字段2 数据类型 [列级完整性约束条件][默认值]]
	[, ......]
	[, 表级完整性约束条件]
)[ENGINE = 引擎类型];
3.2.3 查看表

查看表名称语法:

SHOW TABLES [{FROM|IN}db_name];

查看数据表的基本结构:

SHOW COLUMNS {FROM|IN} tb_name [{FROM|IN}db_name];
|
{DESCRIBE|DESC}tb_name;

查看数据表的详细结构

SHOW CREATE TABLE tb_name;
3.2.4 修改表

修改表——添加字段语法:

ALTER TABLE tb_name ADD [COLUMN]新字段名 数据类型 [约束条件][FIRST|AFTER 已有字段名];

修改表——修改字段语法:

ALTER TABLE tb_name CHANGE [COLUMN] 原字段名 新字段名 数据类型 [约束条件];
--alter...alter语句用来修改或删除表中指定列的默认值
ALTER TABLE tb_name ALTER [COLUMN] 字段名{SET|DROP}DEFAULT;
ALTER TABLE tb_name MODIFY [COLUMN] 字段名 数据类型 [约束条件][FIRST|AFTER 已有字段名];

修改表——删除字段语法:

ALTER TABLE tb_name DROP [COLUMN]字段名;
3.2.5 重命名表

重命名语法:

ALTER TABLE 原表名 RENAME [TO] 新表名;
|
RENAME TABLE 原表名1 TO 新表名1[,原表名2 TO 新表名2]......;
3.2.6 删除表

删除表语法:

DROP TABLE [IF EXISTS]表1[,表2]......;

3.3 数据的完整性约束

  • 实体完整性
  • 参照完整性
  • 用户定义的完整性
3.3.1 定义实体完整性
  • 实体完整性规则是指关系的主属性不能取空值,即主键和候选键在关系中所对应的属性都不能取空值
  • MySQL是实体完整性就是通过主键约束和候选键约束来实现的
  • 主键:唯一 非空 复合主键不能包含多余列
  • 关键字 PRIMARY KEY
  • 候选键:唯一 非空
  • PRIMARY KEY与UNIQUE之间的区别
    • 一个表只能存在一个PRIMARY KEY ,但可以定义多个UNIQUE
    • 定义为PRIMARY KEY的列不允许有空值,但定义为UNIQUE的字段允许空值的存在
    • 定义PRIMARY KEY约束时,系统会自动产生PRIMARY KEY索引,而定义UNIQUE约束时,系统会自动产生UNIQUE索引
  • 约束命名:
CONSTRAINT<symbol>
{PRIMARY KEY (主键字段列表)
|UNIQUE (候选键字段列表)
|FOREIGN KEY(外键字段列表) REFERENCES tb_被参照关系(主键字段列表)
|CHECK(约束条件表达式)};
3.3.2 定义参照完整性(背单词)
  • RESTRICT:限制策略
  • CASCADE:级联策略
  • SET NULL:置空策略
  • NO ACTION:不采取实施措施,同RESTRICT
  • SET DEFAULT:默认值策略
    举例:
ON UPDATE RESTRICT
ON DELETE CASCADE
3.3.3 用户定义的完整性

非空约束

NOT NULL

CHECK约束

--expr为表达式
CHECK(expr)
3.3.4 更新完整性约束

删除约束语法:

--删除外键约束,可以先通过SHOW CREATE TABLE查询外键约束名
ALTER TABLE <表名> DROP FOREIGN KEY <外键约束名>;
--删除主键约束
ALTER TABLE <表名> DROP PRIMARY KEY;
--删除候选键约束
ALTER TABLE <表名> DROP INDEX {约束名|候选键字段名};

添加约束语法

--添加外键约束
ALTER TABLE <表名> ADD [CONSTRAINT<约束名>]FOREIGN KEY(外键字段名);
REFERENCES 被参照表(主键字段名);
--添加主键约束
ALTER TABLE <表名> ADD [CONSTRAINT<约束名>]PRIMARY KEY(主键字段名);
--添加候选键约束
ALTER TABLE <表名> ADD [CONSTRAINT<约束名>]UNIQUE KEY(主键字段名);

数据查询(重点)

4.1 SELECT语句

SELECT语法:

SELECT [ALL|DISTINCT|DISTINCTROW]<目标列表达式1>[,目标列表达式2]...
FROM <表名1或视图1>[,<表名2或视图2>]...
[WHERE<条件表达式>]
[GROUP BY <列名1>[HAVING <条件表达式>]]
[ORDER BY <列名2>[ASC|DESC]]
[LIMIT [m,]n]

4.2 单表查询

单表查询指仅涉及一个表的查询

4.2.1 选择字段
SELECT 目标列表达式1,目标列表达式2,...
FROM 表名;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值