大家好,欢迎来到IT知识分享网。
一、学习环境
windows 10或windows 11 非家庭版操作系统
vmware workstation 16.0版本
安装1台windows server 2019—–IIS WEB服务器
Linux操作系统 Centos 或 RHEL 安装mysql数据库服务器
应用系统服务器—–JSP、PHP、Python、.net、C#……
二、数据库概述
1、数据处理的历史
数据Data:凡是能被计算机处理的东西 如字母、数字、汉字、声音、图片、动画等均认为是数据
信息Information:数据—>处理—>信息 将数据处理为对人们的决策有帮助作用的数据的集合就是信息
2、数据处理有3个历史阶段
人工管理阶段 20世纪40-50年代 存储介质落后 纸带、磁带等 存在大量的冗余(重复)数据
文件系统阶段 20世纪50-60年代 FAT16、FAT32、NTFS 存在大量冗余数据 数据共享程度低 数据独立性低
数据库系统阶段 20世纪60年代中后期 数据库系统阶段 降低了数据的冗余度 提高了数据的独立性
3、数据库Database:
数据的仓库 Database 是一个存放数据库对象的容器
4、数据库管理系统:
DataBase Management System 如Mysql、SQL-Server、Access、DB2、SQL lite等均为数据库管理系统 属于系统软件的范围
5、数据库应用系统:
DataBase Application system 如学生信息管理系统、教务管理系统、OA办公自动化系统
6、数据库系统的组成:
Database System数据库系统由数据库DataBase、数据库管理系统DBMS、数据库库管理员DBA、数据库应用系统DBAS、计算机5硬件部分组成。
7、数据模型:
①概念模型:将客观事物抽象为计算机可以识别的东西的过程
②逻辑模型:E-R图 将概念模型抽象出的实体转换为E-R图的过程
③物理模型:将E-R图转换为数据库表的过程
8、实体:
客观存在的并且可以相互区别的事物 如1个人、1本书、1首歌等
9、属性:
列名称 描述实体的特征
10、码:
键 key 在一个表中至少应该有这样1个字段,这个字段所对应的值能够起到唯一标识表中记录的作用
11、实体集:
实体的集合 如1个人—–实体 1群人—–实体集
12、联系:
1对1、1对多、多对多
1对1 一夫一妻 班级与班长
1对多 班级与学生
多对多 教师与学生 教师与课程
13、E-R图中的知识点
矩形:实体
椭圆:属性
三
1、关系型数据库的基本概念
关系:用二维表的方式来表示实体和实体集之间的关系。实体:喜观存在的并且可以相互区别的事物,如1个人、1本书.实体集:一本书……实体 100本书…实体集
2.关系型数据库特征:
二维表的组成行和列,行列存储数据。
行表示一条记录,也称为元祖、实体信息。–﹣除了第1行
列表示一个字段,也称为属性,……只有第1行
3.库
理解为文件板、房子、容器
专业的理解:库理解为存体教据的最大的分类,一般在项目的开发过程中会根据项目来创建相应的库(一个项目创建一个年)
4.表
将用户数据存储到数据库表中,数据表存放到数据车中。
数据库表就是数据库中的一个对象,一般在开发软件项目的过程中会根据功能模块如业务需求
5.行与列
二维表 行 列
元组:二维表中的每1特,除了第1行
属性:二维表中的每1列,只有第1行
6.Mysql简介
Mysql属于数据库管理系统,属于系统软件,是DBMS。现在被Oracle公司收购。
7.企业为什么选择Mysql?
从公司运营角度的来讲,选择olyaql有着多种原因:
oracel是收费的;Mysql是免费的
Mysql主要从数据安全、稳定、技术服务
Mysql是开源的(源代码开放,免费)
8.从技术角度来看,
Mysql由于开源,可以带来两大优势
(1)可以更加了解软件运作的原理,更好的设置Mysql,一旦出现故障也可以 很快定位。
(2)可以更容易的开发周边产品。
所以Mysql对于初创公司、互联网公司和很多传统行业不管从功能还是性能,更多的是从成本的角度来讲Mysal是一个很好的选择。
9.Mysql数据库引擎
数据库引擎是用于存储、处理和保护数据的核心服务。Mysql数据库引擎非常多。使用show Engines可以查看当前数据库的引擎信息。
第二章 Vmware虚拟机安装操作系统
一、Vmware虚拟机介绍与学习环境规划
1、什么是虚拟机?
- 虚拟机(virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,
- 虚拟机系统是一个操作系统镜像,它具有与真实windows系统完全一样的功能,进入虚拟系统后,所有操作都是在这个全新的独立环境上进行,可以独立安装应用软件、保存数据、拥有自己的独立桌面,不会对真正的系统产生影响,而且具有能够在现有系统与虚拟镜像之间灵活切换的一类操作系统。
- 流行的虚拟机厂家有Vmware、Oracle virtual box、微软virtual PC等,它们都能在windows系统上虚拟出多个计算机(windowsЛinux)。
2、使用虚拟机的好处有哪些?
- 演示环境,可以安装各种演示环境,便于做实验…-实验、学习环境申保证主机的快速运行,减少不必要的垃圾安装程序,偶尔使用的程序或者测试的程序可以在电廖拟机上运行
- 避免每次重新安装操作系统
- 体验不同版本的操作系统,如Mac-OS、Linux、windowsserver
3、Vmware workstation虚拟机介绍
- Vmware workstation中文名威睿工作站。是一款功能强大的桌面虚拟化软件,提供用户可以在单一桌面上运行不同的操作系统,和进行开发、测试、部警新的应用程序的最佳解决方案。
- Vmware workstation收费,非开源
4、实战内容
- Vmware Workstation安装与配置
①官方网站下载www.vmware.com/cn
②提示:如果检查产品更新,会从官网下载最新安全补丁;
加入客户体验会造成个人信息泄露
- Vmware安装windows server 2019或windows server 2016
①在“此电脑”非系统盘如E盘或F盘,新建一个虚拟机系统目录Vm-Server (E:\VM-Server)
②步骤
文件..>新建虚拟机–>“自定义
③安装windows server 2019
④windows server 2019激活与优化
a.安装vmware tools
b.显示windows server 2019的桌面图标:桌面空白处–>右键–>个性化–>主题–>桌面图标
c.激活windows server 2019
提示:先要给新装的操作系统安装必要的工具软件如winrar、office等常用工具
- Vmware安装CentOS Linux
①新建虚拟机
②将系统光盘镜像文件插入光驱中
③安装操作系统
提示:KUMP内核崩澳选项将其禁用;安装时选择GUI带图形画界面linux系统,生产环境中可以选择最小化安装。
二、补充:如何将自己的计算机重装系统
1、先到MSDN我告诉你 下载windows 10或windows 11
2、准备一个32G或64G的优盘
3、将下载好的系统镜像文件,使用UltralsO(软碟通)制作操作系统安装盘
4、设置笔记本电脑的启动顺序,第1启动设置为优盘启动(按F12或ESC)
5、同在虚拟机中安装windows server 2019相同,一路下一步进行安装
6、使用系统激活工具来激活操作系统
三、学习环境规划
1、物理拓扑
2、逻辑规划
主机名 |
IP地址 |
网关 |
系统类型 |
|||
Test-MySQL-windows |
192.168.121.128 |
192.168.121.1 |
windows server 2019 |
|||
Test-Mysql-linux |
192 168.121.129 |
192.168.121.1 |
Centos linux 7.6 |
第三章 windows快速安装mysql8.0
一、MySQL简介
1.介绍
1.1 什么是数据库?
数据库:Database,按照数据结构来组织、存储和管理数据的仓库,简单来说就是存储数据的仓库。——用来存放数据库对象(表、视图、函数、存储过程等)的一个容器。
数据库管理系统DBMS:用来管理数据的系统软件,常见:MySQL、Oracle、MSSQLServer、DB2、Sysbase、Access等数据库系统的组成:数据库和数据管理系统。
1.2 什么是MySQL?
MySQL:是一个开源的关系型数据库管理系统。由瑞典MySQL AB公司开发,后来被Oracle公司收购,所以目前属于Oracle公司
特点:体积小、速度快、成本低、开源(源代码是开放的),中小型网站都使用MySQL数据库。
版本:企业版Enterprise(收费的)、社区版community(免费的)
DBA:Database Administrator数据库管理员
二、实战部分
1、准备-台windows server 2019的主机
2、安装windows server 2019
3、下载mysql 8.0版本
提示:第1、2步,在第2章已做过介绍
https://dev.mysql.com/downloads/
4、MysqI8.0数据库配置
①Mysql server 8.0.39数据库服务器配置
②Mysql router 8.0.39读写分离的配置
③数据库实例配置
注意:使用8.0密码策略,要选择“高级认证“方式出错。
提示:使用navicat图形化工具访问mysqI服务器时出错‘1251错误’
5、MysqI8.0数据库管理入门
- 修改root密码
说明:上述修改用户密码的命令中with mysql native password 是mysql 5.7的方式
- 允许root远程登录
三、MySQL登录与退出
1、MySQL登录
本地登录
mysql -u用户名(root) -p 密码 显式登录
mysql -u 用户名(root) -p 隐式登录 远程登录
mysql -h主机名或ip地址 -u 用户名(root) -p 密码
2、MySQL退出
3、当mysql8.0安装完成后的相关配置
查看mysqI服务
WIN+R–>运行–>services.msc
windows+R—>运行–>输入netstat -an
windows+R===>运行–>输入wf.msc
mysql服务的开启与停止
①鼠标的方式
windows+R—>services.msc–>mysql80–>右键–>启动或停止上
②命令的方式
初学者不建议修改
提示:若要修改配置文件my.ini,就需要重启mysqI服务
四、Mysql安装方式之配置方式
1、mysql卸载
- 控制面板
win+R–>运行–>输入control–>卸载程序–>与mysql有关组件–>卸载
- 安装包
双击mysql-installer-community-8.0.39.0.msi
2、用配置文件来安装mysql
[mysqld];
设置3306端口
port=3306
;设置mysql的安装目录
basedir “C:\mysql-8.0.39-winx64”;
设置mysql数据库的数据的存放目录
datadir=C:\mysql-8.0.39-winx64\Data;
允许最大连按数
max connections=200
;允许连接失败的次数,这是为了防止有人从该主机试图攻击数据库系统
max connect errors=10
;服务端使用的字特集默认为UTF8
character-set-server=utf8
创建新表时将使用的默认存储引整
default-storage-engine INNODB;
默认使用“mysqlnative_password”插件认证default authentication
plugin=mysql native _password[mysql}
设置mysql客户端默认字符集
default-character-set utf8
[client]设置mysql
客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8
五、环境变量
右键–>此电脑–>高级系统设置–>环境变量–>path–>新建–>将mysql的安装目录bin路径放到path下即可。
六.、Mysql目录和配置文件
Mysql安装目录包括启动文件,配置文件,数据库文件和命令文件,具体如下:
bin目录:存放一些客户端程序和可执行脚本
data目录:存放一些日志文件以及数据库
docs目录:存储一些版本信息
include目录:存放一些头文件
lib目录:存放一些库文件
share目录:存储错误消息文件、字符集等
七、基本操作
1、连接Mysql
mysql -u 用户名 -p 密码 -h 数据库服务器的地址 -D 数据库名
提示:安装mysql以后,默认有一个管理员root
2、查看数据库和表
show databases;–查看当前所有数据库 use 数据库名;–切换数据库 show tables;–查看当前数据库中所有表 select database( );–查看当前正在操作的数据库 select user( );–显示当前登录的用户
八、导入初始数据
1、导入数据
- 以.sql结尾的文件,是数据库脚本文件。
先连接登录到windows server 2019数据库服务器上,连接mysql,然后执行如下指
source d:\init.sql
2、表结构
desc 表名;– 查看表结构 select*from 表名;–查看表中所有记录
tstudent学生表
列名 |
类型 |
含义 |
StudentlD |
varchar(10) |
学号 |
Sname |
varchar(10) |
姓名 |
seX |
char(2) |
性别 |
cardlD |
varchar(20) |
身份证号 |
Birthday |
datetime |
出生日期 |
|
varchar(40) |
电子邮箱 |
Class |
varchar(20) |
班级 |
enterTime |
datetime |
录入时间 |
tsuject课程表
列名 |
类型 |
含义 |
subJectlD |
varchar(4) |
课程号 |
subJectName |
varchar(30) |
课程名 |
BookName |
varchar(30) |
书名 |
Publisher |
varchar(20) |
出版社 |
tscore 成绩表
列名 |
类型 |
含义 |
StudentID |
varchar(10) |
学号 |
subJectlD |
varchar(4) |
课程号 |
mark |
decimal(10,0) |
分数 |
第四章 数据库创建与常用操作
1、Mysql用户登录过程和管理mysql用户
1.1 Mysql8.0本地登录访问数据库
- Mysql用户存储在mysql数据库的user表中,该表在mysqI服务启动时自动加载到内存,控制用户的登录,
- 查看当前连接的mysql的用户
select user( ); use mysql; select user.host from user;
- 创建mysql用户账户
create user hector@”localhost’.
- 为新建本地用户修改密码
alter user hector@”localhost identified by’abc..123’;修改hector用户的密码
- 为新建本地登录账户赋权
grant all privilieges on *.* to hector@’localhost’ with grant option; create user hector; select host,user from user;
- 主机可以使用通配符,规则和标准的SQL语法中定义完全相同
- %表示任意长度的字符
- 表示1位的任意字符
设置hector@”ocalhost”的密码为’abc..123′
alter user hector@”ocalhost’ identified by ‘abc..123’;
- 创建用户时指定密码
create user hector@’localhost” identified by ‘abc..123’.
- 练习:
创建1个新用户设置密码并实现本地登录,注意授权。
create user liu@’localhost” identified by ‘abc..123’; grant all privileges on “,” to liug’localhost with grant option;
1.2 Mysql8.0远程访问数据库的设置
- 修改root密码
mysql -u root -p
use mysql;
alter user ‘root’@’localhost’ identified by ‘abc..123’;
exit;
alter user ‘root”localhost’ identified with mysql_native_password by ‘abc..123’;
- 允许root远程登录
mysql -u root -p use mysql; select host,user from user where user ‘root’; create user ‘root’@’192.168.x.%’ identified by ‘abc..123’; grant all privileges on *.* to ‘root’@’192,168.x,%* with grant option; exit;
2、数据库命名规范
- 数据库给名不能超过30个字符,推荐便用下划线备名方式
- 数据库命名必须为项日英文名称或有意义的脑写
数据库创建时必须添加默认字符集和字符序
ut8:uif8_general_ci不区分大小写utf8_genera_cs区分大小写;utf8_bin进制
- 命名应使用小写
unicode 万国码,统一码、单一码;ucs2,uf16、uf161e、ut8、ut8mb4、uf32
utf8:1字符占1.3个字节 升级,老系统
utf8mb4:1字符占1-4个字节,新系统
SQL介绍
SQL是访问和操作数据库的标准语言。Structure querylanguage。
SQL能做什么
- SQL可以对数据库执行查询
- SQL可以从数据库中检索数据
- SQL可以给数据库表插入记录
- SQL可以更新数据库表的记录
- SQL可以从数据库表中删除记录
- SQL可以创建新的数据
- SQL可以在数据库中创建新表
- SQL可以在数据库创建存储过程
- SQL可以在数据库中创建视图
- SQL可以设置表、过程和视图的权限
数据的元操作
CRUD操作
- C:create 创建数据
- R:retrieve/read 获取数据/读取数据
- U:update/alter 更新数据/修改数据
- D:delete/drop删除数据
数据库的命令
介绍数据库的CRUD操作
- 查看所有数据库语法:
show databases;
- 创建数据库—C操作
语法:
create database 数据库名 charset 字符集;
- 切换数据库—R操作语法:
use 数据库名;
- 查看当前所选数据库—R操作语法:
select database();
- 修改数据库—U操作语法:
database数据库名[default] character set 字符集[default] collate 字符序;
示例:
alter database db_test default character set gb2312 default collate gb2312_chinese_ci;
- 查看数据库编码
语法:
show create database数据库名;
- 查看mysql支持的所有编码类型
语法:
show character set;
- 删除数据库—D操作语法:
drop database 数据库名;
表命令
查看所有表
show tables;
创建表
CREATE TABLE table name(–table_name 表名 特别说明:数据库名、表名都应该有唯一意义 colunn1_nane data_type constraints,–字段名 类型 属性 colunn2_nane data type constraints, …. )ENGINE-InnoDB DEFAULT CHARSET—utf8; –存储引整字符 字符集
创建一个用户表
CREATE TABLE users( — 在DB数据库下新建一个user表 Id INT NOT NULL PRIMARY KEY AUTO INCREHENT, name VARCHAR(50)NOT NULL, –null值 表示是一个不确定的值 birth_date DATE, phone VARCHAR(11)NOT NULL UNIQUE )ENGINE InnoDB DEFAULT CHARSET—Utf8;
主键:primary key在一个表中至少应该有这样一个字段,这个字段所对应的值一不能有重复,二不能为空,这个字段所对应的值能够起到唯一标识表中每一条记录的作用。
上面的语句创建了一个名为users的表,其中包含5个字段id、name、birth_date和 phone 。注意,每个字段后面都有一个数据类型声明,表示该字段将存储何种类型的数据,例如:整数、字符串、日期等。
MySQL支持的常用数据类型
- 数字型
数据类型 |
字节 |
范围(无符号) unsigned |
范围(有符号) signed(默认) |
描述 |
tinyint |
1 |
(0,255) |
(-128,127) |
小整数值 |
decimal |
2 |
(0,65535) |
(-32768,32767) |
大整数值 |
mediumint |
3 |
(0,16 ) |
(-8 388 608,8 388 607) |
大整数值 |
int |
4 |
(0, 295) |
(-2 147 483 648,2 147 483 647) |
大整数值 |
bigint |
8 |
(018 073709 ) |
(-9,223,372.036,854,775.808.9 223 372 036 854 775 807) |
极大整数值 |
FLOAT(M,D) |
4 |
0,(1. 351E38,3. E+38) |
(-3.402 823 466 E+38,-1. 351E-38),0,(1.175 E-38,3.402 823 466 351 E+38) |
单精度浮点数值M是数字总个数,D是小数点后个数 |
double(M,D) |
8 |
0,(2. 201 4 E-308,1.797 E+308) |
(-1.797 693 134 862 315 7 E+308,-2.225 073 858 4E-308).0,(2.225 073858 507 201 4E-308.1. 134 862 315 7 E+308) |
双精度浮点数值 M是数字总个数,D是小数点后个数 |
decimal(M,D) |
对DECIMAL(M,D),如果M>D.为M+2否则为D+2 |
依赖于M和 D的值 |
依赖于M和D的值 |
M是表示有效数字数 的精度。M范围为1~65,D是表示小数点后的位数。D的范围是0~30MySQL要求D小于或等于( |
整型:
1.tinyint 示例:性别男1女0数据类型选择tinyint
2.decimal 示例:价格与财务有关的字段设置为该类型
3.mediumint 示例:博客访问数设置为该类型
4.int 示例:员工的编号、学生学号设置为该类型
5. bigint 示例:网站访问数设置为该类型
–小数–
1.float 示例:float(5,2) 范围(-999.99,999.99)桌子的长度、物理测理的度量值
2.double 示例:误差比float低 科学计算、物理测量的值
3. decimal 示例: decimal(7,2) M=7(包含整数部分和小数部分,小数点也要算作1位)D=2小数点后数字的位数如某一商品的价格是¥1234.56
单精度和双精度不同
1、在内存中占有的字节数不同
2、有效数字位数不同
3、所能表示数的范围不同
- 字符串
类型 |
字节 |
说明 |
char |
0-255字节 |
定长字符串 |
varchar |
0-65535字节 |
变长字符串 |
text |
0-65 535字节 |
长文本数据 |
char(50) 宽度是固定,若占不完,空格补齐查询效率高,浪费存储空间
varchar(50)宽度是自动,用多少宽度分配多少宽度,查询效率低,节约空间
text 长文本类型 示例: 简历 text类型
- 日期
类型 |
大小 |
范围 |
格式 |
说明 |
date 3 |
3 |
1000-01-01/9999-12-31 |
YYYY-MM-DD |
日期 |
time |
3 |
1000-01–838:59:59/838:59:59′ |
HH:MM:SS |
时间 |
datetime |
8 |
1000-01-01 00:00:00/9999-12-3123:59:59 |
YYYY-MM-DD HH:MM:SS |
日期时间 |
year |
1 |
1901/2155 |
YYY |
年份类型 |
MySQL支持的常用约束
修饰符 |
描述 |
primary key |
主键 |
not null |
非空 |
unique |
唯一 |
default |
默认 |
foreign key |
外键 |
主键:学生表中的学号、身份证号;课程表中的课程号;在一个表中至少应该有这样一个字段,这个字段所对应的值一不能有重复,二不能有空间,它能够起到唯一标识表中记录的作用。
- not null 不能空值 示例:某个商品的价格是nu,只能说这个商品价格尚未确定,不是免费的
- unique: 满足主键条件的字段 设置为unique的字段,此字段所对应的值是不能有重复。
- foreign key外键:在一个表中某一个字段它不是当前这个表的主关键字,但是它却是另外一个表的主关键,我们在当前这个表,把此字段称为是当前表的外部关键字。
存储引擎
MySQL中的数据用各种不同的技术存储在文件(或者内存)中,这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。
存储引擎:就是我们对数据进行增、制、改、查或CRUD操作的一种技术方式。
show engines;
更新约束
- 先创建一个表,除了主键,不加其他约束。
CREATE TABLE USerS1( id INT NOT NULL PRIMARY KEY AUTO_INCREHENT, nane VARCHAR(58), birth_date DATE, phone VARCHAR(11) )ENGINEInnODB DEFAULT CHARSET-utf8;
- 给手机号添加唯一约束
ALTER TABLE USerS1 ADD UNIQUE (phone);
- 删除唯一约束
ALTER TABLE USerS1 DROP INDEX phone;
- 给名字添加非空约束
ALTER TABLE users1 modify name VARCHAR(s0)not null;
- 删除非空约束
alter table user1 change name name varchar(50)null;
- 给生日添加默认约束
ALTER TABLE USerSI ALTER birth date SET DEFAULT ‘1992-05-11″;
- 删除默认约束
ALTER TABLE USerS1 ALTER birth date DROP DEFAULT;
表的CRUD操作
- 查看表结构
desc 表名;
- 查看表的创建语句
show create table ‘表名’;
- 更改表名称
rename table 原表名 to 新表名;
- 修改表
alter table 表名 add|change|drop 列名 类型; alter table users add age int default 1;
alter table users add user_desc varchar(5e)default ‘哈哈’; alter table users change user_desc userdesc varchar(50);
插入数据
语法:
insert into 表名(字段名1,字段名2,…) values(值1,值2,……);
- 缺省插入
示例:
给user表新增1条记录
insert into user(name,birthday,phone,age)values(‘老王’,’1954-10-5′,”,70);
- 全列插入
给user表再新增1条记录
insert into user values(1000,’老张’,’1964-10-7′,,60); insert into user values(0,老李’,’1974-10-7′,,50);
说明:
给表中所有字段插入记录的时候,id自动增长型主键的值从0开始。
不同:
主键列是自动增长,但是在全列插入时需要占位,通常使用0,插入成功后以实际数据为准
查询数据
语法:
select * from 表名; –査看表记录
验证float、double、decimal误差
–新建测试表 tbl_test create table tbl_test( id int not null primary key auto_increment, price1 float(9,3)not null, price2 double(9,3)not null, price3 decimal(9,3)not null )engine=innodb default charset=utf8;
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/122953.html