Mysql知识点总结

SQL分类

 DDL定义数据库 表 字段

 DML表操作 增删改

 DQL表操作 查询

 数据库设计

 视图,函数,存储过程

目录

SQL分类

SQL语句分为DDL,DML,DQL,DCL

DDL用于定义数据库和表的结构

DML用于操作数据

DQL用于查询数据

DCL用于权限管理

DDL定义数据库 表 字段

对数据库的操作

 

对表的操作

包含查询表,表结构,创建表,字段类型,修改表以及删除表

 

DML表操作 增删改

 对数据表进行添加数据,修改数据以及删除数据

DQL表操作 查询

对数据中的数据进行查询

基本查询

 

使用where条件查询

 聚合函数

 ​分组查询以及where与having的区别

 

排序查询order by

 

分页查询limit

 

查询语句中关键字的执行顺序

例如以下代码:

因为顺序是先执行where后的代码,再执行select后的代码所以在select后as的别名会标红无法执行

子查询

就是在一个select语句上在嵌套select语句进行查询

示例:

我们有一个学生表和一个成绩表

students表:     grades表:  

现在我们想查询每个学生的名字、年龄以及他们的英语成绩。针对这个问题,我们可以使用子查询的方法,首先查询英语课程的课程ID,然后再在成绩表中查询对应课程ID和学生ID的成绩

SELECT name, age, (
  SELECT score FROM grades 
  WHERE course = 'English' AND students.student_id = grades.student_id
) AS english_score 
FROM students;

数据库设计

在设计数据库时遵守数据库设计三大范式能更好的设计一个实用,合理数据库

第一范式(1NF)

要求每个字段都是原子值,不可分解。比如一个地址字段,如果拆解成省份、城市和街道分别存储在不同的列中,就不符合1NF的要求。

第二范式(2NF)

要求在1NF的基础上,非主键列必须完全依赖于主键,而不能依赖于主键的一部分。比如学生成绩表,主键为学生和课程的联合主键,分数列应该依赖于主键,而不应该依赖于学生或课程本身。

第三范式(3NF)

要求在2NF的基础上,非主键列之间不能有依赖关系。换句话说,每一列都依赖于主键,而不依赖于其它列。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

视图(view)

视图就是将查询出来的结果,单独存放为视图方便后续对这些数据进行查询

示例:

有一个包含学生成绩信息的表

grades表:

 我们想要查询每个学生的总分数,并按照总分数排序代码如下:

CREATE VIEW total_grades AS
SELECT student_id, SUM(score) AS total_score
FROM grades
GROUP BY student_id
ORDER BY total_score DESC;

这个视图基于grades表创建,并根据学生ID计算每个学生的总成绩。在创建视图时,我们使用SELECT语句来指定视图的数据来源,并使用GROUP BY和SUM函数来完成聚合计算。还使用了ORDER BY子句按照总成绩对学生进行排序

然后再使用查询语句

SELECT * FROM total_grades;

就可以查询创建出来的视图

函数(function)

类似JAVA当中定义的一个方法, 可以有参数和无参利用定义的函数来实现某种功能

示例:

假设我们有一个包含两个整数值的表,要创建一个用来计算这两个值之和的函数

test表:

 使用以下语句创建函数:

CREATE FUNCTION sum_values(x INT, y INT)
RETURNS INT
RETURN x + y;

在使用查询语句来使用这个函数:

SELECT x, y, sum_values(x, y) AS result FROM test;

将x, y作为参数传递进去输出两个数的和

存储过程(procedure)

类似函数但是有所不同

1. 使用call调用存储过程

2. 存储过程可以返回多个结果集,函数只能返回一个

示例:

创建一个存储过程用于接收两个整数作为输入,返回这两个整数之和和之差代码如下:

CREATE PROCEDURE sum_diff(
  IN x INT,
  IN y INT,
  OUT sum INT,
  OUT diff INT
)
BEGIN
  SET sum = x + y;
  SET diff = x - y;
END;

然后用call调用存储过程并传入两个数, 再使用select输出:

CALL sum_diff(5, 3, @sum, @diff);
SELECT @sum AS sum, @diff AS diff;

结果为:

以上就是我的一些总结, 第一次发肯定有很多不到之处请来老师同学们指出

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值