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等关键字
posted @   海中的小顽强  阅读(33)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示