mysql

MySql

启动

安装后,mysql会默认注册为mysql80服务,且开机自启。因此不用手动开启。如需要,分别使用以下两行代码开或关:

1
2
net start mysql80
net stop mysql80

启动客户端

1
mysql -u <username> -p

其中,username 默认root。输入完成会让你输入密码,之后客户端就启动成功了。

SQL语句基本语法

  • 不区分大小写,但最好大写
  • 句末分号结尾
  • 注释
    • 单行:-- 注释语句# 注释语句
    • 多行:/* 注释语句 */

MYSQL数据类型

数值类型

标识符 大小 描述
TINYINT 1字节
SMALLINT 2字节
MEDIUMINT 3字节
INT(或INTEGER 4字节
BIGINT 8字节
FLOAT 4字节 单精度浮点
DOUBLE 8字节 双精度浮点
DECIMAL 依赖于M(精度)和D(标度)的值
  • 定义一个年龄字段:age TINYINT UNSIGNED。无符号数值在标识符后面加UNSIGNED即可。
  • 定义一个分数字段(0~100,最多有1位小数):score DOUBLE(4, 1)DOULBE(整个数值的有效数字位数, 允许有几位小数)

字符串类型

标识符 大小 描述
CHAR 0~255字节 定长字符串
VARCHAR 0~65535字节 变长字符串
TODO: 补全剩下的
  • CHARVARCHAR的区别:
    1. 大小范围的区别。
    2. CHAR是固定的,CHAR(10)即使你只存储了1个字符,也会占用10个字节,用空格补全;VARCHAR则根据实际存储的字符动态地计算空间。

日期时间类型

标识符 大小 范围 格式 描述
DATE 3 1000-01-01 ~ 9999-12-31 YYYY-MM-DD
DATETIME 8 1000-01-01 00:00:00.000000 ~ 9999-12-31 23:59:59.499999 YYYY-MM-DD hh:mm:ss[.fraction]
TIMESTAMP 4 1970-01-01 00:00:01.000000 ~ 2038-01-19 03:14:07.499999 YYYY-MM-DD hh:mm:ss[.fraction]
TIME 3 -838:59:59.000000 ~ 838:59:59.000000 hh:mm:ss[.fraction]
YEAR 1 1901 ~ 2155 或 0000 YYYY

DDL语句

Data Definition Language,用于数据的定义和创建

定义数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 查询所有数据库
SHOW DATABASES;

# 创建一个数据库
CREATE DATABASE [IF NOT EXISTS] <数据库名> [DEFAULT CHARSET 字符集] [COLLATE 排序规则];

# 删除
DROP DATABASE [IF EXISTS] <数据库名>;

# 使用(选中某个数据库)
USE <数据库名>;

# 查询选中的数据库
SELECT DATABASE();

定义表和字段

在某一个数据库下操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 创建一个表
CREATE TABLE <表名>(
<字段1> <字段1类型> [COMMENT 字段1注释],
<字段2> <字段2类型> [COMMENT 字段2注释],
...
<字段n> <字段n类型> [COMMENT 字段n注释] #最后一个字段后面没有逗号
) [COMMENT 表注释];

# 查询所有表
SHOW TABLES;

# 查询某个表的结构
DESC <表名>;

# 查询某个表的建表语句
SHOW CREATE TABLE <表名>;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 添加字段
ALTER TABLE <表名> ADD <字段名> <字段类型> [COMMENT 注释] [约束];

# 修改字段的数据类型(MODIFY)
ALTER TABLE <表名> MODIFY <字段名> <新的字段类型>;

# 修改整个字段(CHANGE)
ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <字段类型> [COMMENT 注释] [约束];

# 删除字段
ALTER TABLE <表名> DROP <字段名>;

# 修改表名
ALTER TABLE <表名> RENAME TO <新表名>;

# 删除表
DROP TABLE [IF EXISTS] <表名>;

# 删除表中数据,仅保留空表
TRUNCATE TABLE <表名>;

DML语句

Data Manipulation Language 数据操作语言

1
2
3
4
5
6
7
8
9
10
11
# 给指定字段添加(若干)数据
INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...), ...;

# 给所有字段添加(若干)数据
INSERT INTO 表名 VALUES (值1, 值2, ...), (值1, 值2, ...), ...;

/*
注意:
1. 字符串和日期型数据应该包含在引号中,通常用单引号表示字符串常量。
2. 插入数据大小应在字段的规定范围中。
*/

1
UPDATE 表名 SET 字段名=1, 字段名=2, ... [WHERE 条件];

例如,以下语句将id1的数据 的name字段修改为cxk

1
UPDATE 表名 SET name='cxk' where id=1;

如果不指定 WHERE 条件 表示辐射所有数据。

1
DELETE FROM 表名 [WHERE 条件];

DQL语句

Data Query Language 数据查询语言

基本查询

1
2
3
4
5
6
7
# 查询指定字段
# DISTINCT: 是否去除重复数据
# [AS 别名]: 跟在字段名后面,表示为这个字段的别名。别名将显示在输出结果中,提高可读性。别名需要有引号;AS可以省略。
SELECT [DISTINCT] 字段1 [AS 别名1], 字段2 [AS 别名2], ... FROM 表名;

# 查询所有字段(通配符*
SELECT * FROM 表名;

条件查询

1
SELECT 字段列表 FROM 表名 WHERE 条件列表;

mysql
https://becks723.github.io/2025/10/07/mysql/
作者
Becks723
发布于
2025年10月7日
许可协议