谈谈mysql中的各个关键字

这篇具有很好参考价值的文章主要介绍了谈谈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’;

谈谈mysql中的各个关键字,mysql,mysql,android,数据库,面试

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

谈谈mysql中的各个关键字,mysql,mysql,android,数据库,面试

3.3.4. DISTINCT

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

原表:
谈谈mysql中的各个关键字,mysql,mysql,android,数据库,面试
执行去重sql

SELECT DISTINCT singin 
FROM employee_tbl

谈谈mysql中的各个关键字,mysql,mysql,android,数据库,面试

注意:这样写distinct会失效

SELECT DISTINCT singin , id,name,date
FROM employee_tbl

谈谈mysql中的各个关键字,mysql,mysql,android,数据库,面试

3.4.5 ORDER BY

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

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

3.4.6 GROUP BY

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

原表:
谈谈mysql中的各个关键字,mysql,mysql,android,数据库,面试
执行分组

SELECT  *
FROM employee_tbl
GROUP BY singin

谈谈mysql中的各个关键字,mysql,mysql,android,数据库,面试

3.4.7 LIMIT

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

原表:
谈谈mysql中的各个关键字,mysql,mysql,android,数据库,面试
执行limit

SELECT  *
FROM employee_tbl
LIMIT 1,3

SELECT  *
FROM employee_tbl
LIMIT 3 OFFSET 1

谈谈mysql中的各个关键字,mysql,mysql,android,数据库,面试

3.4.8 in和exist

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

注意:对于not in 和 not exist而言,not in 的内表需要全表扫描,而not exist还可以走索引,所以使用not exist更佳。文章来源地址https://www.toymoban.com/news/detail-856775.html

到了这里,关于谈谈mysql中的各个关键字的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Rust中的关键字

    严格 as - 强制类型转换,消除特定包含项的 trait 的歧义,或者对 use 和 extern crate 语句中的项重命名 async - 返回一个 Future 而不是阻塞当前线程( 2018版新增) await - 暂停执行直到 Future 的结果就绪( 2018版新增) break - 立刻退出循环 const - 定义常量或不变裸指针(constant raw

    2024年02月07日
    浏览(38)
  • C#中的`out`关键字

    C# 中的 out 是一个用来在方法调用时传递数据的修饰符。它允许你在方法内部创建一个临时的变量,用于接收传递进来的参数值,并在方法执行完毕后,将该变量的值返回给调用方法的对象。out 主要用于那些需要知道方法执行结果的参数上。 在 C# 中,out

    2024年02月22日
    浏览(60)
  • C#中的ref关键字

    1、传递的是参数的值(数据的副本)而不是原始数据本身。 2、函数内部对值参数的修改不会影响到原始数据。 3、通常用于传递基本数据类型(如整数、浮点数、布尔值)或不可变对象(如字符串、元组)。 4、值参数的传递是一种传值调用(Call by Value)。 示例代码 运行结

    2024年02月05日
    浏览(47)
  • sql中的explain关键字用法

    在SQL中,使用 EXPLAIN 可以获取查询的执行计划,以便进行性能优化和查询调优。执行计划提供了关于查询操作的详细信息,涵盖了多个表头字段,每个字段都提供了特定的信息。以下是explain表头字段解释: id :每个操作的唯一标识符。这个字段通常是一个递增的整数

    2024年01月18日
    浏览(44)
  • Mysql关键字执行顺序-深入解析

    mysql执行顺序如下: 这些涉及的sql笔者这里就不一一去写了。 Mysql会先执行from,然后根据on去筛选目标表,筛选出的结果再进行join或者using,这样就会形成一个临时表。然后去执行where条件去筛选这个临时表,这样基本就筛选出需要的数据了。然后就可以

    2023年04月22日
    浏览(43)
  • 【JS】JavaScript中的this关键字

    目录 this是什么? this的指向 ①全局环境 ②构造函数 ③对象的方法 this的四类调用方式 ①作为对象方法调用 ②纯粹的函数调用 ③作为构造函数调用 ④使用apply、call、bind调用 举例说明 JavaScript  this  指的是它所属的对象。 它拥有不同的值,具体取决于它的使用位置:

    2024年02月14日
    浏览(44)
  • Java中的volatile关键字实现原理

    在并发编程中,线程之间的可见性问题是非常重要的一项难题。Java中提供了一种解决并发可见性问题的机制,即volatile。 在本文中,我们将会讲解Java中volatile的实现原理,为什么它能够保证可见性,以及背后的实现原理涉及到的内存屏障和JVM屏障等内容。在学习

    2023年04月27日
    浏览(41)
  • 浅析Java中的final关键字(详细)

    1.什么是final(概念) 2.final基本用法 3.深入理解final 4.final 的最佳实践 谈到final,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final 。final 是 Java 中的一个,可以用于修饰类、方法和变量。当一个类被声明为

    2024年02月03日
    浏览(62)
  • 基于MybatisPlus拦截器实现数据库关键字处理及官方做法

    有些老的数据库当中可能会有些字段和数据库冲突,使用mybatisPlus执行Sql的时候有时候会执行失败,前段时间和群友讨论的时候他说遇到了这个问题,当时我提议让他用我以前写的一个自定义注解+mybatis拦截器实现权限控制里边的工具类改造一下。 他说不能实现,然后

    2024年04月25日
    浏览(41)
  • TypeScript 中的 type 关键字有什么用?

    创建类型别名 在 TypeScript 中,type 用于创建类型别名(Type Alias)。类型别名可以给一个类型起一个新的名字,使代码更具可读性和可维护性。 类型别名可以用于定义各种类型,包括基本类型、复合类型和自定义类型。通过 type ,可以为复杂的类型定义提供一个

    2024年02月08日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包