1.mysql
-
关系型数据库:就是由多张能互相连接的二维表组成的数据库。
-
都是使用表结构,格式一致,易于维护。
-
使用通用的SQL语言操作,使用方便,可用于复杂查询。
-
数据存储在磁盘中,安全。
-
DDL--- 操作数据库
查询
show databases;
创建
-
创建数据库
CREATE DATABASE 数据库名称;
-
创建数据库(判断,如果不存在则创建)
CREATE DATABASE IF NOT EXISTS 数据库名;
删除
-
删除数据库
DROP DATABASE 数据库名称;
-
删除数据库(判断是否存在)
DROP DATABASE IF EXISTS 数据库名称;
使用数据库
-
查看当前使用的数据库
SELECT DATABASE();
USE 数据库名称;
DDL---操作表
查询表
-
查询当前数据库下所有表名称
SHOW TABLES;
-
查询表结构
DESC 表名称;
创建表
CREATE TABLE 表名(
字段名1 数据类型,
字段名2 数据类型,
字段名3 数据类型
);
注意
MySQL 支持多种类型,可分为三类
- 数值
- 日期
- 字符串
char(10) 10个字符空间 存储的性能高,浪费空间
varchar(10) 2个字符空间 存储的性能低,节约空间
sore double(总长度,小数点保留几位)0~100,2
sore double(5,2)
删除
-
删除表
DROP TABLE 表名;
-
删除表判断表是否存在
DROP TABLE IF EXISTS 表名;
修改表
-
修改表
ALTER TABLE 表名 RENAME TO 新表名;
-
添加一列
ALTER TABLE 表名 ADD 列名 数据类型
-
修改数据类型
ALTER TABLE 表名 MODIFY 列名 新数据类型
-
修改列名和数据类型
ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;
-
删除列
ALTER TABLE 表名 DROP 列名;
DML
-
给指定列添加数据
INSERT INTO 表名(列名1,列名2,...)VALUES(值1,值2,...);
-
设置默认值
ALTER TABLE td_user ALTER COLUMN deleted SET DEFAULT "0";
-
给全部列表添加数据
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,...)...;
修改数据
-
修改数据
UPDATE 表名 SET 列名1=值1,列名2=值2,...[WHERE 条件];
注意:修改语句中如果不加条件,则会将所有的数据修改。 -
删除数据
DELETE FROM 表名 [WHERE 条件];
注意:修改语句中如果不加条件,则会将所有的数据删除。
DQL
-
查询语法
SELECT
字段列表
FROM
表名列表
WHERE
条件列表
CROUP BY
分组字段
HAVING
分组后条件
ORDER BY
排序字段
LIMIT
分页限定 -
基础查询
-
查询多个字段
SELECT 字段列表 FROM 表名;
SELECT * FROM 表名;-- 查询所有数据-
去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;
-
起别名
AS: 也可以省略
-
-
条件查询
符号 功能 > < >= <= = <>/!= 不等于 between...and... 在某个范围之内 in(....) 多选一 is null is not null 不是null or not /! 非 like 模糊查询 : _单个任意字符,%多个任意字符 -
排序查询
SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 [排序方式1],排序字段名2 [排序方式2],...;
排序方式
-
ASC:升序(默认)
-
DESC:降序排列
注意:如果有多个排序条件,当前边条件值一样时,才会根据第二条件进行排序。
-
-
聚合函数
函数名 功能 count(列名) 统计数量(一般选用为null的列) min 最小值 max 最大值 sum 求和 avg 平均值 语法:
SELECT 聚合函数(列名)FROM 表;
注意:null 值不参与所有聚合函数运算 -
分组查询语法
SELECT 字段名 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤];
注意: 分组之后,查询的字段为聚合函数和分组字段,查询其它字段无任何意义。
where和having区别
执行时机不一样:where是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤。
可判断的条件不一样:where不能对聚合函数进行判断,having可以。
执行顺序: where > 聚合函数>having
-
分页查询
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询条目数;
起始索引:从0开始
计算公式: 起始索引=(当前页码-1)*每页显示的条数
约束
约束名称 | 描述 | 关键字 |
---|---|---|
非空约束 | 保证列表中所有数据不能有null | NOT NULL |
唯一约束 | 保证列中所有数据各不相同 | UNIQUE |
主键约束 | 主键是一行数据的唯一标识,要求非空且唯一,自增长 auto_increment. | PRIMARY KEY |
检查约束 | 保证列中的值满足某一条件 | |
默认约束 | 保存数据时,未指定值则采用默认值 | DEFAULT |
外键约束 | 外键用来让两个表的数据之间建立链接,保证数据的一致性和完整性。 |
-
外键约束
让两个表的数据之间建立链接,保证数据的一致性和完整性。
-
添加约束
-- 创建表时添加外键约束
CREAT TABLE 表名 (
列名 数据类型,
...
[constraint] [外键名称] foreign key(外键列名)
references 主表(主表列名)
);-- 建完表后添加外键约束
ALTER TABLE 表名 add constraint 外键名称 foreign key(外键字段名称) references 主表名称(主表列名称);-- 删除外键约束
alter tabke 表名 drop foreign key 外键名称
数据库设计
-
数据库设计设计什么?
-
有哪些表
-
表里有那些字段
-
表和表之间是什么关系
-
-
表关系有哪几种?
-
一对一
实现方式:在任意一方建立外键,关联对方主键,并设置外键唯一。
-
一对多(多对一)
实现方式:在多的一方建立外键,指向一的一方的主键
-
多对多
实现方式:建立第三张中间表,中间表至少包含两个外键,分别关联两方的主键。
-
多表查询
-
内链接
相当于查询的是两个表的交集数据。
-- 隐式内连接 SELECT 字段列表 FROM 表1,表2...WHERE 条件;
-- 显示内连接 SELECT 字段列表 FROM 表1 JOIN 表2 ON 条件;
- 外连接
-- 左连接 查询的是左表和交集的数据
select 字段列表 from 表1 LEFT JOIN 表2 on 条件
-- 右链接 查询的是右表和交集的数据
select 字段列表 from 表1 right JOIN 表2 on 条件
-
子查询
- 单行单列: 作为查询条件,使用= != < > 等进行条件判断
select 字段列表 from 表 where 字段名 = (子查询);
-多行单列 : 作为条件值,使用in 等关键字进行条件判断
select 字段列表 from 表 where 字段名 in(子查询);
- 多行多列:作为虚拟表
select 字段列表 from(子查询) where 条件;
事务
-
数据库的事务,一种机制,一个操作序列,包含了一组数据库操作命令,要么同时成功,要么同时失败。
-- 开启事物
START transaction;
或者 BEGIN;
-- 提交事务
commit;
-- 回滚事务
rollback;
事务四大特征
-
原子性 A :最小操作单位,要么同时成功,要么同时失败
-
一致性 C :事务完成时,必须使所有的数据保持一致
-
隔离性 I :多个事务操作之间,操作的可见性
-
持久性 D :事务一旦提交或者回滚,它对数据库中的数据就是永久的。
-- MySQL事务默认自动提交
-- 查看事务的默认提交方式
select @@autocommit;
-- 1 自动提交 0,手动提交
-- 修改事务自动提交
set @@autocommit = 0;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具