Mysql数据库详解
在cmd中选择数据库操作用 USE test_db;
相关概念
Sql是操作关系型数据库的编程语言
关系型数据库:建立在关系模型基础上,由多张相互连接的二维表组成的数据库
语法
sql语法分类
DDL-数据库操作
- 创建:CREATE DATABASE db_name;
- 创建完整的:CREATE
- 删除:DROP DATABASE db_name;
- 查询所有数据库:SHOW DATABASES ;
- 查询一个:SELECT DATABASE db_name;
DDL-数据表操作
- 查询所有表:SHOW TABLES;
- 查询表结构:DESC table_name;
- 修改表:ALTER TABLE table_name ADD column_name datatype;
- 修改列类型或名称
ALTER TABLE table_name MODIFY column_name new_datatype;
ALTER TABLE table_name CHANGE old_column_name new_column_name datatype; - 删除列
ALTER TABLE table_name DROP COLUMN column_name; - 重命名表
RENAME TABLE old_table_name TO new_table_name; - 删除表:DROP TABLE table_name;
创建表:CREATE TABLE table_name (
column1 datatype [constraints],
column2 datatype [constraints],
);
DML-数据操作(增删改)
- 给指定字段添加数据:INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
- 给字段插入多行数据:INSERT INTO table_name (col1, col2) VALUES (value1_1, value1_2),(value2_1, value2_2);
- 省略字段名添加(字段顺序必须匹配):INSERT INTO table_name VALUES (value1, value2, ...);
- 更新数据:UPDATE table_name SET column1 = value1, column2 = value2 [WHERE condition];
- 不加where限制条件就会修改全部行, 加了限制年龄为36的修改为赵康
- 删除数据:DELETE FROM table_name WHERE condition;不加where是指删了整张表的数据
DQL-数据查询语言
SELECT [DISTINCT] column1, column2, ...
FROM table_name
[WHERE condition]
[GROUP BY column]
[HAVING condition]
[ORDER BY column [ASC|DESC]]
[LIMIT offset, count];
- 基本查询:查询相关列SELECT column1, column2, ...FROM table_name;
查询全部:SELECT * FROM table_name;
设置别名查询:SELECT column1 AS 别名1, column2 AS 别名2...FROM table_name;
去掉重复记录查询:SELECT DISTINCT column1FROM table_name;
- 条件查询(WHERE):条件包括
操作符 / 关键字 含义 =
等于 !=
或<>
不等于 >
/<
大于 / 小于 >=
/<=
大于等于 / 小于等于 BETWEEN a AND b
在区间内(含边界) IN (a, b, ...)
值在集合中,满足其一即可 NOT IN (...)
值不在集合中 LIKE
模糊匹配 NOT LIKE
不匹配 IS NULL
是空值 IS NOT NULL
不是空值 AND
/OR
逻辑与 / 或 NOT
逻辑非 EXISTS
/NOT EXISTS
子查询结果存在 / 不存在 REGEXP
正则匹配(大小写敏感) LIKE BINARY
严格区分大小写的模糊匹配 通配符 含义 示例说明 %
匹配任意数量的任意字符(包括0个) 'a%'
:以 a 开头的任意字符串_
匹配任意一个字符 'a_'
:a 开头且后面跟一个任意字符[]
匹配指定范围内的任一字符(仅某些版本支持) '[a-c]%'
:以 a、b 或 c 开头的[^]
排除某些字符(仅某些版本支持) '[^a]%'
:不以 a 开头的
- 聚合参数(count,max,min,avg,sum):SELECT 函数(column1) FROM table_name;
- 分组查询(GROUP BY):
SELECT column1, column2, ...FROM table_name [WHERE condition] GROUP BY 分组字段名 [HAVING 过滤条件]; - 排序查询(ORDER BY)
- 分页查询(LIMIT)
数据类型
整型
类型 | 字节 | 范围(有符号) | 描述 |
---|---|---|---|
TINYINT | 1 | -128 ~ 127 | 小整数 |
SMALLINT | 2 | -32,768 ~ 32,767 | 较小整数 |
INT / INTEGER | 4 | -2,147,483,648 ~ 2,147,483,647 | 常用整数 |
BIGINT | 8 | ±9.22×10¹⁸ | 超大整数 |
浮点型
类型 | 描述 |
---|---|
FLOAT(M, D) | 单精度浮点数(约 7 位精度) |
DOUBLE(M, D) | 双精度浮点数(约 16 位精度) |
DECIMAL(M, D) | 精确小数(用于财务/货币) |
字符串型
类型 | 描述 | 最大长度 |
---|---|---|
CHAR(n) | 固定长度字符串 | 最多 255 字节 |
VARCHAR(n) | 可变长度字符串 | 最多 65,535 字节(受行限制) |
TEXT | 长文本(不支持默认值) | 最多 65,535 字节 |
日期时间类型
类型 | 格式 | 描述 |
---|---|---|
DATE | YYYY-MM-DD | 日期 |
DATETIME | YYYY-MM-DD HH:MM:SS | 日期 + 时间(无时区) |
TIMESTAMP | YYYY-MM-DD HH:MM:SS | 日期 + 时间(自动时区转换) |
TIME | HH:MM:SS | 时间 |
YEAR | YYYY | 年 |