MySQL数据库的学习心得

什么是MySQL数据库?

MySQL简介

MySQL是一种流行的开源关系型数据库管理系统,广泛应用于各种网站和应用程序中。它具有高性能、可靠性和易用性,支持多种操作系统,如Windows、Linux和MacOS。

MySQL数据库是一款广泛使用的开源关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发,后被Sun Microsystems收购,最终归属于甲骨文公司(Oracle Corporation)。MySQL以其高性能、稳定性和易用性而闻名,适用于各种规模的应用程序,从小型网站到企业级系统都有广泛的应用。

主要特点

  1. 开源免费:MySQL遵循GNU通用公共许可证(GPL),这意味着用户可以免费使用和修改源代码。
  2. 跨平台:MySQL支持多种操作系统,如Linux、Windows、MacOS等,这使得它具有很高的灵活性。
  3. 性能高效:MySQL优化了查询执行,提供了快速的读写操作,适合高并发环境。
  4. 安全性:通过权限系统和加密功能,MySQL能够提供良好的数据保护。
  5. 可扩展性:MySQL支持主从复制、集群等高级特性,方便进行水平或垂直扩展。
  6. 社区支持:拥有庞大的开发者社区,用户可以轻松获取技术支持和资源。

市面上的几款MySQL管理工具

1:MySQL Workbench - 免费、官方、有付费软件才有的重型功能
2:Sequel Pro - 免费、小巧、轻量级、Mac Only
3:Beekeeper Studio - 免费、小巧、跨平台、多数据库支持
4:HeidiSQL - 免费 Win Linux only 功能丰富直给 有中文版
5:DBeaver - 免费 小巧、跨平台、功能大合集式,多数据库 有中文版
6:phpMyadmin - 免费、跨平台在线版、简单直接,上手快
7:卡拉云 - 免费、无需安装 跨平台 多数据库支持 灵活搭建 定制开发 新一代
8:Navicat - 付费、跨平台、稳定、重型功能、有中文版
9:dbForge Studio - 付费 Win only 稳定 产品逻辑扎实
10:SQLyog - 付费 Win Only 付费中的精巧版 中文版

数据库的设计

E-R图

E-R图(实体-关系图)是数据库设计中的一个重要工具,它以图形化的方式展示了实体、属性及其之间的关系。在MySQL数据库设计中,E-R图的作用主要体现在以下几个方面:

  1. 概念模型的表达:E-R图作为概念模型,帮助开发者和数据库设计师理解和沟通实体之间的联系,从而更好地设计数据库结构。

  2. 逻辑结构设计:E-R图的设计是数据库逻辑结构设计的重要步骤,它能够帮助设计者清晰地理解数据间的关系,并为数据库的物理结构设计打下基础。

  3. 促进团队协作:E-R图可以提高团队之间的协作效率,确保数据库结构符合需求和规范。

  4. 优化数据库设计:通过E-R图,可以发现潜在的设计问题,如冗余、不一致等,并及时进行优化。

  5. 指导数据库实现:E-R图可以转化为数据库的物理模型,即表结构,指导数据库的实际创建和维护工作。     

简单示例:

MySQL的基本内容

MySQL数据库基本语法

数据定义语言(DDL)
CREATE DATABASE:创建数据库
DROP DATABASE:删除数据库
CREATE TABLE:创建表
ALTER TABLE:修改表结构(包括添加、删除、修改列)
DROP TABLE:删除表
数据操作语言(DML)
INSERT INTO:向表中插入数据
SELECT:从表中查询数据
UPDATE:修改表中的数据
DELETE FROM:删除表中的数据
数据控制语言(DCL)
GRANT:授予用户权限
REVOKE:撤销用户权限
事务控制语言(TCL)
BEGIN:开始事务
COMMIT:提交事务
ROLLBACK:回滚事务
其他常用语句
SHOW DATABASES:列出所有数据库
SHOW TABLES:列出指定数据库中的所有表
DESCRIBE 或 SHOW COLUMNS:描述表的结构
SELECT 语句中的 AS 用于给列取别名
JOIN:连接两个或多个表
UNION:合并两个或多个 SELECT 语句的结果

常用的MySQL语句结构:

内连接:

select [distinct] 输出列

from 表名1

[inner] join 表名2 on 表名2.公共列=表名1.公共列

[[inner] join 表名3 on 表名3.公共列=表名1|2.公共列]

[where 条件]

[group by 字段名 [having 条件]]

[order by 字段名 asc/desc]

[limit  [偏移量,]记录数]

创建自定义函数:

DELIMITER $$

CREATE FUNCTION 函数名(形参名 数据类型) RETURNS 数据数型

BEGIN

    [SQL语句]

    RETURN 返回值;

END

$$

DELIMITER ;

定义存储过程:

DELIMITER $$

CREATE PROCEDURE 过程名(INOUT 形参名 数据类型)

BEGIN

    SQL语句

END

$$

DELIMITER ;

MySQL数据库的函数

字符串处理函数

  • ASCII(s):返回字符串s的第一个字符的ASCII码。
  • CHAR_LENGTH(s):返回字符串s的字符数。
  • CONCAT(s1,s2...sn):合并多个字符串为一个字符串。
  • LOWER(s):将字符串s的所有字母转为小写字母。
  • REPLACE(s, s1, s2):返回替换后的新字符串,其中s是原字符串,s1是要被替换的子串,s2是新的子串。

数学函数

  • ABS(x):返回x的绝对值。
  • MOD(x, y):返回x除以y的余数。
  • RAND():生成一个0到1之间的随机数。
  • ROUND(x, n):对x进行四舍五入,保留n位小数。

日期时间函数

  • CURDATE():返回当前日期。
  • NOW():返回当前日期和时间。
  • DATE_ADD(date, interval):返回给定日期加上指定间隔后的日期。
  • DATE_SUB(date, interval):返回给定日期减去指定间隔后的日期。

聚合函数

  • COUNT(*):统计行数。
  • SUM(column):计算指定列的总和。
  • AVG(column):计算指定列的平均值。
  • MAX(column):获取指定列的最大值。
  • MIN(column):获取指定列的最小值。

简单示例演示

数据库设计

clinic(诊所)数据库包含三张表,表结构如下:

doctor(医生)表结构:

字段名

数据类型

约束

非空

字段说明

dId

char(2)

主键

医生编号

dName

varchar(50)

医生姓名

level

varchar(20)

职称

hireDate

date

入职日期

wage

decimal(10,2)

工资

patient(病人)表结构:

字段名

数据类型

约束

非空

字段说明

pId

char(4)

主键

病人编号

pName

varchar(50)

病人姓名

pSex

char(2)

性别

tel

char(11)

唯一

电话

age

int

年龄

service(就诊信息)表结构

字段名

数据类型

约束

非空

字段说明

serviceId

int

主键,自动增长

就诊流水号

pId

char(4)

外键

病人编号

dId

char(2)

外键

医生编号

serviceDate

datetime

就诊时间

fee

decimal(10,2)

诊疗费用

程序思路:

1:创建clinic(诊所)数据库

2:使用clinic(诊所)数据库

3:创建doctor(医生)表,patient(病人)表,service(就诊信息)三张表

程序代码:

1:create database clinic;

2:use clinic;

3:

CREATE TABLE doctor(
dId char(2) not null PRIMARY KEY COMMENT '医生编号',
dName varchar(50) not null COMMENT '医生姓名',
level varchar(20) not null COMMENT '职称',
hireDate date COMMENT '入职日期',
wage decimal(10,2) not null COMMENT '工资'
);

CREATE TABLE patient(
pId char(4) not NULL primary key COMMENT '病人编号',
pName varchar(50)  not null COMMENT '病人姓名',
pSex char(2) COMMENT '性别',
tel char(11) UNIQUE COMMENT '电话',
age int not null COMMENT '年龄'
);

create TABLE service(
serviceId int not NULL PRIMARY KEY auto_increment COMMENT '就诊流水号',
pId char(4) not null  COMMENT '病人编号',
dId char(2) not null  COMMENT '医生编号',
serviceDate datetime not NULL COMMENT '就诊时间',
fee decimal(10,2) COMMENT '诊疗费用',
FOREIGN KEY(pId) REFERENCES patient(pId),
FOREIGN KEY(dId) REFERENCES doctor(dId)
);

程序测试:

简单为设计完成的数据库结构创建以下信息

插入以下的就诊记录:病人编号为1018,医生编号为13,就诊时间为2020-8-18,费用为183元。

注意:根据外键规则,需先插入其他信息—>(在插入这条记录之前,请在医生表中增加一条医生编号为13的记录,其他信息自定;在病人表中增加一条病人编号为1018的记录)

测试代码

1:-- 1. 插入就诊记录前的准备工作
-- 在医生表中增加一条医生编号为13的记录
INSERT INTO doctor(dId,dName,level,hireDate,wage)
VALUES('13','明先','主任',NULL,20000);
-- 在病人表中增加一条病人编号为1018的记录
INSERT INTO patient(pId,pName,pSex,tel,age)
VALUES(1018,'王明','男','123456789',19);
-- 插入就诊记录
INSERT INTO service(pId,dId,serviceDate,fee)
VALUES('1018','13','2020-8-18',183);

测试结果:

以上示例显示就诊信息已成功插入创建的service表中。

总结

MySQL作为一种强大的数据库管理系统,具备多种核心特性,包括:

1:支持SQL:MySQL使用结构化查询语言(SQL)作为与数据库交互的标准语言。

2:多存储引擎支持:MySQL支持多种存储引擎,每个存储引擎都具有不同的特性。例如,InnoDB提供了事务支持,而MyISAM更适合用于只读操作。

3:ACID兼容:MySQL是ACID(原子性、一致性、隔离性、持久性)兼容的,这意味着它可以确保数据库事务的可靠性和完整性。

4:多平台支持:MySQL可以在多种操作系统上运行,包括Windows、Linux、macOS等。

5:高性能:MySQL以其高性能而著称。它能够处理大量的并发连接,具备出色的读取和写入性能。

 6:复制和故障转移:MySQL支持数据的复制和故障转移,这对于确保高可用性和数据安全性非常重要。

MySQL的学习心得

基础知识的重要性

  • SQL语言: 学习MySQL的第一步是掌握SQL(Structured Query Language),这是与数据库交互的标准语言。从基本的SELECTINSERTUPDATEDELETE语句到复杂的JOIN操作和子查询,每一步都是构建数据库技能的基础。
  • 数据类型和约束: 理解不同的数据类型(如INT、VARCHAR、DATE等)以及如何使用约束(如PRIMARY KEY、FOREIGN KEY、NOT NULL等)来保持数据的完整性和一致性是至关重要的。

实践经验的价值

  • 实验和练习: 通过编写和执行SQL语句来创建表、插入数据、查询和更新记录是非常有益的。实际操作可以帮助巩固理论知识,并更好地理解概念。
  • 错误和调试: 在实践中不可避免地会遇到错误。学会如何阅读错误消息并进行调试是提高解决问题能力的关键。

个人体会

学习MySQL是一个不断进步的行业,它要求持续学习和实践。通过这个过程,我不仅学会了如何管理和操作数据库,还提高了逻辑思维和问题解决的能力。MySQL的应用广泛,无论是在企业数据管理、Web开发还是数据分析领域,都扮演着重要角色。因此,掌握MySQL对于任何希望在IT行业发展的个人来说都是一个宝贵的技能。

  • 31
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值