MYSQL 笔记

第一章  MYSQL数据库

第一章 数据库概述

一 学习环境介绍

1.Windows 10/11 非家庭版 内存8g

2.Vmware workstation 16.0

3.LAMP--Linux Aparche mysql PHP

LNMP--Linux nginx mysql PHP

WAMP--Windows Aparche mysql PHP

WNMP--Windows nginx mysql PHP

注意:Windows是非客服端操作系统,而是服务器版的server

4.一台 Windows server 2019

二台 Linux

二 数据库系统概述

1.数据Data:凡是能被计算机处理的东西,如字母,数字,汉字,符号。声音。图片。动画等均认为数据

2.信息information: 数据---数据处理---信息 对人们的决策有帮助作用的有用数据

3.数据处理:将数据转变是信息的过程

4.数据库Database:数据的仓库,容器级别的概念,存放数据库对象的容器

5.数据库系统的组成:数据库管理系统简称为(Database System)是由数据库Database,数据库管理系统DBMS、数据库管理员DBA,数据库应用系统DBAS和计算机硬件五部分组成

6.数据库管理系统 DBMS: Mysql Server 2019、Microsoft Access、 VFP、 Mysql、 Oracel、 DB2等属于软件系统

7.数据库应用管理系统DBAS:教务管理系统、一卡通消费系统、进销存管理系统、OA办公自动化系统等、属于应用软件

三 数据库发展史---数据处理的历史

1.从人工管理阶段 20世纪40、50年代,磁带,纸带等存储设备相对落后,数据处理也比较落后

2.文件系统阶段 20世纪50、60年代,磁盘,文件系统FAT16、FAT32、NTFS、EXT、相比人工管理阶段而言有进步,存在大量的冗余(重复)数据,数据独立性差

3.数据库系统阶段 20世纪60年代中后期,降低了数据的冗余度后,提高了数据的独立性,数据与程序是分开存在的

提示:一定不是消除了冗余

四 数据库系统三级模式和两级映像

1.模式:学生表(学号、姓名、性别、年龄)

2.内模式:excel 工作簿存放在计算机什么位置

3.外模式:视图,从学生表中查询年龄小于18并且性别是女的学生信息

外模式/模式

模式/内模式

五 数据模型

1.层次模型:组织结构图

2.网状模式:地图

3.关系模型:用二维表的方式表示实体和实体集之间关系的一种模型

4.实体:客观存在的并且可以相互区别的事物,如:一个人,一本书,一枝花,一首歌

5.实体集:实体的集合 个人是实体,一群人是实体集

6.属性:二维表中每,列的名称,描述实体自身属性,特性的字段,如学生表(学号,姓名,性别)中的学号,姓名,性别,都是属性

7.概念模型:将客观世界的事物抽象为计算机可以识别的事物过程

8.实体之间的关系

a.一对一:班级与班长 一夫一妻

b.一对多:班级与学生

c.多对多:图书与学生 老师与学生

9.E-R图 E=实体 R-关系

矩形表示实体

椭圆表示属性

菱形表示关系

10.关系模型的相关概念

a 元组:二维表的每一行,除了第一行--也称为记录

b 属性:二维表中的每一列,只有第一行--也称为字段

c 关系:用二维表的方式来表示实体及实体集之间关系的一种模型(E-R模型 实体关系)

d 实体:客观存在的,可以相互区别,与面向对象程序设计中的对象的概念相同的

e 关系模型 一对一,一对多,多对多

f 实体集:实体的集合

f主键:在一个表中至少应该有这样一个字段,这个字段所对应的值一不能有空值(NULL值:不确定的值1),二不能有重复,这个字段,所对应的值能够起到唯一标识表中记录的作用,这个字段就是称为主键字 primary key

g 外键: 在一个表中某一个字段,它不是本表的主关键字


1.下载Mysql (.msi安装包、.zip安装包)

2.Windows Server上安装、Linux系统上安装

3.mysql 安装完成后的状态

①Windows+R--services.msc

a.鼠标方式 b.命令方式 mysql服务启动与停止

②win+r→cmd→net stat -an 用来看mysql数据库的 端口 3306

4.连接mysql 数据库--本地登录mysql

win+R→cmd→cd c:\program Files\Mysql\Mysql Server 5.1\bin mysql -u root -p

密码root

注意:c:\program Files\Mysql\Mysql Server 5.1\bin mysql下载哪里从哪里找

cd与路径之间必须有一个空格

select version(); 查看版本

sclect user();查看当前登录用户

create user hector@'127.0.0.1' indentified by'abc..123';

创建一个用户

grant all privileges on *.* to hector@'127.0.0.1' with grant option;

给hector@'127.0.0.1'用户赋权值

5.使用图形化界面工具 navicate for mysql 连接mysql--本地登录


第二章 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章已做过介绍

MySQL :: MySQL Community 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.虚拟机与物理机

学习存在的问题:概念阶段;

虚拟机①实现硬件基本功能②构造一个计算机硬件

2.操作系统类型

·客户端操作系统:Windows 95 ,Windows 98 ,Windows Me ,Windows 2000 ; Windows XP , Windows vista , Windows 7 , Windows 8 ,Windows 10 , Windows 11

·服务器操作系统:Windows serve NT(在客户端操作系统95-2000之间),Windows serve 2000(Windows 2000),Windows serve 2003(04,05年),Windows serve 2008(在Windows vista,Windows 7 时期),Windows serve 2012(Windows 8), Windows serve 2016、2019

3.网络的通信方式

·P2P

·C/S 客户端client,服务器server。

例如:微信(客户端应用程序),阿里旺旺,QQ,浏览器,支付宝

DNS 域名解析服务器;Loopback 环回适配器。

4.将Mysql数据库直接装在自己的电脑上

将配置的方式将Mysql 8.0直接装在自己的计算机上

5.建立数据库

·菜单 使用图形化工具Navicate连接Mysql→选择主机→右键→新建数据库→输入数据库|

·命令行

create database 数据库名;character set utf8 collate utf8_general_ci;

eg:

create database SchoolDB character set uft8 collate uft8_general_ci;

·设置环境变量

此电脑→右键→属性→高级系统设置→环境变量→系统变量→Path→编辑→新建→将复制后的路径粘贴

目的:解决在命令执行Mysql指令无需切换目录

6.删除数据库

·菜单

使用图形化界面Navicate连接Mysql→选择删除数据库→右键→删除数据库→删除

drop datebase; 数据库名

7.查看数据库

show datebases;#查看数据库

说明:数据库是容器,文件夹。

用户数据---数据库表(行,列)---数据库---Mysql实例中

8.①数据库的命名规范

数据库命令不能超出30个字符,并推荐使用下划线方式。

such as:SchoolDB、School_DB、DB_School、KY_CJ_DB

②数据库命令:一般为项目英文名称简写或者有意义的缩写

数据库创建时,必须指明字符集和字符序

uft8:uft8_general_ci;不区分大小写

uft8_general_cs;区分大小写

uft8_bin 二进制

uft8:属于Unicode编码 Unicode也叫万国码,统一码,单一码,一般用utf8mb4.

9.数据库设计规范

·控制单实例表个数在3w以内

·控制单库表的个数,建设单库表的个数 4096个表

·创建数据库语句中 必须指明字符集和字符序

10.如何查询创建数据库语句

show create datebase SchoolDB #更改数据库选项信息,生产环境下不能改 更改指令: alter datebase schoolDB charater set uf8mb4


//为了方便读笔记可以更好去理解应用,我整理了使用云笔记的一些快捷键

F5:同步笔记

插入当前日期: Shift+Alt+D

插入代码块:Ctrl+Alt+D

插入引用:Ctrl + Q

插入待办事件:Ctrl + D

插入分割线:Ctrl + h

关闭当前页面:Ctrl + w

当前行成无序列表::Ctrl + L

当前行成有序列表:Ctrl + Shift+ L

保存:Ctrl + s

全部选择页面中的内容:Ctrl + a

撤销当前操作:Ctrl + z

返回撤销操作:Ctrl + y

查询页面中的内容:Ctrl + f

加粗:Ctrl + B

斜体:Ctrl + I

下划线:Ctrl + U

查找:Ctrl + F

全选:Ctrl + A

复制:Ctrl + C

粘贴:Ctrl + V

跳转到文档末尾:Ctrl+end 有的笔记本为: Fn + Ctrl + end

第二章 Vmware虚拟机安装操作系统

一、Vmware虚拟机介绍与学习环境规划

1、什么是虚拟机?

·      虚拟机(virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,

·      虚拟机系统是一个操作系统镜像,它具有与真实windows系统完全一样的功能,进入虚拟系统后,所有操作都是在这个全新的独立环境上进行,可以独立安装应用软件、保存数据、拥有自己的独立桌面,不会对真正的系统产生影响,而且具有能够在现有系统与虚拟镜像之间灵活切换的一类操作系统。

·      流行的虚拟机厂家有Vmware、Oracle virtual box、微软virtual PC等,它们都能在windows系统上虚拟出多个计算机(windowsЛinux)。

2、使用虚拟机的好处有哪些?

·       演示环境,可以安装各种演示环境,便于做实验…-实验、学习环境申保证主机的快速运行,减少不必要的垃圾安装程序,偶尔使用的程序或者测试的程序可以在电廖拟机上运行

·       避免每次重新安装操作系统

·       体验不同版本的操作系统,如Mac-OS、Linux、windowsserver

3、Vmwareworkstation虚拟机介绍

·     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 server2019

④windows server 2019激活与优化

a.安装vmware tools

b.显示windows server2019的桌面图标:桌面空白处-->右键-->个性化-->主题-->桌面图标

c.激活windows server2019

提示:先要给新装的操作系统安装必要的工具软件如winrar、office等常用工具

·       Vmware安装CentOS Linux

①新建虚拟机

②将系统光盘镜像文件插入光驱中

③安装操作系统

提示:KUMP内核崩澳选项将其禁用;安装时选择GUI带图形画界面linux系统,生产环境中可以选择最小化安装。

二、补充:如何将自己的计算机重装系统

1、先到MSDN我告诉你下载windows 10或windows 11

2、准备一个32G或64G的优盘

3、将下载好的系统镜像文件,使用UltralsO(软碟通)制作操作系统安装盘

4、设置笔记本电脑的启动顺序,第1启动设置为优盘启动(按F12或ESC)

5、同在虚拟机中安装windowsserver 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:DatabaseAdministrator数据库管理员

二、实战部分

1、准备-台windows server 2019的主机

2、安装windowsserver 2019

3、下载mysql 8.0版本

提示:第1、2步,在第2章已做过介绍

MySQL :: MySQL Community 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”插件认证defaultauthentication

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用户

1.1 MysqI8.0本地登录访问数据库

Mysql用户存储在mysql数据库的user表中,该表在mysqI服务启动时自动加载到内存,控制用户的登录。

·查看当前连接的mysql的用户

select user();

use mysql;

select user.host from user,

创建mysql用户账户

create user hector@"ocalhost';,

为新建本地用户修改密码

alter user hector@"ocalhost' identifed by'abc..123';修改hector用户的密码

为新建本地登录账户赋权

create user hector;

select host,user from user;

主机可以使用通配符,规则和标准的SQL语法中定义的完全相同

%表示任意长度的字符

-表示1位的任意字符

设置hector@"ocalhost的密码为'abc..123'

alter user hector@"localhost' identified by 'abc..123'

创建用户时指定密码

create user hector@localhost identified by 'abc..123'

·练习

创建1个新用户设置密码并实现本地登录,注意授权。

1.2 Mysql8.0远程访问数据库的设置

修改root密码

mysql -u root -p

use mysql;

alter user 'root'@"ocalhost' identified by 'abc..123';

exit;

alter user 'root'localhost' identified with mysql _native_password by 'abc..123'

允许root远程登录

二、基本操作

1、连接Mysql

语法:

mysq1 -u 用户名-p 密码 -h 数据库服务器的地址 -D 数据库名

安装Mysql以后,默认有一个管理员root

显示登录

隐式登录

2、查看数据库和表

show databases;-----查看当前所有数据库

use 数据库名;-------切换数据库

show tables;-------查看当前数据库中的所有表

select user();-----显示当前登陆的用户

select database();----显示当前操作的数据库

mysql库属于系统数据库,包含mysql的相关系统信息,不要修改

3、导入初始数据

3.1导入数据

准备好1个以.sq!结尾的文件是数据库脚本文件

先连接登陆mysql数据库。然后执行如下命令:

source E:/init.sql;

3.2 表结构

desc 表名;-----査看表结构

select*from 表名;------查看表中的所有记录

知识点:

表结构:只有列名称(属性)的空表

表记录:所有记录的集合

EMP表 雇员表

DEP部门表

SALGRADE工资等级表

bouns资金表

第五章 Linux快速安装Mysql8.0

Centos 8.4.2105系统下使用yum方式安装mysql8.4

1、查看Cente0s系统版本

2、配置yum源(由于Cente0s默认yum源镜像链接有误无法直接进入第3步,所以需要更新配置yum源)

vim /etc/yum.repos.d/CentOS-Linux-AppStream.repo

[appstream]

name=CentOS Vault -AppStream

baseuri=http://vault.centos.org/8.4.2105/AppStream/x86_64/os/

enabled=1

gpgcheck=1

3、下载mysql源安装包

4、安装mysql源

下载完成后使用下面的命令安装源:

yum localinstall mysql84-community-release-el8-1.noarch.rpm

5、检查是否安装成功

使用yum repolist命令检查是否安装成功

6、安装mysql

yuminstall-y mysql-server

7、安装成功,启动mysql

8、设置开机自动运行

9、查看mysql运行进程

ps-eflgrep mysql

Cente 0s 8.4安装MySQL8.0教程----RPM方式

1、查看系统和GUN C库(glibc)版本信息

1.1 查询机器glibc版本信息

glibc,全名GUNC Libray,是大多数linux发行版中使用的C库,为系统和应用程序提供核心的API接口。在Linux系统中,特别是在需要编译或运行依赖特定版本glibc的软件时,了解当前安装的glibc版本是非常重要的。

1.使用ldd命令:ldd命令通常用于打印程序或文件所依赖的共享库列表但也可以来查看glibc的版本信息。

2.查询gbibc包的版本,在基于RPM的系统(如centeos)中,glibc作为一个软件包安装。可以使用rpm命令查询glibc包的版本信息。

执行命令:

rpm -q glibc

这个命令会返回已安装的glibc软件包的版本信息。

1.2 查询系统CPU架构信息

Iscpu命令在linux系统中用于显示cpu架构信息,包括CPU类型、核心数、每个核心的线程数、CPU家族、型号等详细信息。这个命令聚合了从系统的多个资源收集的信息,以便为用户提供一个用于系统CPU配置的全面视图。

以下是Iscpu能够提供的一些关键信息

架构

CPU运行方式

CPU数量

每个CPU的核心数

每个核心的线程数

CPU家族和型号

缓存大小

1.在根目录下新建mysql文件夹

2、vim/etc/hosta文件

Ping LinuxRerver.test.com--测试命令

3.检查是否系统自带或已有mysql和mariadb数据库

4、解压

提示:解压后需要将源文件mysql-8.0.38-linux-glibc2.28-x86 64.tar删除否则会冲突

[root@LinuxServer mysql]#rm-f mysql-8.0.38-inux-glibc2.28-x86 64.tar-----删除源文件

5、继续解压第1个文件mysql-8.0.38-linux-glibc2.28-x86 64.tar.gz说明:router是一个读写分离的路由组件,test是测试表或测试库文件

CentOS Linux 7.6安装Mysql8.0

要求:

  • 操作系统:CentOS 7.6 x86_64
  • 数据库版本:mysql 8.0.39
  • 字符集:utf8mb4
  • 字符序:utf8mb4_general_ci,不区分大小写

环境准备

  • 准备一台主机(ip:10.10.10.200 255.255.255.0)
  • 安装CentOS Linux 7.6(桌面)
  • 下载Mysql8.0并上传Mysql8.0至服务器

官网:MySQL :: MySQL Community Downloads

安装步骤:

  1. 配置hosts文件

  1. 卸载主机自带的mysql

  1. 安装mysql8.0

  1. 设置环境变量

  1. 验证:环境变量

  1. 创建mysql用户和组,目录授权

  1. 配置参数文件

  1. Mysql数据库初始化

  1. 配置CentOS linux启动和停止脚本

  1. 配置systemctl启动和停止方法

  1. 修改root密码

  1. 设置允许root用户远程登录

CentOS Linux 7.6安装Mysql8.0

要求:

  • 操作系统:CentOS 7.6 x86_64
  • 数据库版本:mysql 8.0.39
  • 字符集:utf8mb4
  • 字符序:utf8mb4_general_ci,不区分大小写

环境准备

  • 准备一台主机(ip:10.10.10.200 255.255.255.0)
  • 安装CentOS Linux 7.6(桌面)
  • 下载Mysql8.0并上传Mysql8.0至服务器

官网:MySQL :: MySQL Community Downloads

安装步骤:

  1. 配置hosts文件

Plain Textecho "10.10.10.200 linux.test.com" >>/etc/hostscat /etc/hosts vim /etc/hosts10.10.10.200 linux.test.com

  1. 卸载主机自带的mysql

Plain Text rpm -qa | grep mysqlrpm -e --nodeps *mysql*rpm -qa | grep mariadbrpm -e --nodeps mariadb*

  1. 安装mysql8.0

Plain Textcd /mysql/tar -xvf mysql-8.0.39-linux-glibc2.17-x86_64.tarrm -f mysql-8.0.39-linux-glibc2.17-x86_64.tarxz -d mysql-8.0.39-linux-glibc2.17-x86_64.tar.xztar -xvf mysql-8.0.39-linux-glibc2.17-x86_64.tarmv mysql-8.0.39-linux-glibc2.17-x86_64 /usr/local/mv /usr/local/mysql-8.0.39-linux-glibc2.17-x86_64 /usr/local/mysqlmkdir /var/lib/mysqlmkdir -p /usr/local/mysql/logmkdir /usr/local/mysql/data

  1. 设置环境变量

Plain Textvim ~/.bash_profile: PATH=$PATH:/usr/local/mysql/bin

验证:环境变量

Plain Text[root@Linux ~]# which mysql/usr/local/mysql/bin/mysql

  1. 创建mysql用户和组,目录授权

Plain Textgroupadd mysqluseradd -r -g mysql -s /bin/false mysqlchown -R mysql:mysql /usr/local/mysqlchown -R mysql:mysql /var/lib/mysql

  1. 配置参数文件

Plain Textvim /etc/my.cnf[mysql] default-character-set=utf8mb4 socket=/var/lib/mysql/mysql.sock [mysqld] port = 3306 socket=/var/lib/mysql/mysql.sock basedir=/usr/local/mysql character-set-server=utf8mb4 default-storage-engine=INNODBinnodb_buffer_pool_size = 200Mmax_allowed_packet=16M explicit_defaults_for_timestamp=1log-output=FILEgeneral_log = 0 general_log_file=/usr/local/mysql/log/Linux.test.com.errslow_query_log = ONslow_query_log_file=/usr/local/mysql/log/Linux.test.com-query.errlong_query_time=10log-error=/usr/local/mysql/log/Linux.test.com-error.errdefault-authentication-plugin=mysql_native_password

  1. Mysql数据库初始化

Plain Text/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ cd /usr/local/mysql/logtail -100f Linux.test.com-error.err

  1. 配置CentOS linux启动和停止脚本

Plain Textvim /usr/lib/systemd/system/mysqld.service [Unit]Description=MySQL ServerDocumentation=man:mysqld(8)Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.htmlAfter=network.targetAfter=syslog.target[Install]WantedBy=multi-user.target[Service]User=mysqlGroup=mysqlExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnfLimitNOFILE = 65536LimitNPROC = 65536

  1. 配置systemctl启动和停止方法

Plain Text systemctl daemon-reload systemctl stop mysqld systemctl start mysqldsystemctl enable mysqldsystemctl status mysqld

  1. 修改root密码

Plain Text alter user 'root'@'localhost' identified by 'abc..123';grant all privileges on *.* to 'root'@'localhost' with grant option;flush privileges;

  1. 设置允许root用户远程登录

Plain Text mysql> create user 'root'@'10.10.10.%' identified by 'abc..123';Query OK, 0 rows affected (0.00 sec) mysql> grant all privileges on *.* to 'root'@'10.10.10.%' with grant option;Query OK, 0 rows affected (0.01 sec) mysql> flush privileges;Query OK, 0 rows affected (0.00 sec)

  1. 远程连接需要关闭防火墙

Plain Textfirewall-cmd --statesystemctl stop firewalld.servicesystemctl disable firewalld.service

CentOS Linux 7.6安装Mysql8.0

要求:

  • 操作系统:CentOS 7.6 x86_64
  • 数据库版本:mysql 8.0.39
  • 字符集:utf8mb4
  • 字符序:utf8mb4_general_ci,不区分大小写

环境准备

  • 准备一台主机(ip:10.10.10.200 255.255.255.0)
  • 安装CentOS Linux 7.6(桌面)
  • 下载Mysql8.0并上传Mysql8.0至服务器

官网:MySQL :: MySQL Community Downloads

安装步骤:

  1. 配置hosts文件

Plain Textecho "10.10.10.200 linux.test.com" >>/etc/hostscat /etc/hosts vim /etc/hosts10.10.10.200 linux.test.com

  1. 卸载主机自带的mysql

Plain Text rpm -qa | grep mysqlrpm -e --nodeps *mysql*rpm -qa | grep mariadbrpm -e --nodeps mariadb*

  1. 安装mysql8.0

Plain Textcd /mysql/tar -xvf mysql-8.0.39-linux-glibc2.17-x86_64.tarrm -f mysql-8.0.39-linux-glibc2.17-x86_64.tarxz -d mysql-8.0.39-linux-glibc2.17-x86_64.tar.xztar -xvf mysql-8.0.39-linux-glibc2.17-x86_64.tarmv mysql-8.0.39-linux-glibc2.17-x86_64 /usr/local/mv /usr/local/mysql-8.0.39-linux-glibc2.17-x86_64 /usr/local/mysqlmkdir /var/lib/mysqlmkdir -p /usr/local/mysql/logmkdir /usr/local/mysql/data

  1. 设置环境变量

Plain Textvim ~/.bash_profile: PATH=$PATH:/usr/local/mysql/bin

验证:环境变量

Plain Text[root@Linux ~]# which mysql/usr/local/mysql/bin/mysql

  1. 创建mysql用户和组,目录授权

Plain Textgroupadd mysqluseradd -r -g mysql -s /bin/false mysqlchown -R mysql:mysql /usr/local/mysqlchown -R mysql:mysql /var/lib/mysql

  1. 配置参数文件

Plain Textvim /etc/my.cnf[mysql] default-character-set=utf8mb4 socket=/var/lib/mysql/mysql.sock [mysqld] port = 3306 socket=/var/lib/mysql/mysql.sock basedir=/usr/local/mysql character-set-server=utf8mb4 default-storage-engine=INNODBinnodb_buffer_pool_size = 200Mmax_allowed_packet=16M explicit_defaults_for_timestamp=1log-output=FILEgeneral_log = 0 general_log_file=/usr/local/mysql/log/Linux.test.com.errslow_query_log = ONslow_query_log_file=/usr/local/mysql/log/Linux.test.com-query.errlong_query_time=10log-error=/usr/local/mysql/log/Linux.test.com-error.errdefault-authentication-plugin=mysql_native_password

  1. Mysql数据库初始化

Plain Text/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ cd /usr/local/mysql/logtail -100f Linux.test.com-error.err

  1. 配置CentOS linux启动和停止脚本

Plain Textvim /usr/lib/systemd/system/mysqld.service [Unit]Description=MySQL ServerDocumentation=man:mysqld(8)Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.htmlAfter=network.targetAfter=syslog.target[Install]WantedBy=multi-user.target[Service]User=mysqlGroup=mysqlExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnfLimitNOFILE = 65536LimitNPROC = 65536

  1. 配置systemctl启动和停止方法

Plain Text systemctl daemon-reload systemctl stop mysqld systemctl start mysqldsystemctl enable mysqldsystemctl status mysqld

  1. 修改root密码

Plain Text alter user 'root'@'localhost' identified by 'abc..123';grant all privileges on *.* to 'root'@'localhost' with grant option;flush privileges;

  1. 设置允许root用户远程登录

Plain Text mysql> create user 'root'@'10.10.10.%' identified by 'abc..123';Query OK, 0 rows affected (0.00 sec) mysql> grant all privileges on *.* to 'root'@'10.10.10.%' with grant option;Query OK, 0 rows affected (0.01 sec) mysql> flush privileges;Query OK, 0 rows affected (0.00 sec)

  1. 远程连接需要关闭防火墙

Plain Textfirewall-cmd --statesystemctl stop firewalld.servicesystemctl disable firewalld.service

  1. 设置允许root用户远程登录

SQl mysql> create user 'root'@'10.10.10.%' identified by 'abc..123';Query OK, 0 rows affected (0.00 sec) mysql> grant all privileges on *.* to 'root'@'10.10.10.%' with grant option;Query OK, 0 rows affected (0.01 sec) mysql> flush privileges;Query OK, 0 rows affected (0.00 sec)

  1. 远程连接需要关闭防火墙

Plain Textfirewall-cmd --statesystemctl stop firewalld.servicesystemctl disable firewalld.service

第六章 表和库的管理

SQL:Structured Query Language结构化的查询语言,用来对数据库进行查询、更新和管理的一种特殊的语言。DML是SQL语言的核心。

包含三个部分:

  • DML

Data Manipulation language数据操纵语言

用于检索或更新数据库表:insert、delete、update、select增删改查

  • DDL

Data Defination language数据定义语言

用于定义的数据的结构:create  alter  drop

  • DCL

Data Control language数据控制语言

用于定义数据库用户的权限:grant  revoke

1、3、修改表

- 添加列

  语法:

      alter table 表名 add 列名 数据类型;

  示例:

  在t_student表中增加1个名为weight体重字段,类型为双精度。

      alter table t_student add weight double;

- 修改列的类型

  语法:

      alter table 表名 modify 列名 新数据类型;

  示例:

  将t_student表中name姓名字段的宽度修改为250。

      alter table t_student modify name varchar(250);

- 修改列名

      alter table 表名 change 原列名 新列名 数据类型;

  示例:

  将t_student表中sex字段名称修改为gender。

      alter table t_student change sex gender varchar(8);

- 删除列

  语法:

      alter table 表名 drop 列名;

  示例:

  删除t_student表中weight列(字段)。

      alter table t_student drop weight;

- 修改表名

  语法:

      alter table 原表名 rename 新表名;

      或

      rename table 原表名 to 新表名;

  示例:

  将t_student表名修改为student。

      alter table t_student rename student;

      rename table student to t_student;

  

表和库的管理

1、数据类型

整数型:smallint、int、bigint

小数型:float、double

日期时间:date、time、datetime、timestamp

字符串:varchar、char,text

其他:clob存储文本大数据

           blod存储二进制大数据

2、创建表

语法:

Plain Textcreate table 表名( 列名 数据类型 特征, -- 字段名 属性名 列名 数据类型 特征, …… 列名 数据类型 特征)charset=utf8;

示例:

Plain Textcreate table t_user( id int, username varchar(20), password varchar(50));

SQlcreate table t_student( id int primary key auto_increment, -- 将id设为主键 自动增长 默认从1开始,每次递增 name varchar(10) not null, -- 不允许为空 age int, sex varchar(8) not null default '男', -- 指定默认值 address varchar(100), height double, birthday date)charset=utf8;

SQlinsert into t_student(name,age,sex,birthday,height) values('张无忌',21,'男','2002-10-9',176.3);insert into t_student(name,age,birthday,height) values('张三丰',21,'2002-10-9',176.3);insert into t_student(name,age,sex) values(null,22,'女');insert into t_student values('钱多多',20,'女','南京',172.1,now());

3、修改表

- 添加列

  语法:

      alter table 表名 add 列名 数据类型;

  示例:

  在t_student表中增加1个名为weight体重字段,类型为双精度。

      alter table t_student add weight double;

- 修改列的类型

  语法:

      alter table 表名 modify 列名 新数据类型;

  示例:

  将t_student表中name姓名字段的宽度修改为250。

      alter table t_student modify name varchar(250);

- 修改列名

      alter table 表名 change 原列名 新列名 数据类型;

  示例:

  将t_student表中sex字段名称修改为gender。

      alter table t_student change sex gender varchar(8);

- 删除列

  语法:

      alter table 表名 drop 列名;

  示例:

  删除t_student表中weight列(字段)。

      alter table t_student drop weight;

- 修改表名

  语法:

      alter table 原表名 rename 新表名;

      或

      rename table 原表名 to 新表名;

  示例:

  将t_student表名修改为student。

      alter table t_student rename student;

      rename table student to t_student;

  

5、截断表

清空表中的数据,作法类似于无条件的delete语句

语法:

    truncate table 表名;

示例:

    truncate table t_student;

    select * from t_student;

    insert into t_student(name,gender) values('tom','男');

    insert into t_student(name,gender) values('mike','女');

    select * from t_student;

delete与truncate的区别:

- delete会记录日志,所以速度慢,而truncate不记录日志,清空表并释放资源,速度快

- delete可以指定条件只删除部分数据,而truncate只能用来清空表中所有数据

- delete不会将自动增长列归零,而truncate会使自动增长的列如id列归零

6、创建库

语法:

    create database 数据库名 charset utf8;

    create database if not exists 数据库名 charset utf8;

示例:

     create database if not exists shop charset utf8;

7、删除库

语法:

    drop database 数据库名;

    drop database if exists 数据库名;

示例:

    drop database if exists shop;

第七章 字符集和排序规则

7.1什么是乱码

彻底搞定mysql乱码问题

1.什么是乱码?

乱码是指字符数据显示不正确或无法正常识别的现象。

7.2字符集、字符序和常见字符集

- 字符  character    eg:abcd  1234  , . (   )

- 字符集合:charset  一组字符     

  Ascii字符集合(7bit,最高位是0),标准的----可打印的  

  扩展Ascii字符集合(8bit)  拉丁语系,扩展----不可打印的字符  

  GB2312   简体中文

  BIG5   繁体中文

  GBK   包含简体中文和繁体中文

- 字符编码  给字符集合中的每1个字符指定1个二进制数字来标识。

- 字符集:字符集合+编码=字符集

- 字符序:字符的排序规则   1个字符集,可以有多个排序规则即多个字符序

以_ci结尾,大小写不敏感,不区分大小写

以_cs结尾,大小写敏感,区分大小写

- Ascii字符集

- 扩展Ascii字符集   latin1   8位二进制  包括Ascii字符集中的全部字符

- GB2312  BIG5  GBK    16位二进制 

- unicode  字符集  全球语言   16位二进制

- 扩展Ascii字符集  latin1  latin2

- unicode字符集    unicode编码   一个字符2个字节

                             utf8    一个英文字符  占一个字节

                                      一个中文字符使3个字节

- utf8mb3   utf8mb4    more bit

- utf-8是一种变长的字节编码方式,对于某一个字符的utf-8编码,如果只有一个字节则其最高位二进制位为0;如果是多字节,其第一个字符节从最高位开始,连续的二进制位值为1的个数决定了其编码的位数,其余各字节均以10开头,utf8最多可以用到6个字节。

示例:

1字节   0xxx xxxx

2字节   110x xxxx 10xx xxxx

3字节   1110 xxxx 10xx xxxx 10xx xxxx

4字节    1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx

5字节    1111 10xx 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx

6字节    1111 110x  10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx

1110 0101 1000 1000 1001 1010

E58896

A

0100 0001

41

示例:

新建文本文件,使用utf-8编码来保存,验证字符的字节数。

GBK字符集,一个英文占1个字节,一个汉字占2个字节。

7.3、Mysql支持的字符集

语法:

show character set;--查看mysql支持的字符集

show variables like'character_set_%;--查看当前masql使用的字符集

  • character set client 客户端字符集
  • character set connection连接字符集"character set
  • database数据库字符集characterset results返回结果的字符集
  • character_set server服务器字符集
  • characterset system系统字符集

创建数据库时,如果没有指定数据的字符集,则会使用服务器字符集;

创建表时,如果不指定表的字符集,则会使用数据库字符集;

创建表中字段时,如果不指定字段的字符集,则会使用表的字符集

7.4利用字符集知识解决实训室乱码

1.安装mysql

2.win+r---cmd---mysql -u root -p

输入密码

show databases;

show character set;查看支持的字符集

show variables like 'char%';查看当前支持的字符集

set names utf8;修改所产生的字符集

show variables like 'char%';查看当前支持的字符集

手动修改(临时修改):

set character_set_database=utf8;

set character_set_server=utf8;

show variables like 'char%';查看当前支持的字符集

source d:\init.sql;

发现汉字还是乱码

show databases;

use schooldb;

select * from tstudent;发现是乱码

设置---区域和语言---区域---管理---更改系统区域设置---打对勾Beta---重启系统

3.win+r---cdm---重新登录

set names utf8;

show variables like 'char%';确保都用的是utf8

如果不是手动修改(临时修改):

set character_set_database=utf8;

set character_set_server=utf8;

查看show variables like 'char%';

use schooldb;

show tables;

select * from tstudent;汉字可以正常显示了

select * from tsubject;也正常了

第八章笔记

SQL介绍

SQL是访问和操作数据库的标准语言。Structure query language.

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支持的所有编码类型I语法:

show character set;

删除数据库---D操作语法:

drop database 数据库名;

表命令

1、查看所有表

show tables;

2、创建表

前提:切换数据库,需要明确在哪个数据库中新建表

CREATE TABLE table_name (-- table_name表名 特别说明:数据库名、表名都应该有一意义

column1_name data_type constraints,--列名 类型 属性

column2_name data_type constraints,

....

)ENGINE=InnoDB DEFAULT CHARSET=utf8;--存储引擎 字符集

3、示例:

创建一个用户表

CREATE TABLE users(--在DB数据库下新建一个user表

id INT NOT NULL PRIMARY KEY

AUTO_INCREMENT,

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 777215) (-8 388 608,8 388 607) 大整数值

int 4 (0,4294967 295) (-2 147 483 648,2 147 483

647) 大整数值

bigint 8 (018 446744 073709 551615) (-9,223,372.036,854,775.808.9 223 372 036 854 775 807) 极大整数值

FLOAT(M,D) 4 0,(1.175494 351E38,3.402823466 E+38) (-3.402 823 466 E+38,-1.175494 351E-38),0,(1.175 494351 E-38,3.402 823 466 351

E+38) 单精度浮点数值

M是数字总个数,D是小数点后个数

double(M,D) 8 0,(2.225073 858507 201 4 E-308,

1.797 693134 8623157 E+308) (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507201 4E-308).0,(2.225 073858 507 201 4E-308.1.797693 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~30

MySQL要求D小于或

等于(

单精度和双精度不同

1、在内存中占有的字节数不同

2、有效数字位数不同

3、所能表示数的范围不同

字符串

类型 字节 说明

char 0-255字节 定长字符串

varchar 0-65535字节 变长字符串

text 0-65 535字节 长文本数据

日期

类型 大小 范围 格式 说明

date 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期

time 3 -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 年份类型

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

char(50) 宽度是固定,若占不完,空格补齐查询效率高,浪费存储空间 varchar(50)宽度是自动,用多少宽度分配多少宽度,查询效率低,节约空间 text 长文本类型示例:简历 text类型

MySQL支持的常用约束

修饰符 描述

primary key 主键

not null 非空

unique 唯一

default 默认

foreign key 外键

●主键:学生表中的学号、身份证号;课程表中的课程号;在一个表中至少应该有这样一个字段,这个字段所对应的值一不能有重复,二不能有空间,它能够起到唯一标识表中记录的作用。

not null不能空值示例:某个商品的价格是null,只能说这个商品价格尚未确定,不是免费的 unique:满足主键条件的字段设置为unique的字段,此字段所对应的值是不能有重复

foreign key外键:在一个表中某一个字段它不是当前这个表的主关键字,但是它却是另外一个表的主关键,我们在当前这个表,把此字段称为是当前表的外部关键字。

存储引擎

MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。I

存储引擎:就是我们对数据进行增、删、改、查或CRUD操作的一种技术方式。|

show engines;

.查看表结构

desc表名

。查看表的创建语句

show create table‘表名";

更新约束

·先创建一个表,除了主键,不加其他约束。

CREATE TABLE users1 (

id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50), birth_date DATE, phone VARCHAR(11)

)ENGINE-InnoDB DEFAULT CHARSET=utf8;

·给手机号添加唯一约束

ALTER TABLE users1 ADD UNIQUE(phone);

.删除唯一约束

ALTER TABLE users1 DROP INDEX phone;

·给姓名添加非空约束

ALTER TABLE users1 modify name VARCHAR(50) not null;

.删除非空约束

alter table user1 change name name varchar(50) nul1;

给生日添加默认约束

ALTER TABLE users1 ALTER birth_date SET DEFAULT '1992-05-11';

删除默认约束

ALTER TABLE users1 ALTER birth_date DROP DEFAULT;

表的CRUD操作

更新约束

·先创建一个表,除了主键,不加其他约束。

CREATE TABLE users1 (

id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50), birth_date DATE, phone VARCHAR(11)

)ENGINE-InnoDB DEFAULT CHARSET=utf8;

·给手机号添加唯一约束

ALTER TABLE users1 ADD UNIQUE(phone);

.删除唯一约束

ALTER TABLE users1 DROP INDEX phone;

·给姓名添加非空约束

ALTER TABLE users1 modify name VARCHAR(50) not null;

.删除非空约束

alter table user1 change name name varchar(50) nul1;

给生日添加默认约束

ALTER TABLE users1 ALTER birth_date SET DEFAULT '1992-05-11';

删除默认约束

ALTER TABLE users1 ALTER birth_date DROP DEFAULT;

表的CRUD操作

更改表名称

rename table 原表名to新表名;

.修改表

alter table 表名 add| change|drop 列名类型;

alter table users add age int default 1;

alter table users add user_desc varchar(50) default‘哈哈'; alter table users change user_desc userdesc varchar(50);

alter table users drop userdesc

.删除表

drop table 表名;

语法:

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

缺省插入示例:

给user表新增1条记录?

insert into user(name,birthday, phone,age) values('老王','1954-10-5','13012345

全列插入

给user表再新增1条记录

insert into user values(1000,'老张','1964-10-7',13112345678,60); insert into user values(0,'老李','1974-10-7',13212345678,50);

说明:

给表中所有字段插入记录的时候,id自动增长型主键的值从0开始。不同:

主键列是自动增长,但是在全列插入时需要占位,通常使用0,插入成功后以实际数据为准

查询数据

语法:

select * from 表名;--查看表记录

验证float、double、decimal误差

新建测试表 tbl_test create table tbl test(

I

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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值