【mysql】

mysql 5.7 默认latin字符集
8.0默认utf-8mb4字符集
查看MySQL 字符集
show variables like ‘character_set%’;
在这里插入图片描述
修改为utf8 或者 utf8mb4

(1) 最简单的修改方法,就是修改mysql的my.ini文件中的字符集键值,添加

[mysql]

default-character-set = utf8

[mysqld]

character_set_server = utf8
(2) 还有一种修改mysql默认字符集的方法,就是使用mysql的命令

mysql> SET character_set_client = utf8 ;

mysql> SET character_set_connection = utf8 ;

mysql> SET character_set_database = utf8 ;

mysql> SET character_set_results = utf8 ;

mysql> SET character_set_server = utf8 ;

mysql> SET collation_connection = utf8 ;

mysql> SET collation_database = utf8 ;

mysql> SET collation_server = utf8 ;

mysql 8.0 新增 密码加密方式
在这里插入图片描述
把原来的加密 方式 和5.7兼容 修改
[mysqld]
default_authentication_plugin=mysql_native_password

sql 的分类
DDL ,数据定义语言 CREATE ALTER DROP RENAME TRUN CATE
DML 数据操作语言 INSERT DELETE UPDATE SELECT
DCL 数据控制语言 COMMIT ROLLBACK SAVEPOINT GRANT REVOKE

MYSQL 8.0 特性
limit offset 跳过的条数
在这里插入图片描述
直接用 SET 来改变 MySQL 的自动提交模式:

set autocommit=0禁止自动提交

set autocommit=1 开启自动提交
重要说明:

1.不管autocommit是1还是0

start transaction后,只有当commit数据才会生效,rollback后就会回滚。

2、当autocommit为 0 时

不管有没有 start transaction.

只有当commit数据才会生效,rollback后就会回滚。

3、如果autocommit为1 ,并且没有 start transaction.

调用rollback是没有用的。因为事务已经自动提交了。

定点数类型 decimal
decimal(m,d)
m是数字的最大位数,他的范围是从1-65;
d是小数点后的位数,他的范围是0-30,并且不能大于m。
如果m被省略了,那么m的值默认为10,
如果d被省略了,那么d的值默认为0.
举例表示:
1、decimal(5,2) 所指代的范围是-999.99~999.99 数字的最大位数是5位,小数点右侧是2位,即有两位小数。
2、decimal(7,6)所指代的范围是-9.999999~9.999999 数字的最大位数是7位,小数点右侧是6位,即有六位小数。

日期类型
datetime和timestamp的区别
相同点:
存储格式相同 datetime和timestamp两者的时间格式都是YYYY-MM-DD HH:MM:SS
不同点:
存储范围不同. datetime的范围是1000-01-01到9999-12-31. 而timestamp是从1970-01-01到2038-01-19, 即后者的时间范围很小.
与时区关系. datetime是存储服务器当前的时区. 而timestamp类型,是将服务器当前时间转换为UTC(世界时间)来存储.即datetime与时区无关,存什么,返回什么. 而timestamp存储的时间,返回的时间会随着数据库的时区不同而发生改变.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

varchar 实际存储字节可变,+1 为了记录实际占了几个字节
char 实际存储字节不可变
m指的是字符长度 一个汉字占用3个汉字 varchar 最大长度设置varchar(65535/3)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
只能存储枚举 中的值
在这里插入图片描述
set类型
在这里插入图片描述
在这里插入图片描述
enum 不能多选,
set 能多选,会自动去重
在这里插入图片描述
BLOB 类型
在这里插入图片描述
json 类型
在这里插入图片描述
约束的介绍
not null 非空约束
unique 唯一性约束
primary key 主键约束
foreign key 外键约束
check 检查约束
default 默认约束

create TABLE 时 添加 约束
alter TABLE 增加或删除 约束
如何查看表中的约束
select * FROM INFORMATION_schema.table_constraints where table_name ='表名称’
唯一约束 分为 单列约束 和复合约束
uk_表名_字段1 _字段2* 规则命名、

创建唯一约束会自动 创建 唯一索引
mysql怎么删除唯一约束?

Mysql删除唯一约束:
唯一约束也是索引。
因此,删除该约束时,使用alter语法删除index:
alter table 表名 drop index 约束名;

Mysql中的三种循环

mysql 触发器

-- 需求1:当user表添加一行数据,则会自动在user_log添加日志记录
-- 定义触发器: trigger_test1
create trigger trigger_test1 after insert on user for each row
insert into user_logs values(NULL,now(),'new');

-- 在user表添加数据,让触发器自动执行
insert into user values(2,'zbb','123456');

mysql 8.0特性
窗口函数

<窗口函数> OVER (partition by <用于分组的列名>
                order by <用于排序的列名>)
                
ROW_NUMBER():顺序排序——1、2、3
RANK():并列排序,跳过重复序号——1、1、3
DENSE_RANK():并列排序,不跳过重复序号——1、1、2

根据 nick_name 分类 ,按照score 排序 全部展示

select nick_name,ei.exam_id,score,
row_number() over(partition by nick_name order by score desc) row_ranking,
rank() over(partition by nick_name order by score desc) ranking,
dense_rank() over(partition by nick_name order by score desc) dense_ranking
from user_info ui 
join exam_record er on ui.uid = er.uid
join examination_info ei on er.exam_id = ei.exam_id
where score is not null

分布函数

percent_rank()    公式(rank - 1) / (rows - 1)
cume_dist()  用途:分组内大于等于当前rank值的行数/分组内总行数,这个函数比percen_rank使用场景更多。

前后函数 lead(n) / lag(n)

头尾函数 first_val(字段名) / last_val(字段名)

其他函数 nth_value(expr, n) 返回窗口中第N个expr的值,expr可以是表达式,也可以是列名

mysql 8.0 公用表达式
cte 公用
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值