MySQL📚
本文最后更新于 2024-11-16,文章内容可能已经过时。 --上面👆的ai摘要暂时用不了【站长没钱🤣】,以后再弄
MySQL常用数据类型
创建表
create table 表名(
列名1 列类型1 [列属性1] [primary key] [null/not null],
列名2 列类型2 [列属性2]
)
增删改(表结构)
使用Alter table 表名 来选择要修改的表
增加(Create / Add):
Alter table 表名
Add Column 列名 列类型 [列属性],
Add Column 列名 列类型 [列属性];
删除(Remove / Drop):
Alter table 表名
Drop Column 列名;
修改(Modify / Change):
Alter table 表名
Change Column 旧列名 新列名 类型 [属性];
增删改(数据值)
增(Insert):
insert into 表名(数值1,数值2,数值3,...)
values(values1,values2,values3,...);
删(Delete):
delete from 表名 where condition;
改(Update):
update 表名 set column1=values1,column2= values2,... where conditionl;
查询
where 条件筛选
数据类型匹配
where后面的值要与列记录中的值类型一致
引号的使用
字符串和日期时间用‘ ’单引号引用
空值的处理
检查是否为空值 is null 而不是 ≠
使用 is not null 排除空值
比较运算符
如 =、<>、>、>=、<、<=
其中 <>表示非等价比较运行算符 同 0 异 1 参考Java异或运算符 ^
逻辑运算符
and or not
注意优先级 必要时使用()明确分组
范围运算符
between……and……
between 包含边界值!
like 模糊查询 【模式匹配】
% 表示任意字符序列
_ 表示任意 1个字符
有多少下划线_就表示多少个字👉【定长】
%👉【变长】
对于复杂的模式匹配 , 可以使用 正则表达式 REGEXP
select * from table_name where 字段名 REGEXP ' ';
有如下通配符:
. 表示任意一个字符 严格位置!
一个 . 只能匹配一个字符 类似 like 中的 ' % '
一句REGEXP 只能有一个 .
^ 开头 $ 结尾
[abc] 其中的任意一个字符 不论位置!
abc同时满足 👉 同时取
[a-z] a-z范围内的任意一个字符 不论位置!
只适用于数字 / 字母!
[A|B] A或者B
A和B同时满足 👉 同时取
注意⚠️
经量避免where中使用函数 👉 导致索引被禁用
使用索引过滤数据 👉 提高查询性能 / / 同时避免对全表进行扫描
考虑数据的完整性跟一致性,确保查询条件不会违背数据库约束
order by 语句
order by 字段名 / 列数 ASC / DESC
ASC 【升序】【默认】
DESC 【降序】
列数 【第几列 : 直接写数字】
聚合函数
MAX ( ) 返回一组字段的最大值
MIN( )返回最小值
SUM( )求集合的和
AVG( )返回集合平均值
COUNT( )返回集合中的项目数 👉 数量
group by 字段名 [having]
group by 对聚合函数之后进行分组
having 对 分组后 的数据进行 筛选
常用函数:
substr(字段名,number1,number2)
substr( )函数 → 用于求取字段的某个字符
number1 : 开始的字符数 初始值为1
number2 : 结束的字符数 不能超过类型长度
round( 记录值 )
round函数:四舍五入
exists 进行判断 👉 有 输出 1 无 输出 0
子查询
子查询不仅能在where后使用 , 还能 <建表> <表数值的增删改> 中使用
表连接
内连接
左连接
右连接
inner join
内连接 返回两个表中都有的数据
left join
左连接 返回左表所有数据 + 右表匹配数据 右表没有的数据用 NULL 填充
right join
右连接 返回右表所有数据 + 左表匹配数据 左表没有的数据用 NULL 填充
索引
create [unique|fulltext|spatial] index index_name on table_name(index_table_name, ... );
unique :唯一索引
fulltext :全文索引
spatial :空间索引
index_name:定义索引名
table_name :选中要创建索引的表
index_table_name:要创建索引的字段
查看当前表的索引:
show index from 表名;
若 创建表同时创建索引 , 索引将自动更新 . 先创建表 , 再创建索引 , 只能手动更新 .
视图
create view v_视图名
as
select ...
以上是创建视图步骤
注意⚠️
视图是一种虚表
视图的数据是动态的,会随主表的变化而变化
视图的修改
alter view v_视图名
as
新的 select 语句
删除
drop view v_视图名;
0
存储过程
/* 创建存储过程 */ CREATE PROCEDURE pro_Car_Sales ( IN pinpai VARCHAR ( 200 ), OUT number INT ) READS SQL DATA BEGIN
SELECT
`销售号`,销售时间,
`卖价`
FROM
`销售`
WHERE
`汽车品牌` = pinpai;
SELECT
COUNT(*) INTO number AS 单数
FROM
`销售`
WHERE
`汽车品牌` = pinpai;
END;
CREATE PROCEDURE pro_Car_Sales ( IN pinpai VARCHAR ( 50 ), OUT number INT ) READS SQL DATA BEGIN
SELECT
销售号,销售时间,卖价
FROM
销售
WHERE
汽车品牌 = pinpai;
SELECT
count(*) INTO number
FROM
销售
WHERE
汽车品牌 = pinpai;
END;
CALL pro_Car_Sales('红旗',@a);
select @a;
create procedure pro_存储过程名(in 自定义名 数据类型 , out 自定义名 数据类型)
[ reads sql data | no sql | modifies sql data ]
查询语句 | 无sql语句 | 修改sql语句
begin
select ... ;
...
end;
call pro_存数过程名(... , ... );