iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySql 知识大汇总
  • 935
分享到

MySql 知识大汇总

mysql数据库 2023-09-07 16:09:36 935人浏览 泡泡鱼
摘要

目录 一、常用的数据类型 二、数据库索引 什么是数据库索引 索引的作用 索引是否越多越好 索引的分类 三、sql语句 插入 更新 删除 查询         普通查询         子查询         连表查询 四、常用的一些函数 g

目录

一、常用的数据类型

二、数据库索引

什么是数据库索引

索引的作用

索引是否越多越好

索引的分类

三、sql语句

插入

更新

删除

查询

        普通查询

        子查询

        连表查询

四、常用的一些函数

group by        分组

order by         排序

HAVING 子句        根据条件过滤组

格式化日期或时间——date_format()

limit

count()

IN & BETWEEN

AVG()

DISTINCT        去重

SQL 注入(Injection)


一、常用的数据类型

 int

        存储的范围:-2**32~2**32-1

bigint

        数字范围:-2**63  -   2**63-1

float

        float(m,d),其中m表示有效位,d表示小数位

        有效位就是把当前的小数:12345.12 转变成科学计数法:1.234512*10**5

        m的最大值为7

double

        double(m,d)其中m表示有效位,d表示小数位

        m的最大值为15

decimal

        涉及到金额的时候,使用decimal

        decimal(m,d),其中m表示有效位,d表示小数位

        m的最大值为65

        好处:不会产生精度问题,因为decimal存储的本质是因为它存在的是字符串,所以不会有精度损失的问题

char

        表示固定长度的字符串,长度为255个字节。中文字符占据3-4个字节

varchar

        表示不定长度字符串,长度为 0-65525 个字节

text

        长文本类型,最大长度为64KB

longtext

        极大文本类型,最大长度占据4GB

datetime

        如果当前时区发生更改,datetime类型不会发生更改,与存入的日期保持一致

timestamp

        如果时区发生更改,timestamp类型会耕者失去更改

二、数据库索引

  1. 什么是数据库索引

            数据库索引,是数据库管理系统中一个排序数据结构,以协助快速查询,更新数据库中表的数据。除了数据之外,数据库系统还维护为满足特定查找算法的数据结构,这些数据结构以某种方式引用数据,这种数据结构就是索引。简言之,索引就类似于书本,字典的目录。如果将本文看做一个数据库,那么顶部的目录就相当于索引

  2. 索引的作用

    1. 主要目的就是查询过程中的系统性

    2. 通过创建唯一索引,可以保证数据库中索引对应字段的唯一性

    3. 在使用分组和排序子句进行数据检索时,可以减少查询中分组和排序的时间

  3. 索引是否越多越好

    首先:索引并不是创建的越多越好

    1. 创建索引和维护索引要耗费时间,而且时间随着数据量的增加而增

    2. 索引需要占物理空间,如果创建的是聚簇索引,占据的空间会更大

    3. 在对表中数据做增删改的操作时,会消耗跟多的时间,因为索引也需要维护

  4. 索引的分类

    主键索引:数据库设置为主键后,会自动创建索引

#随表一起建索引:CREATE TABLE customer (id INT(10) UNSIGNED ,customer_no VARCHAR(200)  PRIMARY KEY(id) );#使用AUTO_INCREMENT关键字的列必须有索引(只要有索引就行)。CREATE TABLE customer2 (id INT(10) UNSIGNED AUTO_INCREMENT, customer_no VARCHAR(200),  PRIMARY KEY(id) );#单独建主键索引:ALTER TABLE customer add PRIMARY KEY customer(customer_no);  #删除建主键索引:ALTER TABLE customer drop PRIMARY KEY ;  #修改建主键索引:#必须先删除掉(drop)原索引,再新建(add)索引

普通索引(单列索引):一个索引只包含单个列,一个数据表可以有多个单列索引

#随表一起建索引:CREATE TABLE customer (id INT(10) UNSIGNED  AUTO_INCREMENT ,customer_no VARCHAR(200),customer_name VARCHAR(200),  PRIMARY KEY(id),    # 主键索引  KEY (customer_name)  # 单列索引);#随表一起建立的索引 索引名同 列名(customer_name)#单独建单值索引:CREATE INDEX idx_customer_name ON customer(customer_name);  # 创建名称为 “idx_customer_name” 的普通索引#删除索引: 删除名称为“idx_customer_name” 的普通索引DROP INDEX idx_customer_name ;

唯一索引:索引的值必须唯一,但是允许有空值

“UNIQUE” 字段:约束唯一标识数据库表中的每条记录。

#随表一起建索引:CREATE TABLE customer (id INT(10) UNSIGNED  AUTO_INCREMENT ,customer_no VARCHAR(200),customer_name VARCHAR(200),  PRIMARY KEY(id),  KEY (customer_name),  UNIQUE (customer_no) # 唯一性约束);#建立 唯一索引时必须保证所有的值是唯一的(除了null),若有重复数据,会报错。   #单独建唯一索引:CREATE UNIQUE INDEX idx_customer_no ON customer(customer_no); #删除索引:DROP INDEX idx_customer_no on customer ;

复合索引:一个索引包含多个列;

        在数据库操作期间,相比于多个单列索引,复合索引所需要的开销更小。

使用场景:如果一个表中的数据在查询时有多个字段总是同时出现则这些字段就可以作为复合索引,形成索引覆盖可以提高查询的效率!

-- 随表一起建索引:CREATE TABLE customer (id INT(10) UNSIGNED  AUTO_INCREMENT ,customer_no VARCHAR(200),customer_name VARCHAR(200),  PRIMARY KEY(id),    # 主键索引  KEY (customer_name),    # 单列索引  UNIQUE (customer_name),    # 单列索引唯一值约束  KEY (customer_no,customer_name)    # 复合索引);#单独建索引:CREATE INDEX idx_no_name ON customer(customer_no,customer_name); #删除索引:DROP INDEX idx_no_name  on customer ;

聚簇索引与非聚簇索引

稠密索引与稀疏索引

聚集索引于非聚集索引

太多了,从来没有在实际工作中碰到过,我也不知道有什么用,等到哪天如果真的涉及到这些索引的时候,在做具体补充吧

三、sql语句

插入

-- 普通插入insert into table values('xx','xx','xx')-- 查询插入insert into student(name, age, class) select `name`, `age`, `class` from student

更新

-- 和where条件搭配使用update table set column1_name = value1 where 条件-- 更新多个列update table set column1_name = value1, column2_name = value2,...WHERE condition;

删除

-- 删除表drop 表名-- 清空表里的内容:删除所有数据,保留表结构,不能撤销还原,速度快truncate table 表名-- 删除表,表数据和表结构一起删除,速度快drop fORM 表名-- 删除表里的部分内容:逐行删除,不适合大量数据删除,速度慢delete from 表名 where 列名="value "

查询

        普通查询

-- 简单查询Select * from 表名Select * from 表名 where 条件

        子查询

-- 子查询-- 子sql查询出来的结果是主sql的条件Select * from 表名 where(select * from 表名 where 条件)

        连表查询

-- 左连接(left join)-- 左连接以左表为主,会展示左表所有的数据,右表只展示符合条件的数据Select  t1.字段1,t2.字段2  From table1 t1Left join table2  t2 on  t1.id  =  t2.id-- 右连接(right join)-- 右连接以右表为主,会展示右表所有数据,左表数据只展示符合条件的数据Select  t1.字段1,t2.字段2  From table1 t1right join table2  t2 on  t1.id  =  t2.id-- 内连接(inner join)-- 主要是获取两个表中字段匹配关系的表。查询关联字段共同拥有的数据,用两个表相同的字段和内容相关联起来。select * from table1 as 别名1 inner join table2 as 别名2 on 别名1.字段名1=别名2.字段名1;select * from user as u inner join student as s on u.id=s.id;。-- 全连接(FULL JOIN )-- 返回连接的表中的所有数据,不管是否匹配-- 交叉连接(CROSS JOIN)如果在连接两个表时未指定连接条件,则数据库系统会将第一个表的每一行与第二个表的每一行合并。这种连接称为交叉连接或笛卡尔乘积

四、常用的一些函数

group by        分组

GROUP BY子句与SELECT语句和聚合函数结合使用,以按通用列值将行分组在一起

SELECT t1.dept_name, count(t2.emp_id) AS total_employeesFROM departments AS t1 LEFT JOIN employees AS t2ON t1.dept_id = t2.dept_idGROUP BY t1.dept_name;

order by         排序

通常,当您使用SELECT语句从表中获取数据时,结果集中的行没有任何特定的顺序。如果要按特定顺序排列结果集,则可以在语句末尾指定ORDER BY子句,该子句告诉程序如何对查询返回的数据进行排序。默认排序顺序为升序。

SELECT column_list FROM table_name ORDER BY column_name ASC|DESC;

HAVING 子句        根据条件过滤组

HAVING子句通常与 GROUP BY 子句一起使用,以指定组或集合的过滤条件。HAVING 子句只能与 SELECT 语句一起使用

 例如:现在,不只是查找员工及其部门的名称,还要查找没有员工的部门的名称。

SELECT t1.dept_name, count(t2.emp_id) AS total_employeesFROM departments AS t1 LEFT JOIN employees AS t2ON t1.dept_id = t2.dept_idGROUP BY t1.dept_nameHAVING total_employees = 0;

格式化日期或时间——date_format()

SELECT name, DATE_FORMAT(birth_date, '%M %e, %Y') FROM users;

limit

当limit使用一个参数时

        例如:limit 10 

        则表示将表中的前10条数据查询出来,--检索前10行数据

当limit使用两个参数时

        例如:limit 2,5

        第一个参数表示从第几行数据开始查,第二个参数表示查几条数据,"limit 2,5";表示从第3行数据开始,取5条数据

***当指定了两个参数时,第一个参数指定要返回的第一行的偏移量,即起点,而第二个参数指定要返回的最大行数。初始行的偏移量是0(不是1)。

count()

COUNT() 函数返回匹配指定条件的行数。

COUNT(column_name) 
        函数返回指定列的值的数目(NULL 不计入):

SELECT COUNT(column_name) FROM table_name;

SQL COUNT(DISTINCT column_name) 语法

        COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目:

SELECT COUNT(DISTINCT column_name) FROM table_name;

count总结

        count(*):统计行数,不会忽略null

        count(列名):单独一列符合条件的行数,会忽略空值

        count(1):统计行数,会忽略空值

count 的执行效率

IN & BETWEEN

IN运算符是逻辑运算符,用于检查一组值中是否存在特定值。 其基本语法可以通过以下方式给出:

SELECT column_list FROM table_nameWHERE column_name IN (value1, value1,...);

between

如果列中的值落在特定范围内,有时您想选择一行。处理数字数据时,这种类型的条件很常见。

要基于这种条件执行查询,您可以利用BETWEEN运算符。它是一个逻辑运算符,可让您指定要测试的范围,如下所示:

SELECT column1_name, column2_name, columnN_name FROM table_name WHERE column_name BETWEEN min_value AND max_value;

AVG()

AVG() 函数返回数值列的平均值。

SELECT AVG(column_name) FROM table_name

DISTINCT        去重

从数据库表中获取数据时,结果集可能包含重复的行或值。 如果要删除这些重复的值,可以在SELECT关键字之后直接指定关键字DISTINCT,如下所示:

SELECT DISTINCT column_list FROM table_name;

SQL 注入(Injection)

什么是sql注入

SQL注入是一种攻击,攻击者可以通过浏览器向应用程序服务器输入的数据(例如WEB表单输入)注入或执行恶意SQL代码。

SQL 注入(Injection) - 基础教程在线

来源地址:https://blog.csdn.net/Jiazengzeng/article/details/124041099

您可能感兴趣的文档:

--结束END--

本文标题: MySql 知识大汇总

本文链接: https://www.lsjlt.com/news/398535.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySql 知识大汇总
    目录 一、常用的数据类型 二、数据库索引 什么是数据库索引 索引的作用 索引是否越多越好 索引的分类 三、sql语句 插入 更新 删除 查询         普通查询         子查询         连表查询 四、常用的一些函数 g...
    99+
    2023-09-07
    mysql 数据库
  • mysql基础知识汇总
    本篇内容介绍了“mysql基础知识汇总”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!SQL基础知识整理:s...
    99+
    2024-04-02
  • Mysql事务索引知识汇总
    目录一、事务1. 事务特性2. 事务并发时出现的问题二、索引1. 索引使用2. 索引类型3. 索引注意原则三、SQL1. SQL优点2. SQL分类3. SQL语法及关键字 &nbs...
    99+
    2024-04-02
  • MySQL数据库知识汇总(三)
    ...
    99+
    2024-04-02
  • 前端知识总汇
    前端知识总汇 HTML 超文本标记语言 注释 由于 HTML 代码杂乱无章,我们习惯性的用注释来划定区域方便后续的查找 HTML 的文档结构 DOCTYPE html> head 内常用标签 ...
    99+
    2023-08-30
    前端
  • js重点知识汇总
    这篇文章主要讲解了“js重点知识汇总”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“js重点知识汇总”吧!1、几种数据类型,哪些是值类型,哪些是引用类型数据类...
    99+
    2024-04-02
  • Vue 与 TypeScript 的交锋:知识点大汇总
    认识 Vue 和 TypeScript Vue 是一款流行的 JavaScript 框架,用于构建交互式用户界面。它以其简洁、响应性和数据绑定功能而闻名。 TypeScript 是一种超集 JavaScript 语言,它通过类型系统扩展了...
    99+
    2024-03-08
    Vue TypeScript TypeScript 入门 Vue 入门 Vue TypeScript 集成
  • Python Requests库知识汇总
    目录什么是Requests库?为什么要学习Requests库?快速开始发送请求URL传参响应内容二进制响应内容JSON响应内容原始响应内容自定义请求头更复杂的POST请求More c...
    99+
    2023-05-18
    Python Requests库 Python Requests
  • Pandas-DataFrame知识点汇总
    目录1、DataFrame的创建根据字典创建读取文件2、DataFrame轴的概念3、DataFrame一些性质索引、切片修改数据重新索引丢弃指定轴上的值算术运算函数应用和映射排序和...
    99+
    2024-04-02
  • MySQL日期时间函数知识汇总
    目录1. 获取时间2. 日期与时间戳的转换3. 获取月份、星期、星期数、天数等函数4. 日期的操作函数5. 时钟和秒钟转换的函数6. 计算日期和时间的函数6.1 计算时间间隔6.2 ...
    99+
    2024-04-02
  • Golang易错知识点汇总
    目录类型转换和类型断言1.类型转换示例代码2.类型断言代码示例全局变量全局变量使用var,编译通过全局变量不使用var,编译不通过init函数Go接口总结Go字符串如何修改字符串的内...
    99+
    2024-04-02
  • Python入门知识点汇总
    Python的设计目标之一是让代码具备高度的可阅读性。它设计时尽量使用其它语言经常使用的标点符号和英文单字,让代码看起来整洁美观。它不像其他的静态语言如C、Pascal那样需要重复书写声明语句,也不像它们的语法那样经常有特殊情况和意外。缩进...
    99+
    2023-01-31
    知识点 入门 Python
  • SQL必知必会知识点汇总
    前言 ❤欢迎大家阅读我的文章呀❤ 今天是SQL必知必会的最后一块练习。 希望你们在我的文章当中能有所收获!!! SLogan:利用有限的时间,撸起袖子加油干!   本篇内容主要总结了【SQL必知必会】当中的一些知识点以及我做题过程当中...
    99+
    2023-08-24
    sql 数据库 c# mysql
  • iOS练手项目知识点汇总
    基础理解篇 Objective-C是一种面向对象的编程语言,它支持元编程。元编程是指编写程序来生成或操纵其他程序的技术。 Objective-C中,元编程可以使用Objective-C的动态特性来实现...
    99+
    2023-09-12
    ios cocoa macos
  • R语言符号知识点汇总
    符号 当在R中定义一个变量时,实际上就是在环境中将一个符号赋给一个值 x <- 1 实际上就是在全局环境中将符号x赋给一个长度为1,值为1的向量对象 当R解释器对表达式求...
    99+
    2024-04-02
  • JavaSpringboot重要知识点整理汇总
    1、springboot controller 单例 Spring中 controller默认是单例的,因为单例所以不是线程安全的。 所以需要注意下面几点 不要在Contr...
    99+
    2024-04-02
  • 云服务器相关知识点汇总
    云服务器是一种虚拟的、共享的、高可用的计算资源,通常用于远程服务器环境。作为云计算的重要组成部分之一,云服务器的管理、运维和性能优化是非常重要的。以下是一些常见的云服务器相关知识点: 数据备份和恢复:云服务器提供数据备份和恢复的功能,可...
    99+
    2023-10-26
    知识点 服务器
  • python 基础知识汇总(注释规范)
    python 分为 单行注释,多行注释以及特殊注释特殊注释:#!/usr/bin/env python # -*-coding:utf-8-*-例1:#!/usr/bin/env python1、必须是文件的第一行2、必须以#!开头 3、...
    99+
    2023-01-31
    注释 基础知识 python
  • 蓝桥杯JAVA-知识点汇总复习
    为了准备第十三届蓝桥杯大赛(软件类)省赛以及其他的比赛。现将知识点汇总整理一下,顺便自己也复习学习。 个人博客 www.tothefor.com 为方便,放一些蓝桥杯、一本通的题目和数据。可自行拿取。...
    99+
    2023-10-28
    蓝桥杯 java 职场和发展
  • 完整的正则表达式知识汇总(Python知
    ## 大纲: ## 一、正则概述 1.正则是什么 正则就是一套规则,或者语法 2.正则的作用 让我们判断是否符合我们的的规则,或者根据规则找到符合规则的数据 3.使用场景 可以用正则判断我们输入的邮箱是否合法 可以用正则去获取...
    99+
    2023-01-30
    完整 知识 正则表达式
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作