JavaEE 之 数据库技术 MySQL(1)

教程 青牛 ⋅ 于 2019-06-28 16:01:51 ⋅ 2945 阅读

课程安排

(一) 数据库概述

(二) MySql概述

(三) MySql使用

(四) SQL的应用

(五) 案例编写

(六) 课程总结

课程目标

通过MySql的学习,要熟练的掌握使用数据库对数据的操作;
file
第1章 数据库介绍

1.1 数据库概述

前言 : 前一阶段,我们学习了HTML的相关知识,可以对数据进行简单的添加 修改 删除,但是很遗憾的是我们对数据的处理只是暂时的,一刷新什么都没有 了,究其原因是因为我们不能

对我们的操作的数据进行永久性的存储,那么这时候我们就想有没有永久存储数据的技术呢?

1.1.1 什么是数据库

数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查 询操作。

数据库软件

file
1.1.2 什么是数据库管理系统

数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进 行统一管理和控制,以保证数据库的安全性和完整性。

用户通过数据库管理系统访问数据库中表内的数据。

一大坨数据(文件) --> 数据库管理系统(系统) MYSQL --> 操作数据库管理系统的人(管理员) DBA 自己 (分钟算工资) 6W/月

最终 : 永久的保存数据

管理数据库操作系统的程序员叫做数据库管理员 英文简称 DBA(database administrator),以后看见这样的人一定要多跟他玩耍,这都是一个企业里大佬级人物

数据库与数据库管理系统的关系

file
如果你想往数据库里存储一条数据

1) 安装一个数据库软件 mysql 5.5

2) 创建一个数据库 MYSQL

3) 统一大数据库 MYSQL 大数据库下创建自己的小数据库 来存储我们自己的数据

学生管理系统 student_db

考试管理系统 exam_db

天气管理系统 weather_db

交通管理系统 jiaotong_db

最起码 需要管理孙建国 和 赵文明的数据 person_db person(字段 id name sex age from) = java类

4) 有了自己的小数据库之后 我们还需要按类型存储数据 按类型 --> 数据库创建数据库表的过程

5) 真正存储数据

1.2 数据库表

java是以类来进行数据的封装,数据库中以表为组织单位存储数据。

表类似我们的Java类,表里面有字段就相当于是类中的属性。

举个例子 :

我们操作过的人员对应的类叫人员类

person

属性如下

id 数字 编号

name 字符串 名字

.........

数据库中也有类似的结构,叫做表

类名 person --> 数据库 perosn 表

属性 --> 字段

id Integer --> id number

name String --> name varchar

总结,就会发现以下对应关系。

类----------表

类中属性----------表中字段

对象----------记录
file

1.3 表数据

根据表字段所规定的数据类型,我们可以向其中填入一条条的数据,而表中的每条数据类似类的实例对象。表中的一行一行的我们称之为记录。

表记录与java类对象的对应关系
file

1.4 常见数据库

常见的数据库管理系统

MYSQL :开源免费的数据库,小型的数据库.已经被Oracle收购了.MySQL6.x版本也开始收费。

Oracle :收费的大型数据库,Oracle公司的产品。Oracle收购SUN公司,收购MYSQL。

DB2 :IBM公司的数据库产品,收费的。常应用在银行系统中.

SQLServer:MicroSoft 公司收费的中型的数据库。C#、.net等语言常使用。

SyBase :已经淡出历史舞台。提供了一个非常专业数据建模的工具PowerDesigner。

SQLite : 嵌入式的小型数据库,应用在手机端。

常用数据库:MYSQL,Oracle(DBA认证 OCA OCP OCM).

这里使用MySQL数据库。MySQL中可以有多个数据库,数据库是真正存储数据的地方。

第2章 MySql数据库

2.1 MySql安装

  1. 点开mysql安装包,会提示安装mysql,点击下一步即可,我们这里应用的是5.0 windows32位的安装程序
    file

  2. 点击 next 之后,会出现安装类型选项 一共有“Typical(默认)”、“Complete(完全)”、“Custom(用户自定义)”三个选项,我们选择 Typical(默认)即可
    file

  3. 是确定你的安装类型 和 安装位置 有的同学可能不想安装在C盘,其实大可以放心,重新安装系统之后数据库肯定也得重装,所以安装在C,格式化的时 候一波带走岂不美滋滋
    file

  4. 正在安装中耐心等候
    file

  5. 安装好了之后,会弹出一个mysql的广告,会告诉你mysql非常非常好用之类的,直接next即可
    file

  6. 补充说明mysql在各个领域都好用,直接点next

file

  1. 到此已经安装完成mysql的安装程序,然后出现这个页面,这个页面是告诉你马上要开始配置一个mysql数据库了,此处点击finsh完成mysql软件的安装
    file

  2. 开始配置mysql的数据库

file

  1. 此处问你是要详细的配置一个mysql数据库(Detailed Configuration)还是标准化配置一个mysql数据库(StandardConfiguration)

作为一个mysql的专业从业人员来说,我们肯定是选择详细配置的

file

  1. 选择服务器类型,“Developer Machine(开发测试类,mysql占用很少资源)”、“Server Machine(服务器类型,mysql占用较多资 源)”、

“Dedicated MySQL Server Machine(专门的数据库服务器,mysql占用所有可用资源)”,

大家根据自己的类型选择了,一般选“Server Machine”,不会太少,也不会占满。但是我们作为helloworld来说,开发环境就够用
file

  1. 选择mysql数据库的大致用途,

“Multifunctional Database(通用多功能型,好)”、

“Transactional Database Only(服务器类型,专注于事务处理,一般)”、

“Non-Transactional Database Only(非事务处理型,较简单,主要做一些监控、记数用),

随自己的用途而选择了,我这里选择“Multifunctional Database”,按“Next”继续。
file

关于Innodb数据库引擎,可参见https://baike.baidu.com/item/innodb/8970025?fr=aladdin

  1. 对InnoDB Tablespace进行配置,就是为InnoDB 数据库文件选择一个存储空间,此处不建议修改,否则可能会造成数据库损坏,

当然,对数据库做个备份就没问题了,这里不详述。我这里没有修改,使用用默认位置,直接按“Next”继续

还有要注意,此处真的不建议修改,修改了会导致你的数据库安装失败,其实装在C盘也没有什么,换句话说,你才能操作多少条数据呀,对不对,

也没有什么,换句话说,你才能操作多少条数据呀,对不对,
file

  1. 选择您的网站的一般mysql访问量,同时连接的数目,

“Decision Support(DSS)/OLAP(20个左右)”、

“Online Transaction Processing(OLTP)(500个左右)”、

“Manual Setting(手动设置,自己输一个数)”,我这里选“Online Transaction Processing(OLTP)”,

自己的服务器,应该够用了,按“Next”继续
file

  1. 是否启用TCP/IP连接,设定端口,如果不启用,就只能在自己的机器上访问mysql数据库了,

我这里启用,把前面的勾打上,Port Number:3306,在这个页面上,您还可以选择“启用标准模式”(Enable Strict Mode),

这样MySQL就不会允许细小的语法错误。如果您还是个新手,我建议您取消标准模式以减少麻烦。但熟悉MySQL以后,

尽量使用标准模式,因为它可以降低有害数据进入数据库的可能性。还有就是后面的"Add firewall exception for this port",这句话是说将3306 加入防火墙

如果你是win10的系统或者你没有关闭防火墙,这步就一定要去掉那个勾,否则会导致你安装失败,一定要切记,按“Next”继续
file

15 . 这一步也很关键,设置字符集,

【Standard Character Set】默认字符集,支持的其它字符的很少;

【Best Support For Multilingualism】能支持大部分语系的字符,主要是以UTF-8的形式存储,所以一般选择这一项;

【Manual Selected Default Character Set/ Collation】,手动设置字符集

其实此处也可以手动设置为UTF-8 或者 GBK (当然需要看下你的eclipse的编码是GBK还是UTF-8,最后和eclipse保持一致)
file

  1. 设置Windows的操作,

【Install AS Windows Service】,设置Service Name,一般默认的就可以,这个名字会出现在windows服务里。

【Include Bin Directory in Windows PATH】,

把Bin目录放在Windows Path路径中,建议选择上它,这样在Dos窗口里直接可以访问MySQL,不需要到MySQL的bin目录下进,方便,快速。 按【Next】继续。
file

  1. 这一步询问是否要修改默认root用户(超级管理)的密码(默认为空),

“New root password”如果要修改,就在此填入新密码(如果是重装,并且之前已经设置了密码,

在这里更改密码可能会出错,请留空,并将“Modify Security Settings”前面的勾去掉,安装配置完成后另行修改密码),

“Confirm(再输一遍)”内再填一次,防止输错。 “Enable root access from remote machines(是否允许root用户在其它的机器上登陆,如果要安全,就不要勾 上,如果要方便,就勾上它)”。

最后“Create An Anonymous Account(新建一个匿名用户,匿名用户可以连接数据不能操作数据,包括查询)”,一般就不用勾了,设置完毕,按“Next”继续。
file

  1. 确认设置无误,如果有误,按“Back”返回检查。按“Execute”使设置生效。

file
file
到此 mysql数据库软件和mysql数据库都已经安装到位了,也是美滋滋

安装后,MySQL会以windows服务的方式为我们提供数据存储功能。开启和关闭服务的操作:右键点击我的电脑→管理→服务→可以找到MySQL服 务开启或停止。
file

也可以在DOS窗口,通过命令完成MySQL服务的启动和停止(必须以管理员身份运行cmd命令窗口)
file

2.2 登录MySQL数据库

MySQL是一个需要账户名密码登录的数据库,登陆后使用,它提供了一个默认的root账号,使用安装时设置的密码即可登录。

格式1:cmd>mysql –u用户名 –p

代码

file

接下来输入密码即可登录

file
登录成功效果
file

格式2:cmd>mysql -hip地址 --user=用户名 --password=密码

例如:mysql -h127.0.0.1 --user=root --password=root

代码:
file

Java --> java语言

网页 --> HTML语言

数据库 --> SQL语言
file

第3章 SQL语句

3.1SQL概述

3.1.1SQL语句介绍

数据库是不认识JAVA语言的,但是我们同样要与数据库交互,这时需要使用到数据库认识的语言SQL语句,它是数据库的代码。

SQL语言 是有规范的 是我们操作数据库的特定语言 和 java一样

java语言 是用来编写应用程序(网站类应用程序)

SQL 专门操作数据库的

结构化查询语言(Structured Query Language)简称SQL,是关系型数据库管理系统都需要遵循的规范。不同的数据库生产厂商都支持SQL语句,但都有特有内容。

SQL 语言 标准 所有数据库都会遵循的标准 各种不同的数据库都会在标准之上建立一些自己的规范

SQL 方言

MYSQL limit 分页 Oracle rownum 分页

结构化查询语言(Structured Query Language)简称SQL(发音:/ˈes kjuː ˈel/ "S­Q­L"),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以 及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有 完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。

1986年10月,美国国家标准协会对SQL进行规范后,以此作为关系式数据库管理系统的标准语言(ANSI X3. 135­1986),1987年得到国际标准组织的支持下成为国际标 准。不过各种通行的数据库系统在其实践过程中都对SQL规范作了某些编改和扩充。所以,实际上不同数据库系统之间的SQL不能完全相互通用。

3.1.2 SQL语句分类

SQL分类:

1) 数据定义语言: 主要对数据存储的结构进行定义 存储一个数据 --> 表 --> 数据库 创建 销毁 修改 DDL

简称DDL(Data Definition Language),用来定义数据库对象:数据库,表,列等。关键字:create,alter,drop等 DDL 数据定义语言 主要定义 结构的

(创建(create)一个结构,修改(alter)一个结构,删除(drop 摧毁)一个结构)

教室 DDL构建或者修改或者删除这个教室(结构)

表 结构 DDL create table alter table drop table

对数据本身的操作

2) 数据操作语言:简称DML(Data Manipulation Language),用来对数据库中表的记录进行更新。 关键字:insert,delete,update等 对内容上进行操作(数据) 数据操作语言 DML 你对一条数据的操作 添加(INSERT) 修改(UPDATE) 删除(DELETE)

对数据本身的查询 3) 数据查询语言:简称DQL(Data Query Language),用来查询数据库中表的记录。关键字:select,from,where等 查询(SELECT)

mysql select

hbase/hive select

公司 DCL DBA­­>Java/BD 开发 Java运维 Java测试 老板

1) 数据控制语言:简称DCL(Data Control Language),用来定义数据库的访问权限和安全级别,及创建用户。 权限操作(DBA)

root用户 mysql中最高级的数据库管理员账户

2) TCL 事务控制语言(不常用)

3.1.3 SQL通用语法

  1. SQL语句可以单行或多行书写,以分号结尾

  2. 可使用空格和缩进来增强语句的可读性

  3. MySQL数据库的SQL语句不区分大小写,关键字建议使用大写
    例如:SELECT * FROM user。

  4. 同样可以使用/**/的方式完成注释,也可以用 -- 的形式完成注释
    -- 注释

2种
数值 和 非数值
4中基本数据类型

3.1.4 MySql的数据类型

MySQL中的我们常使用的数据类型如下

char 字符类型 固定长度 char(10) 一

varchar 可变长度的字符串 varchar(10) 一

date 日期
file
datetime 日期 时间

详细的数据类型如下

file
file
file
操作数据库的 ­­> SQL ­­> 分 3 类

1) DDL 数据定义语言 定义数据存储结果 表 数据库 create alter drop show

2) DML 数据操作语言 对数据进行 添加(insert) 修改(update) 删除(delete)

3) DQL 重要 数据查询语句 select

最终目的 存储数据 并 操作数据

数据存储在哪里? ­­> 表 ­­> 数据库

3.2 DDL之数据库操作:database

3.2.1 创建数据库

格式:

  • create database 数据库名;

  • create database 数据库名 character set 字符集;

例如:

创建数据库 数据库中数据的编码采用的是安装数据库时指定的默认编码 utf8

file

创建数据库 并指定数据库中数据的编码

file

效果 :
file

3.2.2 查看数据库

查看数据库MySQL服务器中的所有的数据库:
file

效果:
file

查看某个数据库的定义的:

show create database 数据库名;

例如:

file
file
3.2.3 删除数据库

drop database 数据库名称;

例如:
file
file

3.2.4 使用数据库

l 查看正在使用的数据库:

file
file
此处因为我们没有使用数据库,所以显示当前使用的数据库为 NULL 其他的数据库操作命令

使用某个数据库:

use 数据库名;

例如:
file
file

3.3 DDL之表操作:table

3.3.1创建表

格式:

file
举例 : 比如对京东商城进行数据库表分析
file

从上图我们可以知道京东的商品是先分成大类,然后大类中再分成小类小类中再保存具体商品
file

那么接下来我们也按照这种思路来进行表的学习

例如:

创建一张商品类别表

此处需要注意的是表都是在不同的数据库中,所以需要先指定要使用的数据库

file
file
指定完数据库就可以创建自己的表了

代码:
file

效果

file

3.3.2 查看表

查看数据库中的所有表:

格式:
file

file
查看表结构:

格式:desc 表名;
file
file

3.3.3 删除表

格式:drop table 表名;
file
file

3.3.4 修改表结构格式:

1) alter table 表名 add 列名 类型(长度) [约束];

作用:修改表添加列.

例如:

为商品类别表添加一个新的字段为 分类描述 varchar(20)
file
file

注意 : desc 是SQL关键字,所以你要想用这个关键字作为列名必须转移,也就是在列名上加 进行转移,注意这不是单引号 而是 请详见下图
file

机械键盘这个键的位置可能有所不同,大家要细心查找

2) alter table 表名 modify 列名 类型(长度) 约束;

作用:修改表修改列的类型长度及约束.

例如:

为商品类别表的描述字段进行修改,类型varchar(50) 添加约束 not null(该字段的值不能为null)
file

file
3) alter table 表名 change 旧列名 新列名 类型(长度) 约束;

作用:修改表修改列名.

例如:

为商品类别表的分类名称字段进行更换 更换为 cdesc varchar(30)
file
file

4) alter table 表名 drop 列名;

ALTER TABLE category CHANGE desccdesc VARCHAR(30);1

作用:修改表删除列.

例如:

删除商品分类表中cdesc这列

file
file
5) rename table 表名 to 新表名;

作用:修改表名

例如:

为分类表category 改名成 producttype
file
file

问题 : 这么操作实在是适应不了,mysql有没有什么好操作一点的客户端呢?

答案 : 有的

3.3.4 安装mysql的第三方客户端Navicat:

1.: 解压第三方客户单Navicat
file

  1. 因为这个客户端是绿色版的所以点开直接就能用我们直接点开

file

  1. 找到Navicat的可执行程序双击打开即可,点开之后问你是试用还是注册,可以点击注册,我们选择注册
    file

  2. 在刚才解压的文件夹里找到注册码
    file

  3. 填入注册码即可

file

3.4 DML数据操作语言

3.4.1插入表记录:insert

语法:

-- 向表中插入某些字段

insert into 表 (字段1,字段2,字段3..) values (值1,值2,值3..);

--向表中插入所有字段,字段的顺序为创建表时的顺序

insert into 表 values (值1,值2,值3..);

注意:

值与字段必须对应,个数相同,类型相同

值的数据大小必须在字段的长度范围内

除了数值类型外,其它的字段类型的值必须使用引号引起。(建议单引号)

如果要插入空值,可以不写字段,或者插入 null。

首先我们先把表名改回来,代码
file

然后添加数据,代码:
file

3.4.2 更新表记录:update

用来修改指定条件的数据,将满足条件的记录指定列修改为指定值

语法:

--更新所有记录的指定字段

update 表名 set 字段名=值,字段名=值,...;

--更新符合条件记录的指定字段

update 表名 set 字段名=值,字段名=值,... where 条件;

注意:

列名的类型与修改的值要一致.

修改值得时候不能超过最大长度.

除了数值类型外,其它的字段类型的值必须使用引号引起

代码 :
file

注意 : 更新的时候一定要按照某种条件再更新,一定要注意,因为更新全表数据这种需求根本就没有,如果是因为你忘记写条件而导致的全表数据更新那 么更新坏的数据你是需要按条的!

3.4.3 删除记录:delete

删除有两种情况

如果删除表中的部分数据
语法
delete from 表名 where 条件;

如果删除表中所有数据
语法:
delete from 表名;
或者
truncate table 表名;

此处有一道面试题:
传说中的面试题 : 假设表里有一亿条记录,当删除表中所有数据的时候,你会使用以下哪种方案,并说明原因
A. DELETE FROM 表
B. TRUNCATE TABLE 表;
答案 : B
解释 : 当删除表中所有数据的时候
delete from 表 数据DML语句 数据操纵语言 是从表中把数据一条一条的删除,所以这样删除大表数据的时候一条一条删会很慢
truncate table 数据DDL语句 数据定义语言 它不管表中有多少记录,它会先摧毁这个表结构,然后重建表结构,所以这样在删除大表数据的时候就会很快;
但是需要注意个问题,如果你要是误操作的话 delete from 是有可能恢复的 但是 truncate table是恢复不了的

代码 :

file
第4章 SQL 约束

4.1主键约束

PRIMARY KEY 约束唯一标识数据库表中的每条记录。

主键必须包含唯一的值。

主键列不能包含 NULL 值。

每个表都应该有一个主键,并且每个表只能有一个主键。

主键的意义与作用

主键:表中经常有一个列或多列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可强制表的实体完整性。当创建 或更改表时可通过定义 PRIMARY KEY 约束来创建主键。

一个表只能有一个 PRIMARY KEY 约束,而且 PRIMARY KEY 约束中的列不能接受空值。由于 PRIMARY KEY 约束确保唯一数据,所以经常用来定义标识列。

作用:
1)保证实体的完整性;
2)加快数据库的操作速度
3) 在表中添加新记录时,DBMS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复。
4) DBMS自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。

4.1.1 添加主键约束

创建表时,在字段描述处,声明指定字段为主键:
file

4.2 自动增长列

我们通常希望在每次插入新记录时,数据库自动生成字段的值。

我们可以在表中使用 auto_increment(自动增长列)关键字,自动增长列类型必须是整形,自动增长列必须为键(一般是主键)。

下列 SQL 语句把 "persons" 表中的 "pid" 列定义为 auto_increment 主键
file

向persons添加数据时,可以不为pId字段设置值,也可以设置成null,数据库将自动维护主键值:
file

扩展:默认AUTO_INCREMENT 的开始值是 1,如果希望修改起始值,请使用下列 SQL 语法:

ALTER TABLE person

MODIFY COLUMN pid int(8) NOT NULL AUTO_INCREMENT FIRST ;

4.3 非空约束

NOT NULL 约束强制列不接受 NULL 值。

NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。

下面的 SQL 语句强制所有列不接受 NULL 值:
file

注意 : 主键如果标记为primary key 就已经不为null了,所以此处not null 可以省略;

版权声明:原创作品,允许转载,转载时务必以超链接的形式表明出处和作者信息。否则将追究法律责任。来自海汼部落-青牛,http://hainiubl.com/topics/36802
点赞
成为第一个点赞的人吧 :bowtie:
回复数量: 0
    暂无评论~~
    • 请注意单词拼写,以及中英文排版,参考此页
    • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
    • 支持表情,可用Emoji的自动补全, 在输入的时候只需要 ":" 就可以自动提示了 :metal: :point_right: 表情列表 :star: :sparkles:
    • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif,教程
    • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
    Ctrl+Enter