谈谈mysql中的各个关键字

1.为什么学习mysql

mysql是当今最主流且开放源码关系型数据库,开发者为瑞典 MySQL AB 公司。目前 MySQL 被广泛地应用在 Internet 上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了 MySQL 作为网站数据库。

2. mysql有什么作用?

主要就是数据存储,可以根据对于数据的需求,存储不同类型的数据,诸如下面这几种:

  • 用户信息:可以存储诸如用户名、密码等常见的用户信息。
  • 库存清单:可以存储商品类别、剩余数量、销售数量等。
  • 代码日志:将日志以某种格式存入,方便对日后排查问题做好准备。
  • ERP报表:诸如风、水、电能消耗,可存储于数据库中,方便日后做数据分析。

3. 如何使用mysql?

3.1 创建数据库

  • 字符集选择utf8mb4:大小写不敏感,支持Unicode字符,可存储表情,适用于多语言环境。
  • 排序规则选择utf8mb4_unicode_ci:大小写不敏感,支持Unicode字符,适用于多语言环境。

可使用sql或数据库工具直接创建

CREATE DATABASE mydatabase CHARACTER SET ‘utf8mb4’ COLLATE ‘utf8mb4_unicode_ci’;

在这里插入图片描述

3.2 创建表

3.2.1 创建最经典的学生表、课程表、选课表

CREATE TABLE students (student_id INT PRIMARY KEY COMMENT '学生ID',name VARCHAR(50) COMMENT '姓名',age INT COMMENT '年龄',gender INT COMMENT '性别',email VARCHAR(50) COMMENT '邮箱'
);
CREATE TABLE courses (course_id INT PRIMARY KEY COMMENT '课程ID',course_name VARCHAR(50) COMMENT '课程名称',instructor VARCHAR(50) COMMENT '授课教师',credits INT COMMENT '学分'
);
CREATE TABLE student_courses (student_id INT COMMENT '学生ID',course_id INT COMMENT '课程ID',PRIMARY KEY (student_id, course_id)
);

3.2.2 插入数据

-- 学生表插入语句
INSERT INTO students (student_id, name, age, gender, email) VALUES (1, 'Alice', 20, 1, 'alice@example.com');
INSERT INTO students (student_id, name, age, gender, email) VALUES (2, 'Bob', 22, 0, 'bob@example.com');
INSERT INTO students (student_id, name, age, gender, email) VALUES (3, 'Charlie', 21, 1, 'charlie@example.com');
INSERT INTO students (student_id, name, age, gender, email) VALUES (4, 'David', 23, 0, 'david@example.com');
INSERT INTO students (student_id, name, age, gender, email) VALUES (5, 'Eve', 19, 1, 'eve@example.com');-- 课程表插入语句
INSERT INTO courses (course_id, course_name, instructor, credits) VALUES (1, 'Mathematics', 'Smith', 3);
INSERT INTO courses (course_id, course_name, instructor, credits) VALUES (2, 'Physics', 'Johnson', 4);
INSERT INTO courses (course_id, course_name, instructor, credits) VALUES (3, 'Chemistry', 'Williams', 3);
INSERT INTO courses (course_id, course_name, instructor, credits) VALUES (4, 'Biology', 'Jones', 4);
INSERT INTO courses (course_id, course_name, instructor, credits) VALUES (5, 'History', 'Brown', 3);
INSERT INTO courses (course_id, course_name, instructor, credits) VALUES (6, 'English', 'Davis', 3);
INSERT INTO courses (course_id, course_name, instructor, credits) VALUES (7, 'Computer Science', 'Miller', 4);-- 学生选择课程关联表插入语句
INSERT INTO student_courses (student_id, course_id) VALUES (1, 1);
INSERT INTO student_courses (student_id, course_id) VALUES (1, 2);
INSERT INTO student_courses (student_id, course_id) VALUES (1, 3);INSERT INTO student_courses (student_id, course_id) VALUES (2, 2);
INSERT INTO student_courses (student_id, course_id) VALUES (2, 4);
INSERT INTO student_courses (student_id, course_id) VALUES (2, 6);INSERT INTO student_courses (student_id, course_id) VALUES (3, 1);
INSERT INTO student_courses (student_id, course_id) VALUES (3, 3);
INSERT INTO student_courses (student_id, course_id) VALUES (3, 5);INSERT INTO student_courses (student_id, course_id) VALUES (4, 4);
INSERT INTO student_courses (student_id, course_id) VALUES (4, 5);
INSERT INTO student_courses (student_id, course_id) VALUES (4, 6);INSERT INTO student_courses (student_id, course_id) VALUES (5, 1);
INSERT INTO student_courses (student_id, course_id) VALUES (5, 2);
INSERT INTO student_courses (student_id, course_id) VALUES (5, 7);

3.3 查询

3.3.1 关键字的执行顺序

FROM:指定要从哪张表查询数据。
WHERE:对表中的数据进行筛选。
GROUP BY:将数据按指定列进行分组。
HAVING:对分组后的数据进行筛选,与聚合函数连用,可针对group by的列或是聚合函数的列。
SELECT:选择要查询的列。
DISTINCT:去除重复的行。
ORDER BY:对查询结果进行排序。
LIMIT:限制返回的行数。

注:having后面不可以跟普通的列,可以跟group by的列或是聚合函数的列,且having必须和group by连用。

3.3.2 关键字书写顺序

SELECT:指定要查询的列或表达式。
FROM:指定要查询的表。
JOIN:指定要连接的表。
WHERE:对行级数据进行条件筛选。
GROUP BY:按指定列对结果进行分组。
HAVING:对分组后的数据进行条件筛选。
ORDER BY:指定结果的排序方式。
LIMIT:限制返回的行数。

3.3.3 mysql的join

请添加图片描述

3.3.4. DISTINCT

DISTINCT : 去重,从上至下扫描,找到第一条不同的数据进行返回,而我们主要根据某一列进行操作。

原表:
在这里插入图片描述
执行去重sql

SELECT DISTINCT singin 
FROM employee_tbl

在这里插入图片描述

注意:这样写distinct会失效

SELECT DISTINCT singin , id,name,date
FROM employee_tbl

在这里插入图片描述

3.4.5 ORDER BY

根据指定的列对结果集进行排序,默认升序 ORDER BY 列名 ASC(asc可以不写),降序 ORDER BY 列名 DESC(des也可)

可以单独使用,不需要与group by连用

3.4.6 GROUP BY

针对某一列进行分组,从上至下扫描,找到符合条件的行返回,只返回第一条不同的数据

原表:
在这里插入图片描述
执行分组

SELECT  *
FROM employee_tbl
GROUP BY singin

在这里插入图片描述

3.4.7 LIMIT

LIMIT m, n : 从第 m + 1 行开始取 n 条记录(m从0开始)
Limit m :取几条数据
Limit m offset n:取m条数据,但需从0行开始向后偏移n行

原表:
在这里插入图片描述
执行limit

SELECT  *
FROM employee_tbl
LIMIT 1,3SELECT  *
FROM employee_tbl
LIMIT 3 OFFSET 1

在这里插入图片描述

3.4.8 in和exist

in : 子查询的到一部分数据,在主查询中是否有数据能和子查询匹配
exist:判断某些数据是否存在与子查询中
in是将外表和内表做hash连接,适用于外表大内表小的情况
exist是对外表做loop循环,每次都会对内表重新查询,所以适用于外表小内表大的情况

注意:对于not in 和 not exist而言,not in 的内表需要全表扫描,而not exist还可以走索引,所以使用not exist更佳。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI论文速读 | ST-LoRA:低秩适配的时空预测

论文标题:ST-LoRA: Low-rank Adaptation for Spatio-Temporal Forecasting 作者:Weilin Ruan, Wei Chen, Xilin Dang, Jianxiang Zhou, Weichuang Li, Xu Liu, Yuxuan Liang 机构:香港科技大学(广州),暨南…

全面解读可燃气体报警装置

可燃气体报警装置已成为诸多行业和家庭不可或缺的安全设施。这些装置能够实时监测环境中可燃气体浓度,及时发出警报,有效预防火灾、爆炸等重大安全事故的发生。然而,要确保报警装置发挥其应有的功效,正确、规范的安装至关重要。 …

Vue3:响应式数据的基本使用(ref、reactive)

一、前言 在Vue3中,如果数据不是响应式数据,当数据的值发生改变时,页面上的数据是不会发生改变的。因此本文主要介绍Vue3中响应式数据的使用,包括ref和reactive的基本使用。 二、ref 1、ref —— 创建基本类型的响应式数据 re…

第100+6步 ChatGPT文献复现:ARIMAX预测新冠

基于WIN10的64位系统演示 一、写在前面 我们继续来解读ARIMAX模型文章,这一轮带来的是: 《PLoS One》杂志的2022年一篇题目为《A data-driven eXtreme gradient boosting machine learning model to predict COVID-19 transmission with meteorologic…

【Java】HOT100 回溯

目录 理论基础 一、组合问题 LeetCode77:组合 LeetCode17:电话号码的字母组合 LeetCode39:组合总和 LeetCode216:组合总和ii LeetCode216:组合总和iii 二、分割问题 LeetCode131:分割回文串 Leet…

【Linux开发 第十三篇】shell编程

shell编程 shell编程shell脚本函数 数据库备份 shell编程 对于后端开发,掌握shell编程是非常有必要的,可以对服务器进行维护,同时也可以对数据库进行操作 shell是一个命令解释器,它为用户提供了一个向Linux内核发送请求来运行的界…

NCF29A1 高端阻抗匹配

一、前言 Class E 高端 L-Front 匹配集成了额外的滤波器,提供了足够的谐波衰减,使 NCF29A1 与天线在比基频更高的频率下具有相当大的增益。向 PA 提供的阻抗和输出电容与表 1 ZPAOUT 所示相同。 二、原理图 图 1 高端 L-Front 匹配原理图 1&#xff…

lementui el-menu侧边栏占满高度且不超出视口

做了几次老是忘记,这次整理好逻辑做个笔记方便重复利用; 问题:elementui的侧边栏是占不满高度的;但是使用100vh又会超出视口高度不美观; 解决办法: 1.获取到侧边栏底部到视口顶部的距离 2.获取到视口的高…

vue实现水平排列且水平居中

样式实现 .body{text-align: center; } .body_content{display: inline-block; } .body_content_cardList{display: flex;flex-wrap: wrap;text-align: center; }<div class"body"><div class"body_content"><div class"body_content…

过滤器Filter和拦截器Interceptor心得

上一篇文章讲了监听器Listener&#xff0c;下面我们来讲一下过滤器和拦截器。 一、过滤器Filter。 首先&#xff0c;servlet容器&#xff08;比如tomcat&#xff09;肯定的要有servlet才能发挥它的光彩。在上古jsp时代&#xff0c;我们会写各种servlet通过不同的请求来实现我…

日志框架整合SpringBoot保姆级教程+日志文件拆分(附源码)

介绍 日志概述 只要程序员投身在实际的学习和生产环境中&#xff0c;就会对日志的重要性有着充分的认知&#xff0c;尤其是对于 Web 以及更高级的应用。在很多情况下&#xff0c;日志可能是我们了解应用如何执行的唯一方式。 但是现实是很多程序员对于日志的记录的认知比较肤…

基于CAPL的S19文件解析

&#x1f345; 我是蚂蚁小兵&#xff0c;专注于车载诊断领域&#xff0c;尤其擅长于对CANoe工具的使用&#x1f345; 寻找组织 &#xff0c;答疑解惑&#xff0c;摸鱼聊天&#xff0c;博客源码&#xff0c;点击加入&#x1f449;【相亲相爱一家人】&#x1f345; 玩转CANoe&…