一、Mysql的安装和配置
①.操作提示:
-
安装教程:https://www.bilibili.com/video/BV1NJ411J79W?p=3
-
mysql安装推荐下载官网的压缩包形式解压进行安装,如果用.exe安装可能会出现卸载难题,解压之后需要手动配置mysql文件,mysql默认不支持中文,需要修改字符集
-
解决Mysql数据库存储中文的问题:https://blog.youkuaiyun.com/u011791611/article/details/88183619
-
需要使用管理员权限打开cmd窗口才可以启动或者停止mysql服务,否则会提示拒绝访问
-
需要先quit;退出mysql才可以net stop mysql退出mysql服务
-
如果安装过Mysql过程中,出错了或者想删除已经安装好的mysql服务: **sc delete mysql **
-
mysql输入密码的两种方式
-
mysql -h 被连接的主机的ip地址 -P 端口号 -u 用户名 -p密码
- -h ip 不填则默认为本机
127.0.0.1
或localhost
- -P 端口号 不填则默认为
3306
- -p后面直接输入密码不需要空格
- -h ip 不填则默认为本机
-
mysql -u root -p+密码+回车
-p后面直接写密码,不需要空格,可以显示的看到输入的密码 -
mysql -u root -p+回车
再输入密码+回车
暗码输入密码,可以隐藏秘密
-
-
实际工作中会修改mysql密码和端口号防止被攻击
-
Linux下启动mysql是在mysql的bin目录下执行如下命令打开mysql程序
./mysql -u root -p密码
②.解压zip包方式的安装步骤:
1.下载Mysql的zip 安装文件
- 解压的路径最好不要有中文和空格,尽量解压到空间大的盘
2.添加环境变量
- 在Path 环境变量增加mysql的安装目录\bin
3.在解压的目录下创建my.ini文件
[mysqld]
#Mysql安装目录
basedir=D:\mysql-5.7.19-winx64\
#Mysql数据目录
datadir=D:\mysql-5.7.19-winx64\data\
#字符集
character_set_server = utf8
#指定被mysql服务监听的端口
port=3306
#跳过安全检查,即不用输入密码也可以登录
#skip-grant-tables
#客户端字符集
[client]
default-character-set = utf8
#服务端字符集
[mysql]
default-character-set = utf8
4.安装mysql服务
- 使用管理员身份打开 cmd , 并切换到 D:\hspmysql\mysql-5.7.19-winx64\bin 目录下, 执行
mysqld -install
5.初始化数据库
mysqld --initialize-insecure --user=mysql
6.启动mysql 服务
net start mysql
7.进入mysql 管理终端
mysql -u root -p 注意需要在my.ini文件中设置 skip-grant-tables 跳过安全检验 此命令行表示当前root用户密码为空
8.打开名称为mysql的表修改root用户密码
use mysql; //打开名称为mysql的表
update user set authentication_string=password('123456') where user='root' and Host='localhost';//修改root用户的密码为123456,需要在mysql语句末尾添加;
flush privileges;//刷新权限
quit;//退出
9.再次修改my.ini , 再次进入就会进行权限验证了
#skip-grant-tables 注释掉这行,即表示登录mysql需要进行权限验证,需要输入密码
10.停止mysql服务再重新启动mysql
- 注意:
停止服务需要先退出mysql命令行,即先quit;退出mysql
net stop mysql //关闭mysql服务
net start mysql //启动mysql服务
11.再次进入Mysql, 输入正确的用户名和密码
mysql -u root -p+密码+回车 或
mysql -u root -p+回车
密码+回车
- 显示mysql>即成功打开mysql并进入sql语句输入模式
二、数据库管理软件的安装
1.navicat
- 官方下载地址:https://www.navicat.com.cn/products
- 安装教程:https://www.bilibili.com/video/BV1JK411V7bQ
2.Sqlyog
- 官方下载地址:https://sqlyog.en.softonic.com/
三、温馨提示
操作相关:
-
Mysql菜鸟教程帮助文档:https://www.runoob.com/mysql/mysql-tutorial.html
-
【韩顺平讲MySQL】零基础一周学会MySQL -sql mysql教程 mysql视频 mysql入门
- 相关sql文件文档下载:
- 链接:https://pan.baidu.com/s/1sIf_0SMdkj9vZX5USndTWA
提取码:ku31
-
指定数据库或表使用的字符集
CHARACTER SET
可以简写成CHARSET
-
字符集
utf8_bin
区分大小写,而字符集untf8_bin
不区分大小写 -
存储引擎默认为
InnoDB
-
表中的字段不区分大小写,如字段
dnum
和Dnum
是一样的,不可以重复使用- 错误代码: 1060 Duplicate column name ‘Dnum’
-
Sqlyog的注释快捷键为Ctrl+Shift+C,取消注释是Ctrl+Shift+R
-
Navicat的注释快捷键为Ctrl+/
-
char(size)类型适合存储固定长度的字符串,查询速度会快于varchar(size)
-
sql语句中的字符串可以用
单引号或者双引号
括起来 -
插入日期的sql语句可以不带前导0
-
数据库建表通常用下划线
_
命名法 -
DUAL 为数据库默认的表 亚元表
-
数据库字符串函数的下标都是从1开始,而不是从0开始
-
**注意:**password() 加密函数已经在 8.0.11 中移除了,可以使用 MD5() 函数代替。
-
Mysql中的不等号: != <>
常用单词:
1. alter 更改、修改
2. show 展示
3. collate 核对、校验
4. delete 删除
5. insert into 插入
6. modify 修改
7. update 更新
8. select 选择
9. drop 丢弃、删掉
10. create 创建
11. table 表
12. character set <==> charset 字符集
13. engine 引擎
14. utf8 gbk 常用的字符集
15. utf8_bin uft8_general_ci 常用的校验规则
16. database 数据库
17. set 设置
18. where 当
19. timestamp 时间戳
20. after 在..后面
21. desc 描述
22. CRUD create 增加 retrieve 检索 update 更新 delete 删除
23. distinct 不同的
24. like 像
25. between .. and .. 在..和..之间
26. ascending order 升序
27. descending order 降序
28. group by 分组
29. dual 亚元表
30. union 合并
31. ENUM(枚举常量1,枚举常量2) 枚举
四、数据库语句
1.创建数据库
#创建数据库keivn 默认字符集为utf8,排序规则为utf8_general_ci;(不区分大小写排序)
create database 指定要创建的数据库;
#创建数据库kevin01 指定字符集为utf8,排序规则默认为utf8_general_ci;(不区分大小写排序)
create database 指定要创建的数据库 character set utf8;
#创建数据库kevin02 指定字符集为utf8,指定排序规则为utf8_bin;(区分大小写排序)
create database 指定要创建的数据库 character set utf8 collate utf8_bin;
2.查看数据库
①、查看mysql中已有的数据库
#注意databases需要需要复数形式,查看当前mysql中已经创建的数据库
show databases;
②、查看创建指定数据库时用的sql语句
#查看创建指定数据库时的mysql语句,这里的database用单数形式
show create database kevin02(指定的数据库);
3.删除数据库
#如果存在,则删除指定的数据库,如果不加if exists进行判断,如果指定数据库不存在则报错
drop database if exists 指定要删除的数据库名;
4.备份数据库
#备份数据库需要退出mysql输入模式,mysql安装目录下的bin目录中打开dos命令行执行
#可以一次备份多个指定的数据库到一个sql文件中 需要指定路径
#备份文件其实是很多sql语句,
mysqldump -u 用户名 -p -B 需要备份的数据库1 需要备份的数据库2 ... 需要备份的数据库n > 备份文件保存路径:\\XXX.sql
回车输入密码
- 备份的sql文件内容
-- MySQL dump 10.13 Distrib 5.7.19, for Win64 (x86_64)
--
-- Host: localhost Database: kevin01
-- ------------------------------------------------------
-- Server version 5.7.19
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Current Database: `kevin01`
--
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `kevin01` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `kevin01`;
--
-- Current Database: `kevin02`
--
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `kevin02` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */;
USE `kevin02`;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2022-03-09 17:55:18
5.备份数据库表
#退出mysql输入模式,在mysql安装目录的bin目录下打开dos命令行窗口
#注意 命令行中不需要有 -B 这代码备份的都是数据库
mysqldump -u 用户名 -p 需要备份表的数据库名 需要备份的表1 需要备份的表2 ... 需要备份的表n > 备份文件保存路径:\\XXX.sql
回车输入密码
6.恢复数据库
①、用命令行模式恢复
#需要在msyql输入模式中执行 需要指定sql文件全路径
scoure 指定的sql备份文件
②、复制粘贴sql备份文件内容方式恢复
- 文本形式打开备份好的sql文件,在mysql输入模式中粘贴执行
- 或者再navicat、sqlyog的查询窗口中粘贴执行
7.恢复数据库中的某个表
#恢复某个数据库中的表时,需要先切换到指定的数据库 use 数据库名 再恢复表
source 备份的表sql文件
8.创建表
语法:
- 注意:
- 表中字段之间使用逗号分隔
- sql语句末尾需要分号
- 如果不指定字符集、排序规则、存储引擎等,系统会自动设置表为默认与数据库一样的字符集和排序规则,存储引擎为InnoDB
- 当表中字段为关键字时,使用反引号
CREATE TABLE(
字段1 类型,
字段2 类型,
字段3 类型,)
CHARACTER SET 字符集
COLLATE 核对的排序规则
ENGINE 存储引擎;
代码示例:
#切换到数据库kevin01
USE kevin01;
#创建表
#表名为user,因为user为关键字,所以用反引号
#字段 类型
#id int
#name varchar(255)
#password varchar(255)
#birthday date
#指定字符集为utf8
#指定校验排序规则为utf8_bin
#指定存储引擎为InnoDB
CREATE TABLE `user` (
id INT,
`name` VARCHAR(255),
`password` VARCHAR(255),
`birthday` DATE)
CHARACTER SET utf8 COLLATE utf8_bin ENGINE INNODB;
五、数据类型概述:
1.数值类型
①、整数
数据类型 | 字节 | 范围 | 范围 | 说明 |
---|---|---|---|---|
BIT(M) | M | 0~2M-1 | 0~2M-1 | 数值显示为位形式 M为1~64 如果M省略,则默认为1 |
TINYINT | 1 | -128~127 | -27~27-1 | 很小的整数,TINYINT(1)常作为真假 |
TINYINT UNSIGNED | 1 | 0~255 | 0~28-1 | |
SMALLINT | 2 | -32768~32767 | -215~215-1 | 小的整数 |
SMALLINT UNSIGNED | 2 | 0~65535 | 0~216-1 | |
MEDIUNINT | 3 | -8388608~8388607 | -223~223-1 | 中等大小的整数 |
MEDIUNINT UNSIGNED | 3 | 0~16777215 | 0~224-1 | |
INT | 4 | -2147483648~2147483647 | -231~231-1 | 普通大小的整数,最常用 |
INT UNSIGNED | 4 | 0~4294967295 | 0~232-1 | |
BIGINT | 8 | -9223372036854775808~9223372036854775807 | -263~263-1 | 大整数 |
BIGINT UNSIGNED | 8 | 0~18446744073709551615 | 0~264-1 |
②、小数
数据类型 | 字节 | 范围 | 说明 |
---|---|---|---|
FLOAT | 4 | -3.402823466E+38到-1.175494351E-38、0和1.175494351E-38到3.402823466E+38 | 单精度浮点数精确到大约7位小数位 |
DOUBLE | 8 | -1.7976931348623157E+308到-2.2250738585072014E-308、0和2.2250738585072014E-308到 1.7976931348623157E+308 | 双精度浮点数精确到大约15位小数位 |
DECIMAL(M,D) | 数字长度 | 如果D是0,则值没有小数点或分数部分。DECIMAL整数最大位数(M)为65。支持的十进制数的最大位数(D)是30。如果D被省略, 默认是0。如果M被省略, 默认是10。 | 小数点和(负数)的‘-’符号不包括在M中。M是小数位数(精度)的总数,D是小数点(标度)后面的位数 |
2.文本、二进制类型
数据类型 | 大小 | 最大存储字符个数(字符数) | 说明 |
---|---|---|---|
CHAR(size) | 固定size个字符 | 255 | 占用字节数会根据字符集变化:GBK编码每个字符占2个字节,UTF-8字符集每个字符占3个字节 定长字符串,固定size个字符 适合存储固定长度的数据 |
VARCHAR(size) | 最多size个字符 | utf8:21844 gbk:32766 | 变长字符串,实际占用字节数会根据实际存储字符串长度变化 有1~3个字节存储实际存储字符串的长度,因此最多占用65535-3个字节 |
二进制数据BLOB(M) | 指定最多为M个字节 | 65,535个字节 | 最大长度为65,535(216–1)字节的BLOB列 |
LONGBLOB | 4,294,967,295个字节 | 4,294,967,295个字节 | 最大长度为4,294,967,295或4GB(232–1)字节的BLOB列 |
TEXT(M) | 指定最多为M个字符 | 65,535 | 最大长度为65,535(216–1)字符的TEXT列 |
LONGTEXT | 4,294,967,295个字符 | 4,294,967,295 | 最大长度为4,294,967,295或4GB(232–1)字符的TEXT列 |
3.日期、时间类型
数据类型 | 表示 | 说明 |
---|---|---|
DATE |