谈谈mysql中的各个关键字

news2024/11/14 13:54:05

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,3

SELECT  *
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.coloradmin.cn/o/1617309.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第G8周:ACGAN任务

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制🚀 文章来源:K同学的学习圈子 参考论文 这周主要任务就是根据之前GAN,CGAN,SGAN网络架构搭建…

OpenStack云计算(十一)——OpenStack网络管理,验证OpenStack网络资源模型,验证来巩固和加深对OpenStack网络资源模型的理解

项目实训一 【实训题目】 验证OpenStack网络资源模型 【实训目的】 通过验证来巩固和加深对OpenStack网络资源模型的理解。 【实训准备】 (1)复习Neutron网络资源模型。 (2)重点理解网络、子网、端口和路由器的概念。 【实…

使用LLM-API开发应用-DataWhale笔记

调用API 先使用一个例子 from openai import OpenAI ​ client OpenAI(# This is the default and can be omittedapi_keyos.environ.get("OPENAI_API_KEY"), //这个在环境env中 ) ​ completion client.chat.completions.create(# 调用模型:ChatGPT-…

科研基础与工具(论文写作)

免责申明: 本文内容只是学习笔记,不代表个人观点,希望各位看官自行甄别 参考文献 科研基础与工具(YouTube) 学术写作句型 Academic Phrase bank 曼彻斯特大学维护的一个网站 写论文的时候,不不知道怎么…

vue快速入门(四十一)组件通信-依赖注入

注释很详细&#xff0c;直接上代码 上一篇 新增内容 祖先组件向下传值子代组件接受数据 源码 App.vue <template><div id"app"><sonComponent></sonComponent></div> </template> <script> import sonComponent from &qu…

广东海洋大学成功部署(泰迪智能科技)大数据人工智能实验室建设

广东海洋大学简称广东海大&#xff0c;坐落于广东省湛江市&#xff0c;是国家海洋局与广东省人民政府共建的省属重点建设大学、广东省高水平大学重点学科建设高校、粤港澳高校联盟成员 &#xff0c;入选卓越农林人才教育培养计划&#xff0c;是教育部本科教学水平评估优秀院校。…

隋总分享的Temu蓝海项目究竟能不能做?

在当前的互联网经济大潮中&#xff0c;跨境电商作为一个新兴的商业模式&#xff0c;吸引了众多创业者和投资者的目光。其中&#xff0c;Temu作为拼多多旗下的跨境电商平台&#xff0c;凭借其独特的模式和强大的背景&#xff0c;成为了不少人心中的蓝海项目。近日&#xff0c;网…

java中线程的生命周期和线程安全

目录 生命周期 线程安全 生命周期 在Java中&#xff0c;线程的生命周期可以分为以下几个状态&#xff1a; 新建状态&#xff08;New&#xff09;&#xff1a; 当线程对象被创建后&#xff0c;它就处于新建状态。此时线程对象已经在内存中了&#xff0c;但是还没有开始执行。…

提升效率与质量:钣金加工行业设备数据采集的重要性

钣金加工作为制造业的重要一环&#xff0c;在现代工业中扮演着举足轻重的角色。随着市场竞争的日益激烈&#xff0c;钣金加工企业必须不断提升生产效率和产品质量&#xff0c;以应对市场的挑战。在这一背景下&#xff0c;设备数据采集变得尤为重要&#xff0c;因为它可以帮助企…

Dapp智能合约开发搭建

随着区块链技术的飞速发展&#xff0c;去中心化应用&#xff08;Dapp&#xff09;逐渐崭露头角&#xff0c;成为金融科技领域的一股新势力。而在Dapp中&#xff0c;智能合约发挥着不可或缺的作用。本文将从专业角度深入探讨Dapp智能合约的概念、优势、挑战以及未来发展趋势&…

Service: Amazon S3; Status Code: 403; Error Code: AccessDenied

1、使用minio报错 Access Denied. (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: 17C8C89ED481E74E; S3 Extended Request ID: dd9025bab4ad464b049177c95eb6ebf374d3b3fd1af9251148b658df7ac2e3e8; Proxy: null) 2、将Access Policy值改为…

Bentley二次开发教程17-文件及模型管理-模拟输入调用命令

对于目前使用C#在Addin框架编程来说&#xff0c;对于某些方法可能封装的并不是十分完全&#xff0c;或者说目前的MicroStation软件中的原生功能可以完美的实现业务需求&#xff0c;但是需要对其进行参数化&#xff0c;自动化并进行重复工作&#xff0c;那么模拟输入调用命令的方…

Redis入门到通关之Redis实现Session共享

文章目录 ☃️前期概要☃️基于Session实现登录方案☃️现有方案存在的问题☃️Redis代替Session的业务流程❄️❄️设计key的结构❄️❄️设计key的具体细节❄️❄️整体访问流程 欢迎来到 请回答1024 的博客 &#x1f353;&#x1f353;&#x1f353;欢迎来到 请回答1024的博…

CSS基础:width,height尺寸属性详解

你好&#xff0c;我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。云桃桃&#xff0c;大专生&#xff0c;一枚程序媛&#xff0c;感谢关注。回复 “前端基础题”&#xff0c;可免费获得前端基础 100 题汇总&#xff0c;回复 “前端工具”&#xff0c;可获取 Web…

C++中的stack(容器适配器)

目录 一、成员函数 一、构造函数 二、入栈 三、出栈 四、判空 empty () 五、栈大小 size 六、取栈顶元素 top 七、入栈 emplace 八、交换函数 swap 二、非成员函数重载 一、关系运算符重载 二、交换函数 C中的stack不再是容器&#xff0c;而是容器适配器 注意&a…

详解汽车充电桩主板的硬件设计与软件系统

随着电动汽车时代的到来&#xff0c;充电桩逐渐成为城市新地标。而在每一个充电桩的核心&#xff0c;隐藏着一颗强大的“心脏”——充电桩主板。 充电桩主板是充电桩的核心部件&#xff0c;决定着充电桩的充电效率、安全和用户体验。今天&#xff0c;我们将深入探索汽车充电桩主…

ubuntu18.04安装F4PGA教程

环境搭建教程&#xff1a; f4pga-arch-defs/xilinx/xc7 at main f4pga/f4pga-arch-defs GitHub git clone https://github.com/SymbiFlow/f4pga-arch-defs.git cd f4pga-arch-defs make env cd build 主要是make env&#xff0c;会下载很多东西&#xff0c;然后生成很多描…

账号安全基本措施2

sudo命令 sudo(superuser do)&#xff0c;允许系统管理员让普通用户执行一些或者全部的root命令的一个工具。 其配置在/etc/sudoers权。它允许系统管理员集中的管理用户的使用权限和使用的主机。属性必须为0440。 语法检查&#xff1a; 检查语法&#xff1a; 修改文件时&…

Mysql学习一

目录 1.启动数据库&#xff1a; 2.命令行连接到MySQL&#xff08;winr输入cmd&#xff09; 3.MySQL的三重结构&#xff1a; 4.SQL语句分类&#xff1a; 1.启动数据库&#xff1a; winr——输入services.msc进入本地服务 2.命令行连接到MySQL&#xff08;winr输入cmd&#x…

【Linux】学习记录_14_线程

14 线程 14.1 线程和进程 进程是资源管理的最小单位&#xff0c;每个进程都有数据段、代码段和堆栈段&#xff0c;进程切换时都有复杂的上下文切换等动作。进程切换上下文时&#xff0c; 需要重新映射虚拟地址空间、进出OS内核、寄存器切换&#xff0c;还会干扰处理器的缓存机…