当前位置: 首页 > news >正文

Mysql 语法再巩固

话不多说 直接代码 


##删除表
drop  table student ;

##创建表 
create table student(
id int primary key comment 'id',
name varchar(255) not null ,
time datetime not null,
card_id varchar(255) not null,
score int not null,
key asda (name),## 创建普通索引
index asdasd (time), ## 一样 等价于 key 创建 普通索引 
UNIQUE INDEX card_id_unique (card_id) #创建唯一索引
)engine=innodb default charset=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='学生';##utf8mb4_general_ci 排序规则 忽略大小写 忽略 后面空格


select * from  student s where  s.name = 'j';
insert into student (name,time,card_id,score) values
('jmj2','20250301080700','13512',1),
('jmj3','20250301080700','13512',3),
('jmj4','20250301080700','13512',5),
('jmj5','20250301080700','13512',6),
('jmj6','20250301080700','13512',2)
;


##添加主键 
alter table student add primary key(id);
##修改字段
alter table student modify  column name varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT null;
alter table student modify  column id int auto_increment;
##创建普通索引
create index asdjkladl on student (name)
##创建唯一索引
CREATE UNIQUE INDEX unique_index_name ON student (card_id);
##删除 索引
DROP INDEX asdjkladl ON student;
##删除唯一索引
DROP INDEX card_id_unique ON student;
##删除主键
ALTER TABLE student DROP PRIMARY KEY;


select id from student s  
union all ##联合操作
select id from product_info pi2 ;

select distinct  name from student s ;


select  max(sort) from
(select sort  from blue_templat_param_group_and_param_relation btpgapr where btpgapr.blue_template_param_group_id = '1879815632434900992'
union  all 
select sort from blue_tooth_composite_param btcp where btcp.blue_template_param_group_id  = '1879815632434900992' ) as s order by  sort asc 


select id,blue_template_param_group_id  from blue_templat_param_group_and_param_relation btpgapr where btpgapr.blue_template_param_group_id = '1879815632434900992'
union  all #不去重
select id,blue_template_param_group_id   from blue_tooth_composite_param btcp where btcp.blue_template_param_group_id  = '1879815632434900992' 





select blue_template_param_group_id  from blue_templat_param_group_and_param_relation btpgapr where btpgapr.blue_template_param_group_id = '1879815632434900992'
union   ##去重的
select blue_template_param_group_id   from blue_tooth_composite_param btcp where btcp.blue_template_param_group_id  = '1879815632434900992' 


##查出成绩为前三的 学生 所有的
SELECT s1.id, s1.name, s1.score
FROM student s1
WHERE (
    SELECT COUNT(DISTINCT s2.score)
    FROM student s2
    WHERE s2.score > s1.score
) < 3
ORDER BY s1.score DESC;

##窗口函数
-- 查询成绩排名前三的学生
WITH RankedStudents AS (
    SELECT 
        id,
        name,
        score,
        DENSE_RANK() OVER (ORDER BY score DESC) as score_rank ##不会漏下并列的
    FROM 
        student
)
SELECT 
    id,
    name,
    score
FROM 
    RankedStudents
WHERE 
    score_rank <= 3;

#这是直接跳过并列计数   
WITH RankedStudents AS (
    SELECT 
        id,
        name,
        score,
        Rank() OVER (ORDER BY score DESC) as score_rank ##不会漏下并列的
    FROM 
        student
)
SELECT 
    id,
    name,
    score
FROM 
    RankedStudents
WHERE 
    score_rank <= 3;
   
   
## 在窗口内计算某列的总和。
select * ,
SUM(score) over (partition by card_id) as total_score
from  student s

select * ,
avg(score) over (partition by card_id) as total_score
from  student s

select * ,
min(score) over (partition by card_id) as total_score
from  student s

select * ,
max(score) over (partition by card_id) as total_score
from  student s

##返回窗口内当前行之前某一行的值。
select * ,
LAG(score,1,0) over (partition by card_id order by score ) as total_score
from  student s

##返回窗口内当前行之后某一行的值。
select * ,
LEAD(score,1,0) over (partition by card_id order by score ) as total_score
from  student s




##这是子查询 
SELECT 
    employee_id,
    name,
    salary,
    (SELECT AVG(salary) FROM employees e2 WHERE e2.department_id = e1.department_id) as dept_avg_salary
FROM 
    employees e1;

-- 子查询计算每个部门的平均工资
WITH dept_avg_salary AS (
    SELECT 
        department_id,
        AVG(salary) AS avg_salary
    FROM 
        employees
    GROUP BY 
        department_id
)
-- 主查询将员工表与子查询结果进行连接
SELECT 
    e.employee_id,
    e.name,
    e.salary,
    das.avg_salary AS dept_avg_salary
FROM 
    employees e
JOIN 
    dept_avg_salary das ON e.department_id = das.department_id;





本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/45254.html

相关文章:

  • 接口自动化测试框架(pytest+allure+aiohttp+用例自动生成)
  • 香港大学deep-research开源项目
  • (动态规划 最大(连续)子数组和)leetcode 53
  • Elasticsearch 数据量大时如何优化查询性能?
  • Python正则
  • [M数据结构] lc2353. 设计食物评分系统(数据结构+set 平衡树+懒删除堆)
  • 达梦数据库如何查看当前锁表和如何解决锁表问题
  • 企业access_token,与用户access_token区别,获取方式,如何获取用户信息
  • 释放你的IDE潜能:Code::Blocks 插件创意开发深度指南
  • C++—类与对象(下)
  • C#上位机--三元运算符
  • 【分库分表】基于mysql+shardingSphere的分库分表技术
  • 1-kafka单机环境搭建
  • 2025-2-27-4.10 动态规划(0-1 背包问题)
  • Python 编程题 第五节:落体反弹问题、求指定数列之和、求阶乘的和、年龄急转弯、判断回文数、判断星期几、矩阵主对角线元素之和
  • Rk3568驱动开发_自动创建设备节点_8
  • ListControl双击实现可编辑
  • 更新anaconda安装包后重新配置环境
  • LabVIEW 无法播放 AVI 视频的编解码器解决方案
  • [SAP MM] 标准价格和移动平均价格
  • 小程序性能优化-预加载
  • 知识图谱科研文献推荐系统vue+django+Neo4j的知识图谱
  • AtCoder Beginner Contest AT_abc395_d ABC395D Pigeon Swap 题解
  • Java 8 中,可以使用 Stream API 和 Comparator 对 List 按照元素对象的时间字段进行倒序排序
  • ollama 提供给外部访问
  • Java——String
  • 数据库设计报告
  • leetcode28 找出字符串第一个匹配值的下标 KMP算法
  • android 文本控件显示滑动条并自动滑动到最底部
  • 初识 Node.js