数据类型

  • 数据类型分为以下三种
    • 数值类型
    • 日期和时间类型
    • 字符串类型

数值类型

类型变量大小范围
(有符号)
范围
(无符号)
用途
tinyint1字节最小: -128
最大: 127
最小: 0
最大: 255
小整数
smallint2字节最小: -32,768
最大: +32,767
最小: 0
最大: 65,535
大整数
mediumint3字节最小: -8,388,608
最大: +8,388,607
最小: 0
最大: 16,777,215
大整数
int4字节最小:
-2,147,483,648
最大:
+2,147,483,647
最小: 0
最大: 4,294,967,295
大整数
bigint8字节**极大
整数值
float4字节**单精度
浮点数值
double8字节**双精度
浮点数值
decimal(m,d)根据md值decimal(5,2)
数字位数5
小数点后2
*小数值

时间类型

类型变量 大小时间范围格式用途
date3字节1000-01-01
9999-12-31
YYYY-MM-DD日期值
time3字节-838:59:59
+838:59:59
HH:MM:SS时间值
持续时间值
year1字节19012155YYYY年份值
datetime8字节1000-01-01 00:00:00 9999-12-31 23:59:59YYYY-MM-DD hh:mm:ss混合日期时间值
timestamp4字节1970-01-01 00:00:01 2038-01-19 03:14:07YYYY-MM-DD hh:mm:ss混合日期时间值时间戳

字符串类型

类型大小用途
char0-255字节定长字符串
varchar0-65,535字节变长字符串
tinyblob0-255字节不超过255个字符的二进制字符串
tinytext0-255字节短文本字符串
blob0-65,535字节二进制形式的长文本数据
text0-65,535字节长文本数据
mediumblob0-16,777,215字节二进制形式中等长度文本数据
mediumtext0-16,777,215字节中等长度文本数据
longblob0-4,294,967,295字节二进制极大长度文本数据
longtext0-4,294,967,295字节极大长度文本数据

DDL语句(数据定义语句)

注释

操作类型 数据库对象

库操作

# 查询所有数据库 
SHOW DATABASES;

# 查询当前数据库
SELECT DATABASE();

# 创建数据库
CREATE DATABASE 选项 数据库名 字符集 排序规则;
    # 如果存在不创建
    if not exists 
    # 设置默认字符集 推荐'utf8mb4'
    default charset 字符集名

# 删除数据库
DROP DATABASE 选项 数据库名;
    # 如果存在删除
    if exists

# 更换操作数据库
USE 数据库名

表操作

  • 查询
# 查询当前数据库所有表
SHOW TABLES;

# 查询表结构
DESC 表名;

# 查询指定表的建表语句
SHOW CREATE TABLE 表名;
  • 创建
# 创建表结构
CREATE TABLE 表名(
    字段 字段类型 COMMENT '字段注释',
    字段 字段类型 COMMENT '字段注释'
) COMMENT '表注释';
  • 修改
# 添加字段
ALTER TABLE 表名 ADD 字段名 类型(长度) COMMENT 注释 约束;

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

# 修改字段名和数据类型
ALTER TABLE 表名 CHANGE 字段名 修改的字段名 类型(长度) COMMENT 注释 约束;

# 删除字段
ALTER TABLE 表名 DROP 字段名;
                
# 修改表名
ALTER TABLE 表名 RENAME TO 新表名;
  • 删除
# 删除表
DROP TABLE 表名;

# 删除表并重建表结构
TRUNCATE TABLE 表名;

DML语句(数据操作语句)

注释

操作类型 数据库记录

增加数据

# 给指定字段添加数据
INSERT INTO 表名(字段名1,字段名2) VALUES(1,2);

# 给全部字段添加数据
INSERT INTO 表名 VALUES(1,2);

修改数据

# 修改指定条件数据
UPDATE 表名 SET 字段名1 =1, 字段名2 =2 WHERE 条件;

删除数据

# 删除指定条件数据
DELETE FROM 表名 WHERE 条件;

DQL语句(数据查询语句)

注释

操作类型 数据表数据

基础查询

# 查询所有字段
select * from 表名;

# 查询部分字段
select 字段1,字段2 from 表名;

# 字段设置别名
select 字段1 别名, 字段2 as 别名 from 表名;

# 去除重复记录
select distinct 字段 from 表名;

条件查询

基础查询后加where为条件查询

  • 比较运算符
比较运算符功能
>大于
>=大于等于
<小于
<=小于等于
=等于
<>!=不等于
between 2 and 3在某个范围内(含最小,最大值)
in(1,2,3,4)等于in列表中的值
link '占位符'根据占位符模糊匹配(_单个字符,%任意字符)
is null等于null
  • 逻辑运算符
比较运算符功能
and&&并且(多个条件同时成立)
or|| 或者(多个条件同时成立)
not!非(不是)
  • 实例
# 查询年龄(age)小于18的所有
select * from table where age > 18

# 查询某个范围内的所有字段
select * from table where num between 13 and 20;

# 模糊查询最后一位是8的数字
select * from table where num like '%8'

聚合函数

函数功能
count统计数量
max最大值
min最小值
avg平均值
sum求和
  • 实例
# 查询总记录数
select count(* / 1) from table;

# 查询性别(gender)为女的年龄(age)总和
select sum(age) from table where gender = '女';

分组查询

where 为分组前过滤 having 为分组后过滤

  • 语法
select * from 表名 where 条件 group by 分组字段名 having 分组后过滤条件;
  • 实例
# 查询年龄(age)小于45,男女性别(gender)员工数量
select gender,count(*) from table where age < 45 group by gender;

排序查询

asc 为升序(默认) desc 为降序

  • 语法
select * from 表名 where 条件 order by 字段1 排序方式1 , 字段2 排序方式2;
  • 实例
# 按照年龄(age)进行升序,年龄(age)如果相同,按照身高(height)降序
select * from 表名 where 条件 order by age asc , height desc;

分页查询

  • 注意
    • 起始索引从0开始(起始索引 = 查询页码 - 1)
    • limitMySQL中实现方法
    • 查询第一页可以简写 limit 10
  • 语法
select * from 表名 limit 起始索引, 查询记录数;
  • 实例
# 查询第一页数据
select * from 表名 limit 10;

# 查询第二页数据
select * from 表名 limit 10, 10;

执行顺序

SELECT 字段1 AS 别名             (5)  
    FROM 表名;                   (1)
    WHERE : 条件查询              (2)
    GROUP BY : 分组字段列表        (3)
    HAVING : 分组后条件列表         (4)
    ORDER BY : 陪许字段列表         (6)
    LIMIT : 分页                   (7) 

DCL语句(数据控制语句)

注释

操作类型 访问权限 安全级别