Mysql学习总结_粗略
以下mysql的笔记可能不全面,由于不是从事数据库专业,因此仅简单总结
一、库的增删改查
show databases;//查看当前帐户下所有的库 show create database 库名;//查看指定库 create database 库名 charset 字符编码;//创建库指定编码 alter database 库名 charset 字符编码;//修改库编码 drop database 库名;//删除库
二、表的增删改查
use 数据库名;//切换库,创建表之前指定使用哪个库 create table 表名(字段1 类型(长度) 条件,字段2 类型(长度) 条件);//创建表 show tables;//查看所有表: show create table 表名;//查看某一个表 desc 表名; alter table 表名 change 原字段名 新字段名 类型(长度) 条件;//修改表:修改表字段 数据类型 约束条件 alter table 表名 add 字段1 类型(长度) 条件,add 字段2 类型(长度) 条件;//新增表字段 指定位置新增: alter table 表名 add 字段 类型 first;//新增字段放置在第一个: alter table 表名 add 字段 类型(长度) after 原有字段;//新增字段放置在原有字段后 alter table 表名 drop 字段;//删除表字段 drop table 表名;//删除表
三、数据类型
- 字符串:
char(num)和varchar(num)的区别 区别1:定长和不定长; char固定长度,例如定义的char(8),内容长度不足8时,不足8的内容会用空格补充 区别2:存储方式 char直接存储字符内容 varchar开头由1-2个字节存储该字符的总长度,后面接着存储字符内容 总结:char的存取速度很快,但由于是定长,会浪费控件资源; varchar根据实际内容存储,存取速度不及char;
-
int:不需要指定字符的长度
-
浮点型:
float(m,n):单精度 double(m,n):双精度 decimal(m,n):小数值 区别: 1、四舍五入:三者一样; 2、float默认保留两位小数。double更精确;decimal默认小数位为0;
-
日期时间型:
date:日期格式
datetime:日期时间格式
-
枚举型
enum和set的区别: enum:多选1 set:多选多 set输入的值会转成二进制位,例如: create table s1(hobby set("看书","看电影","听音乐","旅游")); insert into s1 values(7);-------7会被转成二进制0111,因此为前三项; 上述例子中,set的取值有四项,因此数值范围为0—2的四次方-1;
四、约束条件
主键:primary key
非空约束:not null
唯一约束:unique
默认值:default
外键:foreign key
1、not null
当设置一个字段时,不允许它为空;
2、default默认值
create table stu_info1(name char(8),sex enum("男","女") default "男"); insert into stu_info1(name) values("张三"); select * from stu_info1;
3、unique
当有一列字段不想让他有重复值时,可以设置为唯一
单字段设置唯一约束 create table stu_info2(name char(8) UNIQUE); DESC stu_info2; insert into stu_info2 values("张三"); insert into stu_info2 values("张三"); 联合唯一 create table stu_info3(name char(8),class char(5),unique(name,class)); DESC stu_info3;
insert into stu_info3 values("张三","A"); insert into stu_info3 values("张四","A"); insert into stu_info3 values("张四","A"); select * from stu_info3;
4、primary key主键
单主键 create table stu_info4(id int primary key,name char(8)); insert into stu_info4(name) values("张三"); insert into stu_info4 values(1,"张三"),(1,"李四"); 联合主键 create table stu_info5(id int,name char(8),primary key(id,name)); insert into stu_info5 values(1,"张三"),(1,"李四"); select * from stu_info5
了解:auto_increment
create table stu_info6(id int primary key auto_increment,name char(8)); insert into stu_info6(name) values("张三"),("李四"); select * from stu_info6
5、foreign key
references
create table dep(id int primary key auto_increment,dep_name char(10)); create table emp(id int primary key auto_increment,name char(8),dep_id int,foreign key(dep_id) references dep(id) on delete cascade on update cascade );
五、单表查询
select distinct 字段1,字段2[...] from 表名 where 条件 group by field having 筛选条件 order by field limit 条数 注: group by 根据什么分组,一般是某个字段或多个字段 order by 根据什么进行排序,一般是某个字段或多个字段 havinhg 主要配合group by 使用,对分组后的数据进行过滤,里面可以使用聚合函数 where 针对select 查询的过滤 优先级: from where group by select distinct having order by limit 拼接字符串: concat concat_ws(符号,字段)
where
---between ... and ... 都是闭区间
---like "%"表示0个或多个字符 "_"表示一个字符
---is null/is not null
group by
group by 分组的字段与查询的字段必须保持一致
having
针对分组后的数据进行过滤,可以使用聚合函数
order by
limit
limit m,n
六、多表查询
子查询:内层的查询结果,可以作为外层查询语句的查询条件
子查询种可以包含:in,not in,exists,not exists等关键字
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!