MySQL基础

1. 概述

1.1 数据库相关概念

名称 全称 简称
数据库 存储数据的仓库,数据是有组织的进行存储 DataBase(DB)
数据库管理系统 操纵和管理数据库的大型软件 DataBase Management System(DBMS)
SQL 操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准 Structured Query Language(SQL)

1.2 MySQL数据库

  • 启动与停止
    • win+r,输入services.msc,进入服务,右击MySQL80,点击启动停止
    • 在命令行中输入net start mysql80启动,输入net stop mysql80停止(注意,要以管理员身份运行进入命令提示符
  • 客户端连接
    • MySQL提供的客户端命令行工具
      • 开始菜单选择MySQL 8.0 Command Line Client
      • 输入密码
    • 系统自带的命令行工具执行指令
      • mysql -u root -p
      • 输入密码
      • 注意:使用这种方式时,需要配置PATH环境变量
  • 数据模型
    • MySQL客户端MySQL数据库服务器发送对应的SQL语句
    • MySQL服务器内部有个DBMS数据库管理系统,DBMS会维护和操作数据库,它也可以创建数据库
    • 一个数据库里可以维护多张表
    • 表是最终存储数据的

1.3 MySQL数据模型

  • 关系型数据库(RDBMS)
    • 概念:建立在关系模型基础上,由多张相互连接的二维表组成的数据库
    • 特点
      • 使用表存储数据,格式统一,便于维护
      • 使用SQL语言操作,标准统一,使用方便
  • 数据模型
    • 我们安装完了MySQL之后,我们的计算机就成了MySQL数据库服务器
    • 我们可以通过客户端来连接数据库管理系统DBMS
    • 使用SQL语句,通过数据库管理系统,来创建数据库
    • 也可以通过SQL语句通过数据库管理系统,在指定的数据库当中来创建表
    • 在一个数据库服务器当中可以创建多个数据库
    • 在一个数据库当中可以创建多张表(二维表)
    • 在表中我们可以创造一条一条记录

2. SQL

2.1 通用语法及分类

2.1.1 SQL通用语法

  1. SQL语句可以单行或多行书写,以分号结尾
  2. SQL语句可以使用空格/缩进来增强语句的可读性
  3. MySQL数据库的SQL语句不区分大小写,关键字建议使用大写
  4. 注释:
    • 单行注释:-- 注释内容# 注释内容(MySQL特有)
    • 多行注释:/注释内容/

2.1.2 SQL分类

分类 全称 说明
DDL Data Definition Language 数据库定义语言,用来定义数据库对象(数据库,表,字段)
DML Data Manipulation Language 数据操作语言,用来对数据库表中的数据进行增删改
DQL Data Query Language 数据查询语言,用来查询数据库中表的记录
DCL Data Control Language 数据控制语言,用来创建数据库用户、控制数据库的访问权限

2.2 DDL

2.2.1 数据库操作

小贴士

  1. 结束记得用;
  2. 若没有输入;,输入完之后会出现->,此时输入Ctrl + C即可退出
  3. 字符集不建议使用utf8,而建议使用utf8mb4
    • 理由:因为utf8实际上是一种不完全的UTF-8编码,只支持UTF-8前三个字节,不支持部分特殊字符,如 Emoji 和一些罕见的汉字或其他符号。而utf8mb4 是 MySQL 中真正的完整 UTF-8 编码,能够使用完整的 4 个字节表示字符,因此可以支持 Unicode 中的所有字符,包括 Emoji 和其他 4 字节字符
  1. 查询

查询所有数据库

1
SHOW DATABASES;

查询当前数据库

1
SELECT DATABASE();
  1. 创建
1
CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];
  1. 删除
1
DROP DATABASE[IF EXISTS]数据库名;
  1. 使用
1
USE 数据库名;

USE语句的分号不是必须的

2.2.2 表操作:创建&查询

  1. 查询

    1. 查询当前数据库所有表
    1
    SHOW TABLES;
    1. 查询表结构
    1
    DESC 表名;

    desc - > describe

    1. 查询指定表的建表语句
    1
    SHOW CREATE TABLE 表名;
  2. 创建

    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE 表名(
    字段1 字段1类型[COMMENT 字段1注释],
    字段2 字段2类型[COMMENT 字段2注释],
    字段3 字段3类型[COMMENT 字段3注释],
    ......
    字段n 字段n类型[COMMENT 字段n注释]
    )[COMMENT 表注释];

    小贴士

    [...]为可选参数,最后一个字段后面没有逗号

2.2.3 数据类型

数据类型主要分为三类:数值类型字符串类型日期时间类型

  1. 数值类型
分类 类型 大小 有符号(SIGNED)范围 无符号(UNSIGNED)范围 描述
数值类型 tinyint 1 byte \((-2^7,2^7-1)\) (\(0,2^8-1\)) 小整数值
数值类型 smallint 2 bytes \((-2^{15},2^{15}-1)\) \((0,2^{16}-1)\) 大整数值
数值类型 mediumint 3 bytes \((-2^{23},2^{23}-1)\) \((0,2^{24}-1)\) 大整数值
数值类型 int/integer 4 bytes \((-2^{31},2^{31}-1)\) \((0,2^{32}-1)\) 大整数值
数值类型 bigint 8 bytes \((-2^{63},2^{63}-1)\) \((0,2^{64}-1)\) 极大整数值
数值类型 float 4 bytes \((-3,4028 E+38, 3.4028 E+38)\) 0和\((1.17549 E-308, 1.79769 E+308)\) 单精度浮点数值
数值类型 double 8 bytes \((-1.79769 E+308, 1.79769 E+308)\) 0和\((2.2250738585 E-308, 1.79769E+308)\) 双精度浮点数
数值类型 decimal 依赖于M(精度)和D(标度)的值 依赖于M(精度)和D(标度)的值 小数值(精确定点数)

小贴士

  1. M(精度)和D(标度):比如123.45,总共有五位,所以精度是5,小数点后有两位,所以标度是2
  2. 无符号表示:比如年龄,可以写为:age TINYINT UNSIGNED
  3. 位数:比如我们想输入分数,总共有四位,其中一位是小数,则用score double(4,1)
  1. 字符串类型
分类 类型 大小 描述
字符串类型 CHAR 0~255 bytes 定长字符串
字符串类型 VARCHAR \(0\)~\(2^{16}-1\) bytes 变长字符串
字符串类型 TINYBLOB 0~255 bytes 不超过255个字符的二进制数据
字符串类型 TINYTEXT 0~255 bytes 短文本字符串
字符串类型 BLOB \(0\)~\(2^{16}-1\) bytes 二进制形式的长文本数据
字符串类型 TEXT \(0\)~\(2^{16}-1\) bytes 长文本数据
字符串类型 MEDIUMBLOB 0~\(2^{24}-1\) bytes 二进制形式的中等长度文本数据
字符串类型 MEDIUMTEXT 0~\(2^{24}-1\) bytes 中等长度文本数据
字符串类型 LONGBLOB 0~\(2^{32}-1\) 二进制形式的极大文本数据
字符串类型 LONGTEXT 0~\(2^{32}-1\) 极大长文本数据

小贴士

  1. BLOB:Binary Large Object,二进制大对象文本类型,用于存储如图片、音频、视频文件、压缩文件或其他非文本数据
  2. TEXT:存储文本数据
  1. 日期类型
分类 类型 大小 范围 格式 描述
日期类型 DATE 3 1000-01-019999-12-31 YYYY-MM-DD 日期值
日期类型 TIME 3 -838:59:59838:59:59 HH:MM:SS 时间值或持续时间
日期类型 YEAR 1 19012155 YYYY 年份值
日期类型 DATATIME 8 1000-01-01 00:00:009999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值
日期类型 TIMESTAMP 4 1970-01-01 00:00:012038-01-19 03:14:07 YYYY-MM-DD HH:MM:SS 混合日期和时间值,时间戳

2.2.4 表操作:修改&删除

  1. 修改

添加字段

1
ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束];

修改数据类型

1
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);

修改字段名和字段类型

1
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束];

删除字段

1
ALTER TABLE 表名 DROP 字段名;

修改表名

1
ALTER TABLE 表名 RENAME TO 新表名;
  1. 删除

删除表

1
DROP TABLE [IF EXISTS] 表名

删除指定表,并重新创建该表

1
TRUNCATE TABLE 表名;

2.2.5 小结

  1. DDL-数据库操作
1
2
3
4
5
SHOW DATABASES;
CREATE DATABASE 数据库名;
USE 数据库名;
SELECT 数据库名;
DROP DATABASE 数据库名;
  1. DDL-表操作
1
2
3
4
5
6
SHOW TABLES;
CREATE TABLE 表名(字段 字段类型,字段 字段类型);
DESC 表名;
SHOW CREATE TABLE 表名;
ALTER TABLE 表名 ADD/MODIFY/CHANGE/DROP/RENAME TO...;
DROP TABLE 表名;

MySQL基础
http://crazythursdayv50tome.cn/2024/08/28/MySQL/
Author
饺子
Posted on
August 28, 2024
Licensed under