MySQL 数据库

一、介绍

MySQL数据库是一个RDBMS(关系型数据库:建立在关系模型 基础上,由多张互相连接的二维表组成)。

1.1 MySQL数据类型

MySQL数据类型主要有数值类型、字符串类型、日期类型三种。

1.1.1 数值类型

|--------------|---------|-------------------------------------------------------------------------------------|-----------------------------------|
| 名称 | 大小 | signed类型的取值范围 | unsigned类型的取值范围 |
| TINYINT | 1字节 | [ -128, 127 ] | [ 0, 255 ] |
| SMALLINT | 2字节 | [ -32768, 32767 ] | [ 0, 65536 ] |
| MEDIUMINT | 3字节 | [ -8388608, 8388607] | [ 0, 16777215 ] |
| INT或INTEGER | 4字节 | [ -2147483648, 2147483647 ] | [ 0, 4294967295 ] |
| BIGINT | 8字节 | [ -2^63, 2^63 - 1] | [ 0, 2^64 - 1 ] |
| FLOAT(M, D) | 4字节 | [ -3.403 E+38, 3.403 E+38 ] | 0 和 [ 1.175 E-38, 3.403 E+38 ] |
| DOUBLE(M, D) | 8字节 | [ -1.797 E+308, 1.798 E+308 ] | 0 和 [ 2.225 E-308, 1.798 E+308] |
| DECIMAL | × | 依赖于M(精度)与D(标度)的值 解释 :精度M:小数的总位数 标度D:小数点后的位数 例如:12.345的精度为5,标度为2 | 依赖于M (精度)与D(标度)的值 |

默认采用signed类型,如果想使用unsigned类型,则需要在类型后加上UNISIGNED关键字

1.1.2 字符串类型

|-----------------|-----------------------|------------------------------------------|
| 名称 | (每个) 大小 | 描述 |
| CHAR (n) | 0-255 bytes | 定长字符串 由n个字符,不满的用空格占 (性能 比varchar 高) |
| VARCHAR (n) | 0-65535 bytes | 变长字符串 由0-n个字符,自动计算占几个字节 (性能 比char 低) |
| TINYBLOB | 0-255 bytes | 短二进制数据 |
| TINYTEXT | 0-255 bytes | 短文本字符串 |
| BLOB | 0-65535 bytes | 长二进制数据 |
| TEXT | 0-65535 bytes | 长文本数据 |
| MEDIUMBLOB | 0-16 777 215 bytes | 中等二进制数据 |
| MEDIUMTEXT | 0-16 777 215 bytes | 中等文本数据 |
| LONGBLOB | 0-4 294 967 295 bytes | 巨大二进制数据 |
| LONGTEXT | 0-4 294 967 295 bytes | 巨大文本数据 |

1.1.3 日期类型

|-----------|---------|-------------------------------------------|-----------------------------|---------|
| 名称 | 大小 | 范围 | 格式 | 描述 |
| DATE | 3字节 | 1000-01-01 至 9999-12-31 | YYYY-MM-DD | 日期 |
| TIME | 3字节 | -838:59:59 至 838:59:59 | HH:MM:SS | 时间 |
| YEAR | 1字节 | 1901 至 2155 | YYYY | 年份 |
| DATETIME | 8字节 | 1000-01-01 00:00:00 至 9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 日期 + 时间 |
| TIMESTAMP | 4字节 | 1970-01-01 00:00:01 至 2038-01-19 03:14:07 | YYYY-MM-DD HH:MM:SS | 时间戳 |

二、SQL语句

根据常用习惯 ,本文的SQL语句中的中括号[ ... ]中的内容 表示可以写,也可以不写。

2.1 SQL语句的通用语法

|---|----------------------------------------------|
| 1 | SQL语句支持多行 书写,用分号结尾 |
| 2 | SQL语句允许使用Tab空格 |
| 3 | MySQL的SQL语句,不区分大小写,建议:关键字使用大写 |
| 4 | 注释 单行:使用 --# 多行:使用**/* */** |

2.2 SQL语句分类

SQL语句分类主要有以下四种

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

2.3 DDL语句

2.3.1 DDL数据库操作

|---------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 操作 | 语句 |
| 查询所有数据库 | SHOW DATABASES ; |
| 查询当前数据库 | SELECT DATABASE() ; |
| 创建数据库 | CREATE DATABASE [ IF NOT EXISTS ] 数据库名 [ DEFAULT CHARSET 字符集] [ COLLATE 排序规则 ] ; 解释: [ ]表示可以写,也可以不写的参数 IF NOT EXIST 表示 如果数据库名称不存在,才创建此数据库 DEFAULT CHARSET 用于指定数据库的字符集,如 utf8mb4 COLLATE 用于指定数据库的排序规则 |
| 删除数据库 | DROP DATABASE [ IF EXISTS ] 数据库名 ; |
| 使用数据库 | USE 数据库名 ; |

2.3.2 DDL表操作

|----------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 操作 | 语句 |
| 查询当前数据库所有表 | SHOW TABLES ; |
| 查询表结构 | DESC 表名称 ; |
| 查询指定表的建表语句 | SHOW CREATE TABLE 表名称 ; |
| 创建一个新的表 | CREATE TABLE 表名称( 字段1 名称 字段1类型 [ COMMENT 字段1注释 ] , 字段2 名称 字段2类型 [ COMMENT 字段2注释 ] , 字段3 名称 字段3类型 [ COMMENT 字段3注释 ] , ... 字段n 名称 字段n类型 [ COMMENT 字段n注释 ] ) [ COMMENT 表注释 ]; |
| 修改表名称 | ATLTER TABLE 表名称 RENAME TO 表名称 ; |
| 删除表 | DROP TABLE [ IF EXISTS ] 表名称 ; |
| 删除重建表 (相当于清空表) | TRUNCATE TABLE 表名称 ; (删除再重建,相当去清空了表中所有数据) |
| 往表中添加字段(列) | ALTER TABLE 表名称 ADD 字段名称 字段类型 [ COMMENT 字段n注释 ] ; |
| 修改字段类型 | ALTER TABLE 表名称 MODIFY 字段名称 类型 [ COMMENT 字段n注释 ]; ※注※:这里如果需要保留之前的默认值注释 等,一样需要像创造表的格式写上,不然原有的注释默认值 等约束将被清空。下文同理。 |
| 修改字段名称+类型 | ALTER TABLE 表名称 CHANGE 旧字段名称 新字段名称 类型 [ COMMENT 字段n注释 ]; |
| 删除表中字段 | ALTER TABLE 表名称 DROP 字段名称; |

2.4 DML语句

DML语句用于对表中数据进行增加删除修改三种操作。

2.4.1 添加数据

增加关键字:INSERT

|-----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 操作 | 语句 |
| 给指定字段添加数据 | INSERT INTO 表名称 (字段名1, 字段名2, ...) VALUES(值1, 值2, ...) ; |
| 给全部字段添加数据 | INSERT INTO 表名称 VALUES(值1, 值2, ...) ; |
| 批量添加数据 | INSERT INTO 表名称 (字段名1, 字段名2, ...) VALUES(值1, 值2, ...) , (值1, 值2, ...) , (值1, 值2, ...) ; INSERT INTO 表名称 VALUES(值1, 值2, ...) , (值1, 值2, ...) , (值1, 值2, ...) ; |

2.4.2 删除数据

删除关键字:DELETE

|-----------|-------------------------------------------------------------------------------------------------------------------------------------|
| 操作 | 语句 |
| 删除指定条件的数据 | DELETE FROM 表名称 [ WHERE 条件 ] ; (如果未指定条件,则删除全部数据) 举例: 将tb_user表中name为Daniel的那条数据删除 : DELETE FROM tb_user WHERE name='Daniel' ; |

2.4.3 修改数据

修改关键字:UPDATE

|-----------|------------------------------------------------------------------------------------------------------------------------------------------------------|
| 操作 | 语句 |
| 修改指定条件的数据 | UPDATE 表名称 SET 字段名1=值1, 字段名2=值2, ... [ WHERE 条件 ] ; 举例: 将tb_user表中name为TinyC的那条数据,将其中的age修改为18 : UPDATE tb_user SET age=18 WHERE 条件 name='TinyC' ; |

2.5 DQL语句

DQL语句适用于查询数据表中的记录()。

2.5.1 基本查询

查询 的关键字为:SELECT

|---------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------|
| 操作 | 语句 |
| 查询全部字段 | SELECT * FROM 表名称 ; (这里的 * 表示通配符) |
| 查询多个字段 | SELECT 字段1 [ AS 别名1 ], 字段2 [ AS 别名2 ], ... FROM 表名称 ; 解释 :1. 查询结果中,可以用自定义别名展示字段名称 2. AS关键字是可以省略的,也就是以下用法也正确: SELECT 字段1 别名1 FROM 表名称 ; |
| 对于查询的结果 (注意!不是修改表内容) 去除重复记录 | 关键字:DISTINCT 用法举例:SELECT DISTINCT 字段1 , 字段2 FROM 表名称 ; |

2.5.2 条件查询

条件查询 的关键字为:WHERE

|---------------|---------------------------------------|
| 操作 | 语句 |
| 查询指定条件的记录 | SELECT 字段列表 FROM 表名称 WHERE 条件列表 ; |

其中,条件列表有多个条件组成。条件可以有以下几种:

|------------------|------------------------------------------------|----------------|-------------------|
| 比较运算符 | 解释 | 逻辑运算符 | 解释 |
| > | 大于 | AND 或 && | 逻辑与 (多个条件同时成立) |
| >= | 大于等于 | OR 或 || | 逻辑或 (多个条件中任意一个成立) |
| < | 小于 | NOT 或 ! | 非,不是 |
| <= | 小于等于 | | |
| = | 等于 | | |
| != 或**<>** | 不等于 | | |
| BETWEEN a AND b | 范围在**[** a, b**]**中 (闭区间) | | |
| IN(v1, v2, ...) | 符合值等于v1, v2, ...其中一个 | | |
| LIKE _ 或 % | 占位符,模糊匹配 (下划线 _ 匹配单个字符) (百分号 % 匹配多个字符) | | |
| IS NULL | 判断是否为NULL | | |

这里的 LIKE 占位符比较抽象,以下例子用于说明具体使用方法:

  1. 查询 tb_user 表中 name为三个字,并且第三个字是 的人的id:

SELECT DISTINCT id FROM tb_user WHERE name LIKE '__ ' ;

2.查询 tb_user 表中 姓 的人的id:

SELECT DISTINCT id FROM tb_user WHERE name LIKE ' %' ;

3.5.2 聚合函数

聚合函数指的是将一列数据作为一个整体,进行纵向计算。常用聚合函数如下:

|-------------|------|
| 函数名称 | 解释 |
| count(字段名称) | 统计数量 |
| max(字段名称) | 最大值 |
| min(字段名称) | 最小值 |
| avg(字段名称) | 平均值 |
| sum(字段名称) | 求和 |

在使用聚合函数值,表中的NULL值是不参与聚合函数的计算的。

相关推荐
C吴新科3 小时前
MySQL入门操作详解
mysql
Ai 编码助手5 小时前
MySQL中distinct与group by之间的性能进行比较
数据库·mysql
陈燚_重生之又为程序员6 小时前
基于梧桐数据库的实时数据分析解决方案
数据库·数据挖掘·数据分析
caridle6 小时前
教程:使用 InterBase Express 访问数据库(五):TIBTransaction
java·数据库·express
白云如幻6 小时前
MySQL排序查询
数据库·mysql
萧鼎6 小时前
Python并发编程库:Asyncio的异步编程实战
开发语言·数据库·python·异步
^velpro^6 小时前
数据库连接池的创建
java·开发语言·数据库
苹果醋36 小时前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx
荒川之神6 小时前
ORACLE _11G_R2_ASM 常用命令
数据库·oracle
IT培训中心-竺老师6 小时前
Oracle 23AI创建示例库
数据库·oracle