环境搭建
安装
- windows
- MySQL官网:https://www.mysql.com
- 点击Downloads,下载MySQL社区版本(MySQL Community),点击MySQL Community Server
- 点击 go to download page,完成下载
- 运行msi文件进行安装
- 选择自定义方式(Custom)
- 选择下载MySQL Server,点击待安装列表中的MySQL Server,点击Adanced options设置安装路径
- 完成安装,进入配置环节
- Config Type中选择MySQL模式
- 选择连接模式并配置端口号
- 设置Root用户密码,根据需要添加MySQL用户
- 完成安装
配置环境变量
- 在系统变量中选择Path,添加MySQL的bin目录路径
测试
- 进入CMD
- 命令行执行mysql -- version查看是否安装成功
- 命令行执行mysql -uroot -p
- 输入自己的root密码,登录root用户
卸载
- windows
- 停止MySQL服务
- 卸载MySQL软件
- 删除数据文件
- 清除环境变量中MySQL配置
SQL(structured query language)语言
SQL规范
- windows下大小写不敏感
- Linux下大小写敏感
- 每条命令以 ;或 \g 或 \G 结束
- (建议)数据库名,表明,字段名小写,函数名。关键字名,变量名大写
- 注释
- 单行:# 或 -- ... --
- 多行:/* ... */
- 空值(null)参与运算,结果为null
- 着重号( ` ... ` )区分表中属性名和关键字
- 字符串存在隐式转换,转换不成功看做0(字符串比较时,按照ASCII码处理)
- %代表含有不确定个个数的字符(包括0)
- _ 一个下划线代表含有一个不确定的字符
- \ 为转义字符
- 指定某表的某字段时,以 表名.字段名 表示
- 列的别名(只可在OREDER BY中识别使用):字段名 别名 / 字段名 AS 别名 / 字段名 “别名”
-
运算符
- 比较运算符(结果为真返回1,结果为假返回0,其他结果返回null)
- =,<,<=,>,>=
- <=>(安全等与:可以对null进行判断)
- <> / !=
- IS NULL / IS NOT NULL
- LEAST( ... )(返回最小值)
- GREATEST( ... )(返回最大值)
- BETWEEN A AND B (判断是否在A,B之间,包括等于)
- IN( ... )(判断是否符合IN中的某值)
- LIKE (模糊匹配)
- 正则表达式:
- REGEXP(匹配字符串):待匹配内容 REGEXP 匹配条件
- 通配符:
-
-
- ' ^ ' 匹配以该字符后面的字符开头的字符串;
- ' $ ' 匹配以该字符后面的字符结尾的字符串;
- ' . ' 匹配任意单字符串;
- '[ ... ]' 匹配括号内任意字符,- 表示范围;
- ' * ' 匹配零个或多个其前面的字符;
-
- 逻辑运算符(AND优先级高于OR)
- 非:NOT 或 !
- 与:AND 或 &&
- 或:OR 或 ||
- 异或:XOR
- 位运算符
-
- 按位与:&
- 按位或:|
- 按位异或:^
- 按位取反:~
- 左移:<<
- 右移:>>
子句
- WHERE 约束条件:遵守指定约束
- HAVING 函数:遵守函数约束
- GROUP BY 列名1,... :按列的值进行分组
- ORDER BY(排序)
- 字段名1 排序规则关键字,字段名2 排序规则关键字,... (对查询的数据进行排序)
- 升序:ASC(ascend)(默认)
- 降序:DESC(descend)
- 字段名1 排序规则关键字,字段名2 排序规则关键字,... (对查询的数据进行排序)
- LIMIT(分页)
- LIMIT 偏移量(默认为0),数据量;
- LIMIT 数据量 OFFSET 偏移量;
关键字
- DISTINCT:去重
- ALL:全部(不去重)
- BETWEEN A AND B :判断是否在A,B之间,包括等于
- IN( ... ):判断是否符合IN中的某值
- LIKE :模糊匹配
函数
- 聚集函数(用于 SELECT 子句或 HAVING 子句)
- COUNT( * ):统计数据个数
- COUNT( 列名 ):统计一列中值的个数
- SUM( 列名 ):计算一列值的总和
- AVG( 列名 ):计算一列值的平均值
- MAX( 列名 ):计算一列值的最大值
- MIN( 列名 ):计算一列值的最小值
- 数值函数
- Abs():取绝对值
- Sign(x):返回符号(正1负-1)
- Ceil(x):向上取整
- Floor(x):向下取整
- Rand():随机数(带参数时,相同参数对应生成的随机数相同)
DDL(数据定义语言)
- CREATE
- 创建数据库
CREATE schema / database 数据库名
CREATE schema / database 数据库名 character set 字符集名称
-
- 创建表
CREATE TABLE IF NOT EXISTS 表名(
属性名 数据类型 NOT NULL/NULL(是否接收空值) DEFAULT value(默认值) AUTO_INCREMENT(是否自增(一个表中只有一个列拥有这个属性)) PRIMARY KEY(设置为主键)
属性名 ...
PRIMARY KEY(主键名)(创建主键)
CONSTRAINT 外键名称 FOREIGN KEY(属性名) REFERENCES 表名(属性名) ON DELETE 约束类型 ON UPDATE 约束类型(外键约束)
约束类型:CASCADE //主键表和外键表同时删除/更新对应行
SET NULL //主键表删除/更新对应行,外键表中外键列设为空
NO ACTION / RESTRICT //拒绝删除/更新主键表
)ENGINE = 存储引擎(默认InnoDB)
- ALTER
- 修改数据库
ALTER schema / database 数据库名 character set 字符集名称
-
- 修改数据表
- 添加列:ALTER TABLE 表名 ADD 列名 类型
- 删除列:ALTER TABLE 表名 DROP COLUMN 列名
- 修改列:ALTER TABLE 表名 MODIFY COLUMN 列名 类型
- 添加主键:ALTER TABLE 表名 ADD PRIMART KEY(列名)
- 删除主键:
- ALTER TABLE 表名 MODIFY 列名 类型,DROP PRIMATY KEY
- ALTER TABLE 表名 DROP PRIMATY KEY
- 修改数据表
- DROP
- 删除数据库
DROP schema / database 数据库名
-
- 删除数据表
DROP TABLE 表名 //删除全部数据和结构,立即释放空间
TRANCATE TABLE 表名 //删除全部数据,保留结构,立即释放空间
DELETE TABLE 表名 //删除全部数据,保留结构,MyISAM引擎立即释放空间,InnoDB不释放空间
- RENAME
- TRUNCATE
DML(数据操作语言)
- INSERT
- 单条数据插入
INSERT INTO 表名(属性1,属性2,...) VALUES (值1,值2,...)
-
- 子查询插入
INSERT INTO 表名1(属性1,属性2,...) SELECT (属性1,属性2,...) FROM 表名2 (子句)
- DELETE
DELETE FROM 表名
- UPDATE
UPDATE 表名 SET 字段1=表达式1 ...
- SELECT
- 查找某表中的某些或全部信息:
SELECT 字段1,字段2,表达式 别名,...(*代表表中全部字段) FROM 表名
-
- 查找某表中的满足某些条件的某些或全部信息:
SELECT 字段1,字段2,... FROM 表名 WHERE 约束条件
-
- 去除重复行:
SELECT DISTINCT ... FROM ...
-
- 显示表结构:
DESCRIBE / DESC 表名
DCL(数据控制语言)
- COMMIT
- ROLLBACK
- SAVEPOINT
- GRANT
- REVOKE
多表查询
- 对 n 个表进行多表查询,至少需要 n-1 个连接条件
- 连接条件
- 等值/非等值
- 自连/非自连(同一个表在逻辑上分为两个表)
- 内连(结果只有匹配连接条件的数据)/外连(结果包含不匹配连接条件的数据)
-
-
- UNION:返回两个查询的结果集的并集并去重
- UNION ALL:返回两个查询的结果集的并集但不去重(UNION ALL 效率更高)
- 外连接实现
- 左外连接:FROM 表名1 LEFT(OUTER)JOIN 表名2 ON 连接条件1
- 右外连接:FROM 表名1 RIGHT(OUTER)JOIN 表名2 ON 连接条件1
- 满外连接:对下图中的左上和右中/左中和右上使用UNION ALL实现
- 内连接实现
- FROM 表名1 JOIN 表名2 ON 连接条件1 JOIN 表名3 ON 连接条件2 ...
-
MySQL命令
- 数据导入:source 文件绝对路径
- 进入数据库:use 数据库名
- 数据库备份:mysqldump -h 主机名 -u 用户名 -p 密码 数据库名 > 文件路径
- 数据库还原:mysql -h 主机名 -u 用户名 -p 密码 数据库名 < 文件路径
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!