MySQL—— 基础
- 一、MySQL概述
- 1.1 、数据库相关概念
- 1.2 、MySQL 客户端连接
- 1.3 、数据模型
- 二、SQL
- 2.1、SQL通用语法
- 2.2、SQL分类
- 2.3、DDL
- 2.4、DML
- 2.5、DQL
- 2.6、DCL
- 三、函数
- 四、约束
- 五、多表查询
- 六、事务
一、MySQL概述
1.1 、数据库相关概念
数据库、数据库管理系统、SQL:
目前主流的关系型数据库管理系统的市场占有率排名如下:
Oracle
:大型的收费数据库,Oracle公司产品,价格昂贵。MySQL
:开源免费的中小型数据库,后来Sun公司收购了MySQL,而Oracle又收购了Sun公司。
目前Oracle推出了收费版本的 MySQL,也提供了免费的社区版本。SQL Server
:Microsoft 公司推出的收费的中型数据库,C#、.net等语言常用。PostgreSQL
:开源免费的中小型数据库。DB2
:IBM公司的大型收费数据库产品。SQLLite
:嵌入式的微型数据库。Android内置的数据库采用的就是该数据库。MariaDB
:开源免费的中小型数据库。是MySQL数据库的另外一个分支、另外一个衍生产品,与MySQL数据库有很好的兼容性。
而不论我们使用的是上面的哪一个关系型数据库,最终在操作时,都是使用 SQL
语言来进行统一操作,因为 SQL
语言,是操作关系型数据库的 统一标准。所以即使我们现在学习的是MySQL
,假如我们以后到了公司,使用的是别的关系型数据库,如:Oracle
、DB2
、SQLServer
,也完全不用担心,因为操作的方式都是一致的。
MySQL下载,请参考其他教程!
⭐️ MySQL启动和停止
net start mysql80
net stop mysql80
1.2 、MySQL 客户端连接
- 方式一:使用 MySQL 提供的客户端命令行工具
- 方式二:使用系统自带的命令行工具执行指令
mysql [-h 127.0.0.1] [-P 3306] -u root -p
参数:
-h
: MySQL服务所在的主机 IP-P
: MySQL服务端口号,默认3306-u
: MySQL数据库用户名-p
: MySQL数据厍用户名对应的密码
[]
内为可选参数,如果需要连接 远程的 MySQL,需要加上这两个参数来指定远程主机IP、端口,如果连接本地的MySQL,则无需指定这两个参数。
注意: 使用这种方式进行连接时,需要安装完毕后配置
PATH环境变量
。
1.3 、数据模型
⭐️ 1)、关系型数据库(RDBMS
)
- 概念:建立在关系模型基础上,由多张相互连接的 二维表 组成的数据库。
- 而所谓 二维表,指的是由行和列组成的表,如下图(就类似于Excel表格数据,有表头、有列、有行,还可以通过一列关联另外一个表格中的某一列数据)。
- 我们之前提到的
MySQL
、Oracle
、DB2
、SQLServer
这些都是属于关系型数据库,里面都是基于二维表存储数据的。- 简单说,基于二维表存储数据的数据库就成为 关系型数据库,不是基于二维表存储数据的数据库,就是 非关系型数据库。
特点:
- A. 使用表存储数据,格式统一,便于维护。
- B. 使用 SQL语言操作,标准统一,使用方便。
⭐️ 2)、数据模型
- MySQL是关系型数据库,是基于 二维表 进行数据存储的,具体的结构图下:
- 我们可以通过MySQL客户端连接 数据库管理系统 DBMS,然后通过DBMS操作数据库。
- 可以使用SQL语句,通过 数据库管理系统 操作数据库,以及操作数据库中的表结构及数据。
- 一个数据库服务器中可以创建多个数据库,一个数据库中也可以包含多张表,而一张表中又可以包
含多行记录。
二、SQL
全称 Structured Query Language
,结构化查询语言。操作关系型数据库的编程语言,定义了
一套操作关系型数据库统一标准 。
2.1、SQL通用语法
在学习具体的SQL语句之前,先来了解一下SQL语言的同于语法。
- SQL语句可以 单行 或 多行 书写,以 分号 结尾。
- SQL语句可以使用 空格/缩进 来增强语句的可读性。
- MySQL数据库的SQL语句 不区分大小写 ,关键字建议使用大写。
- 注释:
- 单行注释:
-- 注释内容
或# 注释内容
- 多行注释:
/* 注释内容 */
- 单行注释:
2.2、SQL分类
SQL语句,根据其功能,主要分为四类:DDL
、DML
、DQL
、DCL
。
2.3、DDL
⭐️ DDL — 数据库操作
1)、查询所有数据库
show databases ;
2)、查询当前数据库
select database() ;
3)、创建数据库
create database [ if not exists ] 数据库名 [ default charset 字符集 ] [ collate 排序规则 ] ;
[]
内的是可选项。- 字符集例如:
utf8mb4
;不建议使用utf8
, 其长度为3个字节,而utf8mb4
长度是4个字节。 - 在同一个数据库服务器中,不能创建两个名称相同的数据库,否则将会报错。(可以通过
if not exists
参数来解决这个问题,数据库不存在, 则创建该数据库,如果存在,则不创建。)
举个栗子:
create database if not exists rmzh default charset utf8mb4 ;
4)、删除数据库
drop database [ if exists ] 数据库名 ;
- 如果删除一个不存在的数据库,将会报错。此时,可以加上参数
if exists
,如果数据库存在,再执行删除,否则不执行删除。
5)、切换数据库
use 数据库名 ;
- 我们要操作某一个数据库下的表时,就需要通过该指令,切换到对应的数据库下,否则是不能操作的。
比如,切换到rmzh
数据,执行如下SQL:
use rmzh ;
数据库操作 快速食用:
# 1)、查询所有数据库
show databases ;
# 2)、查询当前数据库
select database() ;
# 3)、创建数据库
create database [ if not exists ] 数据库名 [ default charset 字符集 ] [ collate 排序规则 ] ;
# 4)、删除数据库
drop database [ if exists ] 数据库名 ;
# 5)、切换数据库
use 数据库名 ;
⭐️ DDL — 表操作
1)、表操作-查询创建
- 查询当前数据库所有表
show tables;
- 查看指定表结构
desc 表名 ;
通过这条指令,我们可以查看到指定表的字段,字段的类型、是否可以为
NULL
,是否存在默认值等信息。
- 查询指定表的建表语句
show create table 表名 ;
通过这条指令,主要是用来查看建表语句的,而有部分参数我们在创建表的时候,并未指定也会查询到,因为这部分是数据库的默认值,如:存储引擎、字符集等。
- 创建表结构
CREATE TABLE 表名(字段1 字段1类型 [COMMENT 字段1注释 ],字段2 字段2类型 [COMMENT 字段2注释 ],字段3 字段3类型 [COMMENT 字段3注释 ],......字段n 字段n类型 [COMMENT 字段n注释 ]
) [ COMMENT 表注释 ] ;
注意:
[...]
内为可选参数,最后一个字段后面没有逗号。
2)、表操作-数据类型
- 在上述的建表语句中,我们在指定字段的数据类型时,用到了
int
,varchar
,那么在MySQL中除了以上的数据类型,还有哪些常见的数据类型呢? 接下来,我们就来详细介绍一下MySQL的数据类型。 - MySQL中的数据类型有很多,主要分为三类:
数值类型
、字符串类型
、日期时间类型
。
-
数值类型
-
字符串类型
char
与varchar
都可以描述字符串:
char
是定长字符串,指定长度多长,就占用多少个字符,和字段值的长度无关 。- 而
varchar
是变长字符串,指定的长度为最大占用长度 。相对来说,
char
的性能会更高些。
- 日期时间类型
3)、表操作-修改 - 添加字段
ALTER TABLE 表名 ADD 字段名 类型 (长度) [ COMMENT 1 注释 ] [ 约束 ];
- 修改数据类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型 (长度);
- 修改字段名和字段类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型 (长度) [ COMMENT 1 注释 ]
- 删除字段
ALTER TABLE 表名 DROP 字段名;
- 修改表名
ALTER TABLE 表名 RENAME TO 新表名;
4)、表操作-删除
- 删除表
DROP TABLE [ IF EXISTS ] 表名;
可选项
IF EXISTS
代表,只有表名存在时才会删除该表,表名不存在,则不执行删除操作(如果不
加该参数项,删除一张不存在的表,执行将会报错)。
- 删除指定表, 并重新创建表
TRUNCATE TABLE 表名;
注意: 在删除表的时候,表中的全部数据也都会被删除。