mybatisplus 操作另一个数据库的数据_一个小时学会MySQL数据库

导读:本文详细介绍了MySQL数据库,主要从MySQL数据库的概要、MySQL介绍、如何快速安装运行MySQL数据库、使用GUI操作MySQL、如何使用SQL访问MySQL数据库、以及MySQL数据库的下载程序、帮助、视频这几个方面展开。

目录

  • 一、数据库概要

    • 1.1、发展历史

      • 1.1.1、人工处理阶段

      • 1.1.2、文件系统

      • 1.1.3、数据库管理系统

    • 1.2、常见数据库技术品牌、服务与架构

    • 1.3、数据库分类

      • 1.3.1、关系型数据库

      • 1.3.2、非关系型数据库

    • 1.4、数据库规范化

      • 1.4.1. 什么是范式

      • 1.4.2. 三大范式

      • 1.4.3. 范式与效率

  • 二、MySQL介绍

    • 2.1、MySQL概要

    • 2.2、系统特性

    • 2.3、存储引擎

  • 三、快速安装运行MySQL数据库

    • 3.1、使用绿色版

      • 3.1.1、设置mysql远程访问

      • 3.1.2、修改mysql用户密码

      • 3.1.2、安装服务

    • 3.2、使用安装版

  • 四、使用GUI操作MySQL

    • 4.1、关系型数据库的典型概念

    • 4.2、登录数据库

    • 4.3、创建数据库

    • 4.4、创建表

    • 4.5、管理数据    

      • 4.5.1、添加数据

      • 4.5.2、删除数据

      • 4.5.3、修改表结构

      • 4.5.4、外键

      • 4.5.5、唯一键

    • 4.6、上机练习

  • 五、使用SQL访问MySQL数据库

    • 5.1、增加数据

    • 5.2、查询数据

      • 5.2.1、表达式与条件查询

      • 5.2.2、聚合函数

    • 5.3、删除数据

    • 5.4、更新数据

    • 5.5、修改表

      • 5.5.1、添加列

      • 5.5.2、修改列

      • 5.5.3、删除列

      • 5.5.4、重命名表

      • 5.5.5、删除表

      • 5.5.6、删除数据库

      • 5.5.7、一千行MySQL笔记

      • 5.5.8、常用的SQL

  • 六、下载程序、帮助、视频

随着移动互联网的结束与人工智能的到来大数据变成越来越重要,下一个成功者应该是拥有海量数据的,数据与数据库你应该知道。

一、数据库概要

数据库(Database)是存储与管理数据的软件系统,就像一个存入数据的物流仓库。

在商业领域,信息就意味着商机,取得信息的一个非常重要的途径就是对数据进行分析处理,这就催生了各种专业的数据管理软件,数据库就是其中的一种。当然,数据库管理系统也不是一下子就建立起来,它也是经过了不断的丰富和发展,才有了今天的模样。

35fb06e36044592a4373f2044a7f809a.png

1.1、发展历史

1.1.1、人工处理阶段

在20世纪50年代中期以前的计算机诞生初期,其处理能力很有限,只能够完成一些简单的运算,数据处理能力也很有限,这使得当时的计算机只能够用于科学和工程计算。计算机上没有专用的管理数据的软件,数据由计算机或处理它的程序自行携带。当数据的存储格式、读写路径或方法发生变化的时候,其处理程序也必须要做出相应的改变以保持程序的正确性。

1.1.2、文件系统

20世纪50年代后期到60年代中期,随着硬件和软件技术的发展,计算机不仅用于科学计算,还大量用于商业管理中。在这一时期,数据和程序在存储位置上已经完全分开,数据被单独组织成文件保存到外部存储设备上,这样数据文件就可以为多个不同的程序在不同的时间所使用。

虽然程序和数据在存储位置上分开了,而且操作系统也可以帮助我们对完成了数据的存储位置和存取路径的管理,但是程序设计仍然受到数据存储格式和方法的影响,不能够完全独立于数据,而且数据的冗余较大。

1.1.3、数据库管理系统

从20世纪70年代以来,计算机软硬件技术取得了飞跃式的发展,这一时期最主要的发展就是产生了真正意义上的数据库管理系统,它使得应用程序和数据之间真正的实现的接口统一、数据共享等,这样应用程序都可以按照统一的方式直接操作数据,也就是应用程序和数据都具有了高度的独立性。

4c15352fbc87054e248032a2bc418af4.png

1.2、常见数据库技术品牌、服务与架构

 发展了这么多年市场上出现了许多的数据库系统,最强的个人认为是Oracle,当然还有许多如:DB2、Microsoft SQL Server、MySQL、SyBase等,下图列出常见数据库技术品牌、服务与架构。

3772d22208faff64c85aa6c4de2918a7.png

1.3、数据库分类

数据库通常分为层次式数据库、网络式数据库和关系式数据库三种。

而不同的数据库是按不同的数据结构来联系和组织的。

而在当今的互联网中,最常见的数据库模型主要是两种,即关系型数据库和非关系型数据库。

1.3.1、关系型数据库

当前在成熟应用且服务与各种系统的主力数据库还是关系型数据库。

ff7ac52fe4f52a04e23966d6461ca1bd.png

代表:Oracle、SQL Server、MySQL

1.3.2、非关系型数据库

随着时代的进步与发展的需要,非关系型数据库应运而生。

代表:Redis、Mongodb

NoSQL数据库在存储速度与灵活性方面有优势,也常用于缓存。

1.4、数据库规范化

经过一系列的步骤,我们现在终于将客户的需求转换为数据表并确立这些表之间的关系,那么是否我们现在就可以在开发中使用呢?答案否定的,为什么呢!同一个项目,很多人参与了需求的分析,数据库的设计,不同的人具有不同的想法,不同的部门具有不同的业务需求,我们以此设计的数据库将不可避免的包含大量相同的数据,在结构上也有可能产生冲突,在开发中造成不便。

1.4.1. 什么是范式

要设计规范化的数据库,就要求我们根据数据库设计范式――也就是数据库设计的规范原则来做。范式可以指导我们更好地设计数据库的表结构,减少冗余的数据,借此可以提高数据库的存储效率,数据完整性和可扩展性。

设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴德斯科范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需满足第三范式(3NF)就行了。

1.4.2. 三大范式

第一范式(1NF)

所谓第一范式(1NF)是指在关系模型中,对列添加的一个规范要求,所有的列都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。即实体中的某个属性有多个值时,必须拆分为不同的属性。在符合第一范式(1NF)表中的每个域值只能是实体的一个属性或一个属性的一部分。简而言之,第一范式就是无重复的域。

例如:表1-1中,其中”工程地址”列还可以细分为省份,城市等。在国外,更多的程序把”姓名”列也分成2列,即”姓”和“名”。

虽然第一范式要求各列要保存原子性,不能再分,但是这种要求和我们的需求是相关联的,如上表中我们对”工程地址”没有省份,城市这样方面的查询和应用需求,则不需拆分,”姓名”列也是同样如此。

表1-1   原始表

工程号

工程名称

工程地址

员工编号

员工名称

薪资待遇

职务

P001

港珠澳大桥

广东珠海

E0001

Jack

6000/月

工人

P001

港珠澳大桥

广东珠海

E0002

Join

7800/月

工人

P001

港珠澳大桥

广东珠海

E0003

Apple

8000/月

高级技工

P002

南海航天

海南三亚

E0001

Jack

5000/月

工人

第二范式(2NF)

在1NF的基础上,非Key属性必须完全依赖于主键。第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或记录必须可以被唯一地区分。选取一个能区分每个实体的属性或属性组,作为实体的唯一标识。

第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。简而言之,第二范式就是在第一范式的基础上属性完全依赖于主键。

例如:表1-1中,一个表描述了工程信息,员工信息等。这样就造成了大量数据的重复。按照第二范式,我们可以将表1-1拆分成表1-2和表1-3:

l  工程信息表:(工程编号,工程名称,工程地址):

表1-2   工程信息表

工程编号

工程名称

工程地址

P001

港珠澳大桥

广东珠海

P002

南海航天

海南三亚

l  员工信息表(员工编号,员工名称,职务,薪资水平):

表1-3   员工信息表

员工编号

员工姓名

职务

薪资水平

E0001

Jack

工人

3000/月

E0002

Join

工人

3000/月

E0003

Apple

高级技工

6000/月

这样,表1-1就变成了两张表,每个表只描述一件事,清晰明了。

第三范式(3NF)

第三范式是在第二范式基础上,更进一层,第三范式的目标就是确保表中各列与主键列直接相关,而不是间接相关。即各列与主键列都是一种直接依赖关系,则满足第三范式。

第三范式要求各列与主键列直接相关,我们可以这样理解,假设张三是李四的兵,王五则是张三的兵,这时王五是不是李四的兵呢?从这个关系中我们可以看出,王五也是李四的兵,因为王五依赖于张三,而张三是李四的兵,所以王五也是。这中间就存在一种间接依赖的关系而非我们第三范式中强调的直接依赖。

现在我们来看看在第二范式的讲解中,我们将表1-1拆分成了两张表。这两个表是否符合第三范式呢。在员工信息表中包含:”员工编号”、”员工名称”、”职务”、”薪资水平”,而我们知道,薪资水平是有职务决定,这里”薪资水平”通过”职务”与员工相关,则不符合第三范式。我们需要将员工信息表进一步拆分,如下:

l  员工信息表:员工编号,员工名称,职务

l  职务表:职务编号,职务名称,薪资水平

现在我们已经了解了数据库规范化设计的三大范式,下面我们再来看看对表1-1优化后的数据表:

员工信息表(Employee)

员工编号

员工姓名

职务编号

E0001

Jack

1

E0002

Join

1

E0003

Apple

2

工程信息表(ProjectInfo)

工程编号

工程名称

工程地址

P001

港珠澳大桥

广东珠海

P002

南海航天

海南三亚

职务表(Duty)

职务编号

职务名称

工资待遇

1

工人

3000/月

2

高级技工

6000/月

工程参与人员记录表(Project_ Employee_info)

编号

工程编号

人员编号

1

P001

E0001

2

P001

E0002

3

P002

E0003

通过对比我们发现,表多了,关系复杂了,查询数据变的麻烦了,编程中的难度也提高了,但是各个表中内容更清晰了,重复的数据少了,更新和维护变的更容易了,哪么如何平衡这种矛盾呢?

1.4.3. 范式与效率

在我们设计数据库时,设计人员、客户、开发人员通常对数据库的设计有一定的矛盾,客户更喜欢方便,清晰的结果,开发人员也希望数据库关系比较简单,降低开发难度,而设计人员则需要应用三大范式对数据库进行严格规范化,减少数据冗余,提高数据库可维护性和扩展性。由此可以看出,为了满足三大范式,我们数据库设计将会与客户、开发人员产生分歧,所以在实际的数据库设计中,我们不能一味的追求规范化,既要考虑三大范式,减少数据冗余和各种数据库操作异常,又要充分考虑到数据库的性能问题,允许适当的数据库冗余。

二、MySQL介绍

2.1、MySQL概要

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

18203e8de5f032c1ae72e595a7c1462c.png

MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。


MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。

MySQL官网:https://www.mysql.com/

MySQL下载:https://www.mysql.com/downloads/

2.2、系统特性

1、使用 C和 C++编写,并使用了多种编译器进行测试,保证了源代码的可移植性。

2、支持 AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。

3、为多种编程语言提供了 API。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby,.NET和 Tcl 等。

4、支持多线程,充分利用 CPU 资源。

5、优化的 SQL查询算法,有效地提高查询速度。

6、既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。

7、提供多语言支持,常见的编码如中文的 GB 2312、BIG5,日文的 Shift_JIS等都可以用作数据表名和数据列名。

8、提供 TCP/IP、ODBC 和 JDBC等多种数据库连接途径。

9、提供用于管理、检查、优化数据库操作的管理工具。

10、支持大型的数据库。可以处理拥有上千万条记录的大型数据库。

11、支持多种存储引擎。

12、MySQL 是开源的,所以你不需要支付额外的费用。

13、MySQL 使用标准的 SQL数据语言形式。

14、MySQL 对 PHP 有很好的支持,PHP是目前最流行的 Web 开发语言。

15、MySQL是可以定制的,采用了 GPL协议,你可以修改源码来开发自己的 MySQL 系统。

16、在线 DDL/更改功能,数据架构支持动态应用程序和开发人员灵活性(5.6新增)

17、复制全局事务标识,可支持自我修复式集群(5.6新增)

18、复制无崩溃从机,可提高可用性(5.6新增)

19、复制多线程从机,可提高性能(5.6新增)

20、3倍更快的性能(5.7新增)

21、新的优化器(5.7新增)

22、原生JSON支持(5.7新增)

23、多源复制(5.7新增)

24、GIS的空间扩展(5.7新增)

2.3、存储引擎

MySQL数据库根据应用的需要准备了不同的引擎,不同的引擎侧重点不一样,区别如下:

MyISAM MySQL 5.0 之前的默认数据库引擎,最为常用。拥有较高的插入,查询速度,但不支持事务

InnoDB 事务型数据库的首选引擎,支持ACID事务,支持行级锁定, MySQL 5.5 起成为默认数据库引擎

BDB源 自 Berkeley DB,事务型数据库的另一种选择,支持Commit 和Rollback 等其他事务特性

Memory 所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率。但是会占用和数据量成正比的内存空间。并且其内容会在 MySQL 重新启动时丢失

Merge 将一定数量的 MyISAM 表联合而成一个整体,在超大规模数据存储时很有用\

Archive 非常适合存储大量的独立的,作为历史记录的数据。因为它们不经常被读取。Archive 拥有高效的插入速度,但其对查询的支持相对较差Federated 将不同的 MySQL 服务器联合起来,逻辑上组成一个完整的数据库。非常适合分布式应用Cluster/NDB 高冗余的存储引擎,用多台数据机器联合提供服务以提高整体性能和安全性。适合数据量大,安全和性能要求高的应用CSV 逻辑上由逗号分割数据的存储引擎。它会在数据库子目录里为每个数据表创建一个 .csv 文件。这是一种普通文本文件,每个数据行占用一个文本行。CSV 存储引擎不支持索引。

BlackHole 黑洞引擎,写入的任何数据都会消失,一般用于记录 binlog 做复制的中继EXAMPLE 存储引擎是一个不做任何事情的存根引擎。它的目的是作为 MySQL 源代码中的一个例子,用来演示如何开始编写一个新存储引擎。同样,它的主要兴趣是对开发者。EXAMPLE 存储引擎不支持编索引。

另外,MySQL 的存储引擎接口定义良好。有兴趣的开发者可以通过阅读文档编写自己的存储引擎。

aa9590e9eccf3450b722e5241c99bfdb.png

三、快速安装运行MySQL数据库

MySQL以前一直是开源免费的,被Oracle收购后有些变化:以前的版本都是免费的,社区版按GPL协议开源免费,商业版提供更加丰富的功能,但收费。

社区版的下载地址:https://dev.mysql.com/downloads/ (免费)

企业版的下载地址:https://www.mysql.com/downloads/(收费)

3.1、使用绿色版

为了方便快捷的使用MySQL我已经准备好了一个绿化了的MySQL,解压后就可以直接使用,不需要任何配置。

下载地址1:https://pan.baidu.com/s/1hrS5KUw 密码: sug9

下载地址2:http://download.csdn.net/detail/zhangguo5/9773842

下载后直接解压:

51a23e08cd3404f958ff13c1572e804e.png

点击启动PStart.exe这是一个自定义菜单的小工具,为了整理资源用的。

里面有两个MySQL的绿色版软件5.0,5.5

Navicat for MySQL是一个数据库客户端管理工具

点击启动PStart.exe后的结果如下:

265b406d2fc7a280c95a5964dc0c5e90.png

点击启动MySQL服务,运行Navicat for MySQL即可。

*注意:上面的PStart只是一个整理文档资料的工具,并非必要,如果启动时有错误或为空时,可以直接关闭,直接启动MySQL服务,如:

39e503ac214abda9ea3a62607f300c26.png

mysql_start.bat用于启动MySql数据库,mysql_stop.bat用于关闭MySql数据库。

开发工具的启动方式也一样,如下所示:

ec3bd1930daf1616f60fe58110b9f3fb.png

navicat.exe用于启动Navicat数据库客户端,最好发送快捷方式到桌面,省去每次打开文件夹的麻烦。

3.1.1、设置mysql远程访问

执行mysql 命令进入mysql 命令模式,执行如下SQL代码 

mysql> use mysql;    
mysql> GRANT ALL ON *.* TO admin@'%' IDENTIFIED BY 'admin' WITH GRANT OPTION;

#这句话的意思 ,允许任何IP地址(上面的 % 就是这个意思)的电脑 用admin帐户 和密码(admin)来访问这个MySQL Server 
#必须加类似这样的帐户,才可以远程登陆。root帐户是无法远程登陆的,只可以本地登陆

3.1.2、修改mysql用户密码

1、mysqladmin命令

格式如下(其中,USER为用户名,PASSWORD为新密码):

mysqladmin -u USER -p password PASSWORD

该命令之后会提示输入原密码,输入正确后即可修改。
例如,设置root用户的密码为123456,则

mysqladmin -u root -p password 123456

2、UPDATE user 语句

这种方式必须是先用root帐户登入mysql,然后执行:

UPDATE user SET password=PASSWORD('123456') WHERE user='root';
FLUSH PRIVILEGES;

3、SET PASSWORD 语句

这种方式也需要先用root命令登入mysql,然后执行:

SET PASSWORD FOR root=PASSWORD('123456');

4.root密码丢失的情况

使用 MySQL 自带的一个工具"MySQL GUI Tools",我一直用的是5.0版本的。在安装目录中运行一个程序 MySQLSystemTrayMonitor.exe,运行完后在系统托盘会出现图标。如果MySQL服务尚未安装,则不会出现,可先通过Action>Manage MySQL Instances 先配置和安装服务。如果已经安装服务,鼠标右键点击后,会出现"Configure Instance"的菜单。点击后出现如下MySQL Administrator窗口: 

假如原来的服务配置都正常的情况下,选中左侧列表中的“启动变量”,并在相应的右侧标签中选择“安全”,勾选“禁用grant表”,然后“应用更改”。 
并回到左侧的“服务器控制”,和右侧相应的“开始/停止服务”标签,点击启动服务。此时,连接mysql已经不需要用户名和密码了,你可以修改root密码。

3.1.2、安装服务

首先我们先进入mysql的安装目录下的bin目录、之后打开DOS命令窗口,进入该目录下(一定要进入该目录,否则操作错误)

889eef3ad55fe32db231e7473b9dbf87.png

执行DOS命令:

输入命令:mysqld --install,之后出现如下界面。提示安装服务成功。

2717bc02e7bed36394de01cb8ab61d3c.png

注意是mysqld --install不是mysql --install

如果要卸载服务,可以输入如下命令:mysqld --remove。出现如下界面。提示移除服务成功。

e417770bf31157dafba45f402a71249f.png

3.2、使用安装版

MySQL5.5.27_64位安装包下载地址1: https://pan.baidu.com/s/1minwz1m 密码: ispn

MySQL5.5.27_64位安装包下载地址2: http://download.csdn.net/detail/zhangguo5/9775460

MySQL5.7.17安装包官网下载地址: https://dev.mysql.com/downloads/windows/installer/

选择自定义:

6ed7ba40e47c4d30c06ec9a0dc442144.png

安装的组件信息:

fdb33327b3ef7b5a767541e9d110b6d1.png

服务器软件目录:5d41e61aac267dd6d7912322a99413c9.png

数据目录:

3f2beb5cdf5d538d1f9569bbbadb3e7d.png

点击install安装即可:

3f3e8b5fd9e744701a5db7a7c6d158f1.png

配置:

3f3e8b5fd9e744701a5db7a7c6d158f1.png

ee44a77536c1013fb4d3cfac43c35e7a.png

机器类型

70e267aa5302ddd7e04fd4fdb3c950d6.png

是否支持事务功能:

a3d6a6a61ff93b65a10c44402828c2ae.png

innodb表空间:

eebf1849e484e7d2b9e0d43a400b4f5d.png

连接数量:

5d146ff9fb2d5d0a7dd5c7bd0a205ad5.png

43c22a8fba1d0fa291eb7f2a528c7657.png

字符集设定:

ac1feff3b8fe2065454ef9840c1bc98e.png

配置windows管理相关:

ec5b3863ccf7cd3955a8e3fcf7efa1b7.png

配置安全选项,设置管理员的用户名与密码:

2b458e570584236dfb97d1c8e9be74d9.png

最后执行配置即可:

81fe6ccf4102500d765a02970d7fda57.png

配置后,会启动服务。

新版的MySQL安装包大了很多,安装过程也有些不一样。

四、使用GUI操作MySQL

4.1、关系型数据库的典型概念

数据库 databse:数据的仓库

e3b08912d1aadfd9835a05c790f67c26.png

表 table:数据是保存在表内,保存在一个表内的数据,应该具有相同的数据格式

行:行用于记录数据

记录:行内的数据

列:列用于规定数据格式

字段:数据的某个列

bc23539ca9a39ef945306915b66fc88c.png

SQL:用来管理数据的语言。结构化查询语言(SQL,Structured Query Language)

ca62e5ebf156c96d7b8935857f5685d1.png

主键:唯一地标识表中的某一条记录,不能空,不能重复

4.2、登录数据库

4310d257efb23ec30bff65128ab388a4.png

*连接本地数据库时需要启动服务

f84bc539653e7b39ef032c8e517c0ee5.png

4.3、创建数据库

 755122486f0fdff4fe7d2230a378a81b.png

1c344400d4021517061d63681f64b584.png

4.4、创建表

91a6ed1ebbf8d850b894a64a80f031c7.png

f16ff73c97a29c7ae96f49c789f86476.png

列的类型:

088eaace8deb77a457cd83bbaea1ee47.png

数字类型

整数: tinyint、smallint、mediumint、int、bigint
浮点数: float、double、real、decimal
日期和时间: date、time、datetime、timestamp、year

字符串类型
字符串: char、varchar
文本: tinytext、text、mediumtext、longtext

二进制(可用来存储图片、音乐等): tinyblob、blob、mediumblob、longblob

列的约束:

ed44dabc6c4e638805055521ed6b6f82.png

4.5、管理数据

4.5.1、添加数据

双击新建好的表名,打开表,就可以添加数据了。

6f6db651d84ee7c03f0238faa47427ca.png

4.5.2、删除数据

c2bc96dcfdf8262074dc19e9560a7914.png

4.5.3、修改表结构

如果想向现有的表中添加一列,则可以修改表结构:

6258608626c7919e190804bee727243f.png

4.5.4、外键

64f22cf6582d22fab05c8b7bf66b5035.png

上面这个学生表是有些问题的:

a)、不便于修改,比如教室换成了305教室,则每个学员都要修改

b)、数据冗余,大量的重复数据

将表拆分成两个,分解后问题解决,如下图所示:

acc6e7f4742abfeeafcbbef128bc6ab4.png

这里的班级编号就是外键,可以空,但不为空时他的值一定在要引用表中存在。如果学生表中的编号是主键这里就不应该重复,外键则可以重复也允许为空。

添加外键:

班级表:

1ea08c1598ad64d47dce32b085edf92c.png

学生表:

98a2699b7c343ad2e9cd00a5873522af.png

添加外键:

e6d434ef37a30664cf73a398ba9c2e20.png

删除与更新时可以实现级联更新与删除,当更新设置为CASCADE时主键变化引用主键的表也会一起变化,当删除设置为CASCADE时删除主键表,引用的记录都将被删除。

4.5.5、唯一键

唯一键,也称(唯一约束),和主键的区别是可以为有多个唯一键并且值可以为NULL,但NULL也不能重复,也就是说只能有一行的值为NULL。它会隐式的创建唯一索引。

设置方法:索引 --> 添加索引 -->  栏位名 添加你想设置唯一约束的列 --> 索引类型选择 Unique

ac4bbd1cfc1eebb6ab908f8a8077c7b0.png

4.6、上机练习

1、请创建一个新的数据库叫HR,在HR数据库中添加EMP表,EMP表的表结构如下所示

EMP表,员工信息

名称

类型

描述

1

EMPNO

int

雇员的编号,主键,自动增长

2

ENAME

VARCHAR(10)

雇员的姓名,由10位字符所组成,不为空,唯一键

3

JOB

VARCHAR(9)

雇员的职位

4

MGR

int

雇员对应的领导编号,领导也是雇员,可空(可删除这一列)

5

HIREDATE

TimeStamp

雇员的雇佣日期,默认为当前日期

6

SAL

Numeric(7,2)

基本工资,其中有两位小数,五位整数,一共是七位

7

COMM

Numeric(7,2)

奖金,佣金

8

DEPTNO

int

雇员所在的部门编号,可空,外键fk_deptno

9

DETAIL

Text

备注,可空

Dept,部门表

名称

类型

描述

1

DeptNO

int

部门的编号,主键,自动增长

2

DNAME

VARCHAR(10)

部门名,由50位字符所组成,不为空,唯一键

3

DTel

VARCHAR(10)

电话,可空

2、根据上面的表结构完成表的创建,表名为emp

3、在表中添加5条以上的数据

4、完成下列查询要求

4.1查询所有员工信息

4.2查询所有工资介于2000-5000间的员工姓名、职位与工资

4.3查询所有姓“张”的员工

4.4 按工资降序查询出2014年到2015年间入职的员工

4.5、将工资普遍上调20%

4.6、将工资低于3000元的员工奖金修改为工资的2.8倍

4.7、删除编号为5或者姓“王”的员工

五、使用SQL访问MySQL数据库

5.1、增加数据

insert 语句可以用来将一行或多行数据插到数据库表中, 使用的一般形式如下:

Insert into 表名(字段列表) values (值列表);

insert [into] 表名 [(列名1, 列名2, 列名3, ...)] values (值1, 值2, 值3, ...);

insert into students values(NULL, "张三", "男", 20, "18889009876");

有时我们只需要插入部分数据, 或者不按照列的顺序进行插入, 可以使用这样的形式进行插入:

insert into students (name, sex, age) values("李四", "女", 21);

5.2、查询数据

select 语句常用来根据一定的查询规则到数据库中获取数据, 其基本的用法为:

select 字段名 from 表名称 [查询条件];

查询学生表中的所有信息:select * from students;

查询学生表中所有的name与age信息:select name, age from students;

也可以使用通配符 * 查询表中所有的内容, 语句: select * from students;

5.2.1、表达式与条件查询

5b1abd7f040455c1ae6b96b478288ca9.png

where 关键词用于指定查询条件, 用法形式为: select 列名称 from 表名称 where 条件;

以查询所有性别为女的信息为例, 输入查询语句: select * from students where sex="女";

where 子句不仅仅支持 "where 列名 = 值" 这种名等于值的查询形式, 对一般的比较运算的运算符都是支持的, 例如 =、>、=、

示例:

查询年龄在21岁以上的所有人信息: select * from students where age > 21;

查询名字中带有 "王" 字的所有人信息: select * from students where name like "%王%";

查询id小于5且年龄大于20的所有人信息: select * from students where id<5 and age>20;

5.2.2、聚合函数

b6f8e4c496baa4b2ef963f851d8cfe2e.png

获得学生总人数:select count(*) from students

获得学生平均分:select avg(mark) from students

获得最高成绩:select max(mark) from students

获得最低成绩:select min(mark) from students

获得学生总成绩:select sum(mark) from students

5.3、删除数据

delete from 表名 [删除条件];

删除表中所有数据:delete from students;

删除id为10的行: delete from students where id=10;

删除所有年龄小于88岁的数据: delete from students where age<88;

5.4、更新数据

update 语句可用来修改表中的数据, 基本的使用形式为:

update 表名称 set 列名称=新值 where 更新条件;

Update 表名 set 字段=值 列表 更新条件

使用示例:

将id为5的手机号改为默认的"-": update students set tel=default where id=5;

将所有人的年龄增加1: update students set age=age+1;

将手机号为 13723887766 的姓名改为 "张果", 年龄改为 19: update students set name="张果", age=19 where tel="13723887766";

5.5、修改表

alter table 语句用于创建后对表的修改, 基础用法如下:

5.5.1、添加列

基本形式: alter table 表名 add 列名 列数据类型 [after 插入位置];

示例:

在表的最后追加列 address: alter table students add address char(60);

在名为 age 的列后插入列 birthday: alter table students add birthday date after age;

5.5.2、修改列

基本形式: alter table 表名 change 列名称 列新名称 新数据类型;

示例:

将表 tel 列改名为 phone: alter table students change tel phone char(12) default "-";

将 name 列的数据类型改为 char(9): alter table students change name name char(9) not null;

5.5.3、删除列

基本形式: alter table 表名 drop 列名称;

示例:

删除 age 列: alter table students drop age;

5.5.4、重命名表

基本形式: alter table 表名 rename 新表名;

示例:

重命名 students 表为temp: alter table students rename temp;

5.5.5、删除表

基本形式: drop table 表名;

示例: 删除students表: drop table students;

5.5.6、删除数据库

基本形式: drop database 数据库名;

示例: 删除lcoa数据库: drop database lcoa;

5.5.7、一千行MySQL笔记

5360234df0a047b16c19b4f63002ad83.png

c41288a895217ce155f9c8677e65d6dd.png

7dfdd9ae5b18cca8b303f7e070aeec33.png

5b4a716955d57b2dbdcf47143db8f76d.png

aedef70058b94e6f105ef915f36cce4d.png

4a81ecbf4108bc5309d362fcaa74ee0f.png

4fb008bb98e94094f571535d0b45382b.png

e995201378721771b0fa58b72cc5bfa3.png

507e14182bc4f35f4a3ad0307f9352bb.png

a8bf60c0e754ef8c0c5b500a931a1a20.png

261aaadcca0455c7a2359b80475d9dc8.png

f46e6202f3757e7fe7acdf2e365f24d9.png

b2b6039b502c9654ea9e498aa23fd2d0.png

1d38e036ffb4f4ea246b121bd7d71381.png

edb97f0100cb6210b4991e4d72d9ceba.png

2227f97a4516d47d3a5c08b674e75f81.png

0cc6d2600d5b646f99b4bef5f54aa107.png

3743e6de15a85cb5436e810484dcb355.png

507e14182bc4f35f4a3ad0307f9352bb.png

7bed99eb8318b56f548322e0d4a4be33.png

e81b8e6919a4f582cff22d6fc6b4b1c2.png

82b741d04e76725ba032cf369eb62d58.png

418c6ff8228ba04213f285f786906c80.png

e4b7ab79a1721b3328f48662f2ca47fe.png

2e626566a28219e38ed73be41628c1c5.png

c6359f7a9682272cb219a059735e143b.png

22aa6601b07eb5949887af51d9cfd170.png

349e84569eb1a984cb726c6825ec58ee.png

443d26243f604cd5f8ec4d5101fd9667.png

443d26243f604cd5f8ec4d5101fd9667.png

c18c6d435400592b4365877ad24ab1d7.png

dd48dbe3ae8aca80b085c5e0f393fb20.png

409351d9356cc60fac03ef4886c4b5e3.png

03aa584baafbd1494d6f87b10e70f8da.png

2b6ea3efdcc1a37d2f70a416e111c18a.png

7db18150728db77cdc3834017f3cbeaf.png

2b35326a6280be41cf445e6af3a50e33.png

e8243f52b1ce9ce68a0df193f98d0704.png

24d9032634ed26d39ab60ce475c8bb7d.png

48041eeb69143adbc08fecc3c9f15353.png

e7c17a4e5fd5453ce8d0aa92d1556810.png

85284259c6750291a6b2e1aca5a9ddbc.png

d856ae4acd4d0250518cf82121e7d845.png

39c6a23e2d000a32b1e456370e6b960d.png

8a069079076607f207197ec3daac431d.png

5.5.8、常用的SQL

e35d3d94d42eb85ad0f2e95e314b83de.png

b4ff185c2842486646d12b736f1796f8.png

36ed8b30cc878e7d5be6df90988d49e8.png

d7f9c7f0661e860b34c6ef9946180218.png

b8b28e7d05f476815ba73a99c895151f.png

81a8b1a4922a72210f292b2c65148516.png

dd4a63b3826cefe3d198fc5d57ec54a6.png

568ba19a83f958574527b2f9b3721847.png

b0c93d029d2d2ee07fee57bda5863b67.png

694b7debf247677ff297d182dde993f1.png

84a19a27d1a170ac635f339ad1b4d262.png

六、下载程序、帮助、视频

MySQL绿色版下载地址1:https://pan.baidu.com/s/1hrS5KUw 密码: sug9

MySQL绿色版下载地址2:http://download.csdn.net/detail/zhangguo5/9773842

MySQL文档下载1:https://pan.baidu.com/s/1nuGQo57 密码: 898h

MySQL文档下载2:http://download.csdn.net/detail/zhangguo5/9774115

MySQL5.5.27_64位安装包下载地址1: https://pan.baidu.com/s/1minwz1m 密码: ispn

MySQL5.5.27_64位安装包下载地址2: http://download.csdn.net/detail/zhangguo5/9775460

MySQL5.7.17安装包官网下载地址: https://dev.mysql.com/downloads/windows/installer/

文档中没有您可以查帮助:

2a35f6e9dad23cd63d4c4d3fd16493c7.png


●本文编号166,以后想阅读这篇文章直接输入166即可。

●输入m获取文章目录

来自:博客园,

作者:张果

扩展阅读


  1. 详述一次大量删除导致MySQL慢查的过程

  2. 不用Oracle?基于MySQL数据库下亿级数据的分库分表

  3. 史上最详细MySQL全局锁和表锁

  4. MySQL数据库备份之主从同步配置

  5. MySQL亿级数据数据库优化方案测试-银行交易流水记录的查询

  6. “王者对战”之 MySQL 8 vs PostgreSQL 10

  7. 史上最全MySQL锁机制

  8. 高逼格企业级MySQL数据库备份方案,原来是这样....

9086ed3ca27e1de117a30e55be05adcb.png

数据和云

ID:OraNews

如有收获,请划至底部,点击“在看”,谢谢!

资源下载

关注公众号:数据和云(OraNews)回复关键字获取

help,30万+下载的完整菜单栏

2019DTCC,数据库大会PPT

2018DTCC , 数据库大会PPT

2018DTC,2018 DTC 大会 PPT

ENMOBK,《Oracle性能优化与诊断案例》

DBALIFE,“DBA 的一天”海报

DBA04,DBA 手记4 电子书

122ARCH,Oracle 12.2体系结构图

2018OOW,Oracle OpenWorld 资料

产品推荐

云和恩墨Bethune Pro2 企业版,集监控、巡检、安全于一身,你的专属数据库实时监控和智能巡检平台,漂亮的不像实力派,你值得拥有!

64d2af7c267258a1391a954ad9b7066d.png

云和恩墨zData一体机现已发布超融合版本和精简版,支持各种简化场景部署,零数据丢失备份一体机ZDBM也已发布,欢迎关注。

40c24f7dc0189a35b6a225a3f021f302.png

云和恩墨大讲堂 | 一个分享交流的地方

长按,识别二维码,加入万人交流社群

6758253efa80cba72f770521c0008fa5.png

请备注:云和恩墨大讲堂

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值