超详细的MySQL三万字总结

2022-10-13 09:18:14

文章目录

MySQL基础

数据库的介绍

数据库概述

数据的存储方式

Java 中创建对象: Student s = new Student(1, “张三”) 存在内存中
学习了 Java IO 流:把数据保存到文件中。

存储位置优点缺点
内存速度快不能永久保存,数据是临时状态。
文件数据可以永久保存操作数据不方便,查询某个数据。
数据库(1)、 数据可以永久保存 (2)、 查询速度快 (3)、 对数据的管理方便占用资源,需要购买。

数据库的概念

什么是数据库

  1. 存储数据的仓库
  2. 本质上是一个文件系统,还是以文件的方式存在服务器的电脑上的。
  3. 所有的关系型数据库都可以使用通用的 SQL
    语句进行管理 DBMS DataBase Management System

常见数据库排行榜

在这里插入图片描述

MySQL:开源免费的数据库,小型的数据库,已经被 Oracle 收购了。MySQL6.x 版本也开始收费。后来 Sun公司收购了 MySQL,而 Sun 公司又被 Oracle 收购。

在这里插入图片描述
Oracle:收费的大型数据库,Oracle 公司的产品。
在这里插入图片描述
DB2 :IBM 公司的数据库产品,收费的。常应用在银行系统中。

SQL Server:MicroSoft 公司收费的中型的数据库。C#、.net 等语言常使用。
在这里插入图片描述

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

数据库的安装与卸载

安装过程分成两个部分:

  1. 文件解压和复制过程,默认的安装目录:
  2. 安装好以后必须对 MySQL 服务器进行配置
    在 mysql 中管理员的名字。

下载地址:https://download.csdn.net/download/qq_45771939/21446730?spm=1001.2014.3001.5503

数据库的安装

  1. 打开下载的 mysql 安装文件双击解压缩,运行“mysql-5.5.40-win64.msi”。
    在这里插入图片描述在这里插入图片描述

  2. 选择安装类型,有“Typical(默认)”、“Complete(完全)”、“Custom(用户自定义)”三个选项,选择“Custom”, 按“next”键继续。
    在这里插入图片描述

  3. 点选“Browse”,手动指定安装目录。
    在这里插入图片描述4. 填上安装目录,我的是“d:\Program Files (x86)\MySQL\MySQL Server 5.0”,按“OK”继续。
    在这里插入图片描述

  4. 确认一下先前的设置,如果有误,按“Back”返回重做。按“Install”开始安装。在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  5. 正在安装中,请稍候,直到出现下面的界面, 则完成 MYSQL 的安装。
    在这里插入图片描述
    数据库安装好了还需要对数据库进行配置才能使用 MYSQL 的配置。

  6. 安装完成了,出现如下界面将进入 mysql 配置向导。
    在这里插入图片描述

  7. 选择配置方式,“Detailed Configuration(手动精确配置)”、“Standard Configuration(标准配置)”,我们选择“Detailed Configuration”,方便熟悉配置过程。

在这里插入图片描述
8. 选择服务器类型,“Developer Machine(开发测试类,mysql 占用很少资源)”、“Server Machine(服务器类型,mysql 占用较多资源)”、“Dedicated MySQL Server Machine(专门的数据库服务器,mysql 占用所有可用资源)在这里插入图片描述
9. 选择mysql数据库的大致用途,“Multifunctional Database(通用多功能型,好)”、“Transactional Database Only(服务器类型,专注于事务处理,一般)”、“Non-Transactional Database Only(非事务处理型,较简单,主要做一些监控、记数用,对 MyISAM 数据类型的支持仅限于 non-transactional),按“Next”继续。在这里插入图片描述
在这里插入图片描述11. 选择网站并发连接数,同时连接的数目Decision Supportt(DSS)/OLAP(20个左右)”、“Online Transaction
Processing(OLTP)(500 个左右)”、“Manual Setting(手动设置,自己输一个数)”。在这里插入图片描述

  1. 是否启用 TCP/IP 连接,设定端口,如果不启用,就只能在自己的机器上访问 mysql 数据库了,在这个页面上,您还可以选择“启用标准模式”(Enable Strict Mode),这样 MySQL 就不会允许细小的语法错误。如果是新手,建议您取消标准模式以减少麻烦。但熟悉 MySQL 以后,尽量使用标准模式,因为它可以降低有害数据进入数据库的可能性。按“Next”继续。
    在这里插入图片描述
  2. 就是对 mysql 默认数据库语言编码进行设置(重要),一般选 UTF-8,按 “Next”继续。在这里插入图片描述
  3. 选择是否将 mysql 安装为 windows 服务,还可以指定 Service Name(服务标识名称),是否将 mysql 的 bin目录加入到 Windows PATH(加入后,就可以直接使用 bin 下的文件,而不用指出目录名,比如连接,“mysql.exe -uusername -ppassword;”就可以了,不用指出 mysql.exe 的完整地址,很方便),我这里全部打上了勾,Service Name 不变。按“Next”继续。
    在这里插入图片描述
  4. 询问是否要修改默认 root 用户(超级管理)的密码。“Enable root access from remote machines(是否允许 root 用户在其它的机器上登陆,如果要安全,就不要勾上,如果要方便,就勾上它)”。最后“CreateAn Anonymous Account(新建一个匿名用户,匿名用户可以连接数据库,不能操作数据,包括查询)”,一般就不用勾了,设置完毕,按“Next”继续。在这里插入图片描述
  5. 确认设置无误,按“Execute”使设置生效,即完成 MYSQL 的安装和配置。在这里插入图片描述
    在这里插入图片描述
    注意:设置完毕,按“Finish”后有一个比较常见的错误,就是不能“Start service”,一般出现在以前有安装 mysql的服务器上,解决的办法,先保证以前安装的 mysql 服务器彻底卸载掉了;不行的话,检查是否按上面一步所说,之前的密码是否有修改,照上面的操作;如果依然不行,将 mysql 安装目录下的 data 文件夹备份,然后删除,在安装完成后,将安装生成的 data 文件夹删除,备份的 data 文件夹移回来,再重启 mysql 服务就可以了,这种情况下,可能需要将数据库检查一下,然后修复一次,防止数据出错。

在这里插入图片描述

数据库的卸载

  1. 停止 window 的 MySQL 服务。 找到“此电脑”-> “管理”-> “服务”,停止 MySQL 后台服务。
    在这里插入图片描述
  2. 卸载 MySQL 安装程序。找到“控制面板”-> “程序和功能”,卸载 MySQL 程序。在这里插入图片描述
  3. 删除 MySQL 安装目录下的所有文件。
    1. 删除 c 盘 ProgramDate 目录中关于 MySQL 的目录。路径为:C:\ProgramData\MySQL(是隐藏文件,需要显示
      出来)。

数据库服务的启动与登录

MySQL 服务器启动方式有两种:

  1. 通过服务的方式自动启动
  2. 手动启动的方式

Windows 服务方式启动

找到“此电脑”-> “管理”-> “服务”,点击启动。
在这里插入图片描述

DOS 命令方式启动

使用管理员打开cmd

net start mysql: 启动mysql的服务
net stop mysql:关闭mysql服务

在这里插入图片描述

控制台连接数据库

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

// 方式一
mysql-u 用户名-p 密码// 方式二
mysql-hip 地址-u 用户名-p 密码// 方式三
mysql--host=ip 地址--user=用户名--password=密码

在这里插入图片描述
退出 MySQL:

quit 或 exit

SQLyog 图形化工具——客户端

SQLyog 是业界著名的 Webyog 公司出品的一款简洁高效、功能强大的图形化 MySQL 数据库管理工具。使用SQLyog 可以快速直观地让您从世界的任何角落通过网络来维护远端的 MySQL 数据库。

在这里插入图片描述

使用 SQLyog 登录数据库

在这里插入图片描述

数据库管理系统

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

数据库管理系统、数据库和表的关系

数据库管理程序(DBMS)可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。为保存应用中实体的数据,一般会在数据库创建多个表,以保存程序中实体 User 的数据。
数据库管理系统、数据库和表的关系如图所示:在这里插入图片描述

SQL 的概念

什么是 SQL

Structured Query Language 结构化查询语言

SQL 作用

1、是一种所有关系型数据库的查询规范,不同的数据库都支持。
2、 通用的数据库操作语言,可以用在不同的数据库中。
3、不同的数据库 SQL 语句有一些区别

在这里插入图片描述

SQL 语句分类

1、Data Definition Language (DDL 数据定义语言) 如:建库,建表
2、Data Manipulation Language(DML 数据操纵语言),如:对表中的记录操作增删改
3、Data Query Language(DQL 数据查询语言),如:对表中的查询操作
4、Data Control Language(DCL 数据控制语言),如:对用户权限的设置

MySQL 的语法

1、每条语句以分号结尾,如果在 SQLyog 中不是必须加的。
2、SQL 中不区分大小写,关键字中认为大写和小写是一样的
3、3 种注释:

注释的语法说明
–空格单行注释
/* */多行注释
#这是 mysql 特有的注释方式

DDL 操作数据库

创建数据库

创建数据库的几种方式

创建数据库

CREATE DATABASE 数据库名;

判断数据库是否已经存在,不存在则创建数据库

CREATE DATABASE IF NOT EXISTS 数据库名;

创建数据库并指定字符集

CREATE DATABASE 数据库名 CHARACTER SET 字符集;

案例:

-- 直接创建数据库 db1createdatabase db1;-- 判断是否存在,如果不存在则创建数据库 db2createdatabaseifnotexists db2;-- 创建数据库并指定字符集为 gbkcreatedatabase db3characterset gbk;

查看数据库

查看所有的数据库

showdatabases;

查看某个数据库的定义信息

showcreatedatabase db3;showcreatedatabase db1;

修改数据库

修改数据库默认的字符集

ALTERDATABASE 数据库名CHARACTERSET 字符集;

将 db3 数据库的字符集改成 utf8

alterdatabase db3characterset utf8;

删除数据库

删除数据库的语法

DROPDATABASE 数据库名;

使用数据库

查看正在使用的数据库

SELECTDATABASE();--使用的一个 mysql 中的全局函数

使用/切换数据库

USE 数据库名;

DDL 操作表结构

创建表

创建表的格式

CREATETABLE 表名(
字段名1 字段类型1,
字段名2 字段类型2);

关键字说明:

创建表的关键字说明
CREATE创建
TABLE

MySQL 数据类型

常使用的数据类型如下:

类型描述
int整型
double浮点型
varchar字符串型
date日期类型

创建 student 表包含 id,name,birthday 字段

createtable student(
idint,-- 整数
namevarchar(20),-- 字符串
birthdaydate-- 生日,最后没有逗号);

查看表

SHOWTABLES;

查看表结构

DESC 表名;

查看创建表的 SQL 语句

SHOWCREATETABLE 表名;

查看 db1 数据库中的所有表

use db1;showtables;

查看 student 的创建表 SQL 语句

showcreatetable student;

快速创建一个表结构相同的表

语法

CREATETABLE 新表名LIKE 旧表名;

创建 s1 表,s1 表结构和 student 表结构相同

-- 创建一个 s1 的表与 student 结构相同createtable s1like student;desc s1;

删除表

直接删除表

DROPTABLE 表名;

判断表是否存在,如果存在则删除表

DROPTABLEIFEXISTS 表名;

案例:

-- 直接删除表 s1 表droptable s1;-- 判断表是否存在并删除 s1 表droptableifexists`create`;

修改表结构

添加表列 ADD

ALTERTABLE 表名ADD 列名 类型;

修改列类型 MODIFY

ALTERTABLE 表名MODIFY 列名 新的类型;

修改列名 CHANGE

ALTERTABLE 表名 CHANGE 旧列名 新列名 类型;

删除列 DROP

ALTERTABLE 表名DROP 列名;

修改表名

RENAMETABLE 表名TO 新表名;

修改字符集 character set

ALTERTABLE 表名characterset 字符集;

DML 操作表中的数据

用于对表中的记录进行增删改操作

插入记录

INSERT[INTO] 表名[字段名]VALUES(字段值)

插入全部字段:

所有的字段名都写出来

INSERTINTO 表名(字段名1, 字段名2, 字段名3)VALUES(1,2,3);

不写字段名

INSERTINTO 表名VALUES(1,2,3);

插入部分数据

INSERTINTO 表名(字段名1, 字段名2,...)VALUES(1,2,...);

案例:

-- 插入所有的列,向学生表中insertinto student(id,name,age,sex)values(1,'孙悟空',34,'男');insertinto student(id,name,age,sex)values(2,'孙悟饭',16,'男');

insert 的注意事项:

  1. 插入的数据应与字段的数据类型相同
  2. 数据的大小应在列的规定范围内,例如:不能将一个长度为 80 的字符串加入到长度为 40 的列中。
  3. 在 values 中列出的数据位置必须与被加入的列的排列位置相对应。在 mysql 中可以使用 value,但不建议使
    用,功能与 values 相同。
  4. 字符和日期型数据应包含在单引号中。MySQL 中也可以使用双引号做为分隔符。
  5. 不指定列或使用 null,表示插入空值。

蠕虫复制

什么是蠕虫复制

将一张已经存在的表中的数据复制到另一张表中。

语法格式
将表名 2 中的所有的列复制到表名 1 中

INSERTINTO 表名1SELECT*FROM 表名2;

只复制部分列

INSERTINTO 表名1(1,2)SELECT1,2FROM student;

更新表记录

语法格式:

UPDATE 表名SET 列名=[WHERE 条件表达式]

不带条件修改数据

UPDATE 表名SET 字段名=;--修改所有的行

带条件修改数据

UPDATE 表名SET 字段名=WHERE 字段名=;

案例:

-- 不带条件修改数据,将所有的性别改成女update studentset sex='女';-- 带条件修改数据,将 id 号为 2 的学生性别改成男update studentset sex='男'where id=2;-- 一次修改多个列,把 id 为 3 的学生,年龄改成 26 岁,address 改成北京update studentset age=26, address='北京'where id=3;

删除表记录

语法格式:

DELETEFROM 表名[WHERE 条件表达式]

不带条件删除数据

DELETEFROM 表名;

带条件删除数据

带条件删除数据

使用 truncate 删除表中所有记录

TRUNCATETABLE 表名;

truncate 和 delete 的区别:
truncate 相当于删除表的结构,再创建一张表。

案例:

-- 带条件删除数据,删除 id 为 1 的记录deletefrom studentwhere id=1;-- 不带条件删除数据,删除表中的所有数据deletefrom student;

DQL 查询表中的数据

查询不会对数据库中的数据进行修改.只是一种显示数据的方式。

语法:

SELECT 列名FROM 表名[WHERE 条件表达式]

简单查询

使用*表示所有列

SELECT*FROM 表名;

查询所有的学生:

select*from student;

查询指定列的数据,多个列之间以逗号分隔

SELECT 字段名1, 字段名2, 字段名3,...FROM 表名;

查询 student 表中的 name 和 age 列

select name,agefrom student;

指定列的别名进行查询

使用别名的好处: 显示的时候使用新的名字,并不修改表的结构。

语法:
1、对列指定别名

SELECT 字段名1AS 别名, 字段名2AS 别名...FROM 表名;

2、对列和表同时指定别名

SELECT 字段名1AS 别名, 字段名2AS 别名...FROM 表名AS 表别名;

案例:

-- 使用别名select nameas 姓名,ageas 年龄from student;-- 表使用别名select st.nameas 姓名,ageas 年龄from studentas st

清除重复值

查询指定列并且结果不出现重复数据

SELECTDISTINCT 字段名FROM 表名;

案例:

-- 查询学生来至于哪些地方select addressfrom student;-- 去掉重复的记录selectdistinct addressfrom student;

查询结果参与运算

某列数据和固定值运算:

SELECT 列名1+ 固定值FROM 表名;

某列数据和其他列数据参与运算:

SELECT 列名1+ 列名2FROM 表名;

案例:

--添加数学,英语成绩列,给每条记录添加对应的数学和英语成绩,查询的时候将数学和英语的成绩相加select*from student;-- 给所有的数学加 5 分select math+5from student;-- 查询 math + english 的和select*from student;select*,(math+english)as 总成绩from student;-- as 可以省略select*,(math+english) 总成绩from student;

条件查询

为什么要条件查询:
如果没有查询条件,则每次查询所有的行。实际应用中,一般要指定查询的条件。对记录进行过滤。

条件查询的语法:

SELECT 字段名FROM 表名WHERE 条件;--流程:取出表中的每条数据,满足条件的记录就返回,不满足条件的记录不返回

运算符

比较运算符说明
>、<、<=、>=、=、<><>在 SQL 中表示不等于,在 mysql 中也可以使用!= 没有==
BETWEEN…AND在一个范围之内,如:between 100 and 200相当于条件在 100 到 200 之间,包头又包尾
IN(集合)集合表示多个值,使用逗号分隔
LIKE ’ %’模糊查询
IS NULL查询某一列为 NULL 的值,注:不能写=NULL

案例:

- 创建表示表-CREATETABLE student3(
 idint,-- 编号
 namevarchar(20),-- 姓名
 ageint,-- 年龄
 sexvarchar(5),-- 性别
 addressvarchar(100),-- 地址
 mathint,-- 数学
 englishint-- 英语);INSERTINTO student3(id,NAME,age,sex,address,math,english)VALUES(1,'孙悟空',55,'男','杭州',66,78),(2,'琪琪',55,'女','深圳',98,87),(3,'孙悟饭',35,'男','香港',56,77),(4,'布尔玛',30,'女','成都',76,65),(5,'孙悟天',28,'男','北京',86,NULL),(6,'弗利萨',572,'男','香港',85,97),(7,'小芳',21,'女','香港',99,99),(8,'贝吉塔',62,'男','郑州',56,65),(9,'魔人布欧',432,'男','武汉',83,75),(10,'贝比',12,'男','广州',95,63));-- 查询 math 分数大于 80 分的学生select*from student3where math>80;-- 查询 english 分数小于或等于 80 分的学生select*from student3where english<=80;-- 查询 age 等于 20 岁的学生select*from student3where age=20;-- 查询 age 不等于 20 岁的学生,注:不等于有两种写法select*from student3where age<>20;select*from student3where age!=20;

逻辑运算符

逻辑运算符说明
and或 && 与,SQL 中建议使用前者,后者并不通用。
or||
not或 ! 非

案例:

-- 查询 age 大于 35 且性别为男的学生(两个条件同时满足)select*from student3where age>35and sex='男';-- 查询 age 大于 35 或性别为男的学生(两个条件其中一个满足)select*from student3where age>35or sex='男';-- 查询 id 是 1 或 3 或 5 的学生sel
  • 作者:零陵上将军_xdr
  • 原文链接:https://blog.csdn.net/qq_45771939/article/details/119858238
    更新时间:2022-10-13 09:18:14